mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2025-07-24 17:31:52 +00:00
[ACS-5678] update create folder from template tests (#3564)
This commit is contained in:
@@ -25,19 +25,21 @@
|
|||||||
import { expect } from '@playwright/test';
|
import { expect } from '@playwright/test';
|
||||||
import {
|
import {
|
||||||
AcaHeader,
|
AcaHeader,
|
||||||
|
ApiClientFactory,
|
||||||
ContentNodeSelectorDialog,
|
ContentNodeSelectorDialog,
|
||||||
CreateFromTemplateDialogComponent,
|
CreateFromTemplateDialogComponent,
|
||||||
DataTableComponent,
|
DataTableComponent,
|
||||||
NodeContentTree,
|
NodeContentTree,
|
||||||
NodesApi,
|
NodesApi,
|
||||||
|
SitesApi,
|
||||||
Utils,
|
Utils,
|
||||||
errorStrings,
|
errorStrings,
|
||||||
getUserState,
|
|
||||||
test
|
test
|
||||||
} from '@alfresco/playwright-shared';
|
} from '@alfresco/playwright-shared';
|
||||||
|
|
||||||
test.use({ storageState: getUserState('hruser') });
|
|
||||||
test.describe('Create folder from template', () => {
|
test.describe('Create folder from template', () => {
|
||||||
|
const apiClientFactory = new ApiClientFactory();
|
||||||
|
let nodesApi: NodesApi;
|
||||||
let selectFolderTemplateDialog: ContentNodeSelectorDialog;
|
let selectFolderTemplateDialog: ContentNodeSelectorDialog;
|
||||||
let createFolderFromTemplateDialog: CreateFromTemplateDialogComponent;
|
let createFolderFromTemplateDialog: CreateFromTemplateDialogComponent;
|
||||||
let dataTable: DataTableComponent;
|
let dataTable: DataTableComponent;
|
||||||
@@ -46,7 +48,6 @@ test.describe('Create folder from template', () => {
|
|||||||
let randomFolderTitle: string;
|
let randomFolderTitle: string;
|
||||||
let randomFolderDescription: string;
|
let randomFolderDescription: string;
|
||||||
let folderLink: string;
|
let folderLink: string;
|
||||||
let folderId: string;
|
|
||||||
const selectDialogTitle = 'Select a folder template';
|
const selectDialogTitle = 'Select a folder template';
|
||||||
const dialogBreadcrumb = 'Space Templates';
|
const dialogBreadcrumb = 'Space Templates';
|
||||||
const nameLabel = 'Name *';
|
const nameLabel = 'Name *';
|
||||||
@@ -58,6 +59,7 @@ test.describe('Create folder from template', () => {
|
|||||||
const spaceString = ' ';
|
const spaceString = ' ';
|
||||||
const commandKey = 'Meta';
|
const commandKey = 'Meta';
|
||||||
const random = Utils.random();
|
const random = Utils.random();
|
||||||
|
const username = `user-${Utils.random()}`;
|
||||||
|
|
||||||
const fileInRootFolder = `file-in-root-${random}.txt`;
|
const fileInRootFolder = `file-in-root-${random}.txt`;
|
||||||
const folderInRootFolder = `folder-in-root-${random}`;
|
const folderInRootFolder = `folder-in-root-${random}`;
|
||||||
@@ -102,16 +104,34 @@ test.describe('Create folder from template', () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
test.beforeAll(async ({ nodesApiAction }) => {
|
test.beforeAll(async ({ nodesApiAction }) => {
|
||||||
|
try {
|
||||||
|
await apiClientFactory.setUpAcaBackend('admin');
|
||||||
|
await apiClientFactory.createUser({ username: username });
|
||||||
await nodesApiAction.createContent(templates, `Data Dictionary/Space Templates`);
|
await nodesApiAction.createContent(templates, `Data Dictionary/Space Templates`);
|
||||||
await nodesApiAction.removeUserAccessOnSpaceTemplate(restrictedTemplateFolder);
|
await nodesApiAction.removeUserAccessOnSpaceTemplate(restrictedTemplateFolder);
|
||||||
folderLink = (await nodesApiAction.createLinkToFolderName(folderInRootFolder, await nodesApiAction.getSpaceTemplatesFolderId())).entry.name;
|
folderLink = (await nodesApiAction.createLinkToFolderName(folderInRootFolder, await nodesApiAction.getSpaceTemplatesFolderId())).entry.name;
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Main beforeAll failed : ${error}`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test.beforeEach(async ({ personalFiles }) => {
|
test.beforeEach(async ({ loginPage, personalFiles }) => {
|
||||||
|
try {
|
||||||
|
await loginPage.loginUser(
|
||||||
|
{ username: username, password: username },
|
||||||
|
{
|
||||||
|
withNavigation: true,
|
||||||
|
waitForLoading: true
|
||||||
|
}
|
||||||
|
);
|
||||||
await personalFiles.navigate();
|
await personalFiles.navigate();
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Main beforeEach failed : ${error}`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test.afterAll(async ({ nodesApiAction }) => {
|
test.afterAll(async ({ nodesApiAction }) => {
|
||||||
|
try {
|
||||||
await nodesApiAction.cleanupSpaceTemplatesItems([
|
await nodesApiAction.cleanupSpaceTemplatesItems([
|
||||||
folderInRootFolder,
|
folderInRootFolder,
|
||||||
templateFolder1,
|
templateFolder1,
|
||||||
@@ -119,14 +139,38 @@ test.describe('Create folder from template', () => {
|
|||||||
restrictedTemplateFolder,
|
restrictedTemplateFolder,
|
||||||
fileInRootFolder
|
fileInRootFolder
|
||||||
]);
|
]);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Main afterAll failed : ${error}`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test.describe('Personal Files page', () => {
|
test.describe('Personal Files page', () => {
|
||||||
|
test.beforeAll(async () => {
|
||||||
|
try {
|
||||||
|
nodesApi = await NodesApi.initialize(username, username);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Personal Files page, beforeAll failed : ${error}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
test.beforeEach(async ({ personalFiles }) => {
|
test.beforeEach(async ({ personalFiles }) => {
|
||||||
|
try {
|
||||||
selectFolderTemplateDialog = personalFiles.contentNodeSelector;
|
selectFolderTemplateDialog = personalFiles.contentNodeSelector;
|
||||||
dataTable = personalFiles.dataTable;
|
dataTable = personalFiles.dataTable;
|
||||||
toolbar = personalFiles.acaHeader;
|
toolbar = personalFiles.acaHeader;
|
||||||
await toolbar.clickCreateFolderFromTemplate();
|
await toolbar.clickCreateFolderFromTemplate();
|
||||||
|
await selectFolderTemplateDialog.loadMoreNodes();
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Personal Files page, beforeEach failed : ${error}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
test.afterAll(async () => {
|
||||||
|
try {
|
||||||
|
await nodesApi.deleteCurrentUserNodes();
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Personal Files page, afterAll failed : ${error}`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test.describe('Select Template dialog', () => {
|
test.describe('Select Template dialog', () => {
|
||||||
@@ -200,18 +244,21 @@ test.describe('Create folder from template', () => {
|
|||||||
|
|
||||||
test.describe('Create from template dialog', () => {
|
test.describe('Create from template dialog', () => {
|
||||||
test.beforeAll(async () => {
|
test.beforeAll(async () => {
|
||||||
const nodesApi = await NodesApi.initialize('hruser');
|
try {
|
||||||
folderId = (await nodesApi.createFolder(commonFolderName)).entry.id;
|
await nodesApi.createFolder(commonFolderName);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Create from template dialog, beforeAll failed : ${error}`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test.beforeEach(async ({ personalFiles }) => {
|
test.beforeEach(async ({ personalFiles }) => {
|
||||||
|
try {
|
||||||
createFolderFromTemplateDialog = personalFiles.createFromTemplateDialogComponent;
|
createFolderFromTemplateDialog = personalFiles.createFromTemplateDialogComponent;
|
||||||
await dataTable.getRowByName(templateFolder1).click();
|
await dataTable.getRowByName(templateFolder1).click();
|
||||||
await selectFolderTemplateDialog.actionButton.click();
|
await selectFolderTemplateDialog.actionButton.click();
|
||||||
});
|
} catch (error) {
|
||||||
|
console.error(`Create from template dialog, beforeEach failed : ${error}`);
|
||||||
test.afterAll(async ({ nodesApiAction }) => {
|
}
|
||||||
await nodesApiAction.deleteNodeById(folderId);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('[C325142] Create folder from template - dialog UI', async () => {
|
test('[C325142] Create folder from template - dialog UI', async () => {
|
||||||
@@ -319,18 +366,16 @@ test.describe('Create folder from template', () => {
|
|||||||
|
|
||||||
test.describe('Folder created from template on Personal Files', () => {
|
test.describe('Folder created from template on Personal Files', () => {
|
||||||
test.beforeEach(async ({ personalFiles }) => {
|
test.beforeEach(async ({ personalFiles }) => {
|
||||||
|
try {
|
||||||
randomFolderName = `playwright-folder-${Utils.random()}`;
|
randomFolderName = `playwright-folder-${Utils.random()}`;
|
||||||
randomFolderTitle = `folder-title-${Utils.random()}`;
|
randomFolderTitle = `folder-title-${Utils.random()}`;
|
||||||
randomFolderDescription = `folder-description-${Utils.random()}`;
|
randomFolderDescription = `folder-description-${Utils.random()}`;
|
||||||
createFolderFromTemplateDialog = personalFiles.createFromTemplateDialogComponent;
|
createFolderFromTemplateDialog = personalFiles.createFromTemplateDialogComponent;
|
||||||
await dataTable.getRowByName(templateFolder1).click();
|
await dataTable.getRowByName(templateFolder1).click();
|
||||||
await selectFolderTemplateDialog.actionButton.click();
|
await selectFolderTemplateDialog.actionButton.click();
|
||||||
});
|
} catch (error) {
|
||||||
|
console.error(`Folder created from template on Personal Files, beforeEach failed : ${error}`);
|
||||||
test.afterEach(async () => {
|
}
|
||||||
const nodesApi = await NodesApi.initialize('hruser');
|
|
||||||
folderId = await nodesApi.getNodeIdFromParent(randomFolderName, '-my-');
|
|
||||||
await nodesApi.deleteNodeById(folderId);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('[C325157] Create a folder from a template - with a new Name', async () => {
|
test('[C325157] Create a folder from a template - with a new Name', async () => {
|
||||||
@@ -359,14 +404,21 @@ test.describe('Create folder from template', () => {
|
|||||||
|
|
||||||
test.describe('Folder created from template on Personal Files Libraries', () => {
|
test.describe('Folder created from template on Personal Files Libraries', () => {
|
||||||
const randomLibraryName = `playwright-library-${Utils.random()}`;
|
const randomLibraryName = `playwright-library-${Utils.random()}`;
|
||||||
|
let sitesApi: SitesApi;
|
||||||
|
|
||||||
test.beforeAll(async ({ sitesApiAction, nodesApiAction }) => {
|
test.beforeAll(async () => {
|
||||||
await sitesApiAction.createSite(randomLibraryName);
|
try {
|
||||||
const libraryGuId = await sitesApiAction.getDocLibId(randomLibraryName);
|
sitesApi = await SitesApi.initialize(username, username);
|
||||||
await nodesApiAction.createFolder(commonFolderName, libraryGuId);
|
await sitesApi.createSite(randomLibraryName);
|
||||||
|
const libraryGuId = await sitesApi.getDocLibId(randomLibraryName);
|
||||||
|
await nodesApi.createFolder(commonFolderName, libraryGuId);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Folder created from template on Personal Files Libraries, beforeAll failed : ${error}`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test.beforeEach(async ({ myLibrariesPage }) => {
|
test.beforeEach(async ({ myLibrariesPage }) => {
|
||||||
|
try {
|
||||||
randomFolderName = `playwright-folder-${Utils.random()}`;
|
randomFolderName = `playwright-folder-${Utils.random()}`;
|
||||||
randomFolderTitle = `folder-title-${Utils.random()}`;
|
randomFolderTitle = `folder-title-${Utils.random()}`;
|
||||||
randomFolderDescription = `folder-description-${Utils.random()}`;
|
randomFolderDescription = `folder-description-${Utils.random()}`;
|
||||||
@@ -379,12 +431,20 @@ test.describe('Create folder from template', () => {
|
|||||||
await dataTable.getRowByName(randomLibraryName).dblclick();
|
await dataTable.getRowByName(randomLibraryName).dblclick();
|
||||||
await dataTable.spinnerWaitForReload();
|
await dataTable.spinnerWaitForReload();
|
||||||
await toolbar.clickCreateFolderFromTemplate();
|
await toolbar.clickCreateFolderFromTemplate();
|
||||||
|
await selectFolderTemplateDialog.loadMoreNodes();
|
||||||
await dataTable.getRowByName(templateFolder1).click();
|
await dataTable.getRowByName(templateFolder1).click();
|
||||||
await selectFolderTemplateDialog.actionButton.click();
|
await selectFolderTemplateDialog.actionButton.click();
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Folder created from template on Personal Files Libraries, beforeEach failed : ${error}`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test.afterAll(async ({ sitesApiAction }) => {
|
test.afterAll(async () => {
|
||||||
await sitesApiAction.deleteSites([randomLibraryName]);
|
try {
|
||||||
|
await sitesApi.deleteSites([randomLibraryName]);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(`Folder created from template on Personal Files Libraries, afterAll failed : ${error}`);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test('[C325161] Create a folder from a template from library - with Name, Title and Description', async () => {
|
test('[C325161] Create a folder from a template from library - with Name, Title and Description', async () => {
|
||||||
|
@@ -41,7 +41,14 @@ export class ContentNodeSelectorDialog extends BaseComponent {
|
|||||||
getDialogTitle = (text: string) => this.getChild('[data-automation-id="content-node-selector-title"]', { hasText: text });
|
getDialogTitle = (text: string) => this.getChild('[data-automation-id="content-node-selector-title"]', { hasText: text });
|
||||||
getBreadcrumb = (text: string) => this.getChild('[data-automation-id="current-folder"]', { hasText: text });
|
getBreadcrumb = (text: string) => this.getChild('[data-automation-id="current-folder"]', { hasText: text });
|
||||||
getFolderIcon = this.getChild('mat-icon[role="img"]', { hasText: "folder" });
|
getFolderIcon = this.getChild('mat-icon[role="img"]', { hasText: "folder" });
|
||||||
|
loadMoreButton = this.getChild('[data-automation-id="adf-infinite-pagination-button"]');
|
||||||
|
|
||||||
|
async loadMoreNodes(): Promise<void> {
|
||||||
|
await this.spinnerWaitForReload();
|
||||||
|
while (await this.loadMoreButton.isVisible()) {
|
||||||
|
await this.loadMoreButton.click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async selectLocation(location: string): Promise<void> {
|
async selectLocation(location: string): Promise<void> {
|
||||||
await this.locationDropDown.click();
|
await this.locationDropDown.click();
|
||||||
|
Reference in New Issue
Block a user