From 4b42974d5c2620aa043b35d8fd67c4028570b70f Mon Sep 17 00:00:00 2001 From: "M.Graczyk" Date: Fri, 27 Dec 2024 11:31:52 +0100 Subject: [PATCH] Split select options into 2 (#5301) * Split select options into 2 * Update .changeset/stupid-peas-work.md Co-authored-by: Jonatan Witoszek --------- Co-authored-by: Jonatan Witoszek --- .changeset/stupid-peas-work.md | 5 +++ .../dialogs/addNavigationMenuItemDialog.ts | 37 ++++++++++++++----- playwright/tests/navigation.spec.ts | 9 +++-- 3 files changed, 38 insertions(+), 13 deletions(-) create mode 100644 .changeset/stupid-peas-work.md diff --git a/.changeset/stupid-peas-work.md b/.changeset/stupid-peas-work.md new file mode 100644 index 00000000000..19dc8d684f8 --- /dev/null +++ b/.changeset/stupid-peas-work.md @@ -0,0 +1,5 @@ +--- +"saleor-dashboard": patch +--- + +Split select link option into 2 different ones to avoid flakyness in tests diff --git a/playwright/pages/dialogs/addNavigationMenuItemDialog.ts b/playwright/pages/dialogs/addNavigationMenuItemDialog.ts index e943d4d2db8..8faa2b463b8 100644 --- a/playwright/pages/dialogs/addNavigationMenuItemDialog.ts +++ b/playwright/pages/dialogs/addNavigationMenuItemDialog.ts @@ -14,20 +14,37 @@ export class AddNavigationMenuItemDialog extends BasePage { super(page); } - async selectLinkOption(option: string, optionName: string) { + async selectLinkTypeOption(linkType: string) { await this.menuLinkType.click(); await this.waitForDOMToFullyLoad(); - await this.menuLinkOptions.filter({ hasText: "Categories" }).waitFor({ state: "visible" }); - await this.menuLinkOptions.filter({ hasText: "Collections" }).waitFor({ state: "visible" }); - await this.menuLinkOptions.filter({ hasText: "Pages" }).waitFor({ state: "visible" }); - await expect(this.menuLinkOptions.filter({ hasText: option })).toBeEnabled(); - await this.menuLinkOptions.filter({ hasText: option }).click({ force: true }); - await this.waitForDOMToFullyLoad(); + + // Ensure the link type option is visible and select it + const linkTypeOption = this.menuLinkOptions.filter({ hasText: linkType }); + + await linkTypeOption.waitFor({ state: "visible" }); + await expect(linkTypeOption).toBeEnabled(); + await linkTypeOption.click({ force: true }); + + // Verify the correct link type is selected + const selectedLinkType = await this.menuLinkType.inputValue(); + + if (selectedLinkType !== linkType) { + throw new Error(`Expected link type "${linkType}" but found "${selectedLinkType}"`); + } + } + + async selectLinkTypeValue(optionName: string) { await this.menuLinkValue.click(); - await this.menuLinkOptions.filter({ hasText: optionName }).waitFor({ state: "visible" }); - await expect(this.menuLinkOptions.filter({ hasText: optionName })).toBeEnabled(); - await this.menuLinkOptions.filter({ hasText: optionName }).click({ force: true }); await this.waitForDOMToFullyLoad(); + + // Ensure the option is present and select it + const option = this.menuLinkOptions.filter({ hasText: optionName }); + + await option.waitFor({ state: "visible" }); + await expect(option).toBeEnabled(); + await option.click({ force: true }); + + // Verify the correct option is selected await expect(this.menuLinkValue).toHaveValue(optionName); } diff --git a/playwright/tests/navigation.spec.ts b/playwright/tests/navigation.spec.ts index 94871aa60c0..83531c81120 100644 --- a/playwright/tests/navigation.spec.ts +++ b/playwright/tests/navigation.spec.ts @@ -42,7 +42,8 @@ test("TC: SALEOR_194 Should create a new menu navigation with menu item @navigat const menuItemName = faker.random.word(); await addNavigationMenuItemDialog.typeMenuItemName(menuItemName); - await addNavigationMenuItemDialog.selectLinkOption("Categories", "Polo Shirts"); + await addNavigationMenuItemDialog.selectLinkTypeOption("Categories"); + await addNavigationMenuItemDialog.selectLinkTypeValue("Polo Shirts"); await addNavigationMenuItemDialog.clickSaveButton(); await expect(navigationDetailsPage.addMenuItemDialog).not.toBeVisible(); await navigation.expectSuccessBanner(); @@ -59,7 +60,8 @@ test("TC: SALEOR_198 Should update existing menu @navigation @e2e", async () => await navigationDetailsPage.clickEditMenuItemButton(menuItemToBeUpdated.name); await addNavigationMenuItemDialog.typeMenuItemName(newItemName); - await addNavigationMenuItemDialog.selectLinkOption("Categories", "Polo Shirts"); + await addNavigationMenuItemDialog.selectLinkTypeOption("Categories"); + await addNavigationMenuItemDialog.selectLinkTypeValue("Polo Shirts"); await addNavigationMenuItemDialog.clickSaveButton(); await expect(navigationDetailsPage.addMenuItemDialog).not.toBeVisible(); await navigationDetailsPage.clickDeleteMenuItemButton(menuItemToBeDeleted.name); @@ -69,7 +71,8 @@ test("TC: SALEOR_198 Should update existing menu @navigation @e2e", async () => const menuItemName = faker.random.word(); await addNavigationMenuItemDialog.typeMenuItemName(menuItemName); - await addNavigationMenuItemDialog.selectLinkOption("Categories", "Polo Shirts"); + await addNavigationMenuItemDialog.selectLinkTypeOption("Categories"); + await addNavigationMenuItemDialog.selectLinkTypeValue("Polo Shirts"); await addNavigationMenuItemDialog.clickSaveButton(); await expect(navigationDetailsPage.menuItemList).toContainText(menuItemName); await navigationDetailsPage.clickDeleteMenuItemButton(menuItemName);