[ACS-7298] beforeEach and afterAll updated for list-views (#3734)

* [ACS-7298] beforeEach and afterAll updated for list-views

* [ACS-7298] 'only' deleted
This commit is contained in:
Adam Świderski
2024-03-27 10:18:08 +01:00
committed by GitHub
parent 2046630f58
commit d6e6c41a2e
10 changed files with 64 additions and 127 deletions

View File

@@ -23,11 +23,12 @@
*/ */
import { expect } from '@playwright/test'; import { expect } from '@playwright/test';
import { ApiClientFactory, LoginPage, NodesApi, Utils, test, SitesApi, FavoritesPageApi, timeouts } from '@alfresco/playwright-shared'; import { ApiClientFactory, NodesApi, Utils, test, SitesApi, FavoritesPageApi, timeouts, TrashcanApi } from '@alfresco/playwright-shared';
import { Site } from '@alfresco/js-api'; import { Site } from '@alfresco/js-api';
test.describe('Favorites Files', () => { test.describe('Favorites Files', () => {
let nodesApi: NodesApi; let nodesApi: NodesApi;
let trashcanApi: TrashcanApi;
let siteActionsAdmin: SitesApi; let siteActionsAdmin: SitesApi;
const username = `user-${Utils.random()}`; const username = `user-${Utils.random()}`;
const siteName = `site-${Utils.random()}`; const siteName = `site-${Utils.random()}`;
@@ -45,6 +46,7 @@ test.describe('Favorites Files', () => {
await apiClientFactory.setUpAcaBackend('admin'); await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username }); await apiClientFactory.createUser({ username });
nodesApi = await NodesApi.initialize(username, username); nodesApi = await NodesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);
const nodesApiAdmin = await NodesApi.initialize('admin'); const nodesApiAdmin = await NodesApi.initialize('admin');
siteActionsAdmin = await SitesApi.initialize('admin'); siteActionsAdmin = await SitesApi.initialize('admin');
const favoritesActions = await FavoritesPageApi.initialize(username, username); const favoritesActions = await FavoritesPageApi.initialize(username, username);
@@ -75,20 +77,12 @@ test.describe('Favorites Files', () => {
} }
}); });
test.beforeEach(async ({ page }) => { test.beforeEach(async ({ loginPage }) => {
const loginPage = new LoginPage(page); await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
await loginPage.loginUser(
{ username, password: username },
{
withNavigation: true,
waitForLoading: true
}
);
}); });
test.afterAll(async () => { test.afterAll(async () => {
await nodesApi.deleteCurrentUserNodes(); await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'afterAll failed', siteActionsAdmin, [siteName]);
await siteActionsAdmin.deleteSites([siteName]);
}); });
test.describe(`Regular user's Favorites files`, () => { test.describe(`Regular user's Favorites files`, () => {

View File

@@ -23,7 +23,7 @@
*/ */
import { expect } from '@playwright/test'; import { expect } from '@playwright/test';
import { ApiClientFactory, FavoritesPageApi, LoginPage, SitesApi, Utils, test, timeouts } from '@alfresco/playwright-shared'; import { ApiClientFactory, FavoritesPageApi, SitesApi, Utils, test, timeouts } from '@alfresco/playwright-shared';
import { Site } from '@alfresco/js-api'; import { Site } from '@alfresco/js-api';
test.describe('File Libraries', () => { test.describe('File Libraries', () => {
@@ -88,15 +88,8 @@ test.describe('File Libraries', () => {
}); });
test.describe('My Libraries', () => { test.describe('My Libraries', () => {
test.beforeEach(async ({ page, myLibrariesPage }) => { test.beforeEach(async ({ loginPage, myLibrariesPage }) => {
const loginPage = new LoginPage(page); await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
await loginPage.loginUser(
{ username, password: username },
{
withNavigation: true,
waitForLoading: true
}
);
await myLibrariesPage.navigate(); await myLibrariesPage.navigate();
}); });
@@ -142,15 +135,8 @@ test.describe('File Libraries', () => {
}); });
test.describe('Favorite Libraries', () => { test.describe('Favorite Libraries', () => {
test.beforeEach(async ({ page, favoritesLibrariesPage }) => { test.beforeEach(async ({ loginPage, favoritesLibrariesPage }) => {
const loginPage = new LoginPage(page); await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
await loginPage.loginUser(
{ username, password: username },
{
withNavigation: true,
waitForLoading: true
}
);
await favoritesLibrariesPage.navigate(); await favoritesLibrariesPage.navigate();
}); });

View File

@@ -23,7 +23,7 @@
*/ */
import { expect } from '@playwright/test'; import { expect } from '@playwright/test';
import { ApiClientFactory, LoginPage, NodesApi, TrashcanApi, Utils, test } from '@alfresco/playwright-shared'; import { ApiClientFactory, NodesApi, TrashcanApi, Utils, test } from '@alfresco/playwright-shared';
test.describe('Generic errors', () => { test.describe('Generic errors', () => {
const username = `user-${Utils.random()}`; const username = `user-${Utils.random()}`;
@@ -52,15 +52,8 @@ test.describe('Generic errors', () => {
} }
}); });
test.beforeEach(async ({ page }) => { test.beforeEach(async ({ loginPage }) => {
const loginPage = new LoginPage(page); await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
await loginPage.loginUser(
{ username, password: username },
{
withNavigation: true,
waitForLoading: true
}
);
}); });
test.afterAll(async () => { test.afterAll(async () => {

View File

@@ -74,15 +74,8 @@ test.describe('Special permissions', () => {
await shareApiUser.waitForFilesToBeShared([fileId]); await shareApiUser.waitForFilesToBeShared([fileId]);
}); });
test.beforeEach(async ({ page }) => { test.beforeEach(async ({ loginPage }) => {
const loginPage = new LoginPage(page); await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
await loginPage.loginUser(
{ username, password: username },
{
withNavigation: true,
waitForLoading: true
}
);
}); });
test.afterEach(async () => { test.afterEach(async () => {

View File

@@ -23,10 +23,11 @@
*/ */
import { expect } from '@playwright/test'; import { expect } from '@playwright/test';
import { APP_ROUTES, ApiClientFactory, LoginPage, NodesApi, SIDEBAR_LABELS, Utils, test } from '@alfresco/playwright-shared'; import { APP_ROUTES, ApiClientFactory, NodesApi, SIDEBAR_LABELS, Utils, test, TrashcanApi } from '@alfresco/playwright-shared';
test.describe('Personal Files', () => { test.describe('Personal Files', () => {
let nodesApi: NodesApi; let nodesApi: NodesApi;
let trashcanApi: TrashcanApi;
const username = `user-${Utils.random()}`; const username = `user-${Utils.random()}`;
const userFolder = `user-folder-${Utils.random()}`; const userFolder = `user-folder-${Utils.random()}`;
@@ -36,6 +37,7 @@ test.describe('Personal Files', () => {
await apiClientFactory.setUpAcaBackend('admin'); await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username }); await apiClientFactory.createUser({ username });
nodesApi = await NodesApi.initialize(username, username); nodesApi = await NodesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);
await nodesApi.createFolder(userFolder); await nodesApi.createFolder(userFolder);
} catch (error) { } catch (error) {
console.error(`beforeAll failed : ${error}`); console.error(`beforeAll failed : ${error}`);
@@ -43,19 +45,12 @@ test.describe('Personal Files', () => {
}); });
test.afterAll(async () => { test.afterAll(async () => {
await nodesApi.deleteCurrentUserNodes(); await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'afterAll failed');
}); });
test.describe(`Regular user's personal files`, () => { test.describe(`Regular user's personal files`, () => {
test.beforeEach(async ({ page }) => { test.beforeEach(async ({ loginPage }) => {
const loginPage = new LoginPage(page); await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
await loginPage.loginUser(
{ username, password: username },
{
withNavigation: true,
waitForLoading: true
}
);
}); });
test('[C217142] has the correct columns', async ({ personalFiles }) => { test('[C217142] has the correct columns', async ({ personalFiles }) => {
@@ -65,6 +60,7 @@ test.describe('Personal Files', () => {
}); });
test('[C217143] has default sorted column', async ({ personalFiles }) => { test('[C217143] has default sorted column', async ({ personalFiles }) => {
await Utils.reloadPageIfDatatableEmpty(personalFiles);
expect(await personalFiles.dataTable.getSortedColumnHeaderText()).toBe('Name'); expect(await personalFiles.dataTable.getSortedColumnHeaderText()).toBe('Name');
}); });

View File

@@ -23,19 +23,18 @@
*/ */
import { expect } from '@playwright/test'; import { expect } from '@playwright/test';
import { ApiClientFactory, LoginPage, NodesApi, SearchPageApi, SitesApi, TrashcanApi, Utils, test, timeouts } from '@alfresco/playwright-shared'; import { ApiClientFactory, NodesApi, SearchPageApi, SitesApi, TrashcanApi, Utils, test, timeouts } from '@alfresco/playwright-shared';
import { Site } from '@alfresco/js-api'; import { Site } from '@alfresco/js-api';
test.describe('Recent Files', () => { test.describe('Recent Files', () => {
let nodeActionsUser: NodesApi; let nodeActionsUser: NodesApi;
let siteActionsUser: SitesApi; let siteActionsUser: SitesApi;
let trashcanApi: TrashcanApi;
const username = `user-${Utils.random()}`; const username = `user-${Utils.random()}`;
const folderName = `folder-${Utils.random()}`; const folderName = `folder-${Utils.random()}`;
let folderId: string;
const fileName1 = `file-${Utils.random()}.txt`; const fileName1 = `file-${Utils.random()}.txt`;
const fileName2 = `file-${Utils.random()}.txt`; const fileName2 = `file-${Utils.random()}.txt`;
let file2Id: string;
const fileName3 = `file-${Utils.random()}.txt`; const fileName3 = `file-${Utils.random()}.txt`;
const siteName = `site-${Utils.random()}`; const siteName = `site-${Utils.random()}`;
@@ -49,10 +48,11 @@ test.describe('Recent Files', () => {
await apiClientFactory.createUser({ username }); await apiClientFactory.createUser({ username });
nodeActionsUser = await NodesApi.initialize(username, username); nodeActionsUser = await NodesApi.initialize(username, username);
siteActionsUser = await SitesApi.initialize(username, username); siteActionsUser = await SitesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);
folderId = (await nodeActionsUser.createFolder(folderName)).entry.id; await nodeActionsUser.createFolder(folderName);
await nodeActionsUser.createFiles([fileName1], folderName); await nodeActionsUser.createFiles([fileName1], folderName);
file2Id = (await nodeActionsUser.createFile(fileName2)).entry.id; await nodeActionsUser.createFile(fileName2);
const id = (await nodeActionsUser.createFile(fileName3)).entry.id; const id = (await nodeActionsUser.createFile(fileName3)).entry.id;
await nodeActionsUser.deleteNodes([id], false); await nodeActionsUser.deleteNodes([id], false);
@@ -66,23 +66,13 @@ test.describe('Recent Files', () => {
await searchApi.waitForApi(username, { expect: 3 }); await searchApi.waitForApi(username, { expect: 3 });
}); });
test.beforeEach(async ({ page, recentFilesPage }) => { test.beforeEach(async ({ loginPage, recentFilesPage }) => {
const loginPage = new LoginPage(page); await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
await loginPage.loginUser(
{ username, password: username },
{
withNavigation: true,
waitForLoading: true
}
);
await recentFilesPage.navigate(); await recentFilesPage.navigate();
}); });
test.afterAll(async () => { test.afterAll(async () => {
await nodeActionsUser.deleteNodes([folderId, file2Id]); await Utils.deleteNodesSitesEmptyTrashcan(nodeActionsUser, trashcanApi, 'afterAll failed', siteActionsUser, [siteName]);
await siteActionsUser.deleteSites([siteName]);
const trashcanApi = await TrashcanApi.initialize(username, username);
await trashcanApi.emptyTrashcan();
}); });
test('[C213168] has the correct columns', async ({ recentFilesPage }) => { test('[C213168] has the correct columns', async ({ recentFilesPage }) => {

View File

@@ -23,12 +23,13 @@
*/ */
import { expect } from '@playwright/test'; import { expect } from '@playwright/test';
import { ApiClientFactory, LoginPage, NodesApi, Utils, test, SitesApi, timeouts, SharedLinksApi } from '@alfresco/playwright-shared'; import { ApiClientFactory, NodesApi, Utils, test, SitesApi, timeouts, SharedLinksApi, TrashcanApi } from '@alfresco/playwright-shared';
import { Site } from '@alfresco/js-api'; import { Site } from '@alfresco/js-api';
test.describe('Shared Files', () => { test.describe('Shared Files', () => {
let nodesApi: NodesApi; let nodesApi: NodesApi;
let siteActionsAdmin: SitesApi; let siteActionsAdmin: SitesApi;
let trashcanApi: TrashcanApi;
const username = `user-${Utils.random()}`; const username = `user-${Utils.random()}`;
const siteName = `site-${Utils.random()}`; const siteName = `site-${Utils.random()}`;
@@ -48,6 +49,7 @@ test.describe('Shared Files', () => {
const nodesApiAdmin = await NodesApi.initialize('admin'); const nodesApiAdmin = await NodesApi.initialize('admin');
const shareActionsAdmin = await SharedLinksApi.initialize('admin'); const shareActionsAdmin = await SharedLinksApi.initialize('admin');
nodesApi = await NodesApi.initialize(username, username); nodesApi = await NodesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);
const shareActions = await SharedLinksApi.initialize(username, username); const shareActions = await SharedLinksApi.initialize(username, username);
await siteActionsAdmin.createSite(siteName, Site.VisibilityEnum.PUBLIC); await siteActionsAdmin.createSite(siteName, Site.VisibilityEnum.PUBLIC);
@@ -73,21 +75,13 @@ test.describe('Shared Files', () => {
await shareActions.waitForFilesToNotBeShared([file2Id, file3Id]); await shareActions.waitForFilesToNotBeShared([file2Id, file3Id]);
}); });
test.beforeEach(async ({ page, sharedPage }) => { test.beforeEach(async ({ loginPage, sharedPage }) => {
const loginPage = new LoginPage(page); await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
await loginPage.loginUser(
{ username, password: username },
{
withNavigation: true,
waitForLoading: true
}
);
await sharedPage.navigate(); await sharedPage.navigate();
}); });
test.afterAll(async () => { test.afterAll(async () => {
await siteActionsAdmin.deleteSites([siteName]); await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'afterAll failed', siteActionsAdmin, [siteName]);
await nodesApi.deleteCurrentUserNodes();
}); });
test('[C213113] has the correct columns', async ({ sharedPage }) => { test('[C213113] has the correct columns', async ({ sharedPage }) => {

View File

@@ -23,19 +23,21 @@
*/ */
import { expect } from '@playwright/test'; import { expect } from '@playwright/test';
import { ApiClientFactory, NodesApi, Utils, getUserState, test, LoginPage, users } from '@alfresco/playwright-shared'; import { ApiClientFactory, NodesApi, Utils, getUserState, test, TrashcanApi, users } from '@alfresco/playwright-shared';
test.use({ storageState: getUserState('admin') }); test.use({ storageState: getUserState('admin') });
test.describe('Trash admin', () => { test.describe('Trash admin', () => {
const folderAdmin = `deleteFolder-${Utils.random()}`; const folderAdmin = `deleteFolder-${Utils.random()}`;
let folderAdminId: string; let folderAdminId: string;
let adminApiActions: NodesApi; let adminApiActions: NodesApi;
let adminTrashcanApi: TrashcanApi;
test.beforeAll(async () => { test.beforeAll(async () => {
try { try {
const apiClientFactory = new ApiClientFactory(); const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin'); await apiClientFactory.setUpAcaBackend('admin');
adminApiActions = await NodesApi.initialize('admin'); adminApiActions = await NodesApi.initialize('admin');
adminTrashcanApi = await TrashcanApi.initialize('admin');
folderAdminId = (await adminApiActions.createFolder(folderAdmin)).entry.id; folderAdminId = (await adminApiActions.createFolder(folderAdmin)).entry.id;
await adminApiActions.deleteNodeById(folderAdminId, false); await adminApiActions.deleteNodeById(folderAdminId, false);
} catch (error) { } catch (error) {
@@ -44,22 +46,11 @@ test.describe('Trash admin', () => {
}); });
test.afterAll(async () => { test.afterAll(async () => {
try { await Utils.deleteNodesSitesEmptyTrashcan(adminApiActions, adminTrashcanApi, '----- afterAll failed : ');
await adminApiActions.deleteDeletedNode(folderAdminId);
} catch (error) {
console.error(`----- afterAll failed : ${error}`);
}
}); });
test.beforeEach(async ({ page }) => { test.beforeEach(async ({ loginPage }) => {
const loginPage = new LoginPage(page); await Utils.tryLoginUser(loginPage, users.admin.username, users.admin.password, 'beforeEach failed');
await loginPage.loginUser(
{ username: users.admin.username, password: users.admin.password },
{
withNavigation: true,
waitForLoading: true
}
);
}); });
test.describe('as admin', () => { test.describe('as admin', () => {

View File

@@ -23,12 +23,13 @@
*/ */
import { expect } from '@playwright/test'; import { expect } from '@playwright/test';
import { ApiClientFactory, LoginPage, NodesApi, SitesApi, Utils, test } from '@alfresco/playwright-shared'; import { ApiClientFactory, NodesApi, SitesApi, Utils, test, TrashcanApi } from '@alfresco/playwright-shared';
import { Site } from '@alfresco/js-api'; import { Site } from '@alfresco/js-api';
test.describe('Trash', () => { test.describe('Trash', () => {
let nodesApi: NodesApi; let nodesApi: NodesApi;
let siteActionsAdmin: SitesApi; let siteActionsAdmin: SitesApi;
let trashcanApi: TrashcanApi;
const username = `user-${Utils.random()}`; const username = `user-${Utils.random()}`;
const siteName = `site-${Utils.random()}`; const siteName = `site-${Utils.random()}`;
@@ -45,6 +46,7 @@ test.describe('Trash', () => {
await apiClientFactory.createUser({ username }); await apiClientFactory.createUser({ username });
siteActionsAdmin = await SitesApi.initialize('admin'); siteActionsAdmin = await SitesApi.initialize('admin');
nodesApi = await NodesApi.initialize(username, username); nodesApi = await NodesApi.initialize(username, username);
trashcanApi = await TrashcanApi.initialize(username, username);
const nodesApiAdmin = await NodesApi.initialize('admin'); const nodesApiAdmin = await NodesApi.initialize('admin');
const folderDeleted = `folder-${Utils.random()}`; const folderDeleted = `folder-${Utils.random()}`;
@@ -66,27 +68,12 @@ test.describe('Trash', () => {
}); });
test.afterAll(async () => { test.afterAll(async () => {
try { await Utils.deleteNodesSitesEmptyTrashcan(nodesApi, trashcanApi, 'Main afterAll failed: ', siteActionsAdmin, [siteName]);
await nodesApi.deleteCurrentUserNodes();
await siteActionsAdmin.deleteSites([siteName]);
} catch (error) {
console.error(`Main afterAll failed: ${error}`);
}
}); });
test.describe(`Regular user's personal files`, () => { test.describe(`Regular user's personal files`, () => {
test.beforeEach(async ({ page }) => { test.beforeEach(async ({ loginPage, trashPage }) => {
const loginPage = new LoginPage(page); await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
await loginPage.loginUser(
{ username, password: username },
{
withNavigation: true,
waitForLoading: true
}
);
});
test.beforeEach(async ({ trashPage }) => {
await trashPage.navigate(); await trashPage.navigate();
}); });

View File

@@ -24,7 +24,7 @@
const crypto = require('crypto'); const crypto = require('crypto');
import * as path from 'path'; import * as path from 'path';
import { LoginPage, MyLibrariesPage, PersonalFilesPage, FavoritesLibrariesPage, SearchPage, SharedPage } from '../'; import { LoginPage, MyLibrariesPage, PersonalFilesPage, FavoritesLibrariesPage, SearchPage, SharedPage, TrashPage } from '../';
import { NodesApi, TrashcanApi, SitesApi } from '@alfresco/playwright-shared'; import { NodesApi, TrashcanApi, SitesApi } from '@alfresco/playwright-shared';
export class Utils { export class Utils {
@@ -102,7 +102,7 @@ export class Utils {
static async reloadPageIfRowNotVisible( static async reloadPageIfRowNotVisible(
pageContext: PersonalFilesPage | MyLibrariesPage | FavoritesLibrariesPage | SearchPage | SharedPage, pageContext: PersonalFilesPage | MyLibrariesPage | FavoritesLibrariesPage | SearchPage | SharedPage,
nodeName: string, nodeName: string,
errorMessage = 'Error ' errorMessage = 'reloadPageIfRowNotVisible Error '
): Promise<void> { ): Promise<void> {
try { try {
if (!await pageContext.dataTable.getRowByName(nodeName).isVisible()) { if (!await pageContext.dataTable.getRowByName(nodeName).isVisible()) {
@@ -112,4 +112,17 @@ export class Utils {
console.error(`${errorMessage}: ${error}`); console.error(`${errorMessage}: ${error}`);
} }
} }
static async reloadPageIfDatatableEmpty(
pageContext: PersonalFilesPage | MyLibrariesPage | FavoritesLibrariesPage | SearchPage | SharedPage | TrashPage,
errorMessage = 'reloadPageIfDatatableEmpty Error '
): Promise<void> {
try {
if (await pageContext.dataTable.getEmptyFolderLocator.isVisible() || await pageContext.dataTable.emptyListTitle.isVisible()) {
await pageContext.page.reload({ waitUntil: 'load' });
}
} catch (error) {
console.error(`${errorMessage}: ${error}`);
}
}
} }