[ACS-12817] more test stabilization

This commit is contained in:
Adam Świderski
2026-09-16 14:57:37 +02:00
committed by Adam Świderski
parent 021d7ff682
commit ff7a3cff12
5 changed files with 703 additions and 640 deletions
@@ -48,10 +48,19 @@ const collaboratorEditRowToolbarMore = [
'Edit Aspects', 'Edit Aspects',
'Permissions' 'Permissions'
]; ];
const collaboratorSharedSearchRowToolbarMore = [
'Edit Offline',
'Upload New Version',
'Favorite',
'Copy',
'Manage Versions',
'Edit Aspects',
'Permissions'
];
const favoritesCollaboratorToolbarMore = [ const favoritesCollaboratorToolbarMore = [
'Edit Offline', 'Edit Offline',
'Upload New Version', 'Upload New Version',
'Remove Favorite', 'Favorite',
'Move', 'Move',
'Copy', 'Copy',
'Delete', 'Delete',
@@ -165,7 +174,7 @@ test.describe('Special permissions - Collaborator available actions : ', () => {
test('[XAT-4845] Toolbar - Actions appear correctly for a file - Collaborator - Shared', async ({ sharedPage, myLibrariesPage }) => { test('[XAT-4845] Toolbar - Actions appear correctly for a file - Collaborator - Shared', async ({ sharedPage, myLibrariesPage }) => {
await sharedPage.navigate(); await sharedPage.navigate();
await checkActionsAvailable(myLibrariesPage, item.name, collaboratorToolbarPrimary, collaboratorEditRowToolbarMore); await checkActionsAvailable(myLibrariesPage, item.name, collaboratorToolbarPrimary, collaboratorSharedSearchRowToolbarMore);
}); });
}); });
@@ -187,7 +196,7 @@ test.describe('Special permissions - Collaborator available actions : ', () => {
test('[XAT-4847] Toolbar - Actions appear correctly for a file - Collaborator - Search Results', async ({ searchPage, myLibrariesPage }) => { test('[XAT-4847] Toolbar - Actions appear correctly for a file - Collaborator - Search Results', async ({ searchPage, myLibrariesPage }) => {
await searchPage.searchWithin(item.random, 'filesAndFolders', 'formula'); await searchPage.searchWithin(item.random, 'filesAndFolders', 'formula');
await checkActionsAvailable(myLibrariesPage, item.name, collaboratorToolbarPrimary, collaboratorEditRowToolbarMore); await checkActionsAvailable(myLibrariesPage, item.name, collaboratorToolbarPrimary, collaboratorSharedSearchRowToolbarMore);
}); });
}); });
@@ -57,6 +57,7 @@ test.describe('Special permissions - File locked, user is lock owner : ', () =>
const sitePrivate = `site-private-locked-owner-${random}`; const sitePrivate = `site-private-locked-owner-${random}`;
const userManager = `manager-locked-owner-${random}`; const userManager = `manager-locked-owner-${random}`;
const userDemoted = `demoted-owner-${random}`; const userDemoted = `demoted-owner-${random}`;
const lockedFileIds: string[] = [];
let docLibId: string; let docLibId: string;
let managerNodeActions: NodesApi; let managerNodeActions: NodesApi;
@@ -65,6 +66,7 @@ test.describe('Special permissions - File locked, user is lock owner : ', () =>
let demotedUserActions: NodesApi; let demotedUserActions: NodesApi;
let demotedUserFavoritesActions: FavoritesApi; let demotedUserFavoritesActions: FavoritesApi;
let demotedUserShareActions: SharedLinksApi; let demotedUserShareActions: SharedLinksApi;
let adminNodeActions: NodesApi;
const provisionFile = async (item: LockedFile): Promise<void> => { const provisionFile = async (item: LockedFile): Promise<void> => {
test.setTimeout(timeouts.extendedTest); test.setTimeout(timeouts.extendedTest);
@@ -75,6 +77,7 @@ test.describe('Special permissions - File locked, user is lock owner : ', () =>
item.id = (await managerNodeActions.createFile(item.name, docLibId, '', '', '', true, ['cm:versionable'])).entry.id; item.id = (await managerNodeActions.createFile(item.name, docLibId, '', '', '', true, ['cm:versionable'])).entry.id;
await demotedUserActions.checkoutNodes([item.id]); await demotedUserActions.checkoutNodes([item.id]);
lockedFileIds.push(item.id);
await demotedUserFavoritesActions.addFavoriteById('file', item.id); await demotedUserFavoritesActions.addFavoriteById('file', item.id);
await demotedUserShareActions.shareFileById(item.id); await demotedUserShareActions.shareFileById(item.id);
@@ -100,6 +103,7 @@ test.describe('Special permissions - File locked, user is lock owner : ', () =>
demotedUserActions = await NodesApi.initialize(userDemoted, userDemoted); demotedUserActions = await NodesApi.initialize(userDemoted, userDemoted);
demotedUserFavoritesActions = await FavoritesApi.initialize(userDemoted, userDemoted); demotedUserFavoritesActions = await FavoritesApi.initialize(userDemoted, userDemoted);
demotedUserShareActions = await SharedLinksApi.initialize(userDemoted, userDemoted); demotedUserShareActions = await SharedLinksApi.initialize(userDemoted, userDemoted);
adminNodeActions = await NodesApi.initialize('admin');
await managerSiteActions.createSite(sitePrivate, Site.VisibilityEnum.PRIVATE); await managerSiteActions.createSite(sitePrivate, Site.VisibilityEnum.PRIVATE);
docLibId = await managerSiteActions.getDocLibId(sitePrivate); docLibId = await managerSiteActions.getDocLibId(sitePrivate);
@@ -112,6 +116,7 @@ test.describe('Special permissions - File locked, user is lock owner : ', () =>
}); });
test.afterAll(async () => { test.afterAll(async () => {
await adminNodeActions.cancelCheckout(lockedFileIds);
await Utils.deleteNodesSitesEmptyTrashcan(undefined, undefined, 'afterAll failed', managerSiteActions, [sitePrivate]); await Utils.deleteNodesSitesEmptyTrashcan(undefined, undefined, 'afterAll failed', managerSiteActions, [sitePrivate]);
}); });
@@ -38,7 +38,8 @@ import { checkActionsAvailable, checkActionsViewerAvailable } from './permission
const collaboratorToolbarPrimary = ['View', 'View Details', 'More Actions']; const collaboratorToolbarPrimary = ['View', 'View Details', 'More Actions'];
const collaboratorViewerLockedToolbarPrimary = ['Activate full-screen mode', 'View Details', 'More Actions']; const collaboratorViewerLockedToolbarPrimary = ['Activate full-screen mode', 'View Details', 'More Actions'];
const lockOtherUserToolbarMore = ['Cancel Editing', 'Favorite', 'Move', 'Copy', 'Permissions']; const lockOtherUserAdminFavToolbarMore = ['Cancel Editing', 'Upload New Version', 'Favorite', 'Copy'];
const lockOtherUserManagerFavToolbarMore = ['Cancel Editing', 'Upload New Version', 'Remove Favorite', 'Copy'];
const lockOtherUserSearchToolbarMore = ['Cancel Editing', 'Favorite', 'Copy', 'Permissions']; const lockOtherUserSearchToolbarMore = ['Cancel Editing', 'Favorite', 'Copy', 'Permissions'];
interface ManagerLockedFile { interface ManagerLockedFile {
@@ -59,6 +60,7 @@ test.describe('Special permissions - File locked by other user, user is manager
const otherManager = `other-manager-locked-other-${random}`; const otherManager = `other-manager-locked-other-${random}`;
const sitePrivate = `site-private-locked-other-${random}`; const sitePrivate = `site-private-locked-other-${random}`;
const apiClientFactory = new ApiClientFactory(); const apiClientFactory = new ApiClientFactory();
const lockedFileIds: string[] = [];
let managerSiteActions: SitesApi; let managerSiteActions: SitesApi;
let managerNodeActions: NodesApi; let managerNodeActions: NodesApi;
@@ -66,22 +68,30 @@ test.describe('Special permissions - File locked by other user, user is manager
let managerSearchActions: SearchApi; let managerSearchActions: SearchApi;
let otherManagerNodeActions: NodesApi; let otherManagerNodeActions: NodesApi;
let otherManagerShareActions: SharedLinksApi; let otherManagerShareActions: SharedLinksApi;
let otherManagerFavoritesActions: FavoritesApi;
let adminNodeActions: NodesApi;
let docLibId: string; let docLibId: string;
const provisionFile = async (item: ManagerLockedFile): Promise<void> => { const provisionFile = async (
managerLockedFile: ManagerLockedFile,
{ favoritedByOtherManager = false }: { favoritedByOtherManager?: boolean } = {}
): Promise<void> => {
test.setTimeout(timeouts.extendedTest); test.setTimeout(timeouts.extendedTest);
const managerFavoritesTotalItems = await managerFavoritesActions.getFavoritesTotalItems(userManager); const favoritesActions = favoritedByOtherManager ? otherManagerFavoritesActions : managerFavoritesActions;
const favoritesUser = favoritedByOtherManager ? otherManager : userManager;
const favoritesTotalItems = await favoritesActions.getFavoritesTotalItems(favoritesUser);
const managerSearchTotalItems = await managerSearchActions.getTotalItems(userManager); const managerSearchTotalItems = await managerSearchActions.getTotalItems(userManager);
item.id = (await managerNodeActions.createFile(item.name, docLibId, '', '', '', true, ['cm:versionable'])).entry.id; managerLockedFile.id = (await managerNodeActions.createFile(managerLockedFile.name, docLibId, '', '', '', true, ['cm:versionable'])).entry.id;
await otherManagerNodeActions.checkoutNodes([item.id]); await otherManagerNodeActions.checkoutNodes([managerLockedFile.id]);
await otherManagerShareActions.shareFileById(item.id); lockedFileIds.push(managerLockedFile.id);
await managerFavoritesActions.addFavoriteById('file', item.id); await otherManagerShareActions.shareFileById(managerLockedFile.id);
await favoritesActions.addFavoriteById('file', managerLockedFile.id);
await managerFavoritesActions.isFavoriteWithRetry(userManager, item.id, { expect: true }); await favoritesActions.isFavoriteWithRetry(favoritesUser, managerLockedFile.id, { expect: true });
await Promise.all([ await Promise.all([
managerFavoritesActions.waitForApi(userManager, { expect: managerFavoritesTotalItems + 1 }), favoritesActions.waitForApi(favoritesUser, { expect: favoritesTotalItems + 1 }),
otherManagerShareActions.waitForFilesToBeShared([item.id]), otherManagerShareActions.waitForFilesToBeShared([managerLockedFile.id]),
managerSearchActions.waitForApi(userManager, { expect: managerSearchTotalItems + 1 }) managerSearchActions.waitForApi(userManager, { expect: managerSearchTotalItems + 1 })
]); ]);
}; };
@@ -98,6 +108,8 @@ test.describe('Special permissions - File locked by other user, user is manager
managerSearchActions = await SearchApi.initialize(userManager, userManager); managerSearchActions = await SearchApi.initialize(userManager, userManager);
otherManagerNodeActions = await NodesApi.initialize(otherManager, otherManager); otherManagerNodeActions = await NodesApi.initialize(otherManager, otherManager);
otherManagerShareActions = await SharedLinksApi.initialize(otherManager, otherManager); otherManagerShareActions = await SharedLinksApi.initialize(otherManager, otherManager);
otherManagerFavoritesActions = await FavoritesApi.initialize(otherManager, otherManager);
adminNodeActions = await NodesApi.initialize('admin');
await managerSiteActions.createSite(sitePrivate, Site.VisibilityEnum.PRIVATE); await managerSiteActions.createSite(sitePrivate, Site.VisibilityEnum.PRIVATE);
await managerSiteActions.addSiteMember(sitePrivate, otherManager, Site.RoleEnum.SiteManager); await managerSiteActions.addSiteMember(sitePrivate, otherManager, Site.RoleEnum.SiteManager);
@@ -109,105 +121,126 @@ test.describe('Special permissions - File locked by other user, user is manager
}); });
test.afterAll(async () => { test.afterAll(async () => {
await adminNodeActions.cancelCheckout(lockedFileIds);
await Utils.deleteNodesSitesEmptyTrashcan(undefined, undefined, 'afterAll failed', managerSiteActions, [sitePrivate]); await Utils.deleteNodesSitesEmptyTrashcan(undefined, undefined, 'afterAll failed', managerSiteActions, [sitePrivate]);
}); });
test.describe('File Libraries - row actions', () => { test.describe('File Libraries - row actions', () => {
const item = buildFile(); const managerLockedFile = buildFile();
test.beforeAll(() => provisionFile(item)); test.beforeAll(() => provisionFile(managerLockedFile));
test('[XAT-4860] Toolbar - Correct actions appear for file - on File Libraries - Locked File - Other User', async ({ myLibrariesPage }) => { test('[XAT-4860] Toolbar - Correct actions appear for file - on File Libraries - Locked File - Other User', async ({ myLibrariesPage }) => {
await myLibrariesPage.navigate(); await myLibrariesPage.navigate();
await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(sitePrivate); await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(sitePrivate);
await checkActionsAvailable(myLibrariesPage, item.name, collaboratorToolbarPrimary, lockOtherUserToolbarMore); await checkActionsAvailable(myLibrariesPage, managerLockedFile.name, collaboratorToolbarPrimary, lockOtherUserAdminFavToolbarMore);
}); });
}); });
test.describe('Shared Files - row actions', () => { test.describe('Shared Files - row actions', () => {
const item = buildFile(); const managerLockedFile = buildFile();
test.beforeAll(() => provisionFile(item)); test.beforeAll(() => provisionFile(managerLockedFile));
test('[XAT-4861] Toolbar - Correct actions appear for file - on Shared Files - Locked File - Other User', async ({ test('[XAT-4861] Toolbar - Correct actions appear for file - on Shared Files - Locked File - Other User', async ({
sharedPage, sharedPage,
myLibrariesPage myLibrariesPage
}) => { }) => {
await sharedPage.navigate(); await sharedPage.navigate();
await checkActionsAvailable(myLibrariesPage, item.name, collaboratorToolbarPrimary, lockOtherUserToolbarMore); await checkActionsAvailable(myLibrariesPage, managerLockedFile.name, collaboratorToolbarPrimary, lockOtherUserAdminFavToolbarMore);
}); });
}); });
test.describe('Favorites - row actions', () => { test.describe('Favorites - row actions', () => {
const item = buildFile(); const managerLockedFile = buildFile();
test.beforeAll(() => provisionFile(item)); test.beforeAll(() => provisionFile(managerLockedFile, { favoritedByOtherManager: true }));
test('[XAT-4862] Toolbar - Correct actions appear for file - on Favorites - Locked File - Other User', async ({ test('[XAT-4862] Toolbar - Correct actions appear for file - on Favorites - Locked File - Other User', async ({
favoritePage, favoritePage,
myLibrariesPage myLibrariesPage
}) => { }) => {
await favoritePage.navigate(); await favoritePage.navigate();
await checkActionsAvailable(myLibrariesPage, item.name, collaboratorToolbarPrimary, lockOtherUserToolbarMore); await checkActionsAvailable(myLibrariesPage, managerLockedFile.name, collaboratorToolbarPrimary, lockOtherUserAdminFavToolbarMore);
}); });
}); });
test.describe('Search Results - row actions', () => { test.describe('Search Results - row actions', () => {
const item = buildFile(); const managerLockedFile = buildFile();
test.beforeAll(() => provisionFile(item)); test.beforeAll(() => provisionFile(managerLockedFile));
test('[XAT-4863] Toolbar - Correct actions appear for file - on Search Results - Locked File - Other User', async ({ test('[XAT-4863] Toolbar - Correct actions appear for file - on Search Results - Locked File - Other User', async ({
searchPage, searchPage,
myLibrariesPage myLibrariesPage
}) => { }) => {
await searchPage.searchWithin(item.random, 'filesAndFolders', 'formula'); await searchPage.searchWithin(managerLockedFile.random, 'filesAndFolders', 'formula');
await checkActionsAvailable(myLibrariesPage, item.name, collaboratorToolbarPrimary, lockOtherUserSearchToolbarMore); await checkActionsAvailable(myLibrariesPage, managerLockedFile.name, collaboratorToolbarPrimary, lockOtherUserSearchToolbarMore);
}); });
}); });
test.describe('File Libraries - viewer actions', () => { test.describe('File Libraries - viewer actions', () => {
const item = buildFile(); const managerLockedFile = buildFile();
test.beforeAll(() => provisionFile(item)); test.beforeAll(() => provisionFile(managerLockedFile));
test('[XAT-4864] Correct actions appear for file opened from File Libraries - viewer - locked', async ({ myLibrariesPage }) => { test('[XAT-4864] Correct actions appear for file opened from File Libraries - viewer - locked', async ({ myLibrariesPage }) => {
await myLibrariesPage.navigate(); await myLibrariesPage.navigate();
await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(sitePrivate); await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(sitePrivate);
await checkActionsViewerAvailable(myLibrariesPage, item.name, collaboratorViewerLockedToolbarPrimary, lockOtherUserToolbarMore); await checkActionsViewerAvailable(
myLibrariesPage,
managerLockedFile.name,
collaboratorViewerLockedToolbarPrimary,
lockOtherUserAdminFavToolbarMore
);
}); });
}); });
test.describe('Shared Files - viewer actions', () => { test.describe('Shared Files - viewer actions', () => {
const item = buildFile(); const managerLockedFile = buildFile();
test.beforeAll(() => provisionFile(item)); test.beforeAll(() => provisionFile(managerLockedFile));
test('[XAT-4865] Correct actions appear for file opened from Shared Files - viewer - locked', async ({ sharedPage, myLibrariesPage }) => { test('[XAT-4865] Correct actions appear for file opened from Shared Files - viewer - locked', async ({ sharedPage, myLibrariesPage }) => {
await sharedPage.navigate(); await sharedPage.navigate();
await checkActionsViewerAvailable(myLibrariesPage, item.name, collaboratorViewerLockedToolbarPrimary, lockOtherUserToolbarMore); await checkActionsViewerAvailable(
myLibrariesPage,
managerLockedFile.name,
collaboratorViewerLockedToolbarPrimary,
lockOtherUserAdminFavToolbarMore
);
}); });
}); });
test.describe('Favorites - viewer actions', () => { test.describe('Favorites - viewer actions', () => {
const item = buildFile(); const managerLockedFile = buildFile();
test.beforeAll(() => provisionFile(item)); test.beforeAll(() => provisionFile(managerLockedFile, { favoritedByOtherManager: true }));
test('[XAT-4866] Correct actions appear for file opened from Favorites - viewer - locked', async ({ favoritePage, myLibrariesPage }) => { test('[XAT-4866] Correct actions appear for file opened from Favorites - viewer - locked', async ({ favoritePage, myLibrariesPage }) => {
await favoritePage.navigate(); await favoritePage.navigate();
await checkActionsViewerAvailable(myLibrariesPage, item.name, collaboratorViewerLockedToolbarPrimary, lockOtherUserToolbarMore); await checkActionsViewerAvailable(
myLibrariesPage,
managerLockedFile.name,
collaboratorViewerLockedToolbarPrimary,
lockOtherUserManagerFavToolbarMore
);
}); });
}); });
test.describe('Search Results - viewer actions', () => { test.describe('Search Results - viewer actions', () => {
const item = buildFile(); const managerLockedFile = buildFile();
test.beforeAll(() => provisionFile(item)); test.beforeAll(() => provisionFile(managerLockedFile));
test('[XAT-4867] Correct actions appear for file opened from Search Results - viewer - locked', async ({ searchPage, myLibrariesPage }) => { test('[XAT-4867] Correct actions appear for file opened from Search Results - viewer - locked', async ({ searchPage, myLibrariesPage }) => {
await searchPage.searchWithin(item.random, 'filesAndFolders', 'formula'); await searchPage.searchWithin(managerLockedFile.random, 'filesAndFolders', 'formula');
await checkActionsViewerAvailable(myLibrariesPage, item.name, collaboratorViewerLockedToolbarPrimary, lockOtherUserSearchToolbarMore); await checkActionsViewerAvailable(
myLibrariesPage,
managerLockedFile.name,
collaboratorViewerLockedToolbarPrimary,
lockOtherUserSearchToolbarMore
);
}); });
}); });
}); });
File diff suppressed because it is too large Load Diff
@@ -238,9 +238,9 @@ export class NodesApi {
} }
} }
async getNodeById(id: string): Promise<NodeEntry> { async getNodeById(id: string, opts?: NodesIncludeQuery): Promise<NodeEntry> {
try { try {
return this.apiService.nodes.getNode(id); return this.apiService.nodes.getNode(id, opts);
} catch (error) { } catch (error) {
const message = `${this.constructor.name} ${this.getNodeById.name}: ${error}`; const message = `${this.constructor.name} ${this.getNodeById.name}: ${error}`;
logger.error(message); logger.error(message);