Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ACS-6398] folder action-available e2e test #3537

Merged
merged 6 commits into from
Nov 27, 2023
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
/*!
* 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 { ApiClientFactory, FavoritesPageApi, PersonalFilesPage, NodesApi, TrashcanApi, Utils, test } from '@alfresco/playwright-shared';
import * as testData from '@alfresco/playwright-shared';

test.describe('Folders - available actions : ', () => {
const apiClientFactory = new ApiClientFactory();
AleksanderSklorz marked this conversation as resolved.
Show resolved Hide resolved
const username = `user-${Utils.random()}`;
const parentName = `parent-${Utils.random()}`;
AleksanderSklorz marked this conversation as resolved.
Show resolved Hide resolved

let parentId: string;
let folderFavId: string;
AleksanderSklorz marked this conversation as resolved.
Show resolved Hide resolved
let fileFavId: string;
AleksanderSklorz marked this conversation as resolved.
Show resolved Hide resolved

let nodesApi: NodesApi;
let favoritesActions: FavoritesPageApi;
AleksanderSklorz marked this conversation as resolved.
Show resolved Hide resolved
let trashCanActions: TrashcanApi;

async function checkActionsAvailable(
myPersonalFiles: PersonalFilesPage,
item: string,
expectedToolbarPrimary: string[],
expectedToolbarMore: string[]
): Promise<void> {
await myPersonalFiles.dataTable.selectItem(item);
await myPersonalFiles.acaHeader.verifyToolbarPrimaryActions(expectedToolbarPrimary);
await myPersonalFiles.acaHeader.clickMoreActions();
await myPersonalFiles.matMenu.verifyActualMoreActions(expectedToolbarMore);
}

async function checkMultipleSelActionsAvailable(
myPersonalFiles: PersonalFilesPage,
expectedToolbarPrimary: string[],
expectedToolbarMore: string[]
): Promise<void> {
await myPersonalFiles.acaHeader.verifyToolbarPrimaryActions(expectedToolbarPrimary);
await myPersonalFiles.acaHeader.clickMoreActions();
await myPersonalFiles.matMenu.verifyActualMoreActions(expectedToolbarMore);
}

test.beforeAll(async () => {
test.setTimeout(140000);
AleksanderSklorz marked this conversation as resolved.
Show resolved Hide resolved
await apiClientFactory.setUpAcaBackend('admin');
await apiClientFactory.createUser({ username: username });
AleksanderSklorz marked this conversation as resolved.
Show resolved Hide resolved
nodesApi = await NodesApi.initialize(username, username);
favoritesActions = await FavoritesPageApi.initialize(username, username);
trashCanActions = await TrashcanApi.initialize(username, username);
parentId = (await nodesApi.createFolder(parentName)).entry.id;
await nodesApi.createFile(testData.file.name, parentId);
fileFavId = (await nodesApi.createFile(testData.fileFavFile.name, parentId)).entry.id;

await nodesApi.createFolder(testData.folderFile.name, parentId);
folderFavId = (await nodesApi.createFolder(testData.folderFavFile.name, parentId)).entry.id;

const initialFavoritesTotalItems = (await favoritesActions.getFavoritesTotalItems(username)) || 0;
await favoritesActions.addFavoritesByIds('folder', [folderFavId]);
await favoritesActions.addFavoritesByIds('file', [fileFavId]);
await favoritesActions.waitForApi(username, { expect: initialFavoritesTotalItems + 2 });
});

test.afterAll(async () => {
await nodesApi.deleteNodes([parentId]);
await trashCanActions.emptyTrashcan();
});

test.describe('on Personal Files : ', () => {
test('Folder not favorite - [C213123]', async ({ personalFiles, loginPage }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/${parentId}` });
AleksanderSklorz marked this conversation as resolved.
Show resolved Hide resolved
await loginPage.loginUser({ username: username, password: username });
AleksanderSklorz marked this conversation as resolved.
Show resolved Hide resolved
await checkActionsAvailable(personalFiles, testData.folderFile.name, testData.folderFile.toolbarPrimary, testData.folderFile.toolbarMore);
await personalFiles.reload();
await personalFiles.dataTable.getRowByName(testData.folderFile.name).click({ button: 'right' });
await personalFiles.matMenu.verifyActualMoreActions(testData.folderFile.contextMenu);
});

test('Folder favorite - [C280451]', async ({ personalFiles, loginPage }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/${parentId}` });
await loginPage.loginUser({ username: username, password: username });
AleksanderSklorz marked this conversation as resolved.
Show resolved Hide resolved
await checkActionsAvailable(
personalFiles,
testData.folderFavFile.name,
testData.folderFavFile.toolbarPrimary,
testData.folderFavFile.toolbarMore
);
await personalFiles.reload();
await personalFiles.dataTable.getRowByName(testData.folderFavFile.name).click({ button: 'right' });
await personalFiles.matMenu.verifyActualMoreActions(testData.folderFavFile.contextMenu);
});

test('multiple folders - [C280459]', async ({ personalFiles, loginPage }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/${parentId}` });
await loginPage.loginUser({ username: username, password: username });
AleksanderSklorz marked this conversation as resolved.
Show resolved Hide resolved
await personalFiles.dataTable.selectMultiItem(testData.folderFavFile.name, testData.folderFile.name);
await checkMultipleSelActionsAvailable(personalFiles, testData.multipleSelFile.toolbarPrimary, testData.multipleSelFile.toolbarMore);
await personalFiles.reload();
await personalFiles.dataTable.selectMultiItem(testData.folderFavFile.name, testData.folderFile.name);
await personalFiles.dataTable.getRowByName(testData.folderFavFile.name).click({ button: 'right' });
await personalFiles.matMenu.verifyActualMoreActions(testData.multipleSelFile.contextMenu);
});

test('both files and folders - [C280460]', async ({ personalFiles, loginPage }) => {
await personalFiles.navigate({ remoteUrl: `#/personal-files/${parentId}` });
await loginPage.loginUser({ username: username, password: username });
AleksanderSklorz marked this conversation as resolved.
Show resolved Hide resolved
await personalFiles.dataTable.selectMultiItem(testData.file.name, testData.folderFile.name);
await checkMultipleSelActionsAvailable(personalFiles, testData.multipleSelFile.toolbarPrimary, testData.multipleSelFile.toolbarMore);
await personalFiles.reload();
await personalFiles.dataTable.selectMultiItem(testData.file.name, testData.folderFile.name);
await personalFiles.dataTable.getRowByName(testData.folderFile.name).click({ button: 'right' });
await personalFiles.matMenu.verifyActualMoreActions(testData.multipleSelFile.contextMenu);
});
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ describe('Folders - available actions : ', () => {

const loginPage = new LoginPage();
const page = new BrowsingPage();
const { dataTable, toolbar } = page;
const { toolbar } = page;
const { searchInput } = page.pageLayoutHeader;
const searchResultsPage = new SearchResultsPage();

Expand Down Expand Up @@ -78,42 +78,6 @@ describe('Folders - available actions : ', () => {
await Utils.pressEscape();
});

describe('on Personal Files : ', () => {
beforeAll(async () => {
await page.clickPersonalFilesAndWait();
await dataTable.doubleClickOnRowByName(parentName);
await dataTable.waitForHeader();
});

it('Folder not favorite - [C213123]', async () => {
await testUtil.checkToolbarActions(testData.folder.name, testData.folder.toolbarPrimary, testData.folder.toolbarMore);
await testUtil.checkContextMenu(testData.folder.name, testData.folder.contextMenu);
});

it('Folder favorite - [C280451]', async () => {
await testUtil.checkToolbarActions(testData.folderFav.name, testData.folderFav.toolbarPrimary, testData.folderFav.toolbarMore);
await testUtil.checkContextMenu(testData.folderFav.name, testData.folderFav.contextMenu);
});

it('multiple folders - [C280459]', async () => {
await testUtil.checkMultipleSelContextMenu([testData.folderFav.name, testData.folder.name], testData.multipleSel.contextMenu);
await testUtil.checkMultipleSelToolbarActions(
[testData.folderFav.name, testData.folder.name],
testData.multipleSel.toolbarPrimary,
testData.multipleSel.toolbarMore
);
});

it('both files and folders - [C280460]', async () => {
await testUtil.checkMultipleSelContextMenu([testData.file.name, testData.folder.name], testData.multipleSel.contextMenu);
await testUtil.checkMultipleSelToolbarActions(
[testData.file.name, testData.folder.name],
testData.multipleSel.toolbarPrimary,
testData.multipleSel.toolbarMore
);
});
});

describe('on Favorites Files : ', () => {
beforeAll(async () => {
await page.clickFavoritesAndWait();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,17 @@ export class DataTableComponent extends BaseComponent {
}
}

async selectMultiItem(name: string, name2: string): Promise<void> {
await this.page.keyboard.down('Meta');
let row = this.getRowByName(name);
await row.locator('[title="Size"]').click();
await row.locator('.adf-datatable-selected').waitFor({ state: 'attached' });
row = this.getRowByName(name2);
await row.locator('[title="Size"]').click();
await row.locator('.adf-datatable-selected').waitFor({ state: 'attached' });

AleksanderSklorz marked this conversation as resolved.
Show resolved Hide resolved
}

async hasCheckMarkIcon(itemName: string): Promise<boolean> {
const row = this.getRowByName(itemName);
return await row.locator('.adf-datatable-selected').isVisible();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,4 @@
*/

export * from './test-data-permissions';
export * from './test-data-files-folders';
Loading
Loading