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 = ({