/// /// import faker from "faker"; import { HOMEPAGE_SELECTORS } from "../../elements/homePage/homePage-selectors"; import { urlList } from "../../fixtures/urlList"; import { createCustomer } from "../../support/api/requests/Customer"; import * as homePageUtils from "../../support/api/utils/homePageUtils"; import { createReadyToFulfillOrder, createWaitingForCaptureOrder } from "../../support/api/utils/ordersUtils"; import * as productsUtils from "../../support/api/utils/products/productsUtils"; import filterTests from "../../support/filterTests"; import { changeChannel, getOrdersReadyForCaptureRegex, getOrdersReadyToFulfillRegex, getProductsOutOfStockRegex, getSalesAmountRegex, getTodaysOrdersRegex } from "../../support/pages/homePage"; filterTests({ definedTags: ["all", "critical", "refactored"] }, () => { describe("As an admin I want to see correct information on dashboard home page", () => { const startsWith = "CyHomeAnalytics"; const productPrice = 22; const shippingPrice = 12; const randomName = startsWith + faker.datatype.number(); const randomEmail = `${startsWith}${randomName}@example.com`; let customer; let defaultChannel; let createdVariants; let productType; let attribute; let category; let warehouse; let shippingMethod; let address; let ordersReadyToFulfillRegexp; let ordersReadyForCaptureRegexp; let productsOutOfStockRegexp; let salesAmountRegexp; let ordersRegexp; before(() => { cy.clearSessionData().loginUserViaRequest(); productsUtils .createProductWithShipping({ name: randomName, productPrice, shippingPrice }) .then(resp => { createdVariants = resp.variantsList; address = resp.address; warehouse = resp.warehouse; defaultChannel = resp.defaultChannel; shippingMethod = resp.shippingMethod; attribute = resp.attribute; category = resp.category; productType = resp.productType; createCustomer(randomEmail, randomName, address).then( customerResp => (customer = customerResp) ); homePageUtils .getOrdersReadyToFulfill(defaultChannel.slug) .then(ordersReadyToFulfillBefore => { ordersReadyToFulfillRegexp = getOrdersReadyToFulfillRegex( ordersReadyToFulfillBefore, 1 ); }); homePageUtils .getOrdersReadyForCapture(defaultChannel.slug) .then(ordersReadyForCaptureBefore => { ordersReadyForCaptureRegexp = getOrdersReadyForCaptureRegex( ordersReadyForCaptureBefore, 1 ); }); homePageUtils .getProductsOutOfStock(defaultChannel.slug) .then(productsOutOfStockBefore => { productsOutOfStockRegexp = getProductsOutOfStockRegex( productsOutOfStockBefore, 1 ); }); homePageUtils .getSalesAmount(defaultChannel.slug) .then(salesAmount => { salesAmountRegexp = getSalesAmountRegex( salesAmount, productPrice * 2 + shippingPrice ); }); homePageUtils .getTodaysOrders(defaultChannel.slug) .then(ordersBefore => { ordersRegexp = getTodaysOrdersRegex(ordersBefore, 2); }); }) .then(() => { createReadyToFulfillOrder({ customerId: customer.id, shippingMethodId: shippingMethod.id, channelId: defaultChannel.id, variantsList: createdVariants, address }); createWaitingForCaptureOrder({ channelSlug: defaultChannel.slug, email: randomEmail, variantsList: createdVariants, shippingMethodName: shippingMethod.name, address }); const productOutOfStockRandomName = startsWith + faker.datatype.number(); productsUtils.createProductInChannel({ name: productOutOfStockRandomName, channelId: defaultChannel.id, warehouseId: warehouse.id, quantityInWarehouse: 0, productTypeId: productType.id, attributeId: attribute.id, categoryId: category.id, price: productPrice }); }); }); beforeEach(() => { cy.clearSessionData().loginUserViaRequest(); }); it("should display correct information on dashboard home page. SALEOR_2004", () => { cy.visit(urlList.homePage); changeChannel(defaultChannel.name); cy.contains(HOMEPAGE_SELECTORS.orders, ordersRegexp).should("be.visible"); cy.contains( HOMEPAGE_SELECTORS.ordersReadyToFulfill, ordersReadyToFulfillRegexp ).should("be.visible"); cy.contains( HOMEPAGE_SELECTORS.ordersReadyForCapture, ordersReadyForCaptureRegexp ).should("be.visible"); cy.contains(HOMEPAGE_SELECTORS.sales, salesAmountRegexp).should( "be.visible" ); cy.contains( HOMEPAGE_SELECTORS.productsOutOfStock, productsOutOfStockRegexp ).should("be.visible"); }); }); });