From 6adde753a3c34a0fd8008c0090ac2d211ac3c6bf Mon Sep 17 00:00:00 2001 From: Pranay Tippa Date: Tue, 10 Sep 2024 15:03:01 +0530 Subject: [PATCH] test: Fix component delete function in UE --- test/e2e/main/page/universalEditorBasePage.js | 41 +++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/test/e2e/main/page/universalEditorBasePage.js b/test/e2e/main/page/universalEditorBasePage.js index cafdb08a87..5987b52cbc 100644 --- a/test/e2e/main/page/universalEditorBasePage.js +++ b/test/e2e/main/page/universalEditorBasePage.js @@ -24,6 +24,8 @@ export class UniversalEditorBase { deleteButton: 'button[aria-label="Delete"]', deleteConfirmationButton: '[data-variant="negative"][class*="aaz5ma_spectrum-ButtonGroup-Button"]', deletePopup: 'section[class*="spectrum-Dialog--destructive"]', + adaptiveFormPathInContentTree: 'li[data-resource$="content/root/section_0/form"][class="treenode selected"]', + selectedAdaptiveFormWithComponent: 'li[data-resource$="content/root/section_0/form"][class*="treenode selected expandable"] div[class="node-content selected-content"]', }; // eslint-disable-next-line class-methods-use-this @@ -45,6 +47,11 @@ export class UniversalEditorBase { } } + // eslint-disable-next-line class-methods-use-this + getExpandCollapseButton(action) { + return `li[data-resource$="content/root/section_0/form"][class*="treenode selected expandable"] div[class="node-content selected-content"] button[aria-label="${action} Node"]`; + } + // eslint-disable-next-line class-methods-use-this async verifyComponentInsert(frame, componentName, component) { await frame.locator(this.selectors.insertComponent).click(); @@ -61,11 +68,39 @@ export class UniversalEditorBase { async verifyComponentDelete(page, frame, component) { let adaptiveFormPath = frame.locator(this.componentLocatorForUe(component)); let count = await adaptiveFormPath.count(); + while (count > 0) { + // eslint-disable-next-line no-await-in-loop + await expect(adaptiveFormPath.first()).toBeVisible(); // eslint-disable-next-line no-await-in-loop await adaptiveFormPath.first().click(); + + // eslint-disable-next-line max-len,no-await-in-loop + const isComponentSelected = await frame.locator(this.componentSelectorValidation(component)).isVisible(); + // eslint-disable-next-line max-len,no-await-in-loop + const isAdaptiveFormSelected = await frame.locator(this.selectors.selectedAdaptiveFormWithComponent).isVisible(); + + // eslint-disable-next-line no-await-in-loop + if (!isComponentSelected && isAdaptiveFormSelected) { + const expandButton = frame.locator(this.getExpandCollapseButton('Expand')); + // eslint-disable-next-line no-await-in-loop + if (await expandButton.isVisible()) { + // eslint-disable-next-line no-await-in-loop + await expandButton.click(); + // eslint-disable-next-line no-await-in-loop + await expect(frame.locator(this.getExpandCollapseButton('Collapse'))).toBeVisible(); + } + // eslint-disable-next-line no-await-in-loop + await frame.locator(`li[data-resource*="/${component}"]`).click(); + // eslint-disable-next-line no-await-in-loop,max-len + expect(await frame.locator(this.componentSelectorValidation(component)).isVisible()).toBe(true); + } + // eslint-disable-next-line no-await-in-loop - await frame.locator(this.componentSelectorValidation(component)).isVisible(); + if (await frame.locator(this.selectors.adaptiveFormPathInContentTree).isVisible()) { + break; + } + // eslint-disable-next-line no-await-in-loop await frame.locator(this.selectors.deleteButton).click(); // eslint-disable-next-line no-await-in-loop @@ -74,11 +109,11 @@ export class UniversalEditorBase { await frame.locator(this.selectors.deleteConfirmationButton).last().click(); // eslint-disable-next-line no-await-in-loop await this.waitForCountToDecreaseByOne(adaptiveFormPath, count); - // eslint-disable-next-line no-await-in-loop - adaptiveFormPath = await frame.locator(this.componentLocatorForUe(component)); + adaptiveFormPath = frame.locator(this.componentLocatorForUe(component)); // eslint-disable-next-line no-await-in-loop count = await adaptiveFormPath.count(); } + await expect(adaptiveFormPath).toHaveCount(0); } }