[ACS-12075] more multibrowser stabilization pt 3 (#5256)

* [ACS-12075] more multibrowser stabilization pt 3

* [ACS-12075] copilot review fixes 1

* [ACS-12075] deploy local acs newest version test

* [ACS-12075] deploy local acs newest version test 2

* [ACS-12075] deploy local acs newest version test 3

* [ACS-12075] Big batch of tests improvements

* [ACS=12075] last batch of changes

* [ACS-12075] viewer test download fixes

* [ACS-12075] updated download funtionality in ACA with proper download name

* [ACS-12075] reverted deploy local acs changes

* [ACS-12075] updated playwright

* [ACS-12075] deleted changes related to frontend + review fixes 4

* [ACS-12075] updated npm and node
This commit is contained in:
Adam Świderski
2026-07-08 07:52:41 +00:00
committed by GitHub
parent cdd75b5019
commit bda0cf98f5
27 changed files with 871 additions and 463 deletions
@@ -27,113 +27,151 @@ import { ApiClientFactory, TrashcanApi, NodesApi, SitesApi, test, timeouts, Util
import { Site } from '@alfresco/js-api';
test.describe('viewer action file', () => {
let nodesApi: NodesApi;
let siteActions: SitesApi;
let trashcanApi: TrashcanApi;
const username = `user-${Utils.random()}`;
const parent = `parent-viewer-${Utils.random()}`;
let parentId: string;
const subFolder1 = `subFolder1-${Utils.random()}`;
let subFolder1Id: string;
const subFolder2 = `subFolder2-${Utils.random()}`;
let subFolder2Id: string;
const fileName1 = `file1-${Utils.random()}.txt`;
test.describe('Personal Files folder hierarchy', () => {
let nodesApi: NodesApi;
let trashcanApi: TrashcanApi;
const username = `breadcrumb-pf-${Utils.random()}`;
const parent = `parent-viewer-${Utils.random()}`;
const subFolder1 = `subFolder1-${Utils.random()}`;
const subFolder2 = `subFolder2-${Utils.random()}`;
const fileName1 = `file1-${Utils.random()}.txt`;
let subFolder1Id: string;
let subFolder2Id: string;
const siteName = `site-breadcrumb-${Utils.random()}`;
let docLibId: string;
const parentFromSite = `parent-in-site-${Utils.random()}`;
let parentFromSiteId: string;
const subFolder1FromSite = `subFolder1-in-site-${Utils.random()}`;
let subFolder1FromSiteId: string;
const subFolder2FromSite = `subFolder2-in-site-${Utils.random()}`;
let subFolder2FromSiteId: string;
const fileName1FromSite = `file1-in-site-${Utils.random()}.txt`;
test.beforeAll(async () => {
test.setTimeout(timeouts.extendedTest);
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
nodesApi = await NodesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);
const parentId = (await nodesApi.createFolder(parent)).entry.id;
subFolder1Id = (await nodesApi.createFolder(subFolder1, parentId)).entry.id;
subFolder2Id = (await nodesApi.createFolder(subFolder2, subFolder1Id)).entry.id;
await nodesApi.createFile(fileName1, subFolder2Id);
});
const parent2 = `parent2-${Utils.random()}`;
let parent2Id: string;
const folder1 = `folder1-${Utils.random()}`;
let folder1Id: string;
const folder1Renamed = `renamed-${Utils.random()}`;
test.beforeEach(async ({ loginPage }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
});
test.beforeAll(async () => {
test.setTimeout(timeouts.extendedTest);
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
nodesApi = await NodesApi.initialize(username, username);
siteActions = await SitesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);
const parentNode = await nodesApi.createFolder(parent);
parentId = parentNode.entry.id;
subFolder1Id = (await nodesApi.createFolder(subFolder1, parentId)).entry.id;
subFolder2Id = (await nodesApi.createFolder(subFolder2, subFolder1Id)).entry.id;
await nodesApi.createFile(fileName1, subFolder2Id);
test.afterAll(async () => {
await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'afterAll failed');
});
parent2Id = (await nodesApi.createFolder(parent2)).entry.id;
folder1Id = (await nodesApi.createFolder(folder1, parent2Id)).entry.id;
test('[XAT-4387] Personal Files breadcrumb main node', async ({ personalFiles }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/` });
await expect(personalFiles.breadcrumb.items).toHaveCount(1);
await expect(personalFiles.breadcrumb.currentItem).toHaveText('Personal Files');
});
await siteActions.createSite(siteName, Site.VisibilityEnum.PUBLIC);
docLibId = await siteActions.getDocLibId(siteName);
parentFromSiteId = (await nodesApi.createFolder(parentFromSite, docLibId)).entry.id;
subFolder1FromSiteId = (await nodesApi.createFolder(subFolder1FromSite, parentFromSiteId)).entry.id;
subFolder2FromSiteId = (await nodesApi.createFolder(subFolder2FromSite, subFolder1FromSiteId)).entry.id;
await nodesApi.createFile(fileName1FromSite, subFolder2FromSiteId);
test('[XAT-4388] Personal Files breadcrumb for a folder hierarchy', async ({ personalFiles }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/${subFolder2Id}` });
const expectedBreadcrumb = ['Personal Files', parent, subFolder1, subFolder2];
expect(await personalFiles.breadcrumb.getAllItems()).toEqual(expectedBreadcrumb);
});
test('[XAT-4396] User can navigate to any location by clicking on any step from the breadcrumb', async ({ personalFiles }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/${subFolder2Id}` });
await personalFiles.breadcrumb.clickItem(subFolder1);
await personalFiles.dataTable.spinnerWaitForReload();
const expectedBreadcrumb = ['Personal Files', parent, subFolder1];
expect(await personalFiles.breadcrumb.getAllItems()).toEqual(expectedBreadcrumb);
});
test('[XAT-4397] Tooltip appears on hover on a step in breadcrumb', async ({ personalFiles }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/${subFolder2Id}` });
const item = personalFiles.breadcrumb.items.nth(2);
await expect(item).toHaveAttribute('title', subFolder1);
});
test('[XAT-4399] Browser back navigates to previous location regardless of breadcrumb steps', async ({ personalFiles, trashPage }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/${subFolder2Id}` });
await trashPage.navigate();
await personalFiles.page.goBack();
await personalFiles.dataTable.spinnerWaitForReload();
const expectedBreadcrumb = ['Personal Files', parent, subFolder1, subFolder2];
expect(await personalFiles.breadcrumb.getAllItems()).toEqual(expectedBreadcrumb);
});
});
test.beforeEach(async ({ loginPage }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
test.describe('My Libraries folder hierarchy', () => {
let nodesApi: NodesApi;
let siteActions: SitesApi;
let trashcanApi: TrashcanApi;
const username = `breadcrumb-lib-${Utils.random()}`;
const siteName = `site-breadcrumb-${Utils.random()}`;
const parentFromSite = `parent-in-site-${Utils.random()}`;
const subFolder1FromSite = `subFolder1-in-site-${Utils.random()}`;
const subFolder2FromSite = `subFolder2-in-site-${Utils.random()}`;
const fileName1FromSite = `file1-in-site-${Utils.random()}.txt`;
let docLibId: string;
let subFolder2FromSiteId: string;
test.beforeAll(async () => {
test.setTimeout(timeouts.extendedTest);
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
nodesApi = await NodesApi.initialize(username, username);
siteActions = await SitesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);
await siteActions.createSite(siteName, Site.VisibilityEnum.PUBLIC);
docLibId = await siteActions.getDocLibId(siteName);
const parentFromSiteId = (await nodesApi.createFolder(parentFromSite, docLibId)).entry.id;
const subFolder1FromSiteId = (await nodesApi.createFolder(subFolder1FromSite, parentFromSiteId)).entry.id;
subFolder2FromSiteId = (await nodesApi.createFolder(subFolder2FromSite, subFolder1FromSiteId)).entry.id;
await nodesApi.createFile(fileName1FromSite, subFolder2FromSiteId);
});
test.beforeEach(async ({ loginPage }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
});
test.afterAll(async () => {
await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'afterAll failed', siteActions, [siteName]);
});
test('[XAT-4391] My Libraries breadcrumb for a folder hierarchy', async ({ myLibrariesPage }) => {
await myLibrariesPage.navigate({ remoteUrl: `#/libraries/${subFolder2FromSiteId}` });
const expectedItems = ['My Libraries', siteName, parentFromSite, subFolder1FromSite, subFolder2FromSite];
expect(await myLibrariesPage.breadcrumb.getAllItems()).toEqual(expectedItems);
});
});
test.afterAll(async () => {
await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'afterAll failed', siteActions, [docLibId]);
});
test.describe('Folder rename', () => {
let nodesApi: NodesApi;
let trashcanApi: TrashcanApi;
const username = `breadcrumb-rename-${Utils.random()}`;
const parent2 = `parent2-${Utils.random()}`;
const folder1 = `folder1-${Utils.random()}`;
const folder1Renamed = `renamed-${Utils.random()}`;
let folder1Id: string;
test('[XAT-4387] Personal Files breadcrumb main node', async ({ personalFiles }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/` });
expect(await personalFiles.breadcrumb.items.count(), 'Breadcrumb has incorrect number of items').toEqual(1);
await expect(personalFiles.breadcrumb.currentItem).toHaveText('Personal Files');
});
test.beforeAll(async () => {
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
nodesApi = await NodesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);
const parent2Id = (await nodesApi.createFolder(parent2)).entry.id;
folder1Id = (await nodesApi.createFolder(folder1, parent2Id)).entry.id;
});
test('[XAT-4388] Personal Files breadcrumb for a folder hierarchy', async ({ personalFiles }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/${subFolder2Id}` });
const expectedBreadcrumb = ['Personal Files', parent, subFolder1, subFolder2];
expect(await personalFiles.breadcrumb.getAllItems()).toEqual(expectedBreadcrumb);
});
test.beforeEach(async ({ loginPage }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
});
test('[XAT-4391] My Libraries breadcrumb for a folder hierarchy', async ({ myLibrariesPage }) => {
await myLibrariesPage.navigate({ remoteUrl: `#/libraries/${subFolder2FromSiteId}` });
const expectedItems = ['My Libraries', siteName, parentFromSite, subFolder1FromSite, subFolder2FromSite];
expect(await myLibrariesPage.breadcrumb.getAllItems()).toEqual(expectedItems);
});
test.afterAll(async () => {
await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'afterAll failed');
});
test('[XAT-4396] User can navigate to any location by clicking on any step from the breadcrumb', async ({ personalFiles }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/${subFolder2Id}` });
await personalFiles.breadcrumb.clickItem(subFolder1);
await personalFiles.dataTable.spinnerWaitForReload();
const expectedBreadcrumb = ['Personal Files', parent, subFolder1];
expect(await personalFiles.breadcrumb.getAllItems()).toEqual(expectedBreadcrumb);
});
test('[XAT-4397] Tooltip appears on hover on a step in breadcrumb', async ({ personalFiles }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/${subFolder2Id}` });
const item = personalFiles.breadcrumb.items.nth(2);
await expect(item).toHaveAttribute('title', subFolder1);
});
test('[XAT-4398] Breadcrumb updates correctly when folder is renamed', async ({ personalFiles, nodesApiAction }) => {
await nodesApiAction.renameNode(folder1Id, folder1Renamed);
await personalFiles.navigate({ remoteUrl: `#/personal-files/${folder1Id}` });
await personalFiles.page.reload();
await personalFiles.dataTable.spinnerWaitForReload();
await expect(personalFiles.breadcrumb.currentItem).toHaveText(folder1Renamed);
});
test('[XAT-4399] Browser back navigates to previous location regardless of breadcrumb steps', async ({ personalFiles, trashPage }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/${subFolder2Id}` });
await trashPage.navigate();
await personalFiles.page.goBack();
await personalFiles.dataTable.spinnerWaitForReload();
const expectedBreadcrumb = ['Personal Files', parent, subFolder1, subFolder2];
expect(await personalFiles.breadcrumb.getAllItems()).toEqual(expectedBreadcrumb);
test('[XAT-4398] Breadcrumb updates correctly when folder is renamed', async ({ personalFiles, nodesApiAction }) => {
await nodesApiAction.renameNode(folder1Id, folder1Renamed);
await personalFiles.navigate({ remoteUrl: `#/personal-files/${folder1Id}` });
await personalFiles.page.reload();
await personalFiles.dataTable.spinnerWaitForReload();
await expect(personalFiles.breadcrumb.currentItem).toHaveText(folder1Renamed);
});
});
});
@@ -26,69 +26,99 @@ import { expect } from '@playwright/test';
import { ApiClientFactory, APP_ROUTES, SIDEBAR_LABELS, test, Utils } from '@alfresco/aca-playwright-shared';
test.describe('Sidebar', () => {
const username = `user-${Utils.random()}`;
test.describe('Navigation from sidebar', () => {
const username = `sidebar-nav-${Utils.random()}`;
test.beforeAll(async () => {
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
test.beforeAll(async () => {
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
});
test.beforeEach(async ({ loginPage }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
});
test('[XAT-5368] Navigate to My Libraries', async ({ personalFiles, myLibrariesPage }) => {
await personalFiles.navigate();
await personalFiles.sidenav.openPanel(SIDEBAR_LABELS.MY_LIBRARIES);
await personalFiles.dataTable.spinnerWaitForReload();
expect(myLibrariesPage.page.url()).toContain(APP_ROUTES.MY_LIBRARIES);
expect(await myLibrariesPage.sidenav.isActive(SIDEBAR_LABELS.MY_LIBRARIES), 'My Libraries link not active').toBe(true);
});
test('[XAT-19271] Repository / Company Home button is accessible for all users on the sidebar', async ({ personalFiles }) => {
await personalFiles.navigate();
await personalFiles.sidenav.openPanel(SIDEBAR_LABELS.REPOSITORY);
expect(await personalFiles.sidenav.isActive(SIDEBAR_LABELS.REPOSITORY), 'Repository tab not active').toBe(true);
await personalFiles.dataTable.spinnerWaitForReload();
expect(await personalFiles.dataTable.isEmpty()).toBe(false);
});
});
test.beforeEach(async ({ loginPage }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
test.describe('Sidenav expand/collapse', () => {
const username = `sidebar-toggle-${Utils.random()}`;
test.beforeAll(async () => {
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
});
test.beforeEach(async ({ loginPage }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
});
test('[XAT-5384] Sidenav state is preserved on page refresh', async ({ personalFiles }) => {
await personalFiles.navigate();
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar not expanded').toBeVisible();
await personalFiles.reload();
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar not expanded').toBeVisible();
await personalFiles.sidenav.collapseSideNav();
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar expanded').toBeHidden();
await personalFiles.reload();
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar expanded').toBeHidden();
});
test('[XAT-5382] Sidenav can be collapsed and expanded', async ({ personalFiles }) => {
await personalFiles.navigate();
await personalFiles.sidenav.collapseSideNav();
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar expanded').toBeHidden();
await personalFiles.sidenav.expandSideNav();
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar not expanded').toBeVisible();
});
});
test('[XAT-5368] Navigate to My Libraries', async ({ personalFiles, myLibrariesPage }) => {
await personalFiles.navigate();
await personalFiles.sidenav.openPanel(SIDEBAR_LABELS.MY_LIBRARIES);
await personalFiles.dataTable.spinnerWaitForReload();
expect(myLibrariesPage.page.url()).toContain(APP_ROUTES.MY_LIBRARIES);
expect(await myLibrariesPage.sidenav.isActive(SIDEBAR_LABELS.MY_LIBRARIES), 'My Libraries link not active').toBe(true);
});
test.describe('Sidenav with search results', () => {
const username = `sidebar-search-${Utils.random()}`;
test('[XAT-5387] The sidenav can be collapsed when search results page is displayed', async ({ personalFiles }) => {
await personalFiles.navigate({ remoteUrl: `#/search;q=test` });
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar expanded').toBeVisible();
await personalFiles.sidenav.collapseSideNav();
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar not collapsed').toBeHidden();
});
test.beforeAll(async () => {
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
});
test('[XAT-5384] Sidenav state is preserved on page refresh', async ({ personalFiles }) => {
await personalFiles.navigate();
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar not expanded').toBeVisible();
await personalFiles.reload();
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar not expanded').toBeVisible();
test.beforeEach(async ({ loginPage }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
});
await personalFiles.sidenav.collapseSideNav();
test('[XAT-5387] The sidenav can be collapsed when search results page is displayed', async ({ personalFiles }) => {
await personalFiles.navigate({ remoteUrl: `#/search;q=test` });
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar expanded').toBeVisible();
await personalFiles.sidenav.collapseSideNav();
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar not collapsed').toBeHidden();
});
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar expanded').toBeHidden();
await personalFiles.reload();
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar expanded').toBeHidden();
});
test('[XAT-5382] Sidenav can be collapsed and expanded', async ({ personalFiles }) => {
await personalFiles.navigate();
await personalFiles.sidenav.collapseSideNav();
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar expanded').toBeHidden();
await personalFiles.sidenav.expandSideNav();
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar not expanded').toBeVisible();
});
test('[XAT-5386] The sidenav returns to the default state when navigating away from the search results page', async ({
personalFiles,
searchPage
}) => {
await personalFiles.navigate({ remoteUrl: `#/search;q=test` });
await searchPage.searchInputComponent.searchCloseButton.click();
await searchPage.sidenav.expandedSidenav.waitFor({ state: 'attached' });
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar not expanded').toBeVisible();
});
test('[XAT-19271] Repository / Company Home button is accessible for all users on the sidebar', async ({ personalFiles }) => {
await personalFiles.navigate();
await personalFiles.sidenav.openPanel(SIDEBAR_LABELS.REPOSITORY);
expect(await personalFiles.sidenav.isActive(SIDEBAR_LABELS.REPOSITORY), 'Repository tab not active').toBe(true);
await personalFiles.dataTable.spinnerWaitForReload();
expect(await personalFiles.dataTable.isEmpty()).toBe(false);
test('[XAT-5386] The sidenav returns to the default state when navigating away from the search results page', async ({
personalFiles,
searchPage
}) => {
await personalFiles.navigate({ remoteUrl: `#/search;q=test` });
await searchPage.searchInputComponent.searchCloseButton.click();
await searchPage.sidenav.expandedSidenav.waitFor({ state: 'attached' });
await expect(personalFiles.sidenav.expandedSidenav, 'Sidebar not expanded').toBeVisible();
});
});
});
@@ -26,66 +26,107 @@ import { expect } from '@playwright/test';
import { ApiClientFactory, TrashcanApi, NodesApi, SitesApi, test, Utils } from '@alfresco/aca-playwright-shared';
test.describe('Single click on item name', () => {
let nodesApi: NodesApi;
let trashcanApi: TrashcanApi;
const username = `user-${Utils.random()}`;
const folder1 = `folder1-${Utils.random()}`;
const folderSearch = `folder1-${Utils.random()}`;
test.describe('in Trash', () => {
let nodesApi: NodesApi;
let trashcanApi: TrashcanApi;
const username = `single-click-trash-${Utils.random()}`;
const deletedFile1 = `file1-${Utils.random()}.txt`;
const deletedFolder1 = `folder1-${Utils.random()}`;
const deletedFile1 = `file1-${Utils.random()}.txt`;
const deletedFolder1 = `folder1-${Utils.random()}`;
test.beforeAll(async () => {
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
nodesApi = await NodesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);
await nodesApi.createFile(deletedFile1);
await nodesApi.createFolder(deletedFolder1);
});
const siteName = `site-single-${Utils.random()}`;
const fileSite = `fileSite-${Utils.random()}.txt`;
test.beforeEach(async ({ loginPage }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
});
test.beforeAll(async () => {
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
nodesApi = await NodesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);
const siteActions = await SitesApi.initialize(username, username);
await nodesApi.createFolder(folder1);
await nodesApi.createFolder(folderSearch);
await nodesApi.createFile(deletedFile1);
await nodesApi.createFolder(deletedFolder1);
test.afterAll(async () => {
await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'afterAll failed');
});
await siteActions.createSite(siteName);
const docLibId = await siteActions.getDocLibId(siteName);
await nodesApi.createFile(fileSite, docLibId);
test('[XAT-4894] Hyperlink does not appear for items in the Trash', async ({ trashPage }) => {
await trashPage.navigate();
await expect(trashPage.dataTable.getCellLinkByName(deletedFile1), 'Link on name is present').toBeHidden();
await expect(trashPage.dataTable.getCellLinkByName(deletedFolder1), 'Link on name is present').toBeHidden();
});
});
test.beforeEach(async ({ loginPage }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
test.describe('on Personal Files', () => {
let nodesApi: NodesApi;
let trashcanApi: TrashcanApi;
const username = `single-click-pf-${Utils.random()}`;
const folder1 = `folder1-${Utils.random()}`;
test.beforeAll(async () => {
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
nodesApi = await NodesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);
await nodesApi.createFolder(folder1);
});
test.beforeEach(async ({ loginPage }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
});
test.afterAll(async () => {
await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'afterAll failed');
});
test('[XAT-4897] Navigate inside the folder when clicking the hyperlink - on Personal Files', async ({ personalFiles }) => {
await personalFiles.navigate();
await personalFiles.dataTable.goThroughPagesLookingForRowWithName(folder1);
await personalFiles.dataTable.getCellLinkByName(folder1).click();
await personalFiles.dataTable.spinnerWaitForReload();
while ((await personalFiles.breadcrumb.currentItem.innerText()) === 'Personal Files') {
await personalFiles.breadcrumb.currentItem.innerText();
}
await expect(personalFiles.breadcrumb.currentItem).toHaveText(folder1);
});
});
test.afterAll(async () => {
await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'afterAll failed');
});
test.describe('in Libraries', () => {
let nodesApi: NodesApi;
let trashcanApi: TrashcanApi;
const username = `single-click-lib-${Utils.random()}`;
const siteName = `site-single-${Utils.random()}`;
const fileSite = `fileSite-${Utils.random()}.txt`;
test('[XAT-4894] Hyperlink does not appear for items in the Trash', async ({ trashPage }) => {
await trashPage.navigate();
await expect(trashPage.dataTable.getCellLinkByName(deletedFile1), 'Link on name is present').toBeHidden();
await expect(trashPage.dataTable.getCellLinkByName(deletedFolder1), 'Link on name is present').toBeHidden();
});
test.beforeAll(async () => {
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
nodesApi = await NodesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);
const siteActions = await SitesApi.initialize(username, username);
await siteActions.createSite(siteName);
const docLibId = await siteActions.getDocLibId(siteName);
await nodesApi.createFile(fileSite, docLibId);
});
test('[XAT-4897] Navigate inside the folder when clicking the hyperlink - on Personal Files', async ({ personalFiles }) => {
await personalFiles.navigate();
await personalFiles.dataTable.goThroughPagesLookingForRowWithName(folder1);
await personalFiles.dataTable.getCellLinkByName(folder1).click();
await personalFiles.dataTable.spinnerWaitForReload();
while ((await personalFiles.breadcrumb.currentItem.innerText()) === 'Personal Files') {
await personalFiles.breadcrumb.currentItem.innerText();
}
await expect(personalFiles.breadcrumb.currentItem).toHaveText(folder1);
});
test.beforeEach(async ({ loginPage }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
});
test('[XAT-4899] Navigate inside the library when clicking the hyperlink', async ({ myLibrariesPage }) => {
await myLibrariesPage.navigate();
await myLibrariesPage.dataTable.goThroughPagesLookingForRowWithName(siteName);
await myLibrariesPage.dataTable.getCellLinkByName(siteName).click();
await myLibrariesPage.dataTable.spinnerWaitForReload();
await expect(myLibrariesPage.breadcrumb.currentItem).toHaveText(siteName);
await expect(myLibrariesPage.dataTable.getCellLinkByName(fileSite), `${fileSite} not displayed`).toBeVisible();
test.afterAll(async () => {
await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'afterAll failed');
});
test('[XAT-4899] Navigate inside the library when clicking the hyperlink', async ({ myLibrariesPage }) => {
await myLibrariesPage.navigate();
await myLibrariesPage.dataTable.goThroughPagesLookingForRowWithName(siteName);
await myLibrariesPage.dataTable.getCellLinkByName(siteName).click();
await myLibrariesPage.dataTable.spinnerWaitForReload();
await expect(myLibrariesPage.breadcrumb.currentItem).toHaveText(siteName);
await expect(myLibrariesPage.dataTable.getCellLinkByName(fileSite), `${fileSite} not displayed`).toBeVisible();
});
});
});