[ACS-5511] create library tests update (#3516)

* [ACS-5511] create library tests update

* updates from commands
This commit is contained in:
Adam Zakrzewski
2023-11-13 14:10:34 +01:00
committed by GitHub
parent b5d561dc5e
commit 336047318a
4 changed files with 216 additions and 150 deletions

View File

@@ -23,12 +23,26 @@
*/
import { expect } from '@playwright/test';
import { Utils, ApiClientFactory, getUserState, test, libraryErrors } from '@alfresco/playwright-shared';
import { SiteBodyCreate } from '@alfresco/js-api';
import {
Utils,
ApiClientFactory,
test,
libraryErrors,
LoginPage,
SitesApi,
AdfLibraryDialogComponent,
DataTableComponent,
Breadcrumb,
TrashcanApi
} from '@alfresco/playwright-shared';
import { logger } from '@alfresco/adf-cli/scripts/logger';
test.use({ storageState: getUserState('hruser') });
test.describe('Create Libraries ', () => {
const apiClientFactory = new ApiClientFactory();
let sitesApi: SitesApi;
let libraryDialog: AdfLibraryDialogComponent;
let libraryTable: DataTableComponent;
let libraryBreadcrumb: Breadcrumb;
let randomLibraryName: string;
let randomLibraryId: string;
let randomLibraryDescription: string;
@@ -39,41 +53,59 @@ test.describe('Create Libraries ', () => {
const publicVisibility = 'Public';
const moderatedVisibility = 'Moderated';
const privateVisibility = 'Private';
const deleteAction = 'Delete';
const errorMessageNotPresent = 'Error message is not displayed';
const tabKeyString = 'Tab';
const username = `user-${Utils.random()}`;
const commonLibraryName = `playwright-library-${Utils.random()}`;
const commonLibraryId = `libraryId-${Utils.random()}`;
const commonTrashLibraryName = `playwright-library-${Utils.random()}`;
const commonTrashLibraryId = `libraryId-${Utils.random()}`;
const createdLibrariesIds: string[] = [];
test.beforeAll(async () => {
await apiClientFactory.setUpAcaBackend('hruser');
await apiClientFactory.sites.createSite({ id: commonLibraryId, title: commonLibraryName, visibility: SiteBodyCreate.VisibilityEnum.PUBLIC });
await apiClientFactory.sites.createSite({
id: commonTrashLibraryId,
title: commonTrashLibraryName,
visibility: SiteBodyCreate.VisibilityEnum.PUBLIC
});
await apiClientFactory.sites.deleteSite(commonTrashLibraryId);
try {
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username });
sitesApi = await SitesApi.initialize(username, username);
await sitesApi.createSite(commonLibraryName);
createdLibrariesIds.push(commonLibraryName);
await sitesApi.createSite(commonTrashLibraryName);
await sitesApi.deleteSites([commonTrashLibraryName], false);
} catch (error) {
logger.error(`beforeAll failed : ${error}`);
}
});
test.beforeEach(async ({ myLibrariesPage }) => {
test.beforeEach(async ({ myLibrariesPage, page }) => {
randomLibraryName = `playwright-library-${Utils.random()}`;
randomLibraryId = `libraryId-${Utils.random()}`;
randomLibraryDescription = `libraryDescription-${Utils.random()}`;
await myLibrariesPage.navigate();
libraryDialog = myLibrariesPage.libraryDialog;
const loginPage = new LoginPage(page);
try {
await loginPage.loginUser(
{ username: username, password: username },
{
withNavigation: true,
waitForLoading: true
}
);
await myLibrariesPage.navigate();
await myLibrariesPage.selectCreateLibrary();
} catch (error) {
logger.error(`beforeEach failed : ${error}`);
}
});
test.afterAll(async () => {
await apiClientFactory.sites.deleteSite(commonLibraryId, { permanent: true });
try {
await sitesApi.deleteSites(createdLibrariesIds);
const trashcanApi = await TrashcanApi.initialize(username, username);
await trashcanApi.emptyTrashcan();
} catch (error) {
logger.error(`afterAll failed : ${error}`);
}
});
test('[C280024] Create Library dialog UI', async ({ myLibrariesPage }) => {
const libraryDialog = myLibrariesPage.libraryDialog;
await myLibrariesPage.selectCreateLibrary();
test('[C280024] Create Library dialog UI', async () => {
await expect(libraryDialog.getDialogTitle(libraryDialogTitle)).toBeVisible();
await expect(libraryDialog.getLabelText(libraryNameLabel)).toBeVisible();
await expect(libraryDialog.getLabelText(libraryIdLabel)).toBeVisible();
@@ -86,117 +118,90 @@ test.describe('Create Libraries ', () => {
await expect(libraryDialog.createButton).toBeDisabled();
});
test('[C280025] Create a public library', async ({ myLibrariesPage }) => {
const libraryDialog = myLibrariesPage.libraryDialog;
const libraryTable = myLibrariesPage.dataTable;
test.describe('On My Libraries dataTable', () => {
test.beforeEach(async ({ myLibrariesPage }) => {
libraryTable = myLibrariesPage.dataTable;
libraryBreadcrumb = myLibrariesPage.breadcrumb;
});
await myLibrariesPage.selectCreateLibrary();
await libraryDialog.getLabelText(libraryNameLabel).fill(randomLibraryName);
await expect(libraryDialog.getLabelText(libraryNameLabel)).toHaveValue(randomLibraryName);
await expect(libraryDialog.getLabelText(libraryIdLabel)).toHaveValue(randomLibraryName);
await libraryDialog.createButton.click();
test('[C280025] Create a public library', async ({ myLibrariesPage }) => {
await libraryDialog.getLabelText(libraryNameLabel).fill(randomLibraryName);
await expect(libraryDialog.getLabelText(libraryNameLabel)).toHaveValue(randomLibraryName);
await expect(libraryDialog.getLabelText(libraryIdLabel)).toHaveValue(randomLibraryName);
await libraryDialog.createButton.click();
await expect(libraryBreadcrumb.getItemByTitle(randomLibraryName)).toBeVisible();
await myLibrariesPage.navigate();
await libraryTable.goThroughPagesLookingForRowWithName(randomLibraryName);
await expect(libraryTable.getCellByColumnNameAndRowItem(randomLibraryName, publicVisibility)).toBeVisible();
await myLibrariesPage.navigate();
await expect(libraryTable.getCellByColumnNameAndRowItem(randomLibraryName, publicVisibility)).toBeVisible();
await libraryTable.performActionInExpandableMenu(randomLibraryName, deleteAction);
createdLibrariesIds.push(randomLibraryName);
});
test('[C289880] Create a moderated library', async ({ myLibrariesPage }) => {
await libraryDialog.createLibraryWithNameAndId(randomLibraryName, randomLibraryId, null, moderatedVisibility);
await expect(libraryBreadcrumb.getItemByTitle(randomLibraryName)).toBeVisible();
await myLibrariesPage.navigate();
await libraryTable.spinnerWaitForReload();
await expect(libraryTable.getCellByColumnNameAndRowItem(randomLibraryName, moderatedVisibility)).toBeVisible();
createdLibrariesIds.push(randomLibraryId);
});
test('[C289881] Create a private library', async ({ myLibrariesPage }) => {
await libraryDialog.createLibraryWithNameAndId(randomLibraryName, randomLibraryId, null, privateVisibility);
await expect(libraryBreadcrumb.getItemByTitle(randomLibraryName)).toBeVisible();
await myLibrariesPage.navigate();
await expect(libraryTable.getCellByColumnNameAndRowItem(randomLibraryName, privateVisibility)).toBeVisible();
createdLibrariesIds.push(randomLibraryId);
});
test('[C289882] Create a library with a given ID and description', async ({ myLibrariesPage }) => {
const libraryViewDetails = myLibrariesPage.acaHeader.viewDetails;
const libraryDetails = myLibrariesPage.libraryDetails;
await libraryDialog.createLibraryWithNameAndId(randomLibraryName, randomLibraryId, randomLibraryDescription);
await expect(libraryBreadcrumb.getItemByTitle(randomLibraryName)).toBeVisible();
await myLibrariesPage.navigate();
await expect(libraryTable.getCellLinkByName(randomLibraryName).and(myLibrariesPage.page.getByTitle(randomLibraryDescription))).toBeVisible();
await libraryTable.getRowByName(randomLibraryName).click();
await libraryViewDetails.click();
expect(await libraryDetails.getNameField('Name').locator('input').inputValue()).toBe(randomLibraryName);
expect(await libraryDetails.getIdField('Library ID').locator('input').inputValue()).toBe(randomLibraryId);
await expect(libraryDetails.getVisibilityField('Visibility').locator('.mat-select-value').getByText(publicVisibility)).toBeVisible();
expect(await libraryDetails.getDescriptionField.inputValue()).toBe(randomLibraryDescription);
createdLibrariesIds.push(randomLibraryId);
});
test('[C280029] Cancel button', async () => {
await expect(libraryDialog.getDialogTitle(libraryDialogTitle)).toBeVisible();
await libraryDialog.getLabelText(libraryNameLabel).fill(randomLibraryName);
await libraryDialog.cancelButton.click();
await expect(libraryDialog.getDialogTitle(libraryDialogTitle)).toBeHidden();
await expect(libraryTable.getRowByName(randomLibraryName)).toHaveCount(0);
});
test('[C280030] Create 2 libraries with same name but different IDs', async ({ myLibrariesPage }) => {
const libraryName = commonLibraryName + ' (' + commonLibraryName + ')';
const libraryName2 = commonLibraryName + ' (' + randomLibraryId + ')';
await libraryDialog.createLibraryWithNameAndId(commonLibraryName, randomLibraryId);
await expect(libraryBreadcrumb.getItemByTitle(commonLibraryName)).toBeVisible();
await myLibrariesPage.navigate();
await expect(libraryTable.getRowByName(libraryName)).toBeVisible();
await expect(libraryTable.getRowByName(libraryName2)).toBeVisible();
createdLibrariesIds.push(randomLibraryId);
});
});
test('[C289880] Create a moderated library', async ({ myLibrariesPage }) => {
const libraryDialog = myLibrariesPage.libraryDialog;
const libraryTable = myLibrariesPage.dataTable;
await myLibrariesPage.selectCreateLibrary();
await libraryDialog.createLibraryWithNameAndId(randomLibraryName, randomLibraryId, null, moderatedVisibility);
await myLibrariesPage.navigate();
await libraryTable.goThroughPagesLookingForRowWithName(randomLibraryName);
await expect(libraryTable.getCellByColumnNameAndRowItem(randomLibraryName, moderatedVisibility)).toBeVisible();
await libraryTable.performActionInExpandableMenu(randomLibraryName, deleteAction);
});
test('[C289881] Create a private library', async ({ myLibrariesPage }) => {
const libraryDialog = myLibrariesPage.libraryDialog;
const libraryTable = myLibrariesPage.dataTable;
await myLibrariesPage.selectCreateLibrary();
await libraryDialog.createLibraryWithNameAndId(randomLibraryName, randomLibraryId, null, privateVisibility);
await myLibrariesPage.navigate();
await libraryTable.goThroughPagesLookingForRowWithName(randomLibraryName);
await expect(libraryTable.getCellByColumnNameAndRowItem(randomLibraryName, privateVisibility)).toBeVisible();
await libraryTable.performActionInExpandableMenu(randomLibraryName, deleteAction);
});
test('[C289882] Create a library with a given ID and description', async ({ myLibrariesPage }) => {
const libraryDialog = myLibrariesPage.libraryDialog;
const libraryTable = myLibrariesPage.dataTable;
const libraryViewDetails = myLibrariesPage.acaHeader.viewDetails;
const libraryDetails = myLibrariesPage.libraryDetails;
await myLibrariesPage.selectCreateLibrary();
await libraryDialog.createLibraryWithNameAndId(randomLibraryName, randomLibraryId, randomLibraryDescription);
await myLibrariesPage.navigate();
await libraryTable.goThroughPagesLookingForRowWithName(randomLibraryName);
await expect(libraryTable.getCellLinkByName(randomLibraryName).and(myLibrariesPage.page.getByTitle(randomLibraryDescription))).toBeVisible();
await libraryTable.getRowByName(randomLibraryName).click();
await libraryViewDetails.click();
expect(await libraryDetails.getNameField('Name').locator('input').inputValue()).toBe(randomLibraryName);
expect(await libraryDetails.getIdField('Library ID').locator('input').inputValue()).toBe(randomLibraryId);
await expect(libraryDetails.getVisibilityField('Visibility').locator('.mat-select-value').getByText(publicVisibility)).toBeVisible();
expect(await libraryDetails.getDescriptionField.inputValue()).toBe(randomLibraryDescription);
await apiClientFactory.sites.deleteSite(randomLibraryId, { permanent: true });
});
test('[C280027] Duplicate library ID', async ({ myLibrariesPage }) => {
const libraryDialog = myLibrariesPage.libraryDialog;
await myLibrariesPage.selectCreateLibrary();
await libraryDialog.getLabelText(libraryNameLabel).fill(randomLibraryName);
await libraryDialog.getLabelText(libraryIdLabel).clear();
await libraryDialog.getLabelText(libraryIdLabel).fill(commonLibraryId);
await libraryDialog.page.keyboard.press('Tab');
await expect(libraryDialog.getLabelText(libraryIdLabel)).toHaveValue(commonLibraryId);
await expect(libraryDialog.createButton).toBeDisabled();
expect(await libraryDialog.isErrorMessageDisplayed(libraryErrors.libraryIdIsNotAvailable), errorMessageNotPresent).toBe(true);
});
test('[C280028] Create library using the ID of a library from the Trashcan', async ({ myLibrariesPage }) => {
const libraryDialog = myLibrariesPage.libraryDialog;
await myLibrariesPage.selectCreateLibrary();
await libraryDialog.getLabelText(libraryNameLabel).fill(randomLibraryName);
await libraryDialog.getLabelText(libraryIdLabel).clear();
await libraryDialog.getLabelText(libraryIdLabel).fill(commonTrashLibraryId);
await libraryDialog.page.keyboard.press('Tab');
await expect(libraryDialog.createButton).toBeEnabled();
await libraryDialog.createButton.click();
await expect(libraryDialog.createButton).toBeDisabled();
expect(await libraryDialog.isErrorMessageDisplayed(libraryErrors.libraryIdIsAlreadyUsed), errorMessageNotPresent).toBe(true);
});
test('[C280029] Cancel button', async ({ myLibrariesPage }) => {
const libraryDialog = myLibrariesPage.libraryDialog;
const libraryTable = myLibrariesPage.dataTable;
await myLibrariesPage.selectCreateLibrary();
await expect(libraryDialog.getDialogTitle(libraryDialogTitle)).toBeVisible();
await libraryDialog.getLabelText(libraryNameLabel).fill(randomLibraryName);
await libraryDialog.cancelButton.click();
await expect(libraryDialog.getDialogTitle(libraryDialogTitle)).toBeHidden();
await expect(libraryTable.getRowByName(randomLibraryName)).toHaveCount(0);
});
test('[C280026] Library ID cannot contain special characters', async ({ myLibrariesPage }) => {
const libraryDialog = myLibrariesPage.libraryDialog;
test('[C280026] Library ID cannot contain special characters', async () => {
const idsWithSpecialChars = [
'a!a',
'a@a',
@@ -217,34 +222,38 @@ test.describe('Create Libraries ', () => {
'a|a'
];
await myLibrariesPage.selectCreateLibrary();
await libraryDialog.getLabelText(libraryNameLabel).fill(randomLibraryName);
for (const specialLibraryId of idsWithSpecialChars) {
await libraryDialog.getLabelText(libraryIdLabel).clear();
await libraryDialog.getLabelText(libraryIdLabel).fill(specialLibraryId);
await libraryDialog.page.keyboard.press('Tab');
await libraryDialog.page.keyboard.press(tabKeyString);
await expect(libraryDialog.getLabelText(libraryIdLabel)).toHaveValue(specialLibraryId);
expect(await libraryDialog.isErrorMessageDisplayed(libraryErrors.useNumbersAndLettersOnly), errorMessageNotPresent).toBe(true);
await expect(libraryDialog.createButton).toBeDisabled();
}
});
test('[C280030] Create 2 libraries with same name but different IDs', async ({ myLibrariesPage }) => {
const libraryDialog = myLibrariesPage.libraryDialog;
const libraryTable = myLibrariesPage.dataTable;
const libraryName = commonLibraryName + ' (' + commonLibraryId + ')';
const libraryName2 = commonLibraryName + ' (' + randomLibraryId + ')';
test('[C280027] Duplicate library ID', async () => {
await libraryDialog.getLabelText(libraryNameLabel).fill(randomLibraryName);
await libraryDialog.getLabelText(libraryIdLabel).clear();
await libraryDialog.getLabelText(libraryIdLabel).fill(commonLibraryName);
await libraryDialog.page.keyboard.press(tabKeyString);
await expect(libraryDialog.getLabelText(libraryIdLabel)).toHaveValue(commonLibraryName);
await myLibrariesPage.selectCreateLibrary();
await libraryDialog.createLibraryWithNameAndId(commonLibraryName, randomLibraryId);
await expect(libraryDialog.createButton).toBeDisabled();
expect(await libraryDialog.isErrorMessageDisplayed(libraryErrors.libraryIdIsNotAvailable), errorMessageNotPresent).toBe(true);
});
await myLibrariesPage.navigate();
await libraryTable.goThroughPagesLookingForRowWithName(libraryName);
await expect(libraryTable.getRowByName(libraryName)).toBeVisible();
await libraryTable.goThroughPagesLookingForRowWithName(libraryName2);
await expect(libraryTable.getRowByName(libraryName2)).toBeVisible();
test('[C280028] Create library using the ID of a library from the Trashcan', async () => {
await libraryDialog.getLabelText(libraryNameLabel).fill(randomLibraryName);
await libraryDialog.getLabelText(libraryIdLabel).clear();
await libraryDialog.getLabelText(libraryIdLabel).fill(commonTrashLibraryName);
await libraryDialog.page.keyboard.press(tabKeyString);
await apiClientFactory.sites.deleteSite(randomLibraryId, { permanent: true });
await expect(libraryDialog.createButton).toBeEnabled();
await libraryDialog.createButton.click();
await expect(libraryDialog.createButton).toBeDisabled();
expect(await libraryDialog.isErrorMessageDisplayed(libraryErrors.libraryIdIsAlreadyUsed), errorMessageNotPresent).toBe(true);
});
});