From 7dc507c8679338e0308cd6343c5aa4df88c0b8bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20=C5=9Awiderski?= Date: Tue, 24 Jun 2025 12:36:38 +0200 Subject: [PATCH] [ACS-9777] [E2E] Added e2es for 5522 and 5523 (#4632) * [ACS-9777] [E2E] Added e2es for 5522 and 5523 * [ACS-9777] excluded XAT-5523 * [ACS-9777] 5523 can add comments * [ACS-9777] added wait for comments list --- e2e/playwright/info-drawer/exclude.tests.json | 4 +- .../info-drawer/src/tests/comments.e2e.ts | 92 ++++++++++++++++++- .../page-objects/pages/my-libraries.page.ts | 1 + 3 files changed, 95 insertions(+), 2 deletions(-) diff --git a/e2e/playwright/info-drawer/exclude.tests.json b/e2e/playwright/info-drawer/exclude.tests.json index 0967ef424..494662023 100644 --- a/e2e/playwright/info-drawer/exclude.tests.json +++ b/e2e/playwright/info-drawer/exclude.tests.json @@ -1 +1,3 @@ -{} +{ + "XAT-5523": "https://hyland.atlassian.net/browse/ACA-4697" +} diff --git a/e2e/playwright/info-drawer/src/tests/comments.e2e.ts b/e2e/playwright/info-drawer/src/tests/comments.e2e.ts index 4953a3ed8..0dc7d6fdd 100755 --- a/e2e/playwright/info-drawer/src/tests/comments.e2e.ts +++ b/e2e/playwright/info-drawer/src/tests/comments.e2e.ts @@ -23,7 +23,19 @@ */ import { expect } from '@playwright/test'; -import { ApiClientFactory, Utils, test, TrashcanApi, FavoritesPageApi, NodesApi, FileActionsApi } from '@alfresco/aca-playwright-shared'; +import { + ApiClientFactory, + Utils, + test, + TrashcanApi, + FavoritesPageApi, + NodesApi, + FileActionsApi, + SitesApi, + MyLibrariesPage, + timeouts +} from '@alfresco/aca-playwright-shared'; +import { Site } from '@alfresco/js-api'; test.describe('Info Drawer - Comments', () => { const apiClientFactory = new ApiClientFactory(); @@ -140,3 +152,81 @@ test.describe('Info Drawer - Comments', () => { await expect(favoritePage.infoDrawer.commentUsername.nth(0)).toHaveText('Administrator'); }); }); + +test.describe('Info Drawer - Comments - Sites Privileges', () => { + const apiClientFactory = new ApiClientFactory(); + let nodesApi1: NodesApi; + let trashcanApi1: TrashcanApi; + let fileActionsApi1: FileActionsApi; + let sitesApi1: SitesApi; + let siteEntry5522: Site; + let siteEntry5523: Site; + const siteName5522 = `site-e2e-${Utils.random()}`; + const siteName5523 = `site-e2e-${Utils.random()}`; + const folderName5522 = `folder-e2e-${Utils.random()}`; + const folderName5523 = `folder-e2e-${Utils.random()}`; + const username1 = `user-e2e-${Utils.random()}`; + const username2 = `user-e2e-${Utils.random()}`; + + async function navigateToFolderAndOpenCommentsTab(page: MyLibrariesPage, siteGuid: string, folderName: string) { + await page.navigate({ remoteUrl: `#/libraries/${siteGuid}` }); + await page.dataTable.getRowByName('documentLibrary').dblclick(); + await page.dataTable.selectItems(folderName); + await page.acaHeader.viewDetails.click(); + await page.infoDrawer.commentsTab.click(); + } + + test.beforeAll(async () => { + try { + await apiClientFactory.setUpAcaBackend('admin'); + await apiClientFactory.createUser({ username: username1 }); + await apiClientFactory.createUser({ username: username2 }); + nodesApi1 = await NodesApi.initialize(username1, username1); + trashcanApi1 = await TrashcanApi.initialize(username1, username1); + fileActionsApi1 = await FileActionsApi.initialize(username1, username1); + sitesApi1 = await SitesApi.initialize(username1, username1); + + siteEntry5522 = (await sitesApi1.createSite(siteName5522, Site.VisibilityEnum.PRIVATE)).entry; + await sitesApi1.addSiteMember(siteEntry5522.id, username2, 'SiteConsumer'); + + siteEntry5523 = (await sitesApi1.createSite(siteName5523, Site.VisibilityEnum.PRIVATE)).entry; + await sitesApi1.addSiteMember(siteEntry5523.id, username2, 'SiteContributor'); + + const documentLibraryId1 = await nodesApi1.getNodeIdFromParent('documentLibrary', siteEntry5522.guid); + await nodesApi1.createFolder(folderName5522, documentLibraryId1); + await fileActionsApi1.waitForNodes(folderName5522, { expect: 1 }); + + const documentLibraryId2 = await nodesApi1.getNodeIdFromParent('documentLibrary', siteEntry5523.guid); + await nodesApi1.createFolder(folderName5523, documentLibraryId2); + await fileActionsApi1.waitForNodes(folderName5523, { expect: 1 }); + } catch (error) { + console.error(`beforeAll failed : ${error}`); + } + }); + + test.beforeEach(async ({ loginPage }) => { + await Utils.tryLoginUser(loginPage, username2, username2, 'beforeEach failed for user2'); + }); + + test.afterAll(async () => { + await Utils.deleteNodesSitesEmptyTrashcan(nodesApi1, trashcanApi1, 'afterAll failed for user1'); + }); + + test('[XAT-5522] Comments: Consumer user does not see the multiline field and Add button', async ({ myLibrariesPage }) => { + await navigateToFolderAndOpenCommentsTab(myLibrariesPage, siteEntry5522.guid, folderName5522); + await expect(myLibrariesPage.infoDrawer.commentsHeader).toBeVisible(); + await expect(myLibrariesPage.infoDrawer.commentInputField).toBeHidden(); + await expect(myLibrariesPage.infoDrawer.addCommentButton).toBeHidden(); + }); + + test('[XAT-5523] Contributor can add comments', async ({ myLibrariesPage }) => { + await navigateToFolderAndOpenCommentsTab(myLibrariesPage, siteEntry5523.guid, folderName5523); + await expect(myLibrariesPage.infoDrawer.commentsHeader).toBeVisible(); + await expect(myLibrariesPage.infoDrawer.commentInputField).toBeVisible(); + await expect(myLibrariesPage.infoDrawer.addCommentButton).toBeVisible(); + await myLibrariesPage.infoDrawer.commentInputField.fill(`e2e-comment-${Utils.random()}`); + await myLibrariesPage.infoDrawer.addCommentButton.click(); + await myLibrariesPage.infoDrawer.commentsList.first().waitFor({ timeout: timeouts.medium }); + await expect(myLibrariesPage.infoDrawer.commentsList).toHaveCount(1); + }); +}); diff --git a/projects/aca-playwright-shared/src/page-objects/pages/my-libraries.page.ts b/projects/aca-playwright-shared/src/page-objects/pages/my-libraries.page.ts index d8b9dbe9e..c3eaecbeb 100644 --- a/projects/aca-playwright-shared/src/page-objects/pages/my-libraries.page.ts +++ b/projects/aca-playwright-shared/src/page-objects/pages/my-libraries.page.ts @@ -51,6 +51,7 @@ export class MyLibrariesPage extends BasePage { public libraryDialog = new AdfLibraryDialogComponent(this.page); public dataTable = new DataTableComponent(this.page); public libraryDetails = new AdfInfoDrawerComponent(this.page); + public infoDrawer = new AdfInfoDrawerComponent(this.page); public viewer = new ViewerComponent(this.page); public viewerDialog = new ViewerOverlayDialogComponent(this.page); public copyMoveDialog = new ContentNodeSelectorDialog(this.page);