[ACS-7267] The rest of list-views tests migrated to Playwright (#3711)

This commit is contained in:
Adam Świderski
2024-03-19 09:40:44 +01:00
committed by GitHub
parent 227f3fb996
commit 96a5542fe4
4 changed files with 101 additions and 145 deletions

View File

@@ -99,8 +99,6 @@ jobs:
fail-fast: false
matrix:
e2e-suites:
- name: "listViews"
id: 1
- name: "search"
id: 2
- name: "deleteActions"

View File

@@ -23,7 +23,7 @@
*/
import { expect } from '@playwright/test';
import { ApiClientFactory, LoginPage, Utils, test } from '@alfresco/playwright-shared';
import { ApiClientFactory, Utils, test, SIDEBAR_LABELS, SearchPage, PersonalFilesPage } from '@alfresco/playwright-shared';
test.describe('Empty list views', () => {
const username = `user-${Utils.random()}`;
@@ -34,15 +34,8 @@ test.describe('Empty list views', () => {
await apiClientFactory.createUser({ username });
});
test.beforeEach(async ({ page }) => {
const loginPage = new LoginPage(page);
await loginPage.loginUser(
{ username, password: username },
{
withNavigation: true,
waitForLoading: true
}
);
test.beforeEach(async ({ loginPage }) => {
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
});
test('[C217099] empty My Libraries', async ({ myLibrariesPage }) => {
@@ -75,4 +68,86 @@ test.describe('Empty list views', () => {
expect(await personalFiles.dataTable.isEmpty(), 'list is not empty').toBe(true);
expect(await personalFiles.dataTable.emptySearchText.innerText()).toContain('Your search returned 0 results');
});
test('[C290020] Empty Search results - Libraries', async ({ searchPage }) => {
await searchPage.sidenav.openPanel(SIDEBAR_LABELS.MY_LIBRARIES);
/* cspell:disable-next-line */
await searchPage.searchWithin('qwertyuiop', 'files');
expect(await searchPage.dataTable.isEmpty()).toBeTruthy();
expect(await searchPage.dataTable.emptySearchText.textContent()).toContain('Your search returned 0 results');
});
async function openEmptyTab(searchPage: SearchPage, tab: string, emptyStateTitle: string, emptyStateSubtitle: string) {
await searchPage.sidenav.openPanel(tab);
expect(await searchPage.dataTable.isEmpty()).toBeTruthy();
expect(await searchPage.dataTable.getEmptyStateTitle()).toContain(emptyStateTitle);
expect(await searchPage.dataTable.getEmptyStateSubtitle()).toContain(emptyStateSubtitle);
}
[
{
tab: SIDEBAR_LABELS.FAVORITE_LIBRARIES,
id: 'C289911',
emptyStateTitle: `No Favorite Libraries`,
emptyStateSubtitle: 'Favorite a library that you want to find easily later.'
},
{
tab: SIDEBAR_LABELS.RECENT_FILES,
id: 'C213169',
emptyStateTitle: 'No recent files',
emptyStateSubtitle: 'Items you uploaded or edited in the last 30 days are shown here.'
},
{
tab: SIDEBAR_LABELS.FAVORITES,
id: 'C280133',
emptyStateTitle: 'No favorite files or folders',
emptyStateSubtitle: 'Favorite items that you want to easily find later.'
}
].forEach((testCase) => {
test(`[${testCase.id}] empty ${testCase.tab}`, async ({ searchPage }) => {
await openEmptyTab(searchPage, testCase.tab, testCase.emptyStateTitle, testCase.emptyStateSubtitle);
});
});
async function checkPaginationForTabs(searchPage: SearchPage, tab: string, personalFiles: PersonalFilesPage) {
await searchPage.sidenav.openPanel(tab);
expect(await personalFiles.pagination.isRangePresent()).toBeFalsy();
expect(await personalFiles.pagination.isMaxItemsPresent()).toBeFalsy();
expect(await personalFiles.pagination.isCurrentPagePresent()).toBeFalsy();
expect(await personalFiles.pagination.isTotalPagesPresent()).toBeFalsy();
expect(await personalFiles.pagination.isPreviousButtonPresent()).toBeFalsy();
expect(await personalFiles.pagination.isNextButtonPresent()).toBeFalsy();
}
[
{
tab: SIDEBAR_LABELS.FAVORITES,
id: 'C280111'
},
{
tab: SIDEBAR_LABELS.MY_LIBRARIES,
id: 'C280084'
},
{
tab: SIDEBAR_LABELS.FAVORITE_LIBRARIES,
id: 'C291873'
},
{
tab: SIDEBAR_LABELS.PERSONAL_FILES,
id: 'C280075'
},
{
tab: SIDEBAR_LABELS.RECENT_FILES,
id: 'C280102'
},
{
tab: SIDEBAR_LABELS.TRASH,
id: 'C280120'
}
].forEach((testCase) => {
test(`[${testCase.id}] ${testCase.tab} - pagination controls not displayed`, async ({ searchPage, personalFiles }) => {
await checkPaginationForTabs(searchPage, testCase.tab, personalFiles);
});
});
});

View File

@@ -1,133 +0,0 @@
/*!
* 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 { AdminActions, BrowsingPage, LoginPage, Utils } from '@alfresco/aca-testing-shared';
describe('Empty list views', () => {
const username = `user-${Utils.random()}`;
const loginPage = new LoginPage();
const page = new BrowsingPage();
const { dataTable, pagination, toolbar } = page;
const { searchInput } = page.pageLayoutHeader;
const adminApiActions = new AdminActions();
beforeAll(async () => {
await adminApiActions.createUser({ username });
await loginPage.loginWith(username);
});
it('[C289911] empty Favorite Libraries', async () => {
await page.goToFavoriteLibraries();
expect(await dataTable.isEmpty()).toBe(true, 'list is not empty');
expect(await dataTable.getEmptyStateTitle()).toContain(`No Favorite Libraries`);
expect(await dataTable.getEmptyStateSubtitle()).toContain('Favorite a library that you want to find easily later.');
});
it('[C213169] empty Recent Files', async () => {
await page.clickRecentFiles();
expect(await dataTable.isEmpty()).toBe(true, 'list is not empty');
expect(await dataTable.getEmptyStateTitle()).toContain('No recent files');
expect(await dataTable.getEmptyStateSubtitle()).toContain('Items you uploaded or edited in the last 30 days are shown here.');
});
it('[C280133] empty Favorites', async () => {
await page.clickFavorites();
expect(await dataTable.isEmpty()).toBe(true, 'list is not empty');
expect(await dataTable.getEmptyStateTitle()).toContain('No favorite files or folders');
expect(await dataTable.getEmptyStateSubtitle()).toContain('Favorite items that you want to easily find later.');
});
it('[C280111] Favorites - pagination controls not displayed', async () => {
await page.clickFavorites();
expect(await pagination.isRangePresent()).toBe(false, 'Range is present');
expect(await pagination.isMaxItemsPresent()).toBe(false, 'Max items is present');
expect(await pagination.isCurrentPagePresent()).toBe(false, 'Current page is present');
expect(await pagination.isTotalPagesPresent()).toBe(false, 'Total pages is present');
expect(await pagination.isPreviousButtonPresent()).toBe(false, 'Previous button is present');
expect(await pagination.isNextButtonPresent()).toBe(false, 'Next button is present');
});
it('[C280084] My Libraries - pagination controls not displayed', async () => {
await page.goToMyLibraries();
expect(await pagination.isRangePresent()).toBe(false, 'Range is present');
expect(await pagination.isMaxItemsPresent()).toBe(false, 'Max items is present');
expect(await pagination.isCurrentPagePresent()).toBe(false, 'Current page is present');
expect(await pagination.isTotalPagesPresent()).toBe(false, 'Total pages is present');
expect(await pagination.isPreviousButtonPresent()).toBe(false, 'Previous button is present');
expect(await pagination.isNextButtonPresent()).toBe(false, 'Next button is present');
});
it('[C291873] Favorite Libraries - pagination controls not displayed', async () => {
await page.goToFavoriteLibraries();
expect(await pagination.isRangePresent()).toBe(false, 'Range is present');
expect(await pagination.isMaxItemsPresent()).toBe(false, 'Max items is present');
expect(await pagination.isCurrentPagePresent()).toBe(false, 'Current page is present');
expect(await pagination.isTotalPagesPresent()).toBe(false, 'Total pages is present');
expect(await pagination.isPreviousButtonPresent()).toBe(false, 'Previous button is present');
expect(await pagination.isNextButtonPresent()).toBe(false, 'Next button is present');
});
it('[C280075] Personal Files - pagination controls not displayed', async () => {
await page.clickPersonalFiles();
expect(await pagination.isRangePresent()).toBe(false, 'Range is present');
expect(await pagination.isMaxItemsPresent()).toBe(false, 'Max items is present');
expect(await pagination.isCurrentPagePresent()).toBe(false, 'Current page is present');
expect(await pagination.isTotalPagesPresent()).toBe(false, 'Total pages is present');
expect(await pagination.isPreviousButtonPresent()).toBe(false, 'Previous button is present');
expect(await pagination.isNextButtonPresent()).toBe(false, 'Next button is present');
});
it('[C280102] Recent Files - pagination controls not displayed', async () => {
await page.clickRecentFiles();
expect(await pagination.isRangePresent()).toBe(false, 'Range is present');
expect(await pagination.isMaxItemsPresent()).toBe(false, 'Max items is present');
expect(await pagination.isCurrentPagePresent()).toBe(false, 'Current page is present');
expect(await pagination.isTotalPagesPresent()).toBe(false, 'Total pages is present');
expect(await pagination.isPreviousButtonPresent()).toBe(false, 'Previous button is present');
expect(await pagination.isNextButtonPresent()).toBe(false, 'Next button is present');
});
it('[C280120] Trash - pagination controls not displayed', async () => {
await page.clickTrash();
expect(await pagination.isRangePresent()).toBe(false, 'Range is present');
expect(await pagination.isMaxItemsPresent()).toBe(false, 'Max items is present');
expect(await pagination.isCurrentPagePresent()).toBe(false, 'Current page is present');
expect(await pagination.isTotalPagesPresent()).toBe(false, 'Total pages is present');
expect(await pagination.isPreviousButtonPresent()).toBe(false, 'Previous button is present');
expect(await pagination.isNextButtonPresent()).toBe(false, 'Next button is present');
});
it('[C290020] Empty Search results - Libraries', async () => {
await page.goToMyLibraries();
await toolbar.clickSearchIconButton();
await searchInput.clickSearchButton();
await searchInput.checkLibraries();
/* cspell:disable-next-line */
await searchInput.searchForLibrary('qwertyuiop');
await dataTable.waitForBody();
expect(await dataTable.isEmpty()).toBe(true, 'list is not empty');
expect(await dataTable.emptySearchText.getText()).toContain('Your search returned 0 results');
});
});

View File

@@ -174,4 +174,20 @@ export class PaginationComponent extends BaseComponent {
async isMaxItemsPresent(): Promise<boolean> {
return this.maxItems.isVisible();
}
async isCurrentPagePresent(): Promise<boolean> {
return this.currentPage.isVisible();
}
async isTotalPagesPresent(): Promise<boolean> {
return this.totalPages.isVisible();
}
async isPreviousButtonPresent(): Promise<boolean> {
return this.previousButton.isVisible();
}
async isNextButtonPresent(): Promise<boolean> {
return this.nextButton.isVisible();
}
}