mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2026-09-09 18:02:54 +00:00
[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:
@@ -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();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user