[ACS-11762] Automated MNT 25285 (#5190)

* [ACS-11762] Automated MNT 25285

* [ACS-11762] small refactoring

* [ACS-11762] more fixes for viewer tests

* [ACS-11762] NOSONAR added for type issue

* [ACS-11762] copilot review fixes 1

* [ACS-11762] copilot review fixes 2

* [ACS-11762] copilot review fixes 3

* [ACS-11762] review fixes 1

* [ACS-11762] race condition fixed
This commit is contained in:
Adam Świderski
2026-05-19 11:56:56 +02:00
committed by GitHub
parent 216c55a3fd
commit c67b4dc203
10 changed files with 63 additions and 42 deletions
@@ -48,7 +48,7 @@ test.describe('Special permissions', () => {
try {
await apiClientFactory.createUser({ username });
} catch (exception) {
if (JSON.parse(exception.message).error.statusCode !== 409) {
if (!String(exception).includes('409')) {
throw new Error(`----- beforeAll failed : ${exception}`);
}
}
@@ -49,7 +49,7 @@ test.describe('Recent Files', () => {
try {
await apiClientFactory.createUser({ username });
} catch (exception) {
if (JSON.parse(exception.message).error.statusCode !== 409) {
if (!String(exception).includes('409')) {
throw new Error(`----- beforeAll failed : ${exception}`);
}
}
@@ -48,7 +48,7 @@ test.describe('Shared Files', () => {
try {
await apiClientFactory.createUser({ username });
} catch (exception) {
if (JSON.parse(exception.message).error.statusCode !== 409) {
if (!String(exception).includes('409')) {
throw new Error(`----- beforeAll failed : ${exception}`);
}
}
@@ -55,7 +55,7 @@ test.describe('viewer file', () => {
try {
await apiClientFactory.createUser({ username: usernameViewer });
} catch (exception) {
if (JSON.parse(exception.message).error.statusCode !== 409) {
if (!String(exception).includes('409')) {
throw new Error(`----- beforeAll failed : ${exception}`);
}
}
@@ -71,7 +71,7 @@ test.describe('viewer file', () => {
try {
await siteActionsAdmin.createSite(siteAdmin, Site.VisibilityEnum.PRIVATE);
} catch (exception) {
if (JSON.parse(exception.message).error.statusCode !== 409) {
if (!String(exception).includes('409')) {
throw new Error(`----- beforeAll failed : ${exception}`);
}
}
@@ -109,7 +109,7 @@ test.describe('viewer file', () => {
test('[XAT-17738] Viewer with preview URL', async ({ personalFiles }) => {
const previewURL = `#/personal-files/${folderId}/(viewer:view/${fileDocxId})`;
await personalFiles.navigate({ remoteUrl: previewURL });
await personalFiles.viewer.waitForViewerLoaderToFinish(timeouts.sixtySeconds);
await personalFiles.viewer.waitForViewerLoaderToFinish();
await expect(personalFiles.viewer.fileTitleButtonLocator).toHaveText(randomDocxName);
});
});
@@ -32,7 +32,6 @@ import {
Utils,
TrashcanApi,
PersonalFilesPage,
timeouts,
logger
} from '@alfresco/aca-playwright-shared';
@@ -99,7 +98,7 @@ test.describe('viewer file types', () => {
async function openFileInViewer(page: PersonalFilesPage, fileName: string) {
await page.dataTable.performClickFolderOrFileToOpen(fileName);
expect(await page.viewer.isViewerOpened(), 'Viewer is not opened').toBe(true);
await page.viewer.waitForViewerLoaderToFinish(timeouts.fortySeconds);
await page.viewer.waitForViewerLoaderToFinish();
await Utils.delayInSeconds(1);
}
@@ -37,8 +37,7 @@ import {
PersonalFilesPage,
FavoritesPage,
SharedPage,
SearchPage,
timeouts
SearchPage
} from '@alfresco/aca-playwright-shared';
test.describe('Version actions', () => {
@@ -48,13 +47,12 @@ test.describe('Version actions', () => {
let sharedLinksApi: SharedLinksApi;
let favoritesApi: FavoritesPageApi;
const random = Utils.random();
const filesToUpload = [TEST_FILES.PDF, TEST_FILES.DOCX];
const filenameBeforeUpdate = `${filesToUpload[0].name}-${random}`;
const filenameAfterUpdate = `${filesToUpload[1].name}-${random}`;
const filesToUpload = [TEST_FILES.PDF, TEST_FILES.JPG_FILE];
const filenameBeforeUpdate = `${filesToUpload[0].name}-1-${random}.pdf`;
const filenameAfterUpdate = `${filesToUpload[1].name}-2-${random}.jpg`;
const username = `user-${random}`;
const parentFolder = `parent-version-${random}`;
let parentFolderId: string;
let fileId: string;
let fileAfterUpdateId: string;
async function viewFirstFileVersion(page: PersonalFilesPage | RecentFilesPage | FavoritesPage | SharedPage | SearchPage) {
await page.dataTable.selectItems(filenameAfterUpdate);
@@ -75,10 +73,11 @@ test.describe('Version actions', () => {
favoritesApi = await FavoritesPageApi.initialize(username, username);
sharedLinksApi = await SharedLinksApi.initialize(username, username);
parentFolderId = (await nodesApi.createFolder(parentFolder)).entry.id;
fileId = (await fileActionsApi.uploadFile(filesToUpload[0].path, filenameBeforeUpdate, parentFolderId)).entry.id;
fileId = (await fileActionsApi.uploadFile(filesToUpload[0].path, filenameBeforeUpdate, '-my-')).entry.id;
await fileActionsApi.updateNodeContent(fileId, filesToUpload[1].path, true, 'new major version description', filenameAfterUpdate);
fileAfterUpdateId = (
await fileActionsApi.updateNodeContentFromFile(fileId, filesToUpload[1].path, true, 'new major version description', filenameAfterUpdate)
).entry.id;
await favoritesApi.addFavoritesByIds('file', [fileId]);
await favoritesApi.waitForApi(username, { expect: 1 });
@@ -97,8 +96,6 @@ test.describe('Version actions', () => {
test.beforeEach(async ({ loginPage, personalFiles }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
await personalFiles.navigate();
await personalFiles.dataTable.performClickFolderOrFileToOpen(parentFolder);
await personalFiles.dataTable.spinnerWaitForReload();
await viewFirstFileVersion(personalFiles);
});
@@ -117,6 +114,18 @@ test.describe('Version actions', () => {
const [download] = await Promise.all([personalFiles.page.waitForEvent('download'), await personalFiles.viewer.downloadButton.click()]);
expect(download.suggestedFilename()).toBe(filenameBeforeUpdate);
});
test('[XAT-19377] Can view previous version of a document after a viewer is opened from Manage Versions dialog', async ({ personalFiles }) => {
await personalFiles.viewer.waitForViewerToOpen();
await personalFiles.viewer.toolbar.clickViewerMoreActions();
await personalFiles.matMenu.clickMenuItem('Manage Versions');
await personalFiles.manageVersionsDialog.clickListActionButtonForVersion('2.0');
await Promise.all([Utils.waitForApiResponse(personalFiles, '2.0', 200), personalFiles.matMenu.clickMenuItem('View')]);
await personalFiles.viewer.waitForViewerLoaderToFinish();
await expect(personalFiles.viewer.unknownFormat).toBeHidden();
expect(await personalFiles.viewer.getFileTitle()).toContain(filenameAfterUpdate);
expect(personalFiles.page.url()).toContain(fileAfterUpdateId);
});
});
test.describe('on Recent Files', () => {
@@ -181,7 +190,7 @@ test.describe('Version actions', () => {
test('[XAT-5506] Previous document version title should be the same in Preview mode as in Version Manager - Shared Files', async ({
sharedPage
}) => {
await sharedPage.viewer.waitForViewerLoaderToFinish(timeouts.fortySeconds);
await sharedPage.viewer.waitForViewerLoaderToFinish();
expect(await sharedPage.viewer.getFileTitle()).toContain(filenameBeforeUpdate);
});
@@ -63,7 +63,7 @@ test.describe('viewer zoom functionality and reset', () => {
try {
await apiClientFactory.createUser({ username });
} catch (exception) {
if (JSON.parse(exception.message).error.statusCode !== 409) {
if (!String(exception).includes('409')) {
throw new Error(`----- beforeAll failed : ${exception}`);
}
}
@@ -82,7 +82,7 @@ test.describe('viewer zoom functionality and reset', () => {
try {
await siteActionsUser.createSite(randomLibraryName, Site.VisibilityEnum.PRIVATE);
} catch (exception) {
if (JSON.parse(exception.message).error.statusCode !== 409) {
if (!String(exception).includes('409')) {
throw new Error(`----- beforeAll failed : ${exception}`);
}
}
@@ -106,7 +106,7 @@ test.describe('viewer zoom functionality and reset', () => {
await shareActions.waitForFilesToBeShared([filePngId]);
await fileActionApi.waitForNodes(randomPngName, { expect: 1 });
} catch (exception) {
if (JSON.parse(exception.message).error.statusCode !== 409) {
if (!String(exception).includes('409')) {
throw new Error(`----- beforeAll failed : ${exception}`);
}
}
@@ -186,7 +186,7 @@ test.describe('viewer zoom functionality and reset', () => {
await myLibrariesPage.navigate();
await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(randomLibraryName);
await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(randomDocxName);
await myLibrariesPage.viewer.waitForViewerLoaderToFinish(timeouts.fortySeconds);
await myLibrariesPage.viewer.waitForViewerLoaderToFinish();
expect(await myLibrariesPage.viewer.isViewerOpened(), 'Viewer is not opened').toBe(true);
await myLibrariesPage.viewer.waitForZoomPercentageToDisplay();
await validateZoomScaleInViewer(myLibrariesPage);
@@ -224,7 +224,7 @@ test.describe('viewer zoom functionality and reset', () => {
await myLibrariesPage.navigate();
await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(randomLibraryName);
await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(randomDocxName);
await myLibrariesPage.viewer.waitForViewerLoaderToFinish(timeouts.fortySeconds);
await myLibrariesPage.viewer.waitForViewerLoaderToFinish();
expect(await myLibrariesPage.viewer.isViewerOpened(), 'Viewer is not opened').toBe(true);
await myLibrariesPage.viewer.waitForZoomPercentageToDisplay();
await validateFitToPageButtonActivity(myLibrariesPage);
@@ -32,7 +32,6 @@ import {
SitesApi,
test,
TEST_FILES,
timeouts,
Utils,
TrashcanApi
} from '@alfresco/aca-playwright-shared';
@@ -210,7 +209,8 @@ test.describe('viewer file', () => {
const apiClientFactory = new ApiClientFactory();
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username: username1 });
user2Id = (await apiClientFactory.createUser({ username: username2 })).entry.id;
const user2 = await apiClientFactory.createUser({ username: username2 });
user2Id = user2?.entry.id ?? username2;
nodesApi1 = await NodesApi.initialize(username1, username1);
trashcanApi1 = await TrashcanApi.initialize(username1, username1);
sitesApi1 = await SitesApi.initialize(username1, username1);
@@ -281,7 +281,7 @@ test.describe('viewer file', () => {
test('[XAT-5476] Viewer opens when accessing the preview URL for a file', async ({ personalFiles }) => {
const previewURL = `#/personal-files/${folderId}/(viewer:view/${fileJpgId})`;
await personalFiles.navigate({ remoteUrl: previewURL });
await personalFiles.viewer.waitForViewerLoaderToFinish(timeouts.fortySeconds);
await personalFiles.viewer.waitForViewerLoaderToFinish();
await expect(personalFiles.viewer.fileTitleButtonLocator).toContainText(randomJpgName);
});
});