From 9f3d30ec7596547d885faa3e464d7cc34ebca639 Mon Sep 17 00:00:00 2001 From: kritagya09 Date: Tue, 26 Dec 2023 11:30:46 +0530 Subject: [PATCH 01/10] [ACS-6457] Migrated unshare-file e2es to playwright --- .../share/unshare-file-search-results.spec.ts | 224 ++++++++++++++++++ .../dataTable/data-table.component.ts | 4 + .../dialogs/adf-confirm-dialog.component.ts | 18 ++ .../page-objects/pages/personal-files.page.ts | 4 +- .../aca-playwright-shared/src/utils/config.ts | 10 + 5 files changed, 259 insertions(+), 1 deletion(-) create mode 100755 e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts diff --git a/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts b/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts new file mode 100755 index 0000000000..b0ae548be2 --- /dev/null +++ b/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts @@ -0,0 +1,224 @@ +/*! + * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Alfresco Example Content Application + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * from Hyland Software. If not, see . + */ + +import { + ApiClientFactory, + FileActionsApi, + NodesApi, + SITE_ROLES, + SITE_VISIBILITY, + SharedLinksApi, + SitesApi, + Utils, + test, + timeouts +} from '@alfresco/playwright-shared'; +import { expect } from '@playwright/test'; + +test.describe.only('Unshare a file from Search Results', () => { + const random = Utils.random(); + + const username = `user-${random}`; + const parent = `parent-${random}`; + let parentId: string; + const searchRandom = random; + let sitesApi: SitesApi; + + let file1Id: string; + let file2Id: string; + let file3Id: string; + let file4Id: string; + const file1 = `search-file-${searchRandom}-1.txt`; + const file2 = `search-file-${searchRandom}-2.txt`; + const file3 = `search-file-${searchRandom}-3.txt`; + const file4 = `search-file-${searchRandom}-4.txt`; + + const sitePrivate = `site-private-${random}`; + + let fileSite1Id: string; + let fileSite2Id: string; + const fileSite1 = `search-file-${searchRandom}-Site1.txt`; + const fileSite2 = `search-file-${searchRandom}-Site2.txt`; + + const apiClientFactory = new ApiClientFactory(); + + test.beforeAll(async () => { + try { + test.setTimeout(140000); + await apiClientFactory.setUpAcaBackend('admin'); + await apiClientFactory.createUser({ username }); + const nodesApi = await NodesApi.initialize(username, username); + sitesApi = await SitesApi.initialize(username, username); + const shareApi = await SharedLinksApi.initialize(username, username); + const filesAction = await FileActionsApi.initialize(username, username); + parentId = (await nodesApi.createFolder(parent)).entry.id; + + file1Id = (await nodesApi.createFile(file1, parentId)).entry.id; + file2Id = (await nodesApi.createFile(file2, parentId)).entry.id; + file3Id = (await nodesApi.createFile(file3, parentId)).entry.id; + file4Id = (await nodesApi.createFile(file4, parentId)).entry.id; + + await sitesApi.createSite(sitePrivate, SITE_VISIBILITY.PRIVATE); + const docLibId = await sitesApi.getDocLibId(sitePrivate); + + fileSite1Id = (await nodesApi.createFile(fileSite1, docLibId)).entry.id; + fileSite2Id = (await nodesApi.createFile(fileSite2, docLibId)).entry.id; + + await sitesApi.addSiteMember(sitePrivate, username, SITE_ROLES.SITE_CONSUMER.ROLE); + + await shareApi.shareFilesByIds([fileSite1Id]); + await shareApi.waitForFilesToBeShared([fileSite1Id]); + + await shareApi.shareFilesByIds([file1Id, file2Id, file3Id, file4Id, fileSite2Id]); + await shareApi.waitForFilesToBeShared([file1Id, file2Id, file3Id, file4Id, fileSite2Id]); + + await filesAction.waitForNodes(`search-file-${searchRandom}`, { expect: 6 }); + } catch (error) { + throw new Error(`----- beforeAll failed : ${error}`); + } + }); + + test.beforeEach(async ({ loginPage, personalFiles }) => { + await loginPage.navigate(); + await loginPage.loginUser({ username: username, password: username }); + await personalFiles.waitForPageLoad(); + }); + + test.afterAll(async () => { + await apiClientFactory.nodes.deleteNode(parentId, { permanent: true }); + await sitesApi.deleteSites([sitePrivate]); + }); + + test('[C306995] Unshare dialog UI', async ({ personalFiles, searchPage }) => { + await personalFiles.acaHeader.searchButton.click(); + await searchPage.searchInput.searchButton.click(); + await searchPage.searchOverlay.checkFilesAndFolders(); + await searchPage.searchOverlay.searchFor(file1); + + await personalFiles.dataTable.selectItem(file1); + await personalFiles.acaHeader.shareButton.click(); + await personalFiles.viewerDialog.shareDialogTitle.waitFor({ state: 'attached', timeout: timeouts.normal }); + + expect(await personalFiles.shareDialog.isShareToggleChecked()).toBe(true); + await personalFiles.shareDialog.shareToggle.click(); + + expect(personalFiles.confirmDialog.getDialogTitle('Remove this shared link')).toBeVisible(); + expect( + personalFiles.confirmDialog.getDialogContent('This link will be deleted and a new link will be created next time this file is shared') + ).toBeVisible(); + expect(await personalFiles.confirmDialog.isRemoveEnabled()).toBe(true); + expect(await personalFiles.confirmDialog.isCancelEnabled()).toBe(true); + }); + + test('[C306996] Unshare a file', async ({ personalFiles, searchPage, nodesApiAction, page }) => { + await personalFiles.acaHeader.searchButton.click(); + await searchPage.searchInput.searchButton.click(); + await searchPage.searchOverlay.checkFilesAndFolders(); + await searchPage.searchOverlay.searchFor(file2); + + await personalFiles.dataTable.selectItem(file2); + await personalFiles.acaHeader.shareButton.click(); + const url = await personalFiles.shareDialog.getLinkUrl(); + await personalFiles.shareDialog.shareToggle.click(); + + await personalFiles.confirmDialog.okButton.click(); + await personalFiles.shareDialog.clickClose(); + expect(await nodesApiAction.isFileShared(file2Id)).toBe(false); + + await page.goto(url); + await personalFiles.viewer.waitForViewerToOpen(); + expect(await personalFiles.viewer.fileTitleButtonLocator.innerText()).not.toEqual(file2); + }); + + test('[C306997] Cancel the Unshare action', async ({ personalFiles, searchPage }) => { + await personalFiles.acaHeader.searchButton.click(); + await searchPage.searchInput.searchButton.click(); + await searchPage.searchOverlay.checkFilesAndFolders(); + await searchPage.searchOverlay.searchFor(file3); + + await personalFiles.dataTable.selectItem(file3); + await personalFiles.acaHeader.shareButton.click(); + + const urlBefore = await personalFiles.shareDialog.getLinkUrl(); + await personalFiles.shareDialog.shareToggle.click(); + await personalFiles.confirmDialog.cancelButton.click(); + expect(await personalFiles.shareDialog.isShareToggleChecked()).toBe(true); + + const urlAfter = await personalFiles.shareDialog.getLinkUrl(); + expect(urlBefore).toEqual(urlAfter); + }); + + test('[C306999] Unshare a file from the context menu', async ({ personalFiles, searchPage, nodesApiAction, page }) => { + await personalFiles.acaHeader.searchButton.click(); + await searchPage.searchInput.searchButton.click(); + await searchPage.searchOverlay.checkFilesAndFolders(); + await searchPage.searchOverlay.searchFor(file4); + + await personalFiles.dataTable.rightClickOnItem(file4); + await personalFiles.matMenu.clickMenuItem('Shared Link Settings'); + const url = await personalFiles.shareDialog.getLinkUrl(); + await personalFiles.shareDialog.shareToggle.click(); + + await personalFiles.confirmDialog.okButton.click(); + await personalFiles.shareDialog.clickClose(); + expect(await nodesApiAction.isFileShared(file4Id)).toBe(false); + + await page.goto(url); + await personalFiles.viewer.waitForViewerToOpen(); + expect(personalFiles.viewer.fileTitleButtonLocator).not.toEqual(file4); + + await page.reload(); + }); + + test('[C306998] Consumer - on Search Results - file shared by other user', async ({ personalFiles, searchPage, nodesApiAction }) => { + await personalFiles.acaHeader.searchButton.click(); + await searchPage.searchInput.searchButton.click(); + await searchPage.searchOverlay.checkFilesAndFolders(); + await searchPage.searchOverlay.searchFor(fileSite1); + + await personalFiles.dataTable.selectItem(fileSite1); + await personalFiles.acaHeader.shareButton.click(); + + expect(await personalFiles.shareDialog.isShareToggleChecked()).toBe(true); + await personalFiles.shareDialog.shareToggle.click(); + await personalFiles.confirmDialog.okButton.click(); + expect(await nodesApiAction.isFileShared(fileSite2Id)).toBe(true); + }); + + test('[C307000] Consumer - on Search Results - file shared by the user', async ({ personalFiles, searchPage, nodesApiAction }) => { + await personalFiles.acaHeader.searchButton.click(); + await searchPage.searchInput.searchButton.click(); + await searchPage.searchOverlay.checkFilesAndFolders(); + await searchPage.searchOverlay.searchFor(fileSite2); + + await personalFiles.dataTable.selectItem(fileSite2); + await personalFiles.acaHeader.shareButton.click(); + expect(await personalFiles.shareDialog.isShareToggleChecked()).toBe(true); + + await personalFiles.shareDialog.shareToggle.click(); + await personalFiles.confirmDialog.okButton.click(); + await personalFiles.shareDialog.clickClose(); + expect(await nodesApiAction.isFileShared(fileSite2Id)).toBe(false); + }); +}); diff --git a/projects/aca-playwright-shared/src/page-objects/components/dataTable/data-table.component.ts b/projects/aca-playwright-shared/src/page-objects/components/dataTable/data-table.component.ts index 95df52d4be..8bdd991e29 100644 --- a/projects/aca-playwright-shared/src/page-objects/components/dataTable/data-table.component.ts +++ b/projects/aca-playwright-shared/src/page-objects/components/dataTable/data-table.component.ts @@ -315,4 +315,8 @@ export class DataTableComponent extends BaseComponent { async getRowsCount(): Promise { return this.getRowLocator.count(); } + + async rightClickOnItem(itemName: string): Promise { + await this.getCellByColumnNameAndRowItem(itemName, 'Name').click({ button: 'right' }); + } } diff --git a/projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-confirm-dialog.component.ts b/projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-confirm-dialog.component.ts index 0590fa0a6e..0de17b3d8b 100644 --- a/projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-confirm-dialog.component.ts +++ b/projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-confirm-dialog.component.ts @@ -36,4 +36,22 @@ export class AdfConfirmDialogComponent extends BaseComponent { getDialogContent = (text: string) => this.getChild('[data-automation-id="adf-confirm-dialog-base-message"]', { hasText: text }); okButton = this.getChild('[data-automation-id="adf-confirm-dialog-confirmation"]'); cancelButton = this.getChild('[data-automation-id="adf-confirm-dialog-reject"]'); + + async isRemoveEnabled(): Promise { + try { + await this.okButton.isVisible(); + return this.okButton.isEnabled(); + } catch { + throw new Error(`Remove button is not enabled`); + } + } + + async isCancelEnabled(): Promise { + try { + await this.cancelButton.isVisible(); + return this.cancelButton.isEnabled(); + } catch { + throw new Error(`CANCEL button is not enabled`); + } + } } diff --git a/projects/aca-playwright-shared/src/page-objects/pages/personal-files.page.ts b/projects/aca-playwright-shared/src/page-objects/pages/personal-files.page.ts index d9f43da3f8..3c119c73f6 100644 --- a/projects/aca-playwright-shared/src/page-objects/pages/personal-files.page.ts +++ b/projects/aca-playwright-shared/src/page-objects/pages/personal-files.page.ts @@ -38,7 +38,8 @@ import { SidenavComponent, PaginationComponent, ErrorComponent, - ShareDialogComponent + ShareDialogComponent, + AdfConfirmDialogComponent } from '../components'; export class PersonalFilesPage extends BasePage { @@ -62,6 +63,7 @@ export class PersonalFilesPage extends BasePage { public pagination = new PaginationComponent(this.page); public errorDialog = new ErrorComponent(this.page); public shareDialog= new ShareDialogComponent(this.page); + public confirmDialog = new AdfConfirmDialogComponent(this.page); async selectCreateFolder(): Promise { await this.acaHeader.createButton.click(); diff --git a/projects/aca-playwright-shared/src/utils/config.ts b/projects/aca-playwright-shared/src/utils/config.ts index f85982bae7..6765d11cf9 100644 --- a/projects/aca-playwright-shared/src/utils/config.ts +++ b/projects/aca-playwright-shared/src/utils/config.ts @@ -43,3 +43,13 @@ export const SIDEBAR_LABELS = { FAVORITES: 'Favorites', TRASH: 'Trash' }; + +export const SITE_VISIBILITY = { + PRIVATE: 'PRIVATE' +}; + +export const SITE_ROLES = { + SITE_CONSUMER: { + ROLE: 'SiteConsumer' + } +}; From 10d6a762a713b3ff596596f831a134c573dfc5f5 Mon Sep 17 00:00:00 2001 From: kritagya09 Date: Tue, 26 Dec 2023 11:48:15 +0530 Subject: [PATCH 02/10] Removed only --- .../actions/src/tests/share/unshare-file-search-results.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts b/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts index b0ae548be2..b23e2fbebc 100755 --- a/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts +++ b/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts @@ -36,7 +36,7 @@ import { } from '@alfresco/playwright-shared'; import { expect } from '@playwright/test'; -test.describe.only('Unshare a file from Search Results', () => { +test.describe('Unshare a file from Search Results', () => { const random = Utils.random(); const username = `user-${random}`; From 159a3fa78590d9a3f5ee62a7e16cf3d8b9aa0ca1 Mon Sep 17 00:00:00 2001 From: kritagya09 Date: Tue, 26 Dec 2023 13:18:23 +0530 Subject: [PATCH 03/10] [ACS-6457] Removed protractor file --- .../share/unshare-file-search-results.test.ts | 266 ------------------ 1 file changed, 266 deletions(-) delete mode 100755 e2e/protractor/suites/actions/share/unshare-file-search-results.test.ts diff --git a/e2e/protractor/suites/actions/share/unshare-file-search-results.test.ts b/e2e/protractor/suites/actions/share/unshare-file-search-results.test.ts deleted file mode 100755 index 074478049f..0000000000 --- a/e2e/protractor/suites/actions/share/unshare-file-search-results.test.ts +++ /dev/null @@ -1,266 +0,0 @@ -/*! - * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. - * - * Alfresco Example Content Application - * - * This file is part of the Alfresco Example Content Application. - * If the software was purchased under a paid Alfresco license, the terms of - * the paid license agreement will prevail. Otherwise, the software is - * provided under the following open source license terms: - * - * The Alfresco Example Content Application is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * The Alfresco Example Content Application is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * from Hyland Software. If not, see . - */ - -import { browser } from 'protractor'; -import { - AdminActions, - UserActions, - LoginPage, - BrowsingPage, - SITE_VISIBILITY, - SITE_ROLES, - RepoClient, - ShareDialog, - ConfirmDialog, - Viewer, - Utils -} from '@alfresco/aca-testing-shared'; -import { BrowserActions, Logger } from '@alfresco/adf-testing'; - -describe('Unshare a file from Search Results', () => { - const username = `user-${Utils.random()}`; - - const parent = `parent-${Utils.random()}`; - let parentId: string; - - const searchRandom = Utils.random(); - let file1Id: string; - let file2Id: string; - let file3Id: string; - let file4Id: string; - const file1 = `search-file-${searchRandom}-1.txt`; - const file2 = `search-file-${searchRandom}-2.txt`; - const file3 = `search-file-${searchRandom}-3.txt`; - const file4 = `search-file-${searchRandom}-4.txt`; - - const sitePrivate = `site-private-${Utils.random()}`; - - let fileSite1Id: string; - let fileSite2Id: string; - const fileSite1 = `search-file-${searchRandom}-Site1.txt`; - const fileSite2 = `search-file-${searchRandom}-Site2.txt`; - - const apis = { - user: new RepoClient(username, username) - }; - - const loginPage = new LoginPage(); - const page = new BrowsingPage(); - const { dataTable, toolbar } = page; - const shareDialog = new ShareDialog(); - const confirmDialog = new ConfirmDialog(); - const contextMenu = dataTable.menu; - const viewer = new Viewer(); - const { searchInput } = page.header; - - const adminApiActions = new AdminActions(); - const userActions = new UserActions(); - - beforeAll(async () => { - try { - await adminApiActions.createUser({ username }); - - parentId = await apis.user.createFolder(parent); - - file1Id = await apis.user.createFile(file1, parentId); - file2Id = await apis.user.createFile(file2, parentId); - file3Id = await apis.user.createFile(file3, parentId); - file4Id = await apis.user.createFile(file4, parentId); - - await adminApiActions.login(); - await adminApiActions.sites.createSite(sitePrivate, SITE_VISIBILITY.PRIVATE); - const docLibId = await adminApiActions.sites.getDocLibId(sitePrivate); - - fileSite1Id = (await adminApiActions.nodes.createFile(fileSite1, docLibId)).entry.id; - fileSite2Id = (await adminApiActions.nodes.createFile(fileSite2, docLibId)).entry.id; - - await adminApiActions.sites.addSiteMember(sitePrivate, username, SITE_ROLES.SITE_CONSUMER.ROLE); - - await adminApiActions.shareNodes([fileSite1Id]); - await adminApiActions.shared.waitForFilesToBeShared([fileSite1Id]); - - await userActions.login(username, username); - await userActions.shareNodes([file1Id, file2Id, file3Id, file4Id, fileSite2Id]); - await apis.user.shared.waitForFilesToBeShared([file1Id, file2Id, file3Id, file4Id, fileSite2Id]); - - await apis.user.search.waitForNodes(`search-file-${searchRandom}`, { expect: 6 }); - - await loginPage.loginWith(username); - } catch (error) { - Logger.error(`----- beforeAll failed : ${error}`); - } - }); - - afterAll(async () => { - await userActions.deleteNodes([parentId]); - await adminApiActions.sites.deleteSite(sitePrivate); - }); - - afterEach(async () => { - await page.closeOpenDialogs(); - await page.clickPersonalFilesAndWait(); - }); - - it('[C306995] Unshare dialog UI', async () => { - await toolbar.clickSearchIconButton(); - await searchInput.clickSearchButton(); - await searchInput.checkFilesAndFolders(); - await searchInput.searchFor(file1); - await dataTable.waitForBody(); - - await dataTable.selectItem(file1); - await BrowserActions.click(toolbar.shareButton); - await shareDialog.waitForDialogToOpen(); - - expect(await shareDialog.isShareToggleChecked()).toBe(true, 'Share toggle not checked'); - await BrowserActions.click(shareDialog.shareToggle); - - expect(await confirmDialog.isDialogOpen()).toBe(true, 'Unshare dialog is not open'); - expect(await confirmDialog.getDialogTitle()).toContain('Remove this shared link'); - expect(await confirmDialog.getText()).toContain('This link will be deleted and a new link will be created next time this file is shared'); - expect(await confirmDialog.isRemoveEnabled()).toBe(true, 'REMOVE button is not enabled'); - expect(await confirmDialog.isCancelEnabled()).toBe(true, 'CANCEL button is not enabled'); - }); - - it('[C306996] Unshare a file', async () => { - await toolbar.clickSearchIconButton(); - await searchInput.clickSearchButton(); - await searchInput.checkFilesAndFolders(); - await searchInput.searchFor(file2); - await dataTable.waitForBody(); - - await dataTable.selectItem(file2); - await BrowserActions.click(toolbar.shareButton); - await shareDialog.waitForDialogToOpen(); - const url = await shareDialog.getLinkUrl(); - await BrowserActions.click(shareDialog.shareToggle); - await confirmDialog.waitForDialogToOpen(); - - await confirmDialog.removeButton.click(); - await confirmDialog.waitForDialogToClose(); - await shareDialog.waitForDialogToClose(); - expect(await shareDialog.isDialogOpen()).toBe(false, 'Share dialog open'); - expect(await apis.user.nodes.isFileShared(file2Id)).toBe(false, `${file2} is shared`); - - await browser.get(url); - await viewer.waitForViewerToOpen(); - expect(await viewer.getFileTitle()).not.toEqual(file2); - - await page.load(); - }); - - it('[C306997] Cancel the Unshare action', async () => { - await toolbar.clickSearchIconButton(); - await searchInput.clickSearchButton(); - await searchInput.checkFilesAndFolders(); - await searchInput.searchFor(file3); - await dataTable.waitForBody(); - - await dataTable.selectItem(file3); - await BrowserActions.click(toolbar.shareButton); - await shareDialog.waitForDialogToOpen(); - - const urlBefore = await shareDialog.getLinkUrl(); - await BrowserActions.click(shareDialog.shareToggle); - await confirmDialog.waitForDialogToOpen(); - - await confirmDialog.cancelButton.click(); - await confirmDialog.waitForDialogToClose(); - expect(await shareDialog.isDialogOpen()).toBe(true, 'Share dialog not open'); - expect(await shareDialog.isShareToggleChecked()).toBe(true, 'Share toggle is off'); - - const urlAfter = await shareDialog.getLinkUrl(); - expect(urlBefore).toEqual(urlAfter); - }); - - it('[C306999] Unshare a file from the context menu', async () => { - await toolbar.clickSearchIconButton(); - await searchInput.clickSearchButton(); - await searchInput.checkFilesAndFolders(); - await searchInput.searchFor(file4); - await dataTable.waitForBody(); - - await dataTable.rightClickOnItem(file4); - await contextMenu.waitForMenuToOpen(); - await contextMenu.shareEditAction.click(); - await shareDialog.waitForDialogToOpen(); - const url = await shareDialog.getLinkUrl(); - await BrowserActions.click(shareDialog.shareToggle); - await confirmDialog.waitForDialogToOpen(); - - await confirmDialog.removeButton.click(); - await confirmDialog.waitForDialogToClose(); - await shareDialog.waitForDialogToClose(); - expect(await shareDialog.isDialogOpen()).toBe(false, 'Share dialog open'); - expect(await apis.user.nodes.isFileShared(file4Id)).toBe(false, `${file4} is shared`); - - await browser.get(url); - await viewer.waitForViewerToOpen(); - expect(await viewer.getFileTitle()).not.toEqual(file4); - - await page.load(); - }); - - it('[C306998] Consumer - on Search Results - file shared by other user', async () => { - await toolbar.clickSearchIconButton(); - await searchInput.clickSearchButton(); - await searchInput.checkFilesAndFolders(); - await searchInput.searchFor(fileSite1); - await dataTable.waitForBody(); - await dataTable.selectItem(fileSite1); - await BrowserActions.click(toolbar.shareButton); - await shareDialog.waitForDialogToOpen(); - - expect(await shareDialog.isShareToggleDisabled()).toBe(false, 'Share toggle disabled for consumer'); - - await BrowserActions.click(shareDialog.shareToggle); - await confirmDialog.waitForDialogToOpen(); - await confirmDialog.removeButton.click(); - - const msg = await page.getSnackBarMessage(); - expect(msg).toContain(`You don't have permission to unshare this file`); - }); - - it('[C307000] Consumer - on Search Results - file shared by the user', async () => { - await toolbar.clickSearchIconButton(); - await searchInput.clickSearchButton(); - await searchInput.checkFilesAndFolders(); - await searchInput.searchFor(fileSite2); - await dataTable.waitForBody(); - await dataTable.selectItem(fileSite2); - await BrowserActions.click(toolbar.shareButton); - await shareDialog.waitForDialogToOpen(); - - expect(await shareDialog.isShareToggleDisabled()).toBe(false, 'Share toggle disabled for consumer'); - - await BrowserActions.click(shareDialog.shareToggle); - await confirmDialog.waitForDialogToOpen(); - await confirmDialog.removeButton.click(); - await confirmDialog.waitForDialogToClose(); - await shareDialog.waitForDialogToClose(); - - expect(await shareDialog.isDialogOpen()).toBe(false, 'Share dialog open'); - expect(await apis.user.nodes.isFileShared(fileSite2Id)).toBe(false, `${fileSite2} is shared`); - }); -}); From d4ec239f7a0f387502d39b3af103e9f7858e0b27 Mon Sep 17 00:00:00 2001 From: kritagya09 Date: Tue, 26 Dec 2023 14:22:38 +0530 Subject: [PATCH 04/10] Updated timeout --- .../actions/src/tests/share/unshare-file-search-results.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts b/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts index b23e2fbebc..10035f0568 100755 --- a/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts +++ b/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts @@ -65,7 +65,7 @@ test.describe('Unshare a file from Search Results', () => { test.beforeAll(async () => { try { - test.setTimeout(140000); + test.setTimeout(timeouts.extendedTest); await apiClientFactory.setUpAcaBackend('admin'); await apiClientFactory.createUser({ username }); const nodesApi = await NodesApi.initialize(username, username); From 531d51cf50ecc47c0a14feaeeb527357fa60419a Mon Sep 17 00:00:00 2001 From: kritagya09 Date: Tue, 26 Dec 2023 16:05:23 +0530 Subject: [PATCH 05/10] Updated timeout --- projects/aca-playwright-shared/src/utils/timeouts.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/aca-playwright-shared/src/utils/timeouts.ts b/projects/aca-playwright-shared/src/utils/timeouts.ts index 62a5b16be4..aa6768be1e 100644 --- a/projects/aca-playwright-shared/src/utils/timeouts.ts +++ b/projects/aca-playwright-shared/src/utils/timeouts.ts @@ -34,5 +34,5 @@ export const timeouts = { globalTest: 45 * 1000, extendedTest: 150 * 1000, webServer: 240 * 1000, - globalSpec: 60 * 10 * 1000 + globalSpec: 60 * 20 * 1000 }; From 562a8e15f1e1f332bbc6fef4aefe8cbc6b27ed9c Mon Sep 17 00:00:00 2001 From: kritagya09 Date: Tue, 26 Dec 2023 17:53:17 +0530 Subject: [PATCH 06/10] Removed clickClose method --- .../src/tests/share/unshare-file-search-results.spec.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts b/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts index 10035f0568..9537589293 100755 --- a/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts +++ b/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts @@ -143,7 +143,6 @@ test.describe('Unshare a file from Search Results', () => { await personalFiles.shareDialog.shareToggle.click(); await personalFiles.confirmDialog.okButton.click(); - await personalFiles.shareDialog.clickClose(); expect(await nodesApiAction.isFileShared(file2Id)).toBe(false); await page.goto(url); @@ -181,7 +180,6 @@ test.describe('Unshare a file from Search Results', () => { await personalFiles.shareDialog.shareToggle.click(); await personalFiles.confirmDialog.okButton.click(); - await personalFiles.shareDialog.clickClose(); expect(await nodesApiAction.isFileShared(file4Id)).toBe(false); await page.goto(url); @@ -218,7 +216,6 @@ test.describe('Unshare a file from Search Results', () => { await personalFiles.shareDialog.shareToggle.click(); await personalFiles.confirmDialog.okButton.click(); - await personalFiles.shareDialog.clickClose(); expect(await nodesApiAction.isFileShared(fileSite2Id)).toBe(false); }); }); From 636788eb7eb8599252359b45a1f56a31af67b2d9 Mon Sep 17 00:00:00 2001 From: kritagya09 Date: Wed, 27 Dec 2023 12:49:14 +0530 Subject: [PATCH 07/10] Addressed review comments --- .../share/unshare-file-search-results.spec.ts | 22 +++++-------------- .../dialogs/adf-confirm-dialog.component.ts | 18 --------------- .../aca-playwright-shared/src/utils/config.ts | 10 --------- 3 files changed, 6 insertions(+), 44 deletions(-) diff --git a/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts b/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts index 9537589293..f5b38b75a7 100755 --- a/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts +++ b/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts @@ -22,18 +22,8 @@ * from Hyland Software. If not, see . */ -import { - ApiClientFactory, - FileActionsApi, - NodesApi, - SITE_ROLES, - SITE_VISIBILITY, - SharedLinksApi, - SitesApi, - Utils, - test, - timeouts -} from '@alfresco/playwright-shared'; +import { Site } from '@alfresco/js-api'; +import { ApiClientFactory, FileActionsApi, NodesApi, SharedLinksApi, SitesApi, Utils, test, timeouts } from '@alfresco/playwright-shared'; import { expect } from '@playwright/test'; test.describe('Unshare a file from Search Results', () => { @@ -79,13 +69,13 @@ test.describe('Unshare a file from Search Results', () => { file3Id = (await nodesApi.createFile(file3, parentId)).entry.id; file4Id = (await nodesApi.createFile(file4, parentId)).entry.id; - await sitesApi.createSite(sitePrivate, SITE_VISIBILITY.PRIVATE); + await sitesApi.createSite(sitePrivate, Site.VisibilityEnum.PRIVATE); const docLibId = await sitesApi.getDocLibId(sitePrivate); fileSite1Id = (await nodesApi.createFile(fileSite1, docLibId)).entry.id; fileSite2Id = (await nodesApi.createFile(fileSite2, docLibId)).entry.id; - await sitesApi.addSiteMember(sitePrivate, username, SITE_ROLES.SITE_CONSUMER.ROLE); + await sitesApi.addSiteMember(sitePrivate, username, Site.RoleEnum.SiteConsumer); await shareApi.shareFilesByIds([fileSite1Id]); await shareApi.waitForFilesToBeShared([fileSite1Id]); @@ -127,8 +117,8 @@ test.describe('Unshare a file from Search Results', () => { expect( personalFiles.confirmDialog.getDialogContent('This link will be deleted and a new link will be created next time this file is shared') ).toBeVisible(); - expect(await personalFiles.confirmDialog.isRemoveEnabled()).toBe(true); - expect(await personalFiles.confirmDialog.isCancelEnabled()).toBe(true); + expect(personalFiles.confirmDialog.okButton).toBeEnabled(); + expect(personalFiles.confirmDialog.cancelButton).toBeEnabled(); }); test('[C306996] Unshare a file', async ({ personalFiles, searchPage, nodesApiAction, page }) => { diff --git a/projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-confirm-dialog.component.ts b/projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-confirm-dialog.component.ts index 0de17b3d8b..0590fa0a6e 100644 --- a/projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-confirm-dialog.component.ts +++ b/projects/aca-playwright-shared/src/page-objects/components/dialogs/adf-confirm-dialog.component.ts @@ -36,22 +36,4 @@ export class AdfConfirmDialogComponent extends BaseComponent { getDialogContent = (text: string) => this.getChild('[data-automation-id="adf-confirm-dialog-base-message"]', { hasText: text }); okButton = this.getChild('[data-automation-id="adf-confirm-dialog-confirmation"]'); cancelButton = this.getChild('[data-automation-id="adf-confirm-dialog-reject"]'); - - async isRemoveEnabled(): Promise { - try { - await this.okButton.isVisible(); - return this.okButton.isEnabled(); - } catch { - throw new Error(`Remove button is not enabled`); - } - } - - async isCancelEnabled(): Promise { - try { - await this.cancelButton.isVisible(); - return this.cancelButton.isEnabled(); - } catch { - throw new Error(`CANCEL button is not enabled`); - } - } } diff --git a/projects/aca-playwright-shared/src/utils/config.ts b/projects/aca-playwright-shared/src/utils/config.ts index 6765d11cf9..f85982bae7 100644 --- a/projects/aca-playwright-shared/src/utils/config.ts +++ b/projects/aca-playwright-shared/src/utils/config.ts @@ -43,13 +43,3 @@ export const SIDEBAR_LABELS = { FAVORITES: 'Favorites', TRASH: 'Trash' }; - -export const SITE_VISIBILITY = { - PRIVATE: 'PRIVATE' -}; - -export const SITE_ROLES = { - SITE_CONSUMER: { - ROLE: 'SiteConsumer' - } -}; From 8e12e81a2babe738729f4c06b97187e87c623a96 Mon Sep 17 00:00:00 2001 From: kritagya09 Date: Wed, 27 Dec 2023 14:38:44 +0530 Subject: [PATCH 08/10] Addressed review comments --- .../src/tests/share/unshare-file-search-results.spec.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts b/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts index f5b38b75a7..3dcc626281 100755 --- a/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts +++ b/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts @@ -133,11 +133,11 @@ test.describe('Unshare a file from Search Results', () => { await personalFiles.shareDialog.shareToggle.click(); await personalFiles.confirmDialog.okButton.click(); - expect(await nodesApiAction.isFileShared(file2Id)).toBe(false); await page.goto(url); await personalFiles.viewer.waitForViewerToOpen(); expect(await personalFiles.viewer.fileTitleButtonLocator.innerText()).not.toEqual(file2); + expect(await nodesApiAction.isFileShared(file2Id)).toBe(false); }); test('[C306997] Cancel the Unshare action', async ({ personalFiles, searchPage }) => { @@ -170,13 +170,11 @@ test.describe('Unshare a file from Search Results', () => { await personalFiles.shareDialog.shareToggle.click(); await personalFiles.confirmDialog.okButton.click(); - expect(await nodesApiAction.isFileShared(file4Id)).toBe(false); await page.goto(url); await personalFiles.viewer.waitForViewerToOpen(); expect(personalFiles.viewer.fileTitleButtonLocator).not.toEqual(file4); - - await page.reload(); + expect(await nodesApiAction.isFileShared(file4Id)).toBe(false); }); test('[C306998] Consumer - on Search Results - file shared by other user', async ({ personalFiles, searchPage, nodesApiAction }) => { @@ -194,7 +192,7 @@ test.describe('Unshare a file from Search Results', () => { expect(await nodesApiAction.isFileShared(fileSite2Id)).toBe(true); }); - test('[C307000] Consumer - on Search Results - file shared by the user', async ({ personalFiles, searchPage, nodesApiAction }) => { + test('[C307000] Consumer - on Search Results - file shared by the user', async ({ personalFiles, searchPage, nodesApiAction, page }) => { await personalFiles.acaHeader.searchButton.click(); await searchPage.searchInput.searchButton.click(); await searchPage.searchOverlay.checkFilesAndFolders(); @@ -206,6 +204,7 @@ test.describe('Unshare a file from Search Results', () => { await personalFiles.shareDialog.shareToggle.click(); await personalFiles.confirmDialog.okButton.click(); + await page.waitForTimeout(timeouts.tiny); expect(await nodesApiAction.isFileShared(fileSite2Id)).toBe(false); }); }); From 1b64118f6acef4b7182acc72da0c11aa1c22b654 Mon Sep 17 00:00:00 2001 From: kritagya09 Date: Wed, 27 Dec 2023 17:07:14 +0530 Subject: [PATCH 09/10] Created a separate test suit for share-actions --- .github/workflows/pull-request.yml | 4 +- e2e/playwright/share-action/.eslintrc.json | 26 +++++++++++ .../share-action/exclude.tests.json | 1 + .../share-action/playwright.config.ts | 44 +++++++++++++++++++ e2e/playwright/share-action/project.json | 22 ++++++++++ .../src/tests/share/share-file.spec.ts | 0 .../share/unshare-file-search-results.spec.ts | 5 +-- .../share-action/tsconfig.e2e.adf.json | 15 +++++++ e2e/playwright/share-action/tsconfig.e2e.json | 15 +++++++ .../src/utils/timeouts.ts | 2 +- 10 files changed, 128 insertions(+), 6 deletions(-) create mode 100644 e2e/playwright/share-action/.eslintrc.json create mode 100644 e2e/playwright/share-action/exclude.tests.json create mode 100644 e2e/playwright/share-action/playwright.config.ts create mode 100644 e2e/playwright/share-action/project.json rename e2e/playwright/{actions => share-action}/src/tests/share/share-file.spec.ts (100%) rename e2e/playwright/{actions => share-action}/src/tests/share/unshare-file-search-results.spec.ts (98%) create mode 100644 e2e/playwright/share-action/tsconfig.e2e.adf.json create mode 100755 e2e/playwright/share-action/tsconfig.e2e.json diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index c19fad2a31..86d0e8afaf 100644 --- a/.github/workflows/pull-request.yml +++ b/.github/workflows/pull-request.yml @@ -115,8 +115,6 @@ jobs: id: 2 - name: "viewer,infoDrawer,extensions" id: 3 - - name: "shareActions" - id: 4 - name: "copyMoveActions" id: 6 - name: "deleteActions" @@ -176,6 +174,8 @@ jobs: id: 7 - name: "list-views" id: 8 + - name: "share-action" + id: 9 steps: - name: Checkout uses: actions/checkout@v3 diff --git a/e2e/playwright/share-action/.eslintrc.json b/e2e/playwright/share-action/.eslintrc.json new file mode 100644 index 0000000000..48440bfc38 --- /dev/null +++ b/e2e/playwright/share-action/.eslintrc.json @@ -0,0 +1,26 @@ +{ + "extends": "../../../.eslintrc.json", + "ignorePatterns": [ + "!**/*" + ], + "overrides": [ + { + "files": [ + "*.ts" + ], + "parserOptions": { + "project": [ + "e2e/playwright/share-action/tsconfig.e2e.json" + ], + "createDefaultProgram": true + }, + "plugins": [ + "rxjs", + "unicorn" + ], + "rules": { + "@typescript-eslint/no-floating-promises": "off" + } + } + ] +} diff --git a/e2e/playwright/share-action/exclude.tests.json b/e2e/playwright/share-action/exclude.tests.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/e2e/playwright/share-action/exclude.tests.json @@ -0,0 +1 @@ +{} diff --git a/e2e/playwright/share-action/playwright.config.ts b/e2e/playwright/share-action/playwright.config.ts new file mode 100644 index 0000000000..5b20171bab --- /dev/null +++ b/e2e/playwright/share-action/playwright.config.ts @@ -0,0 +1,44 @@ +/*! + * Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved. + * + * Alfresco Example Content Application + * + * This file is part of the Alfresco Example Content Application. + * If the software was purchased under a paid Alfresco license, the terms of + * the paid license agreement will prevail. Otherwise, the software is + * provided under the following open source license terms: + * + * The Alfresco Example Content Application is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * The Alfresco Example Content Application is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * from Hyland Software. If not, see . + */ + +import { PlaywrightTestConfig } from '@playwright/test'; +import { CustomConfig, getGlobalConfig, getExcludedTestsRegExpArray } from '@alfresco/playwright-shared'; +import EXCLUDED_JSON from './exclude.tests.json'; + +const config: PlaywrightTestConfig = { + ...getGlobalConfig, + + grepInvert: getExcludedTestsRegExpArray(EXCLUDED_JSON, 'Share Action'), + projects: [ + { + name: 'Share Action', + testDir: './src/tests', + use: { + users: ['hruser'] + } + } + ] +}; + +export default config; diff --git a/e2e/playwright/share-action/project.json b/e2e/playwright/share-action/project.json new file mode 100644 index 0000000000..2dd16e9b54 --- /dev/null +++ b/e2e/playwright/share-action/project.json @@ -0,0 +1,22 @@ +{ + "name": "share-action-e2e", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "e2e/playwright/share-action/src", + "projectType": "application", + "targets": { + "e2e": { + "executor": "nx:run-commands", + "options": { + "commands": ["npx playwright test --config=e2e/playwright/share-action/playwright.config.ts"] + }, + "configurations": { + "production": { + "devServerTarget": "content-ce:serve:production" + } + } + }, + "lint": { + "executor": "@angular-eslint/builder:lint" + } + } +} diff --git a/e2e/playwright/actions/src/tests/share/share-file.spec.ts b/e2e/playwright/share-action/src/tests/share/share-file.spec.ts similarity index 100% rename from e2e/playwright/actions/src/tests/share/share-file.spec.ts rename to e2e/playwright/share-action/src/tests/share/share-file.spec.ts diff --git a/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts b/e2e/playwright/share-action/src/tests/share/unshare-file-search-results.spec.ts similarity index 98% rename from e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts rename to e2e/playwright/share-action/src/tests/share/unshare-file-search-results.spec.ts index 3dcc626281..ac665aac42 100755 --- a/e2e/playwright/actions/src/tests/share/unshare-file-search-results.spec.ts +++ b/e2e/playwright/share-action/src/tests/share/unshare-file-search-results.spec.ts @@ -26,7 +26,7 @@ import { Site } from '@alfresco/js-api'; import { ApiClientFactory, FileActionsApi, NodesApi, SharedLinksApi, SitesApi, Utils, test, timeouts } from '@alfresco/playwright-shared'; import { expect } from '@playwright/test'; -test.describe('Unshare a file from Search Results', () => { +test.describe.only('Unshare a file from Search Results', () => { const random = Utils.random(); const username = `user-${random}`; @@ -46,7 +46,6 @@ test.describe('Unshare a file from Search Results', () => { const sitePrivate = `site-private-${random}`; - let fileSite1Id: string; let fileSite2Id: string; const fileSite1 = `search-file-${searchRandom}-Site1.txt`; const fileSite2 = `search-file-${searchRandom}-Site2.txt`; @@ -72,7 +71,7 @@ test.describe('Unshare a file from Search Results', () => { await sitesApi.createSite(sitePrivate, Site.VisibilityEnum.PRIVATE); const docLibId = await sitesApi.getDocLibId(sitePrivate); - fileSite1Id = (await nodesApi.createFile(fileSite1, docLibId)).entry.id; + const fileSite1Id = (await nodesApi.createFile(fileSite1, docLibId)).entry.id; fileSite2Id = (await nodesApi.createFile(fileSite2, docLibId)).entry.id; await sitesApi.addSiteMember(sitePrivate, username, Site.RoleEnum.SiteConsumer); diff --git a/e2e/playwright/share-action/tsconfig.e2e.adf.json b/e2e/playwright/share-action/tsconfig.e2e.adf.json new file mode 100644 index 0000000000..87cbcf775a --- /dev/null +++ b/e2e/playwright/share-action/tsconfig.e2e.adf.json @@ -0,0 +1,15 @@ +{ + "extends": "../../../tsconfig.adf.json", + "compilerOptions": { + "outDir": "../../out-tsc/e2e", + "baseUrl": "./", + "module": "commonjs", + "target": "es2017", + "types": ["jasmine", "jasminewd2", "node"], + "skipLibCheck": true, + "paths": { + "@alfresco/playwright-shared": ["../../../projects/aca-playwright-shared/src/index.ts"] + } + }, + "exclude": ["node_modules"] +} diff --git a/e2e/playwright/share-action/tsconfig.e2e.json b/e2e/playwright/share-action/tsconfig.e2e.json new file mode 100755 index 0000000000..c317985239 --- /dev/null +++ b/e2e/playwright/share-action/tsconfig.e2e.json @@ -0,0 +1,15 @@ +{ + "extends": "../../../tsconfig.json", + "compilerOptions": { + "outDir": "../../out-tsc/e2e", + "baseUrl": "./", + "module": "commonjs", + "target": "es2017", + "types": ["jasmine", "jasminewd2", "node", "@playwright/test"], + "skipLibCheck": true, + "paths": { + "@alfresco/playwright-shared": ["../../../projects/aca-playwright-shared/src/index.ts"] + } + }, + "exclude": ["node_modules"] +} diff --git a/projects/aca-playwright-shared/src/utils/timeouts.ts b/projects/aca-playwright-shared/src/utils/timeouts.ts index aa6768be1e..62a5b16be4 100644 --- a/projects/aca-playwright-shared/src/utils/timeouts.ts +++ b/projects/aca-playwright-shared/src/utils/timeouts.ts @@ -34,5 +34,5 @@ export const timeouts = { globalTest: 45 * 1000, extendedTest: 150 * 1000, webServer: 240 * 1000, - globalSpec: 60 * 20 * 1000 + globalSpec: 60 * 10 * 1000 }; From 1cc0f611cedd30bed4b337181b9725ff825c1cc8 Mon Sep 17 00:00:00 2001 From: kritagya09 Date: Wed, 27 Dec 2023 17:48:34 +0530 Subject: [PATCH 10/10] Remove only --- .../src/tests/share/unshare-file-search-results.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e2e/playwright/share-action/src/tests/share/unshare-file-search-results.spec.ts b/e2e/playwright/share-action/src/tests/share/unshare-file-search-results.spec.ts index ac665aac42..49d9e572ec 100755 --- a/e2e/playwright/share-action/src/tests/share/unshare-file-search-results.spec.ts +++ b/e2e/playwright/share-action/src/tests/share/unshare-file-search-results.spec.ts @@ -26,7 +26,7 @@ import { Site } from '@alfresco/js-api'; import { ApiClientFactory, FileActionsApi, NodesApi, SharedLinksApi, SitesApi, Utils, test, timeouts } from '@alfresco/playwright-shared'; import { expect } from '@playwright/test'; -test.describe.only('Unshare a file from Search Results', () => { +test.describe('Unshare a file from Search Results', () => { const random = Utils.random(); const username = `user-${random}`;