From c572dde261603a3b89adcdbdc99cefb3d5c46a23 Mon Sep 17 00:00:00 2001 From: Katarzyna Kita <156378082+katarzynakita@users.noreply.github.com> Date: Tue, 12 Mar 2024 12:55:02 +0100 Subject: [PATCH] [ACS-6954] Refactor Search Playwright tests - move search actions to searchOverlay component (#3703) * Refactored search playwright tests moved search actions to search overlay component --- .../src/tests/search-results-general.spec.ts | 2 +- .../tests/search-results-libraries.spec.ts | 2 +- .../search/search-input.component.ts | 73 ------------------- .../search/search-overlay.components.ts | 47 +++++++++++- .../src/page-objects/pages/search.page.ts | 10 +-- 5 files changed, 52 insertions(+), 82 deletions(-) diff --git a/e2e/playwright/search/src/tests/search-results-general.spec.ts b/e2e/playwright/search/src/tests/search-results-general.spec.ts index ac2ecf2a0..17a297a40 100644 --- a/e2e/playwright/search/src/tests/search-results-general.spec.ts +++ b/e2e/playwright/search/src/tests/search-results-general.spec.ts @@ -100,7 +100,7 @@ test.describe('Search Results - General', () => { expect(await searchPage.dataTable.isItemPresent(folder)).toBeFalsy(); await searchPage.searchInput.searchButton.click(); - await searchPage.searchInput.searchFor(folder); + await searchPage.searchOverlay.searchFor(folder); await searchPage.dataTable.progressBarWaitForReload(); expect(await searchPage.dataTable.isItemPresent(file)).toBeFalsy(); diff --git a/e2e/playwright/search/src/tests/search-results-libraries.spec.ts b/e2e/playwright/search/src/tests/search-results-libraries.spec.ts index 2da119424..b5be8de19 100644 --- a/e2e/playwright/search/src/tests/search-results-libraries.spec.ts +++ b/e2e/playwright/search/src/tests/search-results-libraries.spec.ts @@ -85,7 +85,7 @@ test.describe('Search Results - General', () => { }); test.afterAll(async () => { - await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'afterAll failed', sitesApi, [ + await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'afterAll failed', sitesAdminApi, [ site1.id, site2.id, site3.id, diff --git a/projects/aca-playwright-shared/src/page-objects/components/search/search-input.component.ts b/projects/aca-playwright-shared/src/page-objects/components/search/search-input.component.ts index acab05eee..c17aede5f 100644 --- a/projects/aca-playwright-shared/src/page-objects/components/search/search-input.component.ts +++ b/projects/aca-playwright-shared/src/page-objects/components/search/search-input.component.ts @@ -30,12 +30,6 @@ export class SearchInputComponent extends BaseComponent { private static rootElement = 'aca-page-layout'; public searchInput = this.page.locator('#app-control-input'); public searchButton = this.page.locator('.app-search-button'); - public searchButtonWindow = this.page.locator('#app-search-button'); - public searchOptions = this.page.locator('#search-options'); - public searchFilesOption = this.page.locator('#content') - public searchLibrariesOption = this.page.locator('#libraries') - public searchFoldersOption = this.page.locator('#folder') - getIconByName = (name: string): Locator => this.getChild('.mat-icon', { hasText: name }); @@ -56,71 +50,4 @@ export class SearchInputComponent extends BaseComponent { await this.getCellLinkByName(name).dblclick(); await this.spinnerWaitForReload(); } - - async clickLibrariesOption() { - await this.searchLibrariesOption.click(); - } - - async clickFilesOption() { - await this.searchFilesOption.click(); - } - - async clickFoldersOption() { - await this.searchFoldersOption.click(); - } - - async isFoldersOptionChecked() { - const optClass = await this.searchFoldersOption.getAttribute('class'); - return optClass.includes('mat-checkbox-checked'); - } - - async isFilesOptionChecked() { - const optClass = await this.searchFilesOption.getAttribute('class'); - return optClass.includes('mat-checkbox-checked'); - } - - async isLibrariesOptionChecked() { - const optClass = await this.searchLibrariesOption.getAttribute('class'); - return optClass.includes('mat-checkbox-checked'); - } - - async clearOptions() { - if (await this.isFilesOptionChecked()) { - await this.clickFilesOption(); - } - if (await this.isFoldersOptionChecked()) { - await this.clickFoldersOption(); - } - if (await this.isLibrariesOptionChecked()) { - await this.clickLibrariesOption(); - } - } - - async checkOnlyFolders() { - await this.clearOptions(); - await this.clickFoldersOption(); - } - - async checkOnlyFiles() { - await this.clearOptions(); - await this.clickFilesOption(); - } - - async checkLibraries() { - await this.clearOptions(); - await this.clickLibrariesOption(); - } - - async checkFilesAndFolders() { - await this.clearOptions(); - await this.clickFilesOption(); - await this.clickFoldersOption(); - } - - async searchFor(text: string) { - await this.searchInput.click({force: true}); - await this.searchInput.clear({force: true}); - await this.searchInput.fill(text, {force: true}); - await this.searchButtonWindow.click(); - } } diff --git a/projects/aca-playwright-shared/src/page-objects/components/search/search-overlay.components.ts b/projects/aca-playwright-shared/src/page-objects/components/search/search-overlay.components.ts index abef45127..50e23abf1 100644 --- a/projects/aca-playwright-shared/src/page-objects/components/search/search-overlay.components.ts +++ b/projects/aca-playwright-shared/src/page-objects/components/search/search-overlay.components.ts @@ -31,8 +31,8 @@ export class SearchOverlayComponent extends BaseComponent { public searchFilesOption = this.getChild('label[for="content-input"]'); public searchFoldersOption = this.getChild('label[for="folder-input"]'); public searchLibrariesOption = this.getChild('label[for="libraries-input"]'); - public searchInput = this.getChild('input[id="app-control-input"]'); - public searchButton = this.getChild('.app-search-button'); + public searchInput = this.page.locator('#app-control-input'); + public searchButton = this.page.locator('#app-search-button'); public searchInputControl = this.page.locator('.app-search-control'); public searchOptions = this.page.locator('#search-options'); @@ -40,7 +40,50 @@ export class SearchOverlayComponent extends BaseComponent { super(page, rootElement); } + async isFoldersOptionChecked() { + const optClass = await this.searchFoldersOption.getAttribute('class'); + return optClass.includes('mat-checkbox-checked'); + } + + async isFilesOptionChecked() { + const optClass = await this.searchFilesOption.getAttribute('class'); + return optClass.includes('mat-checkbox-checked'); + } + + async isLibrariesOptionChecked() { + const optClass = await this.searchLibrariesOption.getAttribute('class'); + return optClass.includes('mat-checkbox-checked'); + } + + async clearOptions() { + if (await this.isFilesOptionChecked()) { + await this.searchFilesOption.click(); + } + if (await this.isFoldersOptionChecked()) { + await this.searchFoldersOption.click(); + } + if (await this.isLibrariesOptionChecked()) { + await this.searchLibrariesOption.click(); + } + } + + async checkOnlyFolders(): Promise { + await this.clearOptions(); + await this.searchFoldersOption.click(); + } + + async checkOnlyFiles(): Promise { + await this.clearOptions(); + await this.searchFilesOption.click(); + } + + async checkLibraries(): Promise { + await this.clearOptions(); + await this.searchLibrariesOption.click(); + } + async checkFilesAndFolders(): Promise { + await this.clearOptions(); await this.searchFilesOption.click(); await this.searchFoldersOption.click(); } diff --git a/projects/aca-playwright-shared/src/page-objects/pages/search.page.ts b/projects/aca-playwright-shared/src/page-objects/pages/search.page.ts index 49bd4a037..13b59d41a 100644 --- a/projects/aca-playwright-shared/src/page-objects/pages/search.page.ts +++ b/projects/aca-playwright-shared/src/page-objects/pages/search.page.ts @@ -52,21 +52,21 @@ export class SearchPage extends BasePage { await this.searchInput.searchButton.click(); switch (searchType) { case 'files': - await this.searchInput.checkOnlyFiles(); + await this.searchOverlay.checkOnlyFiles(); break; case 'folders': - await this.searchInput.checkOnlyFolders(); + await this.searchOverlay.checkOnlyFolders(); break; case 'filesAndFolders': - await this.searchInput.checkFilesAndFolders(); + await this.searchOverlay.checkFilesAndFolders(); break; case 'libraries': - await this.searchInput.checkLibraries(); + await this.searchOverlay.checkLibraries(); break; default: break; } - await this.searchInput.searchFor(searchText); + await this.searchOverlay.searchFor(searchText); await this.dataTable.progressBarWaitForReload(); } }