[ACS-5678] update create folder from template tests (#3564)

This commit is contained in:
Adam Zakrzewski
2023-12-18 17:29:20 +01:00
committed by GitHub
parent aad0837234
commit 6bcca76646
2 changed files with 127 additions and 60 deletions

View File

@@ -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 () => {

View File

@@ -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();