diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index 26d656e8e..17a46d5d0 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -99,8 +99,6 @@ jobs:
fail-fast: false
matrix:
e2e-suites:
- - name: "listViews"
- id: 1
- name: "search"
id: 2
- name: "deleteActions"
diff --git a/e2e/playwright/list-views/src/tests/empty-list.spec.ts b/e2e/playwright/list-views/src/tests/empty-list.spec.ts
index 6a4236d0b..51919339e 100755
--- a/e2e/playwright/list-views/src/tests/empty-list.spec.ts
+++ b/e2e/playwright/list-views/src/tests/empty-list.spec.ts
@@ -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);
+ });
+ });
});
diff --git a/e2e/protractor/suites/list-views/empty-list.test.ts b/e2e/protractor/suites/list-views/empty-list.test.ts
deleted file mode 100755
index e620c61cb..000000000
--- a/e2e/protractor/suites/list-views/empty-list.test.ts
+++ /dev/null
@@ -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 .
- */
-
-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');
- });
-});
diff --git a/projects/aca-playwright-shared/src/page-objects/components/pagination.component.ts b/projects/aca-playwright-shared/src/page-objects/components/pagination.component.ts
index ff5867290..3b8632dde 100644
--- a/projects/aca-playwright-shared/src/page-objects/components/pagination.component.ts
+++ b/projects/aca-playwright-shared/src/page-objects/components/pagination.component.ts
@@ -174,4 +174,20 @@ export class PaginationComponent extends BaseComponent {
async isMaxItemsPresent(): Promise {
return this.maxItems.isVisible();
}
+
+ async isCurrentPagePresent(): Promise {
+ return this.currentPage.isVisible();
+ }
+
+ async isTotalPagesPresent(): Promise {
+ return this.totalPages.isVisible();
+ }
+
+ async isPreviousButtonPresent(): Promise {
+ return this.previousButton.isVisible();
+ }
+
+ async isNextButtonPresent(): Promise {
+ return this.nextButton.isVisible();
+ }
}