From 2126f8b141d74cbfb5b2d25ddf9f5a4632479a0d Mon Sep 17 00:00:00 2001 From: Michalina Graczyk Date: Wed, 4 Dec 2024 14:48:24 +0100 Subject: [PATCH 1/2] Split select options into 2 --- .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..8cfacf45208 --- /dev/null +++ b/.changeset/stupid-peas-work.md @@ -0,0 +1,5 @@ +--- +"saleor-dashboard": patch +--- + +Split select link option to 2 differen one to avoid flakyness 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); From be1a1c015d73c0cbbf865e8dc384c19f27e06ff5 Mon Sep 17 00:00:00 2001 From: "M.Graczyk" Date: Mon, 23 Dec 2024 12:25:58 +0100 Subject: [PATCH 2/2] Update .changeset/stupid-peas-work.md Co-authored-by: Jonatan Witoszek --- .changeset/stupid-peas-work.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/stupid-peas-work.md b/.changeset/stupid-peas-work.md index 8cfacf45208..19dc8d684f8 100644 --- a/.changeset/stupid-peas-work.md +++ b/.changeset/stupid-peas-work.md @@ -2,4 +2,4 @@ "saleor-dashboard": patch --- -Split select link option to 2 differen one to avoid flakyness +Split select link option into 2 different ones to avoid flakyness in tests