diff --git a/.changeset/five-days-film.md b/.changeset/five-days-film.md new file mode 100644 index 00000000000..200313ef37b --- /dev/null +++ b/.changeset/five-days-film.md @@ -0,0 +1,5 @@ +--- +"saleor-dashboard": patch +--- + +update e2e voucher code creation tests diff --git a/.changeset/funny-badgers-begin.md b/.changeset/funny-badgers-begin.md new file mode 100644 index 00000000000..ed3c4b47d22 --- /dev/null +++ b/.changeset/funny-badgers-begin.md @@ -0,0 +1,5 @@ +--- +"saleor-dashboard": minor +--- + +Delay home queries to be non-blocking for the UI diff --git a/cypress.config.js b/cypress.config.js index 384450108a5..a7a6a49ebdb 100644 --- a/cypress.config.js +++ b/cypress.config.js @@ -14,7 +14,7 @@ module.exports = defineConfig({ screenshotsFolder: "cypress/reports/mochareports", screenshotOnRunFailure: true, experimentalMemoryManagement: true, - numTestsKeptInMemory: 0, + numTestsKeptInMemory: 8, retries: { runMode: 2, openMode: 0, diff --git a/cypress/elements/discounts/vouchers.js b/cypress/elements/discounts/vouchers.js index 74fc77534d1..e4c0ec36c54 100644 --- a/cypress/elements/discounts/vouchers.js +++ b/cypress/elements/discounts/vouchers.js @@ -1,6 +1,9 @@ export const VOUCHERS_SELECTORS = { createVoucherButton: "[data-test-id='create-voucher']", - voucherCodeInput: "[name='code']", + manualVoucherItem: "[data-test-id='manual']", + voucherCodeConfirmButton: "[data-test-id='confirm-button']", + voucherCodeAddButton: "[data-test-id='add-code-button']", + voucherCodeNameInput: "[data-test-id='enter-code-input']", discountRadioButtons: "[name='discountType']", percentageDiscountRadioButton: "[name='discountType'][value='VALUE_PERCENTAGE']", @@ -17,12 +20,12 @@ export const VOUCHERS_SELECTORS = { usageLimitCheckbox: '[data-test-id="has-usage-limit"]', usageLimitTextField: '[data-test-id="usage-limit"]', applyOncePerCustomerCheckbox: '[data-test-id="apply-once-per-customer"]', - onlyForStaffCheckbox: '[data-test-id="only-for-staff"]' + onlyForStaffCheckbox: '[data-test-id="only-for-staff"]', }, requirements: { minOrderValueCheckbox: '[name="requirementsPicker"][value="ORDER"]', minAmountOfItemsCheckbox: '[name="requirementsPicker"][value="ITEM"]', minCheckoutItemsQuantityInput: '[name="minCheckoutItemsQuantity"]', - minOrderValueInput: '[name="minSpent"]' - } + minOrderValueInput: '[name="minSpent"]', + }, }; diff --git a/cypress/support/customCommands/user/index.js b/cypress/support/customCommands/user/index.js index 0e62fd78cc6..18717a28c6d 100644 --- a/cypress/support/customCommands/user/index.js +++ b/cypress/support/customCommands/user/index.js @@ -19,10 +19,10 @@ Cypress.Commands.add("loginInShop", () => { }); Cypress.Commands.add("visitHomePageLoggedViaApi", user => { - cy.addAliasToGraphRequest("Home") + cy.addAliasToGraphRequest("UserDetails") .loginUserViaRequest("auth", user) .visit(urlList.homePage) - .waitForRequestAndCheckIfNoErrors("@Home"); + .waitForRequestAndCheckIfNoErrors("@UserDetails"); }); Cypress.Commands.add( diff --git a/cypress/support/pages/discounts/vouchersPage.js b/cypress/support/pages/discounts/vouchersPage.js index 8728da31ff0..1bd90b9c0e4 100644 --- a/cypress/support/pages/discounts/vouchersPage.js +++ b/cypress/support/pages/discounts/vouchersPage.js @@ -25,10 +25,11 @@ export function createVoucher({ }) { cy.get(VOUCHERS_SELECTORS.createVoucherButton).click(); selectChannelInDetailsPages(channelName); - cy.get(VOUCHERS_SELECTORS.voucherCodeInput) - .type(voucherCode) - .get(discountOption) - .click(); + cy.get(VOUCHERS_SELECTORS.voucherCodeAddButton).click(); + cy.get(VOUCHERS_SELECTORS.manualVoucherItem).click(); + cy.get(VOUCHERS_SELECTORS.voucherCodeNameInput).type(voucherCode); + cy.get(VOUCHERS_SELECTORS.voucherCodeConfirmButton).click(); + cy.get(discountOption).click(); if (discountOption !== discountOptions.SHIPPING) { cy.get(VOUCHERS_SELECTORS.discountValueInputs).type(voucherValue, { force: true, diff --git a/cypress/support/pages/homePage.js b/cypress/support/pages/homePage.js index 09abf4a0cae..f501eafa5e6 100644 --- a/cypress/support/pages/homePage.js +++ b/cypress/support/pages/homePage.js @@ -4,11 +4,9 @@ import { HOMEPAGE_SELECTORS } from "../../elements/homePage/homePage-selectors"; export function changeChannel(channelName) { cy.get(HEADER_SELECTORS.channelSelect) .click() - .addAliasToGraphRequest("Home") .get(HEADER_SELECTORS.channelSelectList) .contains(channelName) - .click() - .wait("@Home"); + .click(); } export function expectWelcomeMessageIncludes(name) { @@ -21,37 +19,37 @@ export function expectWelcomeMessageIncludes(name) { export function getOrdersReadyToFulfillRegex( ordersReadyToFulfillBefore, - quantityOfNewOrders + quantityOfNewOrders, ) { const allOrdersReadyToFulfill = ordersReadyToFulfillBefore + quantityOfNewOrders; const notANumberRegex = "\\D*"; return new RegExp( - `${notANumberRegex}${allOrdersReadyToFulfill}${notANumberRegex}` + `${notANumberRegex}${allOrdersReadyToFulfill}${notANumberRegex}`, ); } export function getOrdersReadyForCaptureRegex( ordersReadyForCaptureBefore, - quantityOfNewOrders + quantityOfNewOrders, ) { const allOrdersReadyForCapture = ordersReadyForCaptureBefore + quantityOfNewOrders; const notANumberRegex = "\\D*"; return new RegExp( - `${notANumberRegex}${allOrdersReadyForCapture}${notANumberRegex}` + `${notANumberRegex}${allOrdersReadyForCapture}${notANumberRegex}`, ); } export function getProductsOutOfStockRegex( productsOutOfStockBefore, - quantityOfNewProducts + quantityOfNewProducts, ) { const allProductsOutOfStock = productsOutOfStockBefore + quantityOfNewProducts; const notANumberRegex = "\\D*"; return new RegExp( - `${notANumberRegex}${allProductsOutOfStock}${notANumberRegex}` + `${notANumberRegex}${allProductsOutOfStock}${notANumberRegex}`, ); } @@ -67,7 +65,7 @@ export function getSalesAmountRegex(salesAmountBefore, addedAmount) { const totalAmountWithSeparators = `${totalAmountIntegerWithThousandsSeparator}${decimalSeparator}${totalAmountDecimalValue}`; const notANumberRegex = "\\D*"; return new RegExp( - `${notANumberRegex}${totalAmountWithSeparators}${notANumberRegex}` + `${notANumberRegex}${totalAmountWithSeparators}${notANumberRegex}`, ); } diff --git a/locale/defaultMessages.json b/locale/defaultMessages.json index 870ce9fbaa7..cebe2a2f46b 100644 --- a/locale/defaultMessages.json +++ b/locale/defaultMessages.json @@ -214,6 +214,9 @@ "context": "section description", "string": "Strategy defines the preference of warehouses for stock allocations and reservations." }, + "/Fa+RP": { + "string": "Couldn't load top products" + }, "/ILyIf": { "context": "tax classes menu header", "string": "Tax class label" @@ -241,6 +244,9 @@ "context": "page label", "string": "Hidden" }, + "/U8FUp": { + "string": "Couldn't load activities" + }, "/V7UOC": { "context": "unassign category from sale and save, button", "string": "Unassign and save" diff --git a/src/components/SubMenu/SubMenu.tsx b/src/components/SubMenu/SubMenu.tsx index aca49397c71..6661c3129d0 100644 --- a/src/components/SubMenu/SubMenu.tsx +++ b/src/components/SubMenu/SubMenu.tsx @@ -33,7 +33,12 @@ export const SubMenu = ({ menuItems }: SubMenuProps) => { borderBottomWidth={1} borderColor="neutralPlain" > - {title} + + {title} + {description} ); diff --git a/src/discounts/components/VoucherCodesAddButton/VoucherCodesAddButton.tsx b/src/discounts/components/VoucherCodesAddButton/VoucherCodesAddButton.tsx index 37c9d5ccb62..282b5e8b446 100644 --- a/src/discounts/components/VoucherCodesAddButton/VoucherCodesAddButton.tsx +++ b/src/discounts/components/VoucherCodesAddButton/VoucherCodesAddButton.tsx @@ -55,6 +55,7 @@ export const VoucherCodesAddButton = ({