From 653be8bbcd92cd5b4e9a89d4f4e0ab9f6c49ee2d Mon Sep 17 00:00:00 2001 From: Adina Parpalita Date: Wed, 22 Jan 2020 07:46:57 +0200 Subject: [PATCH] refactor pagination e2e (#1312) * wrap test suites in functions * better naming and small improvements * higher suite that calls the wrapped test functions --- e2e/suites/pagination/favorites.ts | 131 ++++++++++++++ .../pagination/multiple-pages-files.test.ts | 94 ++++++++++ ...st.ts => multiple-pages-libraries.test.ts} | 41 ++--- ...h.test.ts => multiple-pages-trash.test.ts} | 40 ++--- e2e/suites/pagination/pag-favorites.test.ts | 162 ------------------ .../pagination/pag-personal-files.test.ts | 160 ----------------- .../pagination/pag-recent-files.test.ts | 159 ----------------- .../pagination/pag-search-results.test.ts | 158 ----------------- .../pagination/pag-shared-files.test.ts | 162 ------------------ e2e/suites/pagination/personal-files.ts | 134 +++++++++++++++ e2e/suites/pagination/recent-files.ts | 132 ++++++++++++++ e2e/suites/pagination/search-results.ts | 132 ++++++++++++++ e2e/suites/pagination/shared-files.ts | 132 ++++++++++++++ ...ingle-page.test.ts => single-page.test.ts} | 73 ++++---- .../repo-client/apis/sites/sites-api.ts | 6 +- 15 files changed, 832 insertions(+), 884 deletions(-) create mode 100755 e2e/suites/pagination/favorites.ts create mode 100644 e2e/suites/pagination/multiple-pages-files.test.ts rename e2e/suites/pagination/{pag-file-libraries.test.ts => multiple-pages-libraries.test.ts} (93%) rename e2e/suites/pagination/{pag-trash.test.ts => multiple-pages-trash.test.ts} (88%) delete mode 100755 e2e/suites/pagination/pag-favorites.test.ts delete mode 100755 e2e/suites/pagination/pag-personal-files.test.ts delete mode 100755 e2e/suites/pagination/pag-recent-files.test.ts delete mode 100755 e2e/suites/pagination/pag-search-results.test.ts delete mode 100755 e2e/suites/pagination/pag-shared-files.test.ts create mode 100755 e2e/suites/pagination/personal-files.ts create mode 100755 e2e/suites/pagination/recent-files.ts create mode 100755 e2e/suites/pagination/search-results.ts create mode 100755 e2e/suites/pagination/shared-files.ts rename e2e/suites/pagination/{pag-single-page.test.ts => single-page.test.ts} (69%) diff --git a/e2e/suites/pagination/favorites.ts b/e2e/suites/pagination/favorites.ts new file mode 100755 index 000000000..1b7f282ac --- /dev/null +++ b/e2e/suites/pagination/favorites.ts @@ -0,0 +1,131 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2020 Alfresco Software Limited + * + * 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 + * along with Alfresco. If not, see . + */ + +import { BrowsingPage } from '../../pages/pages'; +import { Utils } from '../../utilities/utils'; + +export function favoritesTests() { + const page = new BrowsingPage(); + const { dataTable, pagination } = page; + + describe('Pagination controls : ', () => { + + beforeAll(async () => { + await page.clickFavoritesAndWait(); + }); + + afterEach(async () => { + await Utils.pressEscape(); + }); + + it('Pagination control default values - [C280113]', async () => { + expect(await pagination.getRange()).toContain('1-25 of 101'); + expect(await pagination.getMaxItems()).toContain('25'); + expect(await pagination.getCurrentPage()).toContain('Page 1'); + expect(await pagination.getTotalPages()).toContain('of 5'); + expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled'); + expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); + }); + + it('Items per page values - [C280114]', async () => { + await pagination.openMaxItemsMenu(); + expect(await pagination.menu.getNthItem(1).getText()).toBe('25'); + expect(await pagination.menu.getNthItem(2).getText()).toBe('50'); + expect(await pagination.menu.getNthItem(3).getText()).toBe('100'); + await pagination.menu.closeMenu(); + }); + + it('current page menu items - [C280115]', async () => { + await pagination.openMaxItemsMenu() + await pagination.menu.clickMenuItem('25'); + expect(await pagination.getMaxItems()).toContain('25'); + expect(await pagination.getTotalPages()).toContain('of 5'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(5); + await pagination.menu.closeMenu(); + + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('50'); + expect(await pagination.getMaxItems()).toContain('50'); + expect(await pagination.getTotalPages()).toContain('of 3'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(3); + await pagination.menu.closeMenu(); + + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('100'); + expect(await pagination.getMaxItems()).toContain('100'); + expect(await pagination.getTotalPages()).toContain('of 2'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(2); + await pagination.menu.closeMenu(); + + await pagination.resetToDefaultPageSize(); + }); + + it('change the current page from menu - [C280116]', async () => { + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(3); + expect(await pagination.getRange()).toContain('51-75 of 101'); + expect(await pagination.getCurrentPage()).toContain('Page 3'); + expect(await pagination.isPreviousEnabled()).toBe(true, 'Previous button is not enabled'); + expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); + expect(await dataTable.isItemPresent('my-file-40')).toBe(true, 'File not found on page'); + + await pagination.resetToDefaultPageNumber(); + }); + + it('navigate to next and previous pages - [C280119]', async () => { + await pagination.clickNext(); + await dataTable.waitForHeader(); + expect(await pagination.getRange()).toContain('26-50 of 101'); + expect(await dataTable.isItemPresent('my-file-70')).toBe(true, 'File not found on page'); + await pagination.resetToDefaultPageNumber(); + + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(2); + await dataTable.waitForHeader(); + await pagination.clickPrevious(); + await dataTable.waitForHeader(); + expect(await pagination.getRange()).toContain('1-25 of 101'); + expect(await dataTable.isItemPresent('my-file-88')).toBe(true, 'File not found on page'); + + await pagination.resetToDefaultPageNumber(); + }); + + it('Previous button is disabled on first page - [C280117]', async () => { + expect(await pagination.getCurrentPage()).toContain('Page 1'); + expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled on first page'); + }); + + it('Next button is disabled on last page - [C280118]', async () => { + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(5); + expect(await dataTable.getRowsCount()).toBe(1, 'Incorrect number of items on the last page'); + expect(await pagination.getCurrentPage()).toContain('Page 5'); + expect(await pagination.isNextEnabled()).toBe(false, 'Next button is enabled on last page'); + }); + }); +} diff --git a/e2e/suites/pagination/multiple-pages-files.test.ts b/e2e/suites/pagination/multiple-pages-files.test.ts new file mode 100644 index 000000000..37f40a402 --- /dev/null +++ b/e2e/suites/pagination/multiple-pages-files.test.ts @@ -0,0 +1,94 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2020 Alfresco Software Limited + * + * 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 + * along with Alfresco. If not, see . + */ + +import { LoginPage } from '../../pages/pages'; +import { Utils } from '../../utilities/utils'; +import { AdminActions } from '../../utilities/admin-actions'; +import { RepoClient } from '../../utilities/repo-client/repo-client'; +import { personalFilesTests } from './personal-files'; +import { recentFilesTests } from './recent-files'; +import { searchResultsTests } from './search-results'; +import { sharedFilesTests } from './shared-files'; +import { favoritesTests } from './favorites'; + +describe('Pagination on multiple pages : ', () => { + const random = Utils.random(); + const username = `user-${random}`; + + const parent = `parent-${random}`; + let parentId: string; + + const files = Array(101) + .fill('my-file') + .map((name, index): string => `${name}-${index + 1}-${random}.txt`); + let filesIds: string[]; + + const userApi = new RepoClient(username, username); + const adminApiActions = new AdminActions(); + + const loginPage = new LoginPage(); + + beforeAll(async () => { + await adminApiActions.createUser({ username }); + parentId = (await userApi.nodes.createFolder(parent)).entry.id; + filesIds = (await userApi.nodes.createFiles(files, parent)).list.entries.map(entries => entries.entry.id); + + await userApi.shared.shareFilesByIds(filesIds); + await userApi.favorites.addFavoritesByIds('file', filesIds); + + await Promise.all([ + userApi.favorites.waitForApi({ expect: 101 }), + userApi.shared.waitForApi({ expect: 101 }), + userApi.search.waitForApi(username, { expect: 101 }), + ]); + + await loginPage.loginWith(username); + }); + + afterAll(async () => { + await userApi.nodes.deleteNodeById(parentId); + }); + + describe('on Personal Files', () => { + personalFilesTests(parent); + }); + + describe('on Recent Files', () => { + recentFilesTests(); + }); + + describe('on Search Results', () => { + searchResultsTests(); + }); + + describe('on Shared Files', () => { + sharedFilesTests(); + }); + + describe('on Favorites', () => { + favoritesTests(); + }); + +}); diff --git a/e2e/suites/pagination/pag-file-libraries.test.ts b/e2e/suites/pagination/multiple-pages-libraries.test.ts similarity index 93% rename from e2e/suites/pagination/pag-file-libraries.test.ts rename to e2e/suites/pagination/multiple-pages-libraries.test.ts index 076f5015d..dd601b5ea 100755 --- a/e2e/suites/pagination/pag-file-libraries.test.ts +++ b/e2e/suites/pagination/multiple-pages-libraries.test.ts @@ -23,48 +23,45 @@ * along with Alfresco. If not, see . */ -import { SITE_VISIBILITY } from '../../configs'; import { LoginPage, BrowsingPage } from '../../pages/pages'; import { Utils } from '../../utilities/utils'; +import { AdminActions } from '../../utilities/admin-actions'; import { RepoClient } from '../../utilities/repo-client/repo-client'; describe('Pagination on multiple pages', () => { - const username = `user-${Utils.random()}`; + const random = Utils.random(); + + const username = `user-${random}`; + + const userApi = new RepoClient(username, username); + const adminApiActions = new AdminActions(); - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; const loginPage = new LoginPage(); const page = new BrowsingPage(); const { dataTable, pagination } = page; const sites = Array(101) .fill('site') - .map((name, index): string => `${name}-${index + 1}-${Utils.random()}`); + .map((name, index): string => `${name}-${index + 1}-${random}`); - beforeAll(async (done) => { - await apis.admin.people.createUser({ username }); - await apis.user.sites.createSites(sites, SITE_VISIBILITY.PRIVATE); - await apis.user.sites.waitForApi({ expect: 101 }); + beforeAll(async () => { + await adminApiActions.createUser({ username }); + await userApi.sites.createSitesPrivate(sites); + await userApi.sites.waitForApi({ expect: 101 }); await loginPage.loginWith(username); - done(); }); - afterAll(async (done) => { - await apis.user.sites.deleteSites(sites); - done(); + afterAll(async () => { + await userApi.sites.deleteSites(sites); }) describe('on My Libraries', () => { - beforeEach(async (done) => { + beforeAll(async () => { await page.goToMyLibrariesAndWait(); - done(); }); - afterEach(async (done) => { + afterEach(async () => { await Utils.pressEscape(); - done(); }); it('Pagination control default values - [C280086]', async () => { @@ -158,14 +155,12 @@ describe('Pagination on multiple pages', () => { }); describe('on Favorite Libraries', () => { - beforeEach(async (done) => { + beforeAll(async () => { await page.goToFavoriteLibrariesAndWait(); - done(); }); - afterEach(async (done) => { + afterEach(async () => { await Utils.pressEscape(); - done(); }); it('Pagination control default values - [C291875]', async () => { diff --git a/e2e/suites/pagination/pag-trash.test.ts b/e2e/suites/pagination/multiple-pages-trash.test.ts similarity index 88% rename from e2e/suites/pagination/pag-trash.test.ts rename to e2e/suites/pagination/multiple-pages-trash.test.ts index b2397f44a..f8c9c03aa 100755 --- a/e2e/suites/pagination/pag-trash.test.ts +++ b/e2e/suites/pagination/multiple-pages-trash.test.ts @@ -25,46 +25,42 @@ import { LoginPage, BrowsingPage } from '../../pages/pages'; import { Utils } from '../../utilities/utils'; +import { AdminActions } from '../../utilities/admin-actions'; import { RepoClient } from '../../utilities/repo-client/repo-client'; describe('Pagination on multiple pages on Trash', () => { - const username = `user-${Utils.random()}`; + const random = Utils.random(); + + const username = `user-${random}`; const filesForDelete = Array(101) .fill('file') - .map((name, index): string => `${name}-${index + 1}.txt`); - let filesDeletedIds; + .map((name, index): string => `${name}-${index + 1}-${random}.txt`); + let filesDeletedIds: string[]; - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; + const userApi = new RepoClient(username, username); + const adminApiActions = new AdminActions(); const loginPage = new LoginPage(); const page = new BrowsingPage(); const { dataTable, pagination } = page; - beforeAll(async (done) => { - await apis.admin.people.createUser({ username }); - filesDeletedIds = (await apis.user.nodes.createFiles(filesForDelete)).list.entries.map(entries => entries.entry.id); - await apis.user.nodes.deleteNodesById(filesDeletedIds, false); - await apis.user.trashcan.waitForApi({expect: 101}); + beforeAll(async () => { + await adminApiActions.createUser({ username }); + filesDeletedIds = (await userApi.nodes.createFiles(filesForDelete)).list.entries.map(entries => entries.entry.id); + + await userApi.nodes.deleteNodesById(filesDeletedIds, false); + await userApi.trashcan.waitForApi({expect: 101}); + await loginPage.loginWith(username); - done(); - }); - - beforeEach(async (done) => { await page.clickTrashAndWait(); - done(); }); - afterEach(async (done) => { + afterEach(async () => { await Utils.pressEscape(); - done(); }); - afterAll(async (done) => { - await apis.user.trashcan.emptyTrash(); - done(); + afterAll(async () => { + await userApi.trashcan.emptyTrash(); }); it('Pagination control default values - [C280122]', async () => { diff --git a/e2e/suites/pagination/pag-favorites.test.ts b/e2e/suites/pagination/pag-favorites.test.ts deleted file mode 100755 index 3abcf1cf9..000000000 --- a/e2e/suites/pagination/pag-favorites.test.ts +++ /dev/null @@ -1,162 +0,0 @@ -/*! - * @license - * Alfresco Example Content Application - * - * Copyright (C) 2005 - 2020 Alfresco Software Limited - * - * 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 - * along with Alfresco. If not, see . - */ - -import { LoginPage, BrowsingPage } from '../../pages/pages'; -import { Utils } from '../../utilities/utils'; -import { RepoClient } from '../../utilities/repo-client/repo-client'; - -describe('Pagination on multiple pages on Favorites', () => { - const username = `user-${Utils.random()}`; - - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; - - const parent = `parent-${Utils.random()}`; let parentId; - - const files = Array(101) - .fill('file') - .map((name, index): string => `${name}-${index + 1}-${Utils.random()}.txt`); - let filesIds; - - const loginPage = new LoginPage(); - const page = new BrowsingPage(); - const { dataTable, pagination } = page; - - beforeAll(async (done) => { - await apis.admin.people.createUser({ username }); - parentId = (await apis.user.nodes.createFolder(parent)).entry.id; - filesIds = (await apis.user.nodes.createFiles(files, parent)).list.entries.map(entries => entries.entry.id); - await apis.user.favorites.addFavoritesByIds('file', filesIds); - await apis.user.favorites.waitForApi({ expect: 101 }); - await loginPage.loginWith(username); - done(); - }); - - beforeEach(async (done) => { - await page.clickFavoritesAndWait(); - done(); - }); - - afterEach(async (done) => { - await Utils.pressEscape(); - done(); - }); - - afterAll(async (done) => { - await apis.user.nodes.deleteNodeById(parentId); - await apis.user.favorites.waitForApi({ expect: 0 }); - done(); - }); - - it('Pagination control default values - [C280113]', async () => { - expect(await pagination.getRange()).toContain('1-25 of 101'); - expect(await pagination.getMaxItems()).toContain('25'); - expect(await pagination.getCurrentPage()).toContain('Page 1'); - expect(await pagination.getTotalPages()).toContain('of 5'); - expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled'); - expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); - }); - - it('Items per page values - [C280114]', async () => { - await pagination.openMaxItemsMenu(); - expect(await pagination.menu.getNthItem(1).getText()).toBe('25'); - expect(await pagination.menu.getNthItem(2).getText()).toBe('50'); - expect(await pagination.menu.getNthItem(3).getText()).toBe('100'); - await pagination.menu.closeMenu(); - }); - - it('current page menu items - [C280115]', async () => { - await pagination.openMaxItemsMenu() - await pagination.menu.clickMenuItem('25'); - expect(await pagination.getMaxItems()).toContain('25'); - expect(await pagination.getTotalPages()).toContain('of 5'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(5); - await pagination.menu.closeMenu(); - - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('50'); - expect(await pagination.getMaxItems()).toContain('50'); - expect(await pagination.getTotalPages()).toContain('of 3'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(3); - await pagination.menu.closeMenu(); - - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('100'); - expect(await pagination.getMaxItems()).toContain('100'); - expect(await pagination.getTotalPages()).toContain('of 2'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(2); - await pagination.menu.closeMenu(); - - await pagination.resetToDefaultPageSize(); - }); - - it('change the current page from menu - [C280116]', async () => { - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(3); - expect(await pagination.getRange()).toContain('51-75 of 101'); - expect(await pagination.getCurrentPage()).toContain('Page 3'); - expect(await pagination.isPreviousEnabled()).toBe(true, 'Previous button is not enabled'); - expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); - expect(await dataTable.isItemPresent('file-40')).toBe(true, 'File not found on page'); - - await pagination.resetToDefaultPageNumber(); - }); - - it('navigate to next and previous pages - [C280119]', async () => { - await pagination.clickNext(); - await dataTable.waitForHeader(); - expect(await pagination.getRange()).toContain('26-50 of 101'); - expect(await dataTable.isItemPresent('file-70')).toBe(true, 'File not found on page'); - await pagination.resetToDefaultPageNumber(); - - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(2); - await dataTable.waitForHeader(); - await pagination.clickPrevious(); - await dataTable.waitForHeader(); - expect(await pagination.getRange()).toContain('1-25 of 101'); - expect(await dataTable.isItemPresent('file-88')).toBe(true, 'File not found on page'); - - await pagination.resetToDefaultPageNumber(); - }); - - it('Previous button is disabled on first page - [C280117]', async () => { - expect(await pagination.getCurrentPage()).toContain('Page 1'); - expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled on first page'); - }); - - it('Next button is disabled on last page - [C280118]', async () => { - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(5); - expect(await dataTable.getRowsCount()).toBe(1, 'Incorrect number of items on the last page'); - expect(await pagination.getCurrentPage()).toContain('Page 5'); - expect(await pagination.isNextEnabled()).toBe(false, 'Next button is enabled on last page'); - }); -}); diff --git a/e2e/suites/pagination/pag-personal-files.test.ts b/e2e/suites/pagination/pag-personal-files.test.ts deleted file mode 100755 index 3b86f3463..000000000 --- a/e2e/suites/pagination/pag-personal-files.test.ts +++ /dev/null @@ -1,160 +0,0 @@ -/*! - * @license - * Alfresco Example Content Application - * - * Copyright (C) 2005 - 2020 Alfresco Software Limited - * - * 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 - * along with Alfresco. If not, see . - */ - -import { LoginPage, BrowsingPage } from '../../pages/pages'; -import { Utils } from '../../utilities/utils'; -import { RepoClient } from '../../utilities/repo-client/repo-client'; - -describe('Pagination on multiple pages on Personal Files', () => { - const username = `user-${Utils.random()}`; - - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; - - const parent = `parent-${Utils.random()}`; let parentId; - const files = Array(101) - .fill('file') - .map((name, index): string => `${name}-${index + 1}.txt`); - - const loginPage = new LoginPage(); - const page = new BrowsingPage(); - const { dataTable, pagination } = page; - - beforeAll(async (done) => { - await apis.admin.people.createUser({ username }); - parentId = (await apis.user.nodes.createFolder(parent)).entry.id; - await apis.user.nodes.createFiles(files, parent); - await loginPage.loginWith(username); - done(); - }); - - beforeEach(async (done) => { - await page.clickPersonalFilesAndWait(); - await dataTable.doubleClickOnRowByName(parent); - await dataTable.waitForHeader(); - done(); - }); - - afterEach(async (done) => { - await Utils.pressEscape(); - done(); - }); - - afterAll(async (done) => { - await apis.user.nodes.deleteNodeById(parentId); - done(); - }); - - it('Pagination control default values - [C280077]', async () => { - expect(await pagination.getRange()).toContain('1-25 of 101'); - expect(await pagination.getMaxItems()).toContain('25'); - expect(await pagination.getCurrentPage()).toContain('Page 1'); - expect(await pagination.getTotalPages()).toContain('of 5'); - expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled'); - expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); - }); - - it('Items per page values - [C280078]', async () => { - await pagination.openMaxItemsMenu(); - expect(await pagination.menu.getNthItem(1).getText()).toBe('25'); - expect(await pagination.menu.getNthItem(2).getText()).toBe('50'); - expect(await pagination.menu.getNthItem(3).getText()).toBe('100'); - await pagination.menu.closeMenu(); - }); - - it('current page menu items - [C280079]', async () => { - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('25'); - expect(await pagination.getMaxItems()).toContain('25'); - expect(await pagination.getTotalPages()).toContain('of 5'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(5); - await pagination.menu.closeMenu(); - - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('50'); - expect(await pagination.getMaxItems()).toContain('50'); - expect(await pagination.getTotalPages()).toContain('of 3'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(3); - await pagination.menu.closeMenu(); - - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('100'); - expect(await pagination.getMaxItems()).toContain('100'); - expect(await pagination.getTotalPages()).toContain('of 2'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(2); - await pagination.menu.closeMenu(); - - await pagination.resetToDefaultPageSize(); - }); - - it('change the current page from menu - [C280080]', async () => { - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(3); - await dataTable.waitForHeader(); - expect(await pagination.getRange()).toContain('51-75 of 101'); - expect(await pagination.getCurrentPage()).toContain('Page 3'); - expect(await pagination.isPreviousEnabled()).toBe(true, 'Previous button is not enabled'); - expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); - expect(await dataTable.isItemPresent('file-60')).toBe(true, 'File not found on page'); - - await pagination.resetToDefaultPageNumber(); - }); - - it('navigate to next and previous pages - [C280083]', async () => { - await pagination.clickNext(); - await dataTable.waitForHeader(); - expect(await pagination.getRange()).toContain('26-50 of 101'); - expect(await dataTable.isItemPresent('file-31')).toBe(true, 'file-31 not found on page'); - await pagination.resetToDefaultPageNumber(); - - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(2); - await dataTable.waitForHeader(); - await pagination.clickPrevious(); - await dataTable.waitForHeader(); - expect(await pagination.getRange()).toContain('1-25 of 101'); - expect(await dataTable.isItemPresent('file-12')).toBe(true, 'file-12 not found on page'); - - await pagination.resetToDefaultPageNumber(); - }); - - it('Previous button is disabled on first page - [C280081]', async () => { - expect(await pagination.getCurrentPage()).toContain('Page 1'); - expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled on first page'); - }); - - it('Next button is disabled on last page - [C280082]', async () => { - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(5); - expect(await dataTable.getRowsCount()).toBe(1, 'Incorrect number of items on the last page'); - expect(await pagination.getCurrentPage()).toContain('Page 5'); - expect(await pagination.isNextEnabled()).toBe(false, 'Next button is enabled on last page'); - }); -}); diff --git a/e2e/suites/pagination/pag-recent-files.test.ts b/e2e/suites/pagination/pag-recent-files.test.ts deleted file mode 100755 index a8b4f7bb4..000000000 --- a/e2e/suites/pagination/pag-recent-files.test.ts +++ /dev/null @@ -1,159 +0,0 @@ -/*! - * @license - * Alfresco Example Content Application - * - * Copyright (C) 2005 - 2020 Alfresco Software Limited - * - * 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 - * along with Alfresco. If not, see . - */ - -import { LoginPage, BrowsingPage } from '../../pages/pages'; -import { Utils } from '../../utilities/utils'; -import { RepoClient } from '../../utilities/repo-client/repo-client'; - -describe('Pagination on multiple pages on Recent Files', () => { - const username = `user-${Utils.random()}`; - - const parent = `parent-${Utils.random()}`; let parentId; - const files = Array(101) - .fill('file') - .map((name, index): string => `${name}-${index + 1}.txt`); - - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; - - const loginPage = new LoginPage(); - const page = new BrowsingPage(); - const { dataTable, pagination } = page; - - beforeAll(async (done) => { - await apis.admin.people.createUser({ username }); - parentId = (await apis.user.nodes.createFolder(parent)).entry.id; - await apis.user.nodes.createFiles(files, parent); - await apis.user.search.waitForApi(username, { expect: 101 }); - await loginPage.loginWith(username); - done(); - }); - - beforeEach(async (done) => { - await page.clickRecentFilesAndWait(); - done(); - }); - - afterEach(async (done) => { - await Utils.pressEscape(); - done(); - }); - - afterAll(async (done) => { - await apis.user.nodes.deleteNodeById(parentId); - done(); - }); - - it('Pagination control default values - [C280104]', async () => { - expect(await pagination.getRange()).toContain('1-25 of 101'); - expect(await pagination.getMaxItems()).toContain('25'); - expect(await pagination.getCurrentPage()).toContain('Page 1'); - expect(await pagination.getTotalPages()).toContain('of 5'); - expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled'); - expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); - }); - - it('Items per page values - [C280105]', async () => { - await pagination.openMaxItemsMenu(); - expect(await pagination.menu.getNthItem(1).getText()).toBe('25'); - expect(await pagination.menu.getNthItem(2).getText()).toBe('50'); - expect(await pagination.menu.getNthItem(3).getText()).toBe('100'); - await pagination.menu.closeMenu(); - }); - - it('current page menu items - [C280106]', async () => { - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('25'); - expect(await pagination.getMaxItems()).toContain('25'); - expect(await pagination.getTotalPages()).toContain('of 5'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(5); - await pagination.menu.closeMenu(); - - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('50'); - expect(await pagination.getMaxItems()).toContain('50'); - expect(await pagination.getTotalPages()).toContain('of 3'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(3); - await pagination.menu.closeMenu(); - - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('100'); - expect(await pagination.getMaxItems()).toContain('100'); - expect(await pagination.getTotalPages()).toContain('of 2'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(2); - await pagination.menu.closeMenu(); - - await pagination.resetToDefaultPageSize(); - }); - - it('change the current page from menu - [C280107]', async () => { - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(3); - await dataTable.waitForHeader(); - expect(await pagination.getRange()).toContain('51-75 of 101'); - expect(await pagination.getCurrentPage()).toContain('Page 3'); - expect(await pagination.isPreviousEnabled()).toBe(true, 'Previous button is not enabled'); - expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); - expect(await dataTable.isItemPresent('file-40')).toBe(true, 'File not found on page'); - - await pagination.resetToDefaultPageNumber(); - }); - - it('navigate to next and previous pages - [C280110]', async () => { - await pagination.clickNext(); - await dataTable.waitForHeader(); - expect(await pagination.getRange()).toContain('26-50 of 101'); - expect(await dataTable.isItemPresent('file-70')).toBe(true, 'File not found on page'); - await pagination.resetToDefaultPageNumber(); - - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(2); - await dataTable.waitForHeader(); - await pagination.clickPrevious(); - await dataTable.waitForHeader(); - expect(await pagination.getRange()).toContain('1-25 of 101'); - expect(await dataTable.isItemPresent('file-88')).toBe(true, 'File not found on page'); - - await pagination.resetToDefaultPageNumber(); - }); - - it('Previous button is disabled on first page - [C280108]', async () => { - expect(await pagination.getCurrentPage()).toContain('Page 1'); - expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled on first page'); - }); - - it('Next button is disabled on last page - [C280109]', async () => { - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(5); - expect(await dataTable.getRowsCount()).toBe(1, 'Incorrect number of items on the last page'); - expect(await pagination.getCurrentPage()).toContain('Page 5'); - expect(await pagination.isNextEnabled()).toBe(false, 'Next button is enabled on last page'); - }); -}); diff --git a/e2e/suites/pagination/pag-search-results.test.ts b/e2e/suites/pagination/pag-search-results.test.ts deleted file mode 100755 index b31da6da2..000000000 --- a/e2e/suites/pagination/pag-search-results.test.ts +++ /dev/null @@ -1,158 +0,0 @@ -/*! - * @license - * Alfresco Example Content Application - * - * Copyright (C) 2005 - 2020 Alfresco Software Limited - * - * 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 - * along with Alfresco. If not, see . - */ - -import { LoginPage, BrowsingPage } from '../../pages/pages'; -import { Utils } from '../../utilities/utils'; -import { RepoClient } from '../../utilities/repo-client/repo-client'; - -describe('Pagination on multiple pages on Search Results', () => { - const username = `user-${Utils.random()}`; - - const parent = `parent-${Utils.random()}`; let parentId; - const files = Array(101) - .fill('myFile') - .map((name, index): string => `${name}-${index + 1}.txt`); - - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; - - const loginPage = new LoginPage(); - const page = new BrowsingPage(); - const { dataTable, pagination } = page; - const { searchInput } = page.header; - - beforeAll(async (done) => { - await apis.admin.people.createUser({ username }); - parentId = (await apis.user.nodes.createFolder(parent)).entry.id; - await apis.user.nodes.createFiles(files, parent); - await apis.user.search.waitForApi(username, { expect: 101 }); - await loginPage.loginWith(username); - - await searchInput.clickSearchButton(); - await searchInput.checkOnlyFiles(); - await searchInput.searchFor('myFile-'); - await dataTable.waitForBody(); - - done(); - }); - - afterEach(async (done) => { - await Utils.pressEscape(); - done(); - }); - - afterAll(async (done) => { - await apis.user.nodes.deleteNodeById(parentId); - done(); - }); - - it('Pagination control default values - [C290125]', async () => { - expect(await pagination.getRange()).toContain('1-25 of 101'); - expect(await pagination.getMaxItems()).toContain('25'); - expect(await pagination.getCurrentPage()).toContain('Page 1'); - expect(await pagination.getTotalPages()).toContain('of 5'); - expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled'); - expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); - }); - - it('Items per page values - [C290126]', async () => { - await pagination.openMaxItemsMenu(); - expect(await pagination.menu.getNthItem(1).getText()).toBe('25'); - expect(await pagination.menu.getNthItem(2).getText()).toBe('50'); - expect(await pagination.menu.getNthItem(3).getText()).toBe('100'); - await pagination.menu.closeMenu(); - }); - - it('current page menu items - [C290127]', async () => { - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('25'); - expect(await pagination.getMaxItems()).toContain('25'); - expect(await pagination.getTotalPages()).toContain('of 5'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(5); - await pagination.menu.closeMenu(); - - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('50'); - expect(await pagination.getMaxItems()).toContain('50'); - expect(await pagination.getTotalPages()).toContain('of 3'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(3); - await pagination.menu.closeMenu(); - - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('100'); - expect(await pagination.getMaxItems()).toContain('100'); - expect(await pagination.getTotalPages()).toContain('of 2'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(2); - await pagination.menu.closeMenu(); - - await pagination.resetToDefaultPageSize(); - }); - - it('change the current page from menu - [C290128]', async () => { - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(3); - await dataTable.waitForBody(); - expect(await pagination.getRange()).toContain('51-75 of 101'); - expect(await pagination.getCurrentPage()).toContain('Page 3'); - expect(await pagination.isPreviousEnabled()).toBe(true, 'Previous button is not enabled'); - expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); - - await pagination.resetToDefaultPageNumber(); - }); - - it('navigate to next and previous pages - [C290131]', async () => { - await pagination.clickNext(); - await dataTable.waitForBody(); - expect(await pagination.getRange()).toContain('26-50 of 101'); - await pagination.resetToDefaultPageNumber(); - - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(2); - await dataTable.waitForBody(); - await pagination.clickPrevious(); - await dataTable.waitForBody(); - expect(await pagination.getRange()).toContain('1-25 of 101'); - - await pagination.resetToDefaultPageNumber(); - }); - - it('Previous button is disabled on first page - [C290129]', async () => { - expect(await pagination.getCurrentPage()).toContain('Page 1'); - expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled on first page'); - }); - - it('Next button is disabled on last page - [C290130]', async () => { - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(5); - expect(await dataTable.getRowsCount()).toBe(1, 'Incorrect number of items on the last page'); - expect(await pagination.getCurrentPage()).toContain('Page 5'); - expect(await pagination.isNextEnabled()).toBe(false, 'Next button is enabled on last page'); - }); -}); diff --git a/e2e/suites/pagination/pag-shared-files.test.ts b/e2e/suites/pagination/pag-shared-files.test.ts deleted file mode 100755 index 58492566a..000000000 --- a/e2e/suites/pagination/pag-shared-files.test.ts +++ /dev/null @@ -1,162 +0,0 @@ -/*! - * @license - * Alfresco Example Content Application - * - * Copyright (C) 2005 - 2020 Alfresco Software Limited - * - * 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 - * along with Alfresco. If not, see . - */ - -import { LoginPage, BrowsingPage } from '../../pages/pages'; -import { Utils } from '../../utilities/utils'; -import { RepoClient } from '../../utilities/repo-client/repo-client'; - -describe('Pagination on multiple pages on Shared Files', () => { - const username = `user-${Utils.random()}`; - - const parent = `parent-${Utils.random()}`; let parentId; - const files = Array(101) - .fill('file') - .map((name, index): string => `${name}-${index + 1}.txt`); - let filesIds; - - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; - - const loginPage = new LoginPage(); - const page = new BrowsingPage(); - const { dataTable, pagination } = page; - - beforeAll(async (done) => { - await apis.admin.people.createUser({ username }); - parentId = (await apis.user.nodes.createFolder(parent)).entry.id; - filesIds = (await apis.user.nodes.createFiles(files, parent)).list.entries.map(entries => entries.entry.id); - - await apis.user.shared.shareFilesByIds(filesIds); - await apis.user.shared.waitForApi({ expect: 101 }); - await loginPage.loginWith(username); - done(); - }); - - beforeEach(async (done) => { - await page.clickSharedFilesAndWait(); - done(); - }); - - afterEach(async (done) => { - await Utils.pressEscape(); - done(); - }); - - afterAll(async (done) => { - await apis.user.nodes.deleteNodeById(parentId); - done(); - }); - - it('Pagination control default values - [C280095]', async () => { - expect(await pagination.getRange()).toContain('1-25 of 101'); - expect(await pagination.getMaxItems()).toContain('25'); - expect(await pagination.getCurrentPage()).toContain('Page 1'); - expect(await pagination.getTotalPages()).toContain('of 5'); - expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled'); - expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); - }); - - it('Items per page values - [C280096]', async () => { - await pagination.openMaxItemsMenu(); - expect(await pagination.menu.getNthItem(1).getText()).toBe('25'); - expect(await pagination.menu.getNthItem(2).getText()).toBe('50'); - expect(await pagination.menu.getNthItem(3).getText()).toBe('100'); - await pagination.menu.closeMenu(); - }); - - it('current page menu items - [C280097]', async () => { - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('25'); - expect(await pagination.getMaxItems()).toContain('25'); - expect(await pagination.getTotalPages()).toContain('of 5'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(5); - await pagination.menu.closeMenu(); - - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('50'); - expect(await pagination.getMaxItems()).toContain('50'); - expect(await pagination.getTotalPages()).toContain('of 3'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(3); - await pagination.menu.closeMenu(); - - await pagination.openMaxItemsMenu(); - await pagination.menu.clickMenuItem('100'); - expect(await pagination.getMaxItems()).toContain('100'); - expect(await pagination.getTotalPages()).toContain('of 2'); - await pagination.openCurrentPageMenu(); - expect(await pagination.menu.getItemsCount()).toBe(2); - await pagination.menu.closeMenu(); - - await pagination.resetToDefaultPageSize(); - }); - - it('change the current page from menu - [C280098]', async () => { - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(3); - await dataTable.waitForHeader(); - expect(await pagination.getRange()).toContain('51-75 of 101'); - expect(await pagination.getCurrentPage()).toContain('Page 3'); - expect(await pagination.isPreviousEnabled()).toBe(true, 'Previous button is not enabled'); - expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); - expect(await dataTable.isItemPresent('file-40')).toBe(true, 'File not found on page'); - - await pagination.resetToDefaultPageNumber(); - }); - - it('navigate to next and previous pages - [C280101]', async () => { - await pagination.clickNext(); - await dataTable.waitForHeader(); - expect(await pagination.getRange()).toContain('26-50 of 101'); - expect(await dataTable.isItemPresent('file-70')).toBe(true, 'File not found on page'); - await pagination.resetToDefaultPageNumber(); - - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(2); - await dataTable.waitForHeader(); - await pagination.clickPrevious(); - await dataTable.waitForHeader(); - expect(await pagination.getRange()).toContain('1-25 of 101'); - expect(await dataTable.isItemPresent('file-88')).toBe(true, 'File not found on page'); - - await pagination.resetToDefaultPageNumber(); - }); - - it('Previous button is disabled on first page - [C280099]', async () => { - expect(await pagination.getCurrentPage()).toContain('Page 1'); - expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled on first page'); - }); - - it('Next button is disabled on last page - [C280100]', async () => { - await pagination.openCurrentPageMenu(); - await pagination.menu.clickNthItem(5); - expect(await dataTable.getRowsCount()).toBe(1, 'Incorrect number of items on the last page'); - expect(await pagination.getCurrentPage()).toContain('Page 5'); - expect(await pagination.isNextEnabled()).toBe(false, 'Next button is enabled on last page'); - }); -}); diff --git a/e2e/suites/pagination/personal-files.ts b/e2e/suites/pagination/personal-files.ts new file mode 100755 index 000000000..b36ee7727 --- /dev/null +++ b/e2e/suites/pagination/personal-files.ts @@ -0,0 +1,134 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2020 Alfresco Software Limited + * + * 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 + * along with Alfresco. If not, see . + */ + +import { BrowsingPage } from '../../pages/pages'; +import { Utils } from '../../utilities/utils'; + +export function personalFilesTests(parentName: string) { + const page = new BrowsingPage(); + const { dataTable, pagination } = page; + + describe('Pagination controls : ', () => { + + beforeAll(async () => { + await page.clickPersonalFilesAndWait(); + await dataTable.doubleClickOnRowByName(parentName); + await dataTable.waitForHeader(); + }); + + afterEach(async () => { + await Utils.pressEscape(); + }); + + it('Pagination control default values - [C280077]', async () => { + expect(await pagination.getRange()).toContain('1-25 of 101'); + expect(await pagination.getMaxItems()).toContain('25'); + expect(await pagination.getCurrentPage()).toContain('Page 1'); + expect(await pagination.getTotalPages()).toContain('of 5'); + expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled'); + expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); + }); + + it('Items per page values - [C280078]', async () => { + await pagination.openMaxItemsMenu(); + expect(await pagination.menu.getNthItem(1).getText()).toBe('25'); + expect(await pagination.menu.getNthItem(2).getText()).toBe('50'); + expect(await pagination.menu.getNthItem(3).getText()).toBe('100'); + await pagination.menu.closeMenu(); + }); + + it('current page menu items - [C280079]', async () => { + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('25'); + expect(await pagination.getMaxItems()).toContain('25'); + expect(await pagination.getTotalPages()).toContain('of 5'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(5); + await pagination.menu.closeMenu(); + + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('50'); + expect(await pagination.getMaxItems()).toContain('50'); + expect(await pagination.getTotalPages()).toContain('of 3'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(3); + await pagination.menu.closeMenu(); + + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('100'); + expect(await pagination.getMaxItems()).toContain('100'); + expect(await pagination.getTotalPages()).toContain('of 2'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(2); + await pagination.menu.closeMenu(); + + await pagination.resetToDefaultPageSize(); + }); + + it('change the current page from menu - [C280080]', async () => { + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(3); + await dataTable.waitForHeader(); + expect(await pagination.getRange()).toContain('51-75 of 101'); + expect(await pagination.getCurrentPage()).toContain('Page 3'); + expect(await pagination.isPreviousEnabled()).toBe(true, 'Previous button is not enabled'); + expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); + expect(await dataTable.isItemPresent('my-file-60')).toBe(true, 'File not found on page'); + + await pagination.resetToDefaultPageNumber(); + }); + + it('navigate to next and previous pages - [C280083]', async () => { + await pagination.clickNext(); + await dataTable.waitForHeader(); + expect(await pagination.getRange()).toContain('26-50 of 101'); + expect(await dataTable.isItemPresent('my-file-31')).toBe(true, 'file-31 not found on page'); + await pagination.resetToDefaultPageNumber(); + + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(2); + await dataTable.waitForHeader(); + await pagination.clickPrevious(); + await dataTable.waitForHeader(); + expect(await pagination.getRange()).toContain('1-25 of 101'); + expect(await dataTable.isItemPresent('my-file-12')).toBe(true, 'my-file-12 not found on page'); + + await pagination.resetToDefaultPageNumber(); + }); + + it('Previous button is disabled on first page - [C280081]', async () => { + expect(await pagination.getCurrentPage()).toContain('Page 1'); + expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled on first page'); + }); + + it('Next button is disabled on last page - [C280082]', async () => { + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(5); + expect(await dataTable.getRowsCount()).toBe(1, 'Incorrect number of items on the last page'); + expect(await pagination.getCurrentPage()).toContain('Page 5'); + expect(await pagination.isNextEnabled()).toBe(false, 'Next button is enabled on last page'); + }); + }); +} diff --git a/e2e/suites/pagination/recent-files.ts b/e2e/suites/pagination/recent-files.ts new file mode 100755 index 000000000..866e46585 --- /dev/null +++ b/e2e/suites/pagination/recent-files.ts @@ -0,0 +1,132 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2020 Alfresco Software Limited + * + * 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 + * along with Alfresco. If not, see . + */ + +import { BrowsingPage } from '../../pages/pages'; +import { Utils } from '../../utilities/utils'; + +export function recentFilesTests() { + const page = new BrowsingPage(); + const { dataTable, pagination } = page; + + describe('Pagination controls : ', () => { + + beforeAll(async () => { + await page.clickRecentFilesAndWait(); + }); + + afterEach(async () => { + await Utils.pressEscape(); + }); + + it('Pagination control default values - [C280104]', async () => { + expect(await pagination.getRange()).toContain('1-25 of 101'); + expect(await pagination.getMaxItems()).toContain('25'); + expect(await pagination.getCurrentPage()).toContain('Page 1'); + expect(await pagination.getTotalPages()).toContain('of 5'); + expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled'); + expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); + }); + + it('Items per page values - [C280105]', async () => { + await pagination.openMaxItemsMenu(); + expect(await pagination.menu.getNthItem(1).getText()).toBe('25'); + expect(await pagination.menu.getNthItem(2).getText()).toBe('50'); + expect(await pagination.menu.getNthItem(3).getText()).toBe('100'); + await pagination.menu.closeMenu(); + }); + + it('current page menu items - [C280106]', async () => { + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('25'); + expect(await pagination.getMaxItems()).toContain('25'); + expect(await pagination.getTotalPages()).toContain('of 5'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(5); + await pagination.menu.closeMenu(); + + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('50'); + expect(await pagination.getMaxItems()).toContain('50'); + expect(await pagination.getTotalPages()).toContain('of 3'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(3); + await pagination.menu.closeMenu(); + + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('100'); + expect(await pagination.getMaxItems()).toContain('100'); + expect(await pagination.getTotalPages()).toContain('of 2'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(2); + await pagination.menu.closeMenu(); + + await pagination.resetToDefaultPageSize(); + }); + + it('change the current page from menu - [C280107]', async () => { + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(3); + await dataTable.waitForHeader(); + expect(await pagination.getRange()).toContain('51-75 of 101'); + expect(await pagination.getCurrentPage()).toContain('Page 3'); + expect(await pagination.isPreviousEnabled()).toBe(true, 'Previous button is not enabled'); + expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); + expect(await dataTable.isItemPresent('my-file-40')).toBe(true, 'File not found on page'); + + await pagination.resetToDefaultPageNumber(); + }); + + it('navigate to next and previous pages - [C280110]', async () => { + await pagination.clickNext(); + await dataTable.waitForHeader(); + expect(await pagination.getRange()).toContain('26-50 of 101'); + expect(await dataTable.isItemPresent('my-file-70')).toBe(true, 'File not found on page'); + await pagination.resetToDefaultPageNumber(); + + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(2); + await dataTable.waitForHeader(); + await pagination.clickPrevious(); + await dataTable.waitForHeader(); + expect(await pagination.getRange()).toContain('1-25 of 101'); + expect(await dataTable.isItemPresent('my-file-88')).toBe(true, 'File not found on page'); + + await pagination.resetToDefaultPageNumber(); + }); + + it('Previous button is disabled on first page - [C280108]', async () => { + expect(await pagination.getCurrentPage()).toContain('Page 1'); + expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled on first page'); + }); + + it('Next button is disabled on last page - [C280109]', async () => { + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(5); + expect(await dataTable.getRowsCount()).toBe(1, 'Incorrect number of items on the last page'); + expect(await pagination.getCurrentPage()).toContain('Page 5'); + expect(await pagination.isNextEnabled()).toBe(false, 'Next button is enabled on last page'); + }); + }); +} diff --git a/e2e/suites/pagination/search-results.ts b/e2e/suites/pagination/search-results.ts new file mode 100755 index 000000000..8ed3ef219 --- /dev/null +++ b/e2e/suites/pagination/search-results.ts @@ -0,0 +1,132 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2020 Alfresco Software Limited + * + * 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 + * along with Alfresco. If not, see . + */ + +import { BrowsingPage } from '../../pages/pages'; +import { Utils } from '../../utilities/utils'; + +export function searchResultsTests() { + const page = new BrowsingPage(); + const { dataTable, pagination } = page; + const { searchInput } = page.header; + + describe('Pagination controls : ', () => { + + beforeAll(async () => { + await searchInput.clickSearchButton(); + await searchInput.searchFor('my-file-'); + await dataTable.waitForBody(); + }); + + afterEach(async () => { + await Utils.pressEscape(); + }); + + it('Pagination control default values - [C290125]', async () => { + expect(await pagination.getRange()).toContain('1-25 of 101'); + expect(await pagination.getMaxItems()).toContain('25'); + expect(await pagination.getCurrentPage()).toContain('Page 1'); + expect(await pagination.getTotalPages()).toContain('of 5'); + expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled'); + expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); + }); + + it('Items per page values - [C290126]', async () => { + await pagination.openMaxItemsMenu(); + expect(await pagination.menu.getNthItem(1).getText()).toBe('25'); + expect(await pagination.menu.getNthItem(2).getText()).toBe('50'); + expect(await pagination.menu.getNthItem(3).getText()).toBe('100'); + await pagination.menu.closeMenu(); + }); + + it('current page menu items - [C290127]', async () => { + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('25'); + expect(await pagination.getMaxItems()).toContain('25'); + expect(await pagination.getTotalPages()).toContain('of 5'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(5); + await pagination.menu.closeMenu(); + + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('50'); + expect(await pagination.getMaxItems()).toContain('50'); + expect(await pagination.getTotalPages()).toContain('of 3'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(3); + await pagination.menu.closeMenu(); + + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('100'); + expect(await pagination.getMaxItems()).toContain('100'); + expect(await pagination.getTotalPages()).toContain('of 2'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(2); + await pagination.menu.closeMenu(); + + await pagination.resetToDefaultPageSize(); + }); + + it('change the current page from menu - [C290128]', async () => { + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(3); + await dataTable.waitForBody(); + expect(await pagination.getRange()).toContain('51-75 of 101'); + expect(await pagination.getCurrentPage()).toContain('Page 3'); + expect(await pagination.isPreviousEnabled()).toBe(true, 'Previous button is not enabled'); + expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); + + await pagination.resetToDefaultPageNumber(); + }); + + it('navigate to next and previous pages - [C290131]', async () => { + await pagination.clickNext(); + await dataTable.waitForBody(); + expect(await pagination.getRange()).toContain('26-50 of 101'); + await pagination.resetToDefaultPageNumber(); + + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(2); + await dataTable.waitForBody(); + await pagination.clickPrevious(); + await dataTable.waitForBody(); + expect(await pagination.getRange()).toContain('1-25 of 101'); + + await pagination.resetToDefaultPageNumber(); + }); + + it('Previous button is disabled on first page - [C290129]', async () => { + expect(await pagination.getCurrentPage()).toContain('Page 1'); + expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled on first page'); + }); + + it('Next button is disabled on last page - [C290130]', async () => { + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(5); + expect(await dataTable.getRowsCount()).toBe(1, 'Incorrect number of items on the last page'); + expect(await pagination.getCurrentPage()).toContain('Page 5'); + expect(await pagination.isNextEnabled()).toBe(false, 'Next button is enabled on last page'); + }); + }); +} diff --git a/e2e/suites/pagination/shared-files.ts b/e2e/suites/pagination/shared-files.ts new file mode 100755 index 000000000..c52ded324 --- /dev/null +++ b/e2e/suites/pagination/shared-files.ts @@ -0,0 +1,132 @@ +/*! + * @license + * Alfresco Example Content Application + * + * Copyright (C) 2005 - 2020 Alfresco Software Limited + * + * 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 + * along with Alfresco. If not, see . + */ + +import { BrowsingPage } from '../../pages/pages'; +import { Utils } from '../../utilities/utils'; + +export function sharedFilesTests() { + const page = new BrowsingPage(); + const { dataTable, pagination } = page; + + describe('Pagination controls : ', () => { + + beforeAll(async () => { + await page.clickSharedFilesAndWait(); + }); + + afterEach(async () => { + await Utils.pressEscape(); + }); + + it('Pagination control default values - [C280095]', async () => { + expect(await pagination.getRange()).toContain('1-25 of 101'); + expect(await pagination.getMaxItems()).toContain('25'); + expect(await pagination.getCurrentPage()).toContain('Page 1'); + expect(await pagination.getTotalPages()).toContain('of 5'); + expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled'); + expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); + }); + + it('Items per page values - [C280096]', async () => { + await pagination.openMaxItemsMenu(); + expect(await pagination.menu.getNthItem(1).getText()).toBe('25'); + expect(await pagination.menu.getNthItem(2).getText()).toBe('50'); + expect(await pagination.menu.getNthItem(3).getText()).toBe('100'); + await pagination.menu.closeMenu(); + }); + + it('current page menu items - [C280097]', async () => { + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('25'); + expect(await pagination.getMaxItems()).toContain('25'); + expect(await pagination.getTotalPages()).toContain('of 5'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(5); + await pagination.menu.closeMenu(); + + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('50'); + expect(await pagination.getMaxItems()).toContain('50'); + expect(await pagination.getTotalPages()).toContain('of 3'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(3); + await pagination.menu.closeMenu(); + + await pagination.openMaxItemsMenu(); + await pagination.menu.clickMenuItem('100'); + expect(await pagination.getMaxItems()).toContain('100'); + expect(await pagination.getTotalPages()).toContain('of 2'); + await pagination.openCurrentPageMenu(); + expect(await pagination.menu.getItemsCount()).toBe(2); + await pagination.menu.closeMenu(); + + await pagination.resetToDefaultPageSize(); + }); + + it('change the current page from menu - [C280098]', async () => { + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(3); + await dataTable.waitForHeader(); + expect(await pagination.getRange()).toContain('51-75 of 101'); + expect(await pagination.getCurrentPage()).toContain('Page 3'); + expect(await pagination.isPreviousEnabled()).toBe(true, 'Previous button is not enabled'); + expect(await pagination.isNextEnabled()).toBe(true, 'Next button is not enabled'); + expect(await dataTable.isItemPresent('my-file-40')).toBe(true, 'File not found on page'); + + await pagination.resetToDefaultPageNumber(); + }); + + it('navigate to next and previous pages - [C280101]', async () => { + await pagination.clickNext(); + await dataTable.waitForHeader(); + expect(await pagination.getRange()).toContain('26-50 of 101'); + expect(await dataTable.isItemPresent('my-file-70')).toBe(true, 'File not found on page'); + await pagination.resetToDefaultPageNumber(); + + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(2); + await dataTable.waitForHeader(); + await pagination.clickPrevious(); + await dataTable.waitForHeader(); + expect(await pagination.getRange()).toContain('1-25 of 101'); + expect(await dataTable.isItemPresent('my-file-88')).toBe(true, 'File not found on page'); + + await pagination.resetToDefaultPageNumber(); + }); + + it('Previous button is disabled on first page - [C280099]', async () => { + expect(await pagination.getCurrentPage()).toContain('Page 1'); + expect(await pagination.isPreviousEnabled()).toBe(false, 'Previous button is enabled on first page'); + }); + + it('Next button is disabled on last page - [C280100]', async () => { + await pagination.openCurrentPageMenu(); + await pagination.menu.clickNthItem(5); + expect(await dataTable.getRowsCount()).toBe(1, 'Incorrect number of items on the last page'); + expect(await pagination.getCurrentPage()).toContain('Page 5'); + expect(await pagination.isNextEnabled()).toBe(false, 'Next button is enabled on last page'); + }); + }); +} diff --git a/e2e/suites/pagination/pag-single-page.test.ts b/e2e/suites/pagination/single-page.test.ts similarity index 69% rename from e2e/suites/pagination/pag-single-page.test.ts rename to e2e/suites/pagination/single-page.test.ts index f3d67e8d8..9689c3f52 100755 --- a/e2e/suites/pagination/pag-single-page.test.ts +++ b/e2e/suites/pagination/single-page.test.ts @@ -23,60 +23,60 @@ * along with Alfresco. If not, see . */ -import { LoginPage, BrowsingPage } from '../../pages/pages'; +import { LoginPage, BrowsingPage, SearchResultsPage } from '../../pages/pages'; import { Utils } from '../../utilities/utils'; +import { AdminActions } from '../../utilities/admin-actions'; import { RepoClient } from '../../utilities/repo-client/repo-client'; describe('Pagination on single page', () => { - const username = `user-${Utils.random()}`; + const random = Utils.random(); - const siteName = `site-${Utils.random()}`; let siteId; + const username = `user-${random}`; - const file = `file-${Utils.random()}.txt`; let fileId; - const fileInTrash = `fileInTrash-${Utils.random()}.txt`; let fileInTrashId; + const siteName = `site-${random}`; + let siteId: string; - const apis = { - admin: new RepoClient(), - user: new RepoClient(username, username) - }; + const file = `file-${random}.txt`; + let fileId: string; + const fileInTrash = `fileInTrash-${random}.txt`; + let fileInTrashId: string; + + const userApi = new RepoClient(username, username); + const adminApiActions = new AdminActions(); const loginPage = new LoginPage(); const page = new BrowsingPage(); - const { pagination, dataTable } = page; + const { pagination } = page; const { searchInput } = page.header; + const searchResultsPage = new SearchResultsPage(); - beforeAll(async (done) => { - await apis.admin.people.createUser({ username }); - const [fileP, fileInTrashP, siteP] = await Promise.all([ - apis.user.nodes.createFile(file), - apis.user.nodes.createFile(fileInTrash), - apis.user.sites.createSite(siteName) + beforeAll(async () => { + await adminApiActions.createUser({ username }); + + fileId = (await userApi.nodes.createFile(file)).entry.id; + fileInTrashId = (await userApi.nodes.createFile(fileInTrash)).entry.id; + siteId = (await userApi.sites.createSite(siteName)).entry.id; + + await userApi.nodes.deleteNodeById(fileInTrashId, false); + await userApi.favorites.addFavoriteById('file', fileId); + await userApi.shared.shareFileById(fileId); + + await Promise.all([ + userApi.favorites.waitForApi({ expect: 2 }), + userApi.search.waitForApi(username, { expect: 1 }), + userApi.shared.waitForApi({ expect: 1 }), + userApi.trashcan.waitForApi({ expect: 1 }) ]); - fileId = fileP.entry.id; - fileInTrashId = fileInTrashP.entry.id; - siteId = siteP.entry.id; - - await apis.user.nodes.deleteNodeById(fileInTrashId, false); - await apis.user.favorites.addFavoriteById('file', fileId); - await apis.user.shared.shareFileById(fileId); - - await apis.user.favorites.waitForApi({ expect: 2 }); - await apis.user.search.waitForApi(username, { expect: 1 }); - await apis.user.shared.waitForApi({ expect: 1 }); - await apis.user.trashcan.waitForApi({ expect: 1 }); - await loginPage.loginWith(username); - done(); }); - afterAll(async (done) => { + afterAll(async () => { await Promise.all([ - apis.user.nodes.deleteNodeById(fileId), - apis.user.sites.deleteSite(siteId), - apis.user.trashcan.emptyTrash() + userApi.nodes.deleteNodeById(fileId), + userApi.sites.deleteSite(siteId), + userApi.trashcan.emptyTrash() ]); - done(); }); it('page selector not displayed on Favorites - [C280112]', async () => { @@ -116,9 +116,8 @@ describe('Pagination on single page', () => { it('page selector not displayed on Search results - [C290124]', async () => { await searchInput.clickSearchButton(); - await searchInput.checkOnlyFiles(); await searchInput.searchFor(file); - await dataTable.waitForBody(); + await searchResultsPage.waitForResults(); expect(await pagination.isPagesButtonPresent()).toBe(false, 'page selector displayed'); }); diff --git a/e2e/utilities/repo-client/apis/sites/sites-api.ts b/e2e/utilities/repo-client/apis/sites/sites-api.ts index c0e2a029a..0fba767aa 100755 --- a/e2e/utilities/repo-client/apis/sites/sites-api.ts +++ b/e2e/utilities/repo-client/apis/sites/sites-api.ts @@ -120,7 +120,7 @@ export class SitesApi extends RepoApi { return this.createSite(title, SITE_VISIBILITY.MODERATED, description, siteId); } - async createSites(titles: string[], visibility?: string) { + async createSites(titles: string[], visibility?: string): Promise { try { return titles.reduce(async (previous: any, current: any) => { await previous; @@ -131,6 +131,10 @@ export class SitesApi extends RepoApi { } } + async createSitesPrivate(siteNames: string[]): Promise { + return this.createSites(siteNames, SITE_VISIBILITY.PRIVATE) + } + async deleteSite(siteId: string, permanent: boolean = true) { try { await this.apiAuth();