mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2025-07-24 17:31:52 +00:00
[ACS-6066 ] playwright e2e other permissions (#3510)
* ACS-6066 other permissions test * ACS-6066 other permissions test remove protractor * ACS-6066 other permissions test remove protracto * ACS-6066 other permissions remove code Duplicate * ACS-6066 other permissions rebase * ACS-6066 other permissions code cleanup * code fix and remove protractor test * review code fix * review code fix * fail test code fix
This commit is contained in:
@@ -7,6 +7,9 @@
|
||||
"target": "es2017",
|
||||
"types": ["jasmine", "jasminewd2", "node", "@playwright/test"],
|
||||
"skipLibCheck": true,
|
||||
"paths": {
|
||||
"@alfresco/playwright-shared": ["../../../projects/aca-playwright-shared/src/index.ts"]
|
||||
}
|
||||
},
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
|
@@ -7,6 +7,9 @@
|
||||
"target": "es2017",
|
||||
"types": ["jasmine", "jasminewd2", "node", "@playwright/test"],
|
||||
"skipLibCheck": true,
|
||||
"paths": {
|
||||
"@alfresco/playwright-shared": ["../../../projects/aca-playwright-shared/src/index.ts"]
|
||||
}
|
||||
},
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
|
@@ -7,6 +7,9 @@
|
||||
"target": "es2017",
|
||||
"types": ["jasmine", "jasminewd2", "node", "@playwright/test"],
|
||||
"skipLibCheck": true,
|
||||
"paths": {
|
||||
"@alfresco/playwright-shared": ["../../../projects/aca-playwright-shared/src/index.ts"]
|
||||
}
|
||||
},
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
|
@@ -37,6 +37,7 @@ test.describe('viewer action file', () => {
|
||||
const fileName1 = `file1-${Utils.random()}.txt`;
|
||||
|
||||
const siteName = `site-${Utils.random()}`;
|
||||
let docLibId: string;
|
||||
const parentFromSite = `parent-in-site-${Utils.random()}`;
|
||||
let parentFromSiteId: string;
|
||||
const subFolder1FromSite = `subFolder1-in-site-${Utils.random()}`;
|
||||
@@ -62,15 +63,16 @@ test.describe('viewer action file', () => {
|
||||
folder1Id = (await nodesApiAction.createFolder(folder1, parent2Id)).entry.id;
|
||||
|
||||
await sitesApiAction.createSite(siteName, Site.VisibilityEnum.PUBLIC);
|
||||
const docLibId = await sitesApiAction.getDocLibId(siteName);
|
||||
docLibId = await sitesApiAction.getDocLibId(siteName);
|
||||
parentFromSiteId = (await nodesApiAction.createFolder(parentFromSite, docLibId)).entry.id;
|
||||
subFolder1FromSiteId = (await nodesApiAction.createFolder(subFolder1FromSite, parentFromSiteId)).entry.id;
|
||||
subFolder2FromSiteId = (await nodesApiAction.createFolder(subFolder2FromSite, subFolder1FromSiteId)).entry.id;
|
||||
await nodesApiAction.createFile(fileName1FromSite, subFolder2FromSiteId);
|
||||
});
|
||||
|
||||
test.afterAll(async ({ nodesApiAction }) => {
|
||||
test.afterAll(async ({ nodesApiAction, sitesApiAction }) => {
|
||||
await nodesApiAction.deleteNodes([parentId, parent2Id], true);
|
||||
await sitesApiAction.deleteSites([docLibId]);
|
||||
});
|
||||
|
||||
test('[C260964] Personal Files breadcrumb main node', async ({ personalFiles }) => {
|
||||
|
@@ -7,6 +7,9 @@
|
||||
"target": "es2017",
|
||||
"types": ["jasmine", "jasminewd2", "node", "@playwright/test"],
|
||||
"skipLibCheck": true,
|
||||
"paths": {
|
||||
"@alfresco/playwright-shared": ["../../../projects/aca-playwright-shared/src/index.ts"]
|
||||
}
|
||||
},
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
|
@@ -0,0 +1,339 @@
|
||||
/*!
|
||||
* Copyright © 2005-2023 Hyland Software, Inc. and its affiliates. All rights reserved.
|
||||
*
|
||||
* Alfresco Example Content Application
|
||||
*
|
||||
* This file is part of the Alfresco Example Content Application.
|
||||
* If the software was purchased under a paid Alfresco license, the terms of
|
||||
* the paid license agreement will prevail. Otherwise, the software is
|
||||
* provided under the following open source license terms:
|
||||
*
|
||||
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* from Hyland Software. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import { MyLibrariesPage, test } from '@alfresco/playwright-shared';
|
||||
import * as testData from '@alfresco/playwright-shared';
|
||||
import { expect } from '@playwright/test';
|
||||
|
||||
async function checkActionsAvailable(
|
||||
myLibrariesPage: MyLibrariesPage,
|
||||
item: string,
|
||||
expectedToolbarPrimary: string[],
|
||||
expectedToolbarMore: string[]
|
||||
): Promise<void> {
|
||||
await myLibrariesPage.dataTable.selectItem(item);
|
||||
await myLibrariesPage.acaHeader.verifyToolbarPrimaryActions(expectedToolbarPrimary);
|
||||
await myLibrariesPage.acaHeader.clickMoreActions();
|
||||
await myLibrariesPage.matMenu.verifyActualMoreActions(expectedToolbarMore);
|
||||
}
|
||||
|
||||
async function checkActionsViewerAvailable(
|
||||
myLibrariesPage: MyLibrariesPage,
|
||||
item: string,
|
||||
expectedToolbarPrimary: string[],
|
||||
expectedToolbarMore: string[]
|
||||
): Promise<void> {
|
||||
await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(item);
|
||||
expect(await myLibrariesPage.viewer.isViewerOpened(), 'Viewer is not opened').toBe(true);
|
||||
await myLibrariesPage.viewer.verifyViewerPrimaryActions(expectedToolbarPrimary);
|
||||
await myLibrariesPage.acaHeader.clickViewerMoreActions();
|
||||
await myLibrariesPage.matMenu.verifyActualMoreActions(expectedToolbarMore);
|
||||
}
|
||||
|
||||
export function collaboratorTests(userCollaborator: string, siteName: string) {
|
||||
test.describe('available actions : ', () => {
|
||||
test.beforeEach(async ({ loginPage }) => {
|
||||
await loginPage.navigate();
|
||||
await loginPage.loginUser({ username: userCollaborator, password: userCollaborator });
|
||||
});
|
||||
|
||||
test('on File Libraries - [C297647]', async ({ myLibrariesPage }) => {
|
||||
await myLibrariesPage.navigate();
|
||||
await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(siteName);
|
||||
await checkActionsAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileSharedFav.name,
|
||||
testData.collaboratorToolbarPrimary,
|
||||
testData.collaboratorEditRowToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('on Shared Files - [C297651]', async ({ sharedPage, myLibrariesPage }) => {
|
||||
await sharedPage.navigate();
|
||||
await checkActionsAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileSharedFav.name,
|
||||
testData.collaboratorToolbarPrimary,
|
||||
testData.collaboratorEditRowToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('on Favorites - [C297652]', async ({ favoritePage, myLibrariesPage }) => {
|
||||
await favoritePage.navigate();
|
||||
await checkActionsAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileSharedFav.name,
|
||||
testData.collaboratorToolbarPrimary,
|
||||
testData.favoritesCollaboratorToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('on Search Results - [C297653]', async ({ searchPage, myLibrariesPage }) => {
|
||||
await searchPage.navigate({ remoteUrl: `#/search;q=${testData.fileSharedFav.name}` });
|
||||
await checkActionsAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileSharedFav.name,
|
||||
testData.collaboratorToolbarPrimary,
|
||||
testData.collaboratorEditRowToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test.describe('available actions in the viewer : ', () => {
|
||||
test('file opened from File Libraries - [C297654]', async ({ myLibrariesPage }) => {
|
||||
await myLibrariesPage.navigate();
|
||||
await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(siteName);
|
||||
await checkActionsViewerAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileDocxSharedFav.name,
|
||||
testData.collaboratorSharedToolbarPrimary,
|
||||
testData.collaboratorDocToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('file opened from Shared Files - [C297655]', async ({ sharedPage, myLibrariesPage }) => {
|
||||
await sharedPage.navigate();
|
||||
await checkActionsViewerAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileDocxSharedFav.name,
|
||||
testData.collaboratorSharedToolbarPrimary,
|
||||
testData.collaboratorDocToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('file opened from Favorites - [C297656]', async ({ favoritePage, myLibrariesPage }) => {
|
||||
await favoritePage.navigate();
|
||||
await checkActionsViewerAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileDocxSharedFav.name,
|
||||
testData.collaboratorSharedToolbarPrimary,
|
||||
testData.collaboratorDocToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('file opened from Search Results - [C306992]', async ({ searchPage, myLibrariesPage }) => {
|
||||
await searchPage.navigate({ remoteUrl: `#/search;q=${testData.fileDocxSharedFav.name}` });
|
||||
await checkActionsViewerAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileDocxSharedFav.name,
|
||||
testData.collaboratorSharedToolbarPrimary,
|
||||
testData.collaboratorDocToolbarMore
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export function filesLockedByCurrentUser(userDemoted: string, siteName?: string) {
|
||||
test.describe('available actions : ', () => {
|
||||
test.beforeEach(async ({ loginPage }) => {
|
||||
await loginPage.navigate();
|
||||
await loginPage.loginUser({ username: userDemoted, password: userDemoted });
|
||||
});
|
||||
|
||||
test.describe('available actions in the file select : ', () => {
|
||||
test('on File Libraries - [C297657]', async ({ myLibrariesPage }) => {
|
||||
await myLibrariesPage.navigate();
|
||||
await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(siteName);
|
||||
await checkActionsAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorToolbarPrimary,
|
||||
testData.collaboratorLockCurrentUserToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('on Shared Files - [C297658]', async ({ sharedPage, myLibrariesPage }) => {
|
||||
await sharedPage.navigate();
|
||||
await checkActionsAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorToolbarPrimary,
|
||||
testData.collaboratorLockCurrentUserToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('on Favorites - [C297659]', async ({ favoritePage, myLibrariesPage }) => {
|
||||
await favoritePage.navigate();
|
||||
await checkActionsAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorToolbarPrimary,
|
||||
testData.favoritesCollaboratorToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('on Search Results - [C297660]', async ({ searchPage, myLibrariesPage }) => {
|
||||
await searchPage.navigate({ remoteUrl: `#/search;q=${testData.fileLockedByUser}` });
|
||||
await checkActionsAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorToolbarPrimary,
|
||||
testData.collaboratorLockCurrentUserToolbarMore
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
test.describe('available actions in the viewer : ', () => {
|
||||
test('file opened from File Libraries - [C297661]', async ({ myLibrariesPage }) => {
|
||||
await myLibrariesPage.navigate();
|
||||
await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(siteName);
|
||||
await checkActionsViewerAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorSharedToolbarPrimary,
|
||||
testData.collaboratorLockCurrentUserToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('file opened from Shared Files - [C297662]', async ({ sharedPage, myLibrariesPage }) => {
|
||||
await sharedPage.navigate();
|
||||
await checkActionsViewerAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorSharedToolbarPrimary,
|
||||
testData.collaboratorLockCurrentUserToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('file opened from Favorites - [C297663]', async ({ favoritePage, myLibrariesPage }) => {
|
||||
await favoritePage.navigate();
|
||||
await checkActionsViewerAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorSharedToolbarPrimary,
|
||||
testData.collaboratorLockCurrentUserToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('file opened from Search Results - [C306993]', async ({ searchPage, myLibrariesPage }) => {
|
||||
await searchPage.navigate({ remoteUrl: `#/search;q=${testData.fileLockedByUser}` });
|
||||
await checkActionsViewerAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorSharedToolbarPrimary,
|
||||
testData.collaboratorLockCurrentUserToolbarMore
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
export function filesLockedByOtherUser(userManager: string, siteName?: string) {
|
||||
test.describe('available actions : ', () => {
|
||||
test.beforeEach(async ({ loginPage }) => {
|
||||
await loginPage.navigate();
|
||||
await loginPage.loginUser({ username: userManager, password: userManager });
|
||||
});
|
||||
|
||||
test('on File Libraries - [C297664]', async ({ myLibrariesPage }) => {
|
||||
await myLibrariesPage.navigate();
|
||||
await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(siteName);
|
||||
await checkActionsAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorToolbarPrimary,
|
||||
testData.collaboratorLockOtherUserToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('on Shared Files - [C297665]', async ({ sharedPage, myLibrariesPage }) => {
|
||||
const expectedToolbarMore = [
|
||||
'Cancel Editing',
|
||||
'Upload New Version',
|
||||
'Remove Favorite',
|
||||
'Move',
|
||||
'Copy',
|
||||
'Delete',
|
||||
'Manage Versions',
|
||||
'Permissions'
|
||||
];
|
||||
await sharedPage.navigate();
|
||||
await checkActionsAvailable(myLibrariesPage, testData.fileLockedByUser, testData.collaboratorToolbarPrimary, expectedToolbarMore);
|
||||
});
|
||||
|
||||
test('on Favorites - [C297666]', async ({ favoritePage, myLibrariesPage }) => {
|
||||
await favoritePage.navigate();
|
||||
await checkActionsAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorToolbarPrimary,
|
||||
testData.favoritesCollaboratorToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('on Search Results - [C297667]', async ({ searchPage, myLibrariesPage }) => {
|
||||
await searchPage.navigate({ remoteUrl: `#/search;q=${testData.fileLockedByUser}` });
|
||||
await checkActionsAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorToolbarPrimary,
|
||||
testData.collaboratorLockOtherUserSearchToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test.describe('available actions in the viewer : ', () => {
|
||||
test('file opened from File Libraries - [C297671]', async ({ myLibrariesPage }) => {
|
||||
await myLibrariesPage.navigate();
|
||||
await myLibrariesPage.dataTable.performClickFolderOrFileToOpen(siteName);
|
||||
await checkActionsViewerAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorSharedToolbarPrimary,
|
||||
testData.collaboratorLockOtherUserToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('file opened from Shared Files - [C297672]', async ({ sharedPage, myLibrariesPage }) => {
|
||||
await sharedPage.navigate();
|
||||
await checkActionsViewerAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorSharedToolbarPrimary,
|
||||
testData.collaboratorLockOtherUserToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
test('file opened from Favorites - [C297673]', async ({ favoritePage, myLibrariesPage }) => {
|
||||
await favoritePage.navigate();
|
||||
await checkActionsViewerAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorSharedToolbarPrimary,
|
||||
testData.collaboratorLockOtherUserToolbarMore
|
||||
);
|
||||
});
|
||||
|
||||
// TODO: add 'Move' and 'Delete' when ACA-2319 is fixed
|
||||
test('file opened from Search Results - [C306994]', async ({ searchPage, myLibrariesPage }) => {
|
||||
await searchPage.navigate({ remoteUrl: `#/search;q=${testData.fileLockedByUser}` });
|
||||
await checkActionsViewerAvailable(
|
||||
myLibrariesPage,
|
||||
testData.fileLockedByUser,
|
||||
testData.collaboratorSharedToolbarPrimary,
|
||||
testData.collaboratorLockOtherUserSearchToolbarMore
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
@@ -24,6 +24,7 @@
|
||||
|
||||
import * as testData from '@alfresco/playwright-shared';
|
||||
import { viewerTests } from './viewer';
|
||||
import { collaboratorTests, filesLockedByCurrentUser, filesLockedByOtherUser } from './other-permissions';
|
||||
import {
|
||||
ApiClientFactory,
|
||||
FavoritesPageApi,
|
||||
@@ -78,7 +79,7 @@ test.describe('Special permissions : ', () => {
|
||||
let managerSearchActions: SearchPageApi;
|
||||
|
||||
test.beforeAll(async () => {
|
||||
test.setTimeout(120000);
|
||||
test.setTimeout(140000);
|
||||
await apiClientFactory.setUpAcaBackend('admin');
|
||||
await apiClientFactory.createUser({ username: userManager });
|
||||
await apiClientFactory.createUser({ username: userConsumer });
|
||||
@@ -131,8 +132,10 @@ test.describe('Special permissions : ', () => {
|
||||
await managerNodeActions.createFolder(testData.folder.name, docLibId);
|
||||
folderFavId = (await managerNodeActions.createFolder(testData.folderFav.name, docLibId)).entry.id;
|
||||
folderFav2Id = (await managerNodeActions.createFolder(testData.folderFav2.name, docLibId)).entry.id;
|
||||
await consumerFavoritesActions.addFavoritesByIds('folder', [folderFavId, folderFav2Id]);
|
||||
|
||||
await consumerFavoritesActions.addFavoritesByIds('folder', [folderFavId, folderFav2Id]);
|
||||
await collaboratorFavoritesActions.addFavoritesByIds('file', [fileDocxSharedFavId, fileSharedFavId]);
|
||||
await managerFavoritesActions.addFavoriteById('file', fileLockedByUserId);
|
||||
await consumerFavoritesActions.addFavoritesByIds('file', [
|
||||
fileDocxFavId,
|
||||
fileFavId,
|
||||
@@ -153,14 +156,11 @@ test.describe('Special permissions : ', () => {
|
||||
fileGranularPermissionId
|
||||
]);
|
||||
|
||||
await collaboratorFavoritesActions.addFavoritesByIds('file', [fileDocxSharedFavId, fileSharedFavId]);
|
||||
|
||||
await managerNodeActions.lockNodes([fileLockedId, fileFavLockedId, fileSharedLockedId, fileSharedFavLockedId]);
|
||||
|
||||
await managerNodeActions.setGranularPermission(fileGranularPermissionId, false, userConsumer, Site.RoleEnum.SiteManager);
|
||||
|
||||
await managerFavoritesActions.addFavoriteById('file', fileLockedByUserId);
|
||||
|
||||
await collaboratorFavoritesActions.isFavoriteWithRetry(userCollaborator, fileSharedFavId, { expect: true });
|
||||
await Promise.all([
|
||||
consumerFavoritesActions.waitForApi(userConsumer, { expect: consumerFavoritesTotalItems + 9 }),
|
||||
managerUserShareActions.waitForFilesToBeShared([
|
||||
@@ -187,4 +187,16 @@ test.describe('Special permissions : ', () => {
|
||||
viewerTests(userConsumer, sitePrivate);
|
||||
});
|
||||
});
|
||||
|
||||
test.describe('Collaborator', () => {
|
||||
collaboratorTests(userCollaborator, sitePrivate);
|
||||
});
|
||||
|
||||
test.describe('File locked - user is lock owner', () => {
|
||||
filesLockedByCurrentUser(userDemoted, sitePrivate);
|
||||
});
|
||||
|
||||
test.describe('File locked by other user - user is manager', () => {
|
||||
filesLockedByOtherUser(userManager, sitePrivate);
|
||||
});
|
||||
});
|
||||
|
@@ -7,6 +7,9 @@
|
||||
"target": "es2017",
|
||||
"types": ["jasmine", "jasminewd2", "node", "@playwright/test"],
|
||||
"skipLibCheck": true,
|
||||
"paths": {
|
||||
"@alfresco/playwright-shared": ["../../../projects/aca-playwright-shared/src/index.ts"]
|
||||
}
|
||||
},
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
|
@@ -7,6 +7,9 @@
|
||||
"target": "es2017",
|
||||
"types": ["jasmine", "jasminewd2", "node", "@playwright/test"],
|
||||
"skipLibCheck": true,
|
||||
"paths": {
|
||||
"@alfresco/playwright-shared": ["../../../projects/aca-playwright-shared/src/index.ts"]
|
||||
}
|
||||
},
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
|
Reference in New Issue
Block a user