mirror of
https://github.com/Alfresco/alfresco-content-app.git
synced 2025-07-24 17:31:52 +00:00
[ACS-7267] The rest of list-views tests migrated to Playwright (#3711)
This commit is contained in:
2
.github/workflows/pull-request.yml
vendored
2
.github/workflows/pull-request.yml
vendored
@@ -99,8 +99,6 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
e2e-suites:
|
e2e-suites:
|
||||||
- name: "listViews"
|
|
||||||
id: 1
|
|
||||||
- name: "search"
|
- name: "search"
|
||||||
id: 2
|
id: 2
|
||||||
- name: "deleteActions"
|
- name: "deleteActions"
|
||||||
|
@@ -23,7 +23,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { expect } from '@playwright/test';
|
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', () => {
|
test.describe('Empty list views', () => {
|
||||||
const username = `user-${Utils.random()}`;
|
const username = `user-${Utils.random()}`;
|
||||||
@@ -34,15 +34,8 @@ test.describe('Empty list views', () => {
|
|||||||
await apiClientFactory.createUser({ username });
|
await apiClientFactory.createUser({ username });
|
||||||
});
|
});
|
||||||
|
|
||||||
test.beforeEach(async ({ page }) => {
|
test.beforeEach(async ({ loginPage }) => {
|
||||||
const loginPage = new LoginPage(page);
|
await Utils.tryLoginUser(loginPage, username, username, 'beforeEach failed');
|
||||||
await loginPage.loginUser(
|
|
||||||
{ username, password: username },
|
|
||||||
{
|
|
||||||
withNavigation: true,
|
|
||||||
waitForLoading: true
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
test('[C217099] empty My Libraries', async ({ myLibrariesPage }) => {
|
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.isEmpty(), 'list is not empty').toBe(true);
|
||||||
expect(await personalFiles.dataTable.emptySearchText.innerText()).toContain('Your search returned 0 results');
|
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);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
@@ -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');
|
|
||||||
});
|
|
||||||
});
|
|
@@ -174,4 +174,20 @@ export class PaginationComponent extends BaseComponent {
|
|||||||
async isMaxItemsPresent(): Promise<boolean> {
|
async isMaxItemsPresent(): Promise<boolean> {
|
||||||
return this.maxItems.isVisible();
|
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();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user