diff --git a/cspell.json b/cspell.json
index b63c3393a..ecc4c0ed8 100644
--- a/cspell.json
+++ b/cspell.json
@@ -56,8 +56,7 @@
"keycodes",
"denysvuika",
"submenu",
- "submenus",
- "simpletask"
+ "submenus"
],
"dictionaries": ["html", "en-gb", "en_US"]
}
diff --git a/e2e/components/data-table/data-table.ts b/e2e/components/data-table/data-table.ts
index 6907c0fb0..c78cdca49 100755
--- a/e2e/components/data-table/data-table.ts
+++ b/e2e/components/data-table/data-table.ts
@@ -191,10 +191,14 @@ export class DataTable extends Component {
// Navigation/selection methods
async doubleClickOnRowByName(name: string) {
- const item = this.getRowFirstCell(name);
- await Utils.waitUntilElementClickable(item);
- await browser.actions().mouseMove(item).perform();
- await browser.actions().click().click().perform();
+ try {
+ const item = this.getRowFirstCell(name);
+ await Utils.waitUntilElementClickable(item);
+ await browser.actions().mouseMove(item).perform();
+ await browser.actions().click().click().perform();
+ } catch (error) {
+ console.log('--- catch: doubleClickOnRowByName', error);
+ }
}
async selectItem(name: string) {
@@ -225,7 +229,7 @@ export class DataTable extends Component {
const count = await this.countSelectedRows();
if (count !== 0) {
await browser.refresh();
- await this.waitForHeader();
+ await this.wait();
}
} catch (error) {
console.log('------ clearSelection catch : ', error);
@@ -238,7 +242,7 @@ export class DataTable extends Component {
}
async rightClickOnMultipleSelection() {
- await this.waitForHeader();
+ await this.wait();
const itemFromSelection = this.getSelectedRows().get(0);
await browser.actions().click(itemFromSelection, protractor.Button.RIGHT).perform();
}
diff --git a/e2e/components/dialog/create-edit-folder-dialog.ts b/e2e/components/dialog/create-edit-folder-dialog.ts
index c2a29c2a0..28095d859 100755
--- a/e2e/components/dialog/create-edit-folder-dialog.ts
+++ b/e2e/components/dialog/create-edit-folder-dialog.ts
@@ -23,7 +23,7 @@
* along with Alfresco. If not, see .
*/
-import { ElementFinder, by, browser, protractor, ExpectedConditions as EC, promise } from 'protractor';
+import { ElementFinder, by, browser, protractor, ExpectedConditions as EC } from 'protractor';
import { BROWSER_WAIT_TIMEOUT } from '../../configs';
import { Component } from '../component';
import { Utils } from '../../utilities/utils';
diff --git a/e2e/components/search/search-input.ts b/e2e/components/search/search-input.ts
index 5bf99c165..0698fa11a 100755
--- a/e2e/components/search/search-input.ts
+++ b/e2e/components/search/search-input.ts
@@ -23,9 +23,10 @@
* along with Alfresco. If not, see .
*/
-import { ElementFinder, browser, by, until, protractor } from 'protractor';
+import { ElementFinder, browser, by, until, protractor, ExpectedConditions as EC } from 'protractor';
import { BROWSER_WAIT_TIMEOUT } from '../../configs';
import { Component } from '../component';
+import { Utils } from '../../utilities/utils';
export class SearchInput extends Component {
private static selectors = {
@@ -35,27 +36,36 @@ export class SearchInput extends Component {
searchControl: '.app-search-control',
searchInput: 'app-control-input',
searchOptionsArea: 'search-options',
- optionCheckbox: '.mat-checkbox'
+ optionCheckbox: '.mat-checkbox',
+ clearButton: '.app-clear-icon'
};
searchButton: ElementFinder = this.component.element(by.css(SearchInput.selectors.searchButton));
searchContainer: ElementFinder = browser.element(by.css(SearchInput.selectors.searchContainer));
+ searchControl: ElementFinder = browser.element(by.css(SearchInput.selectors.searchControl));
searchBar: ElementFinder = browser.element(by.id(SearchInput.selectors.searchInput));
searchOptionsArea: ElementFinder = browser.element(by.id(SearchInput.selectors.searchOptionsArea));
searchFilesOption: ElementFinder = this.searchOptionsArea.element(by.cssContainingText(SearchInput.selectors.optionCheckbox, 'Files'));
searchFoldersOption: ElementFinder = this.searchOptionsArea.element(by.cssContainingText(SearchInput.selectors.optionCheckbox, 'Folders'));
searchLibrariesOption: ElementFinder = this.searchOptionsArea.element(by.cssContainingText(SearchInput.selectors.optionCheckbox, 'Libraries'));
+ clearSearchButton: ElementFinder = this.searchContainer.$(SearchInput.selectors.clearButton);
constructor(ancestor?: ElementFinder) {
super(SearchInput.selectors.root, ancestor);
}
+ async waitForSearchControl() {
+ return await browser.wait(EC.presenceOf(this.searchControl), BROWSER_WAIT_TIMEOUT, '--- timeout waitForSearchControl ---');
+ }
+
async isSearchContainerDisplayed() {
return (await this.searchContainer.isDisplayed()) && (await this.searchButton.isDisplayed());
}
async clickSearchButton() {
+ await Utils.waitUntilElementClickable(this.searchButton);
await this.searchButton.click();
+ await this.waitForSearchControl();
}
async isOptionsAreaDisplayed() {
@@ -117,6 +127,16 @@ export class SearchInput extends Component {
}
}
+ async isClearSearchButtonPresent() {
+ return await browser.isElementPresent(this.clearSearchButton);
+ }
+
+ async clickClearSearchButton() {
+ if (await this.isClearSearchButtonPresent()) {
+ return await this.clearSearchButton.click();
+ }
+ }
+
async checkOnlyFiles() {
await this.clearOptions();
await this.clickFilesOption();
@@ -139,8 +159,14 @@ export class SearchInput extends Component {
}
async searchFor(text: string) {
+ await browser.wait(EC.elementToBeClickable(this.searchBar), BROWSER_WAIT_TIMEOUT, '---- timeout waiting for searchBar to be clickable');
await this.searchBar.clear();
await this.searchBar.sendKeys(text);
await this.searchBar.sendKeys(protractor.Key.ENTER);
}
+
+ async searchForTextAndCloseSearchOptions(text: string) {
+ await this.searchFor(text);
+ await Utils.pressEscape();
+ }
}
diff --git a/e2e/components/sidenav/sidenav.ts b/e2e/components/sidenav/sidenav.ts
index 145c772e4..c363c47fb 100755
--- a/e2e/components/sidenav/sidenav.ts
+++ b/e2e/components/sidenav/sidenav.ts
@@ -36,15 +36,34 @@ export class Sidenav extends Component {
label: '.item--label',
expansion_panel: ".mat-expansion-panel-header",
expansion_panel_content: ".mat-expansion-panel-body",
- active: 'item--active',
- activeLink: '.item--active',
- newButton: '[data-automation-id="create-button"]'
+ active: 'mat-accent',
+ activeLink: '.mat-accent',
+ activeChild: 'item--active',
+ newButton: '[data-automation-id="create-button"]',
+
+ personalFiles: `[id='app.navbar.personalFiles']`,
+ fileLibraries: `[id='app.navbar.libraries.menu']`,
+ myLibraries: `[id='app.navbar.libraries.files']`,
+ favoriteLibraries: `[id='app.navbar.libraries.favorite']`,
+ shared: `[id='app.navbar.shared']`,
+ recentFiles: `[id='app.navbar.recentFiles']`,
+ favorites: `[id='app.navbar.favorites']`,
+ trash: `[id='app.navbar.trashcan']`
};
links: ElementArrayFinder = this.component.all(by.css(Sidenav.selectors.link));
activeLink: ElementFinder = this.component.element(by.css(Sidenav.selectors.activeLink));
newButton: ElementArrayFinder = this.component.all(by.css(Sidenav.selectors.newButton));
+ personalFiles: ElementFinder = this.component.element(by.css(Sidenav.selectors.personalFiles));
+ fileLibraries: ElementFinder = this.component.element(by.css(Sidenav.selectors.fileLibraries));
+ myLibraries: ElementFinder = this.component.element(by.css(Sidenav.selectors.myLibraries));
+ favoriteLibraries: ElementFinder = this.component.element(by.css(Sidenav.selectors.favoriteLibraries));
+ shared: ElementFinder = this.component.element(by.css(Sidenav.selectors.shared));
+ recentFiles: ElementFinder = this.component.element(by.css(Sidenav.selectors.recentFiles));
+ favorites: ElementFinder = this.component.element(by.css(Sidenav.selectors.favorites));
+ trash: ElementFinder = this.component.element(by.css(Sidenav.selectors.trash));
+
menu: Menu = new Menu();
constructor(ancestor?: ElementFinder) {
@@ -92,7 +111,7 @@ export class Sidenav extends Component {
async childIsActive(name: string) {
const childClass = await this.getLinkLabel(name).element(by.css('span')).getAttribute('class');
- return childClass.includes(Sidenav.selectors.active);
+ return childClass.includes(Sidenav.selectors.activeChild);
}
getLink(name: string) {
@@ -100,7 +119,17 @@ export class Sidenav extends Component {
}
getLinkLabel(name: string) {
- return this.component.element(by.cssContainingText(Sidenav.selectors.label, name));
+ switch (name) {
+ case 'Personal Files': return this.personalFiles;
+ case 'File Libraries': return this.fileLibraries;
+ case 'My Libraries': return this.myLibraries;
+ case 'Favorite Libraries': return this.favoriteLibraries;
+ case 'Shared': return this.shared;
+ case 'Recent Files': return this.recentFiles;
+ case 'Favorites': return this.favorites;
+ case 'Trash': return this.trash;
+ default: return this.personalFiles;
+ }
}
getActiveLink() {
@@ -111,14 +140,14 @@ export class Sidenav extends Component {
return await this.getLink(name).getAttribute('title');
}
- async navigateToLink(name: string) {
+ async clickLink(name: string) {
try{
const link = this.getLinkLabel(name);
await Utils.waitUntilElementClickable(link);
return await link.click();
} catch (e){
- console.log('---- sidebar navigation catch navigateToLink: ', e);
+ console.log('---- sidebar navigation catch clickLink: ', e);
}
}
diff --git a/e2e/components/toolbar/toolbar.ts b/e2e/components/toolbar/toolbar.ts
index db0e975f8..44a669962 100755
--- a/e2e/components/toolbar/toolbar.ts
+++ b/e2e/components/toolbar/toolbar.ts
@@ -23,9 +23,10 @@
* along with Alfresco. If not, see .
*/
-import { ElementFinder, ElementArrayFinder, by, protractor, browser } from 'protractor';
+import { ElementFinder, ElementArrayFinder, by, browser } from 'protractor';
import { Menu } from '../menu/menu';
import { Component } from '../component';
+import { Utils } from '../../utilities/utils';
export class Toolbar extends Component {
private static selectors = {
@@ -95,7 +96,7 @@ export class Toolbar extends Component {
}
async closeMoreMenu() {
- await browser.actions().sendKeys(protractor.Key.ESCAPE).perform();
+ await Utils.pressEscape();
}
async getButtonTooltip(button: ElementFinder) {
@@ -150,6 +151,10 @@ export class Toolbar extends Component {
}
+ async clickView() {
+ return await this.viewButton.click();
+ }
+
async clickEdit() {
return await this.editButton.click();
}
diff --git a/e2e/configs.ts b/e2e/configs.ts
index 18f23a885..30a79b28f 100755
--- a/e2e/configs.ts
+++ b/e2e/configs.ts
@@ -69,10 +69,15 @@ export const SIDEBAR_LABELS = {
// Page titles
export const PAGE_TITLES = {
- VIEWER: 'Preview',
- SEARCH: 'Search Results',
+ PERSONAL_FILES: 'Personal Files',
MY_LIBRARIES: 'My Libraries',
- FAVORITE_LIBRARIES: 'Favorite Libraries'
+ FAVORITE_LIBRARIES: 'Favorite Libraries',
+ SHARED_FILES: 'Shared',
+ RECENT_FILES: 'Recent Files',
+ FAVORITES: 'Favorites',
+ TRASH: 'Trash',
+ VIEWER: 'Preview',
+ SEARCH: 'Search Results'
};
// Site visibility
diff --git a/e2e/pages/browsing-page.ts b/e2e/pages/browsing-page.ts
index 41267da43..69f4bddbb 100755
--- a/e2e/pages/browsing-page.ts
+++ b/e2e/pages/browsing-page.ts
@@ -45,76 +45,89 @@ export class BrowsingPage extends Page {
// helper methods
- async clickPersonalFilesAndWait() {
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.PERSONAL_FILES);
- await this.dataTable.waitForHeader();
- }
-
async clickPersonalFiles() {
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.PERSONAL_FILES);
+ await this.sidenav.clickLink(SIDEBAR_LABELS.PERSONAL_FILES);
}
-
- async clickFileLibrariesAndWait() {
- await this.sidenav.expandFileLibraries();
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.MY_LIBRARIES);
+ async clickPersonalFilesAndWait() {
+ await this.clickPersonalFiles();
await this.dataTable.waitForHeader();
}
+
async clickFileLibraries() {
- await this.sidenav.expandFileLibraries();
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.MY_LIBRARIES);
+ await this.sidenav.clickLink(SIDEBAR_LABELS.FILE_LIBRARIES);
}
- async goToFavoriteLibraries() {
- await this.sidenav.expandFileLibraries();
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.FAVORITE_LIBRARIES);
+ async clickFileLibrariesAndWait() {
+ await this.clickFileLibraries();
+ await this.dataTable.waitForHeader();
}
+
+ async goToFavoriteLibraries() {
+ if ( !(await this.sidenav.isFileLibrariesMenuExpanded()) ) {
+ await this.sidenav.expandFileLibraries();
+ }
+ await this.sidenav.clickLink(SIDEBAR_LABELS.FAVORITE_LIBRARIES);
+ }
+
+ async goToFavoriteLibrariesAndWait() {
+ await this.goToFavoriteLibraries();
+ await this.dataTable.waitForHeader();
+ }
+
+
async goToMyLibraries() {
if ( !(await this.sidenav.isFileLibrariesMenuExpanded()) ) {
await this.sidenav.expandFileLibraries();
}
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.MY_LIBRARIES);
+ await this.sidenav.clickLink(SIDEBAR_LABELS.MY_LIBRARIES);
+ }
+
+ async goToMyLibrariesAndWait() {
+ await this.goToMyLibraries();
+ await this.dataTable.waitForHeader();
+ }
+
+
+ async clickRecentFiles() {
+ await this.sidenav.clickLink(SIDEBAR_LABELS.RECENT_FILES);
}
async clickRecentFilesAndWait() {
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.RECENT_FILES);
+ await this.clickRecentFiles();
await this.dataTable.waitForHeader();
}
- async clickRecentFiles() {
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.RECENT_FILES);
- }
-
-
- async clickSharedFilesAndWait() {
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.SHARED_FILES);
- await this.dataTable.waitForHeader();
- }
async clickSharedFiles() {
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.SHARED_FILES);
+ await this.sidenav.clickLink(SIDEBAR_LABELS.SHARED_FILES);
}
-
- async clickFavoritesAndWait() {
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.FAVORITES);
+ async clickSharedFilesAndWait() {
+ await this.clickSharedFiles();
await this.dataTable.waitForHeader();
}
+
async clickFavorites() {
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.FAVORITES);
+ await this.sidenav.clickLink(SIDEBAR_LABELS.FAVORITES);
}
-
- async clickTrashAndWait() {
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.TRASH);
+ async clickFavoritesAndWait() {
+ await this.clickFavorites();
await this.dataTable.waitForHeader();
}
+
async clickTrash() {
- await this.sidenav.navigateToLink(SIDEBAR_LABELS.TRASH);
+ await this.sidenav.clickLink(SIDEBAR_LABELS.TRASH);
+ }
+
+ async clickTrashAndWait() {
+ await this.clickTrash();
+ await this.dataTable.waitForHeader();
}
}
diff --git a/e2e/pages/page.ts b/e2e/pages/page.ts
index 8eb8bc093..f6bcb18de 100755
--- a/e2e/pages/page.ts
+++ b/e2e/pages/page.ts
@@ -27,7 +27,7 @@ import { browser, by, ElementFinder, ExpectedConditions as EC, until } from 'pro
import { BROWSER_WAIT_TIMEOUT, USE_HASH_STRATEGY } from './../configs';
export abstract class Page {
- private static selectors = {
+ protected static locators = {
app: 'app-root',
layout: 'app-layout',
overlay: '.cdk-overlay-container',
@@ -41,17 +41,17 @@ export abstract class Page {
genericErrorTitle: '.generic-error__title'
};
- app: ElementFinder = browser.element(by.css(Page.selectors.app));
- layout: ElementFinder = browser.element(by.css(Page.selectors.layout));
- overlay: ElementFinder = browser.element(by.css(Page.selectors.overlay));
- snackBar: ElementFinder = browser.element(by.css(Page.selectors.snackBar));
- dialogContainer: ElementFinder = browser.element(by.css(Page.selectors.dialogContainer));
- snackBarContainer: ElementFinder = browser.element(by.css(Page.selectors.snackBarContainer));
- snackBarAction: ElementFinder = browser.element(by.css(Page.selectors.snackBarAction));
+ app: ElementFinder = browser.element(by.css(Page.locators.app));
+ layout: ElementFinder = browser.element(by.css(Page.locators.layout));
+ overlay: ElementFinder = browser.element(by.css(Page.locators.overlay));
+ snackBar: ElementFinder = browser.element(by.css(Page.locators.snackBar));
+ dialogContainer: ElementFinder = browser.element(by.css(Page.locators.dialogContainer));
+ snackBarContainer: ElementFinder = browser.element(by.css(Page.locators.snackBarContainer));
+ snackBarAction: ElementFinder = browser.element(by.css(Page.locators.snackBarAction));
- genericError: ElementFinder = browser.element(by.css(Page.selectors.genericError));
- genericErrorIcon: ElementFinder = browser.element(by.css(Page.selectors.genericErrorIcon));
- genericErrorTitle: ElementFinder = browser.element(by.css(Page.selectors.genericErrorTitle));
+ genericError: ElementFinder = browser.element(by.css(Page.locators.genericError));
+ genericErrorIcon: ElementFinder = browser.element(by.css(Page.locators.genericErrorIcon));
+ genericErrorTitle: ElementFinder = browser.element(by.css(Page.locators.genericErrorTitle));
constructor(public url: string = '') {}
diff --git a/e2e/suites/actions/context-menu-multiple-selection.test.ts b/e2e/suites/actions/context-menu-multiple-selection.test.ts
index 12e05aeac..19045b5d4 100755
--- a/e2e/suites/actions/context-menu-multiple-selection.test.ts
+++ b/e2e/suites/actions/context-menu-multiple-selection.test.ts
@@ -23,7 +23,7 @@
* along with Alfresco. If not, see .
*/
-import { LoginPage, BrowsingPage } from '../../pages/pages';
+import { LoginPage, BrowsingPage, SearchResultsPage } from '../../pages/pages';
import { SITE_VISIBILITY } from '../../configs';
import { RepoClient } from '../../utilities/repo-client/repo-client';
import { Utils } from '../../utilities/utils';
@@ -31,11 +31,11 @@ import { Utils } from '../../utilities/utils';
describe('Context menu actions - multiple selection : ', () => {
const username = `user-${Utils.random()}`;
- const file1 = `file1-${Utils.random()}.txt`; let file1Id;
- const file2 = `file2-${Utils.random()}.txt`; let file2Id;
+ const file1 = `my-file1-${Utils.random()}.txt`; let file1Id;
+ const file2 = `my-file2-${Utils.random()}.txt`; let file2Id;
- const folder1 = `folder1-${Utils.random()}`; let folder1Id;
- const folder2 = `folder2-${Utils.random()}`; let folder2Id;
+ const folder1 = `my-folder1-${Utils.random()}`; let folder1Id;
+ const folder2 = `my-folder2-${Utils.random()}`; let folder2Id;
const fileInTrash1 = `deletedFile1-${Utils.random()}.txt`; let fileInTrash1Id;
const fileInTrash2 = `deletedFile2-${Utils.random()}.txt`; let fileInTrash2Id;
@@ -43,10 +43,10 @@ describe('Context menu actions - multiple selection : ', () => {
const folderInTrash2 = `deletedFolder2-${Utils.random()}`; let folderInTrash2Id;
const siteName = `site-${Utils.random()}`;
- const file1Site = `file1-${Utils.random()}.txt`;
- const file2Site = `file2-${Utils.random()}.txt`;
- const folder1Site = `folder1-${Utils.random()}`;
- const folder2Site = `folder2-${Utils.random()}`;
+ const file1Site = `my-inSite-file1-${Utils.random()}.txt`;
+ const file2Site = `my-inSite-file2-${Utils.random()}.txt`;
+ const folder1Site = `my-inSite-folder1-${Utils.random()}`;
+ const folder2Site = `my-inSite-folder2-${Utils.random()}`;
const apis = {
admin: new RepoClient(),
@@ -57,6 +57,8 @@ describe('Context menu actions - multiple selection : ', () => {
const page = new BrowsingPage();
const { dataTable } = page;
const contextMenu = dataTable.menu;
+ const searchResultsPage = new SearchResultsPage();
+ const { searchInput } = searchResultsPage.header;
beforeAll(async (done) => {
await apis.admin.people.createUser({ username });
@@ -70,7 +72,7 @@ describe('Context menu actions - multiple selection : ', () => {
await apis.user.nodes.createFile(file1Site, docLibId);
await apis.user.nodes.createFile(file2Site, docLibId);
await apis.user.nodes.createFolder(folder1Site, docLibId);
- await apis.user.nodes.createFile(folder2Site, docLibId);
+ await apis.user.nodes.createFolder(folder2Site, docLibId);
await apis.user.shared.shareFilesByIds([ file1Id, file2Id ]);
await apis.user.shared.waitForApi({ expect: 2 });
@@ -179,10 +181,9 @@ describe('Context menu actions - multiple selection : ', () => {
describe('on File Libraries', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
- await dataTable.clearSelection();
done();
});
@@ -382,4 +383,63 @@ describe('Context menu actions - multiple selection : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(false, `Favorite is displayed`);
});
});
+
+ describe('on Search Results', () => {
+ beforeEach(async (done) => {
+ await Utils.pressEscape();
+ await page.clickPersonalFilesAndWait();
+ done();
+ });
+
+ it('correct actions appear when multiple files are selected - [C291831]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFiles();
+ await searchInput.searchForTextAndCloseSearchOptions('my-inSite-file');
+ await dataTable.selectMultipleItems([ file1Site, file2Site ]);
+ await dataTable.rightClickOnMultipleSelection();
+
+ expect(await contextMenu.isViewPresent()).toBe(false, 'View is displayed');
+ expect(await contextMenu.isDownloadPresent()).toBe(true, 'Download is not displayed');
+ expect(await contextMenu.isEditPresent()).toBe(false, 'Edit is displayed');
+ expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed`);
+ expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed`);
+ expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`);
+ expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
+ expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed`);
+ });
+
+ it('correct actions appear when multiple folders are selected - [C291832]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFolders();
+ await searchInput.searchForTextAndCloseSearchOptions('my-inSite-folder');
+ await dataTable.selectMultipleItems([ folder1Site, folder2Site ]);
+ await dataTable.rightClickOnMultipleSelection();
+
+ expect(await contextMenu.isViewPresent()).toBe(false, 'View is displayed');
+ expect(await contextMenu.isDownloadPresent()).toBe(true, 'Download is not displayed');
+ expect(await contextMenu.isEditPresent()).toBe(false, 'Edit is displayed');
+ expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed`);
+ expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed`);
+ expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`);
+ expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
+ expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed`);
+ });
+
+ it('correct actions appear when both files and folders are selected - [C291833]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkFilesAndFolders();
+ await searchInput.searchForTextAndCloseSearchOptions('my-inSite-f');
+ await dataTable.selectMultipleItems([ file1Site, file2Site, folder1Site, folder2Site ]);
+ await dataTable.rightClickOnMultipleSelection();
+
+ expect(await contextMenu.isViewPresent()).toBe(false, 'View is displayed');
+ expect(await contextMenu.isDownloadPresent()).toBe(true, 'Download is not displayed');
+ expect(await contextMenu.isEditPresent()).toBe(false, 'Edit is displayed');
+ expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed`);
+ expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed`);
+ expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`);
+ expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
+ expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed`);
+ });
+ });
});
diff --git a/e2e/suites/actions/context-menu-single-selection.test.ts b/e2e/suites/actions/context-menu-single-selection.test.ts
index 1fc3f77c2..3e9c084a7 100755
--- a/e2e/suites/actions/context-menu-single-selection.test.ts
+++ b/e2e/suites/actions/context-menu-single-selection.test.ts
@@ -23,7 +23,7 @@
* along with Alfresco. If not, see .
*/
-import { LoginPage, BrowsingPage } from '../../pages/pages';
+import { LoginPage, BrowsingPage, SearchResultsPage } from '../../pages/pages';
import { SITE_VISIBILITY } from '../../configs';
import { RepoClient } from '../../utilities/repo-client/repo-client';
import { Utils } from '../../utilities/utils';
@@ -52,6 +52,8 @@ describe('Context menu actions - single selection : ', () => {
const page = new BrowsingPage();
const { dataTable } = page;
const contextMenu = dataTable.menu;
+ const searchResultsPage = new SearchResultsPage();
+ const { searchInput } = searchResultsPage.header;
beforeAll(async (done) => {
await apis.admin.people.createUser({ username });
@@ -82,6 +84,10 @@ describe('Context menu actions - single selection : ', () => {
await apis.user.favorites.addFavoriteById('site', adminModerated);
await apis.user.sites.requestToJoin(adminModerated);
+ await apis.user.queries.waitForSites(siteName, { expect: 1 });
+ await apis.user.queries.waitForSites(adminPublic, { expect: 1 });
+ await apis.user.queries.waitForSites(adminModerated, { expect: 1 });
+
await loginPage.loginWith(username);
done();
});
@@ -186,7 +192,7 @@ describe('Context menu actions - single selection : ', () => {
describe('on File Libraries', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
done();
@@ -231,8 +237,8 @@ describe('Context menu actions - single selection : ', () => {
done();
});
- it('Available actions when a library is selected - My Libraries - [C290080]', async () => {
- await page.goToMyLibraries();
+ it('Available actions for a library - My Libraries - [C290080]', async () => {
+ await page.goToMyLibrariesAndWait();
await dataTable.rightClickOnItem(siteName);
expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
@@ -241,8 +247,8 @@ describe('Context menu actions - single selection : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${siteName}`);
});
- it('Available actions when a library is selected - Favorite Libraries - user is a member - [C290081]', async () => {
- await page.goToFavoriteLibraries();
+ it('Available actions for a library - Favorite Libraries - user is a member - [C290081]', async () => {
+ await page.goToFavoriteLibrariesAndWait();
await dataTable.rightClickOnItem(siteName);
expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
@@ -251,8 +257,8 @@ describe('Context menu actions - single selection : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${siteName}`);
});
- it('Available actions when a library is selected - Favorite Libraries - user is not a member - [C290082]', async () => {
- await page.goToFavoriteLibraries();
+ it('Available actions for a library - Favorite Libraries - user is not a member - [C290082]', async () => {
+ await page.goToFavoriteLibrariesAndWait();
await dataTable.rightClickOnItem(adminPublic);
expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
@@ -261,8 +267,44 @@ describe('Context menu actions - single selection : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminPublic}`);
});
- it('Available actions when a library is selected - Favorite Libraries - user requested to join - [C290089]', async () => {
- await page.goToFavoriteLibraries();
+ it('Available actions for a moderated library - Favorite Libraries - user requested to join - [C290089]', async () => {
+ await page.goToFavoriteLibrariesAndWait();
+ await dataTable.rightClickOnItem(adminModerated);
+
+ expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
+ expect(await contextMenu.isCancelJoinPresent()).toBe(true, `Cancel join is not displayed for ${adminModerated}`);
+ expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${adminModerated}`);
+ expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminModerated}`);
+ });
+
+ it('Available actions for a library - Search Results - user is a member - [C291812]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkLibraries();
+ await searchInput.searchForTextAndCloseSearchOptions(siteName);
+ await dataTable.rightClickOnItem(siteName);
+
+ expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
+ expect(await contextMenu.isLeaveLibraryPresent()).toBe(true, `Leave is not displayed for ${siteName}`);
+ expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${siteName}`);
+ expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${siteName}`);
+ });
+
+ it('Available actions for a library - Search Results - user is not a member - [C291813]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkLibraries();
+ await searchInput.searchForTextAndCloseSearchOptions(adminPublic);
+ await dataTable.rightClickOnItem(adminPublic);
+
+ expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
+ expect(await contextMenu.isJoinLibraryPresent()).toBe(true, `Join is not displayed for ${adminPublic}`);
+ expect(await contextMenu.isDeletePresent()).toBe(true, `Delete is not displayed for ${adminPublic}`);
+ expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminPublic}`);
+ });
+
+ it('Available actions for a moderated library - Search Results - user requested to join - [C291814]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkLibraries();
+ await searchInput.searchForTextAndCloseSearchOptions(adminModerated);
await dataTable.rightClickOnItem(adminModerated);
expect(await dataTable.hasContextMenu()).toBe(true, 'Context menu is not displayed');
@@ -374,15 +416,15 @@ describe('Context menu actions - single selection : ', () => {
expect(await contextMenu.isPermanentDeletePresent())
.toBe(true, `Permanently delete is not displayed for ${fileInTrash}`);
expect(await contextMenu.isRestorePresent()).toBe(true, `Restore is not displayed for ${fileInTrash}`);
- expect(await contextMenu.isDownloadPresent()).toBe(false, `Download is not displayed for ${fileInTrash}`);
- expect(await contextMenu.isViewPresent()).toBe(false, `View is not displayed for ${fileInTrash}`);
- expect(await contextMenu.isFavoritePresent()).toBe(false, `Favorite is not displayed for ${fileInTrash}`);
- expect(await contextMenu.isCopyPresent()).toBe(false, `Copy is not displayed for ${fileInTrash}`);
- expect(await contextMenu.isMovePresent()).toBe(false, `Move is not displayed for ${fileInTrash}`);
- expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is not displayed for ${fileInTrash}`);
- expect(await contextMenu.isSharePresent()).toBe(false, `Share is not displayed for ${fileInTrash}`);
+ expect(await contextMenu.isDownloadPresent()).toBe(false, `Download is displayed for ${fileInTrash}`);
+ expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${fileInTrash}`);
+ expect(await contextMenu.isFavoritePresent()).toBe(false, `Favorite is displayed for ${fileInTrash}`);
+ expect(await contextMenu.isCopyPresent()).toBe(false, `Copy is displayed for ${fileInTrash}`);
+ expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed for ${fileInTrash}`);
+ expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${fileInTrash}`);
+ expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${fileInTrash}`);
expect(await contextMenu.isManageVersionsPresent())
- .toBe(false, `Manage Versions is not displayed for ${fileInTrash}`);
+ .toBe(false, `Manage Versions is displayed for ${fileInTrash}`);
expect(await contextMenu.isEditPresent()).toBe(false, `Edit is displayed for ${fileInTrash}`);
expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileInTrash}`);
});
@@ -393,17 +435,62 @@ describe('Context menu actions - single selection : ', () => {
expect(await contextMenu.isPermanentDeletePresent())
.toBe(true, `Permanently delete is not displayed for ${folderInTrash}`);
expect(await contextMenu.isRestorePresent()).toBe(true, `Restore is not displayed for ${folderInTrash}`);
- expect(await contextMenu.isDownloadPresent()).toBe(false, `Download is not displayed for ${folderInTrash}`);
- expect(await contextMenu.isViewPresent()).toBe(false, `View is not displayed for ${folderInTrash}`);
- expect(await contextMenu.isFavoritePresent()).toBe(false, `Favorite is not displayed for ${folderInTrash}`);
- expect(await contextMenu.isCopyPresent()).toBe(false, `Copy is not displayed for ${folderInTrash}`);
- expect(await contextMenu.isMovePresent()).toBe(false, `Move is not displayed for ${folderInTrash}`);
- expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is not displayed for ${folderInTrash}`);
- expect(await contextMenu.isSharePresent()).toBe(false, `Share is not displayed for ${folderInTrash}`);
+ expect(await contextMenu.isDownloadPresent()).toBe(false, `Download is displayed for ${folderInTrash}`);
+ expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${folderInTrash}`);
+ expect(await contextMenu.isFavoritePresent()).toBe(false, `Favorite is displayed for ${folderInTrash}`);
+ expect(await contextMenu.isCopyPresent()).toBe(false, `Copy is displayed for ${folderInTrash}`);
+ expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed for ${folderInTrash}`);
+ expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${folderInTrash}`);
+ expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folderInTrash}`);
expect(await contextMenu.isManageVersionsPresent())
- .toBe(false, `Manage Versions is not displayed for ${folderInTrash}`);
+ .toBe(false, `Manage Versions is displayed for ${folderInTrash}`);
expect(await contextMenu.isEditPresent()).toBe(false, `Edit is displayed for ${folderInTrash}`);
expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${folderInTrash}`);
});
});
+
+ describe('on Search Results', () => {
+ beforeEach(async (done) => {
+ await Utils.pressEscape();
+ await page.clickPersonalFilesAndWait();
+ done();
+ });
+
+ it('Context menu has the correct actions for a file - [C291827]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFiles();
+ await searchInput.searchForTextAndCloseSearchOptions(fileSiteUser);
+ await dataTable.rightClickOnItem(fileSiteUser);
+
+ expect(await contextMenu.isDownloadPresent()).toBe(true, `Download is not displayed for ${fileSiteUser}`);
+ expect(await contextMenu.isViewPresent()).toBe(true, `View is not displayed for ${fileSiteUser}`);
+ expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileSiteUser}`);
+ expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed for ${fileSiteUser}`);
+ expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed for ${fileSiteUser}`);
+ expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${fileSiteUser}`);
+ expect(await contextMenu.isSharePresent()).toBe(true, `Share is not displayed for ${fileSiteUser}`);
+ expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions not displayed for ${fileSiteUser}`);
+ expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${fileSiteUser}`);
+ expect(await contextMenu.isEditPresent()).toBe(false, `Edit is displayed for ${fileSiteUser}`);
+ expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${fileSiteUser}`);
+ });
+
+ it('Context menu has the correct actions for a folder - [C291828]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFolders();
+ await searchInput.searchForTextAndCloseSearchOptions(folderSiteUser);
+ await dataTable.rightClickOnItem(folderSiteUser);
+
+ expect(await contextMenu.isDownloadPresent()).toBe(true, `Download is not displayed for ${folderSiteUser}`);
+ expect(await contextMenu.isEditPresent()).toBe(true, `Edit is not displayed for ${folderSiteUser}`);
+ expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folderSiteUser}`);
+ expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed for ${folderSiteUser}`);
+ expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed for ${folderSiteUser}`);
+ expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${folderSiteUser}`);
+ expect(await contextMenu.isManagePermissionsPresent()).toBe(true, `Permissions is not displayed for ${folderSiteUser}`);
+ expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${folderSiteUser}`);
+ expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions displayed for ${folderSiteUser}`);
+ expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folderSiteUser}`);
+ });
+ });
});
diff --git a/e2e/suites/actions/create-folder.test.ts b/e2e/suites/actions/create-folder.test.ts
index 9d6b26ea5..e609ddbec 100755
--- a/e2e/suites/actions/create-folder.test.ts
+++ b/e2e/suites/actions/create-folder.test.ts
@@ -216,7 +216,7 @@ describe('Create folder', () => {
const fileLibrariesPage = new BrowsingPage();
beforeEach(async (done) => {
- await fileLibrariesPage.clickFileLibrariesAndWait();
+ await fileLibrariesPage.goToMyLibrariesAndWait();
done();
});
diff --git a/e2e/suites/actions/create-library.test.ts b/e2e/suites/actions/create-library.test.ts
index 1e4bc532c..1706a996c 100755
--- a/e2e/suites/actions/create-library.test.ts
+++ b/e2e/suites/actions/create-library.test.ts
@@ -106,7 +106,7 @@ describe('Create library', () => {
await createDialog.waitForDialogToClose();
expect(await page.breadcrumb.getCurrentItemName()).toEqual(site1Name, `Not navigated into ${site1Name}`);
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
expect(await dataTable.isItemPresent(site1Name)).toBe(true, `${site1Name} not in the list`);
expect(await apis.user.sites.getVisibility(site1Name)).toEqual(SITE_VISIBILITY.PUBLIC);
});
@@ -120,7 +120,7 @@ describe('Create library', () => {
await createDialog.waitForDialogToClose();
expect(await page.breadcrumb.getCurrentItemName()).toEqual(site2Name, `Not navigated into ${site2Name}`);
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
expect(await dataTable.isItemPresent(site2Name)).toBe(true, `${site2Name} not in the list`);
expect(await apis.user.sites.getVisibility(site2Name)).toEqual(SITE_VISIBILITY.MODERATED);
});
@@ -134,7 +134,7 @@ describe('Create library', () => {
await createDialog.waitForDialogToClose();
expect(await page.breadcrumb.getCurrentItemName()).toEqual(site3Name, `Not navigated into ${site3Name}`);
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
expect(await dataTable.isItemPresent(site3Name)).toBe(true, `${site3Name} not in the list`);
expect(await apis.user.sites.getVisibility(site3Name)).toEqual(SITE_VISIBILITY.PRIVATE);
});
@@ -150,7 +150,7 @@ describe('Create library', () => {
await createDialog.waitForDialogToClose();
expect(await page.breadcrumb.getCurrentItemName()).toEqual(site4.name, `Not navigated into ${site4.name}`);
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
expect(await dataTable.isItemPresent(site4.name)).toBe(true, `${site4.name} not in the list`);
expect(await apis.user.sites.getVisibility(site4.id)).toEqual(SITE_VISIBILITY.PUBLIC);
expect(await apis.user.sites.getDescription(site4.id)).toEqual(site4.description);
@@ -209,7 +209,7 @@ describe('Create library', () => {
await createDialog.waitForDialogToClose();
expect(await page.breadcrumb.getCurrentItemName()).toEqual(duplicateSite.name, `Not navigated into ${duplicateSite.name}`);
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
expect(await dataTable.isItemPresent(`${duplicateSite.name} (${duplicateSite.id}-2)`)).toBe(true, `${duplicateSite.name} not in the list`);
expect(await apis.user.sites.getTitle(`${duplicateSite.id}-2`)).toEqual(duplicateSite.name);
});
diff --git a/e2e/suites/actions/edit-folder.test.ts b/e2e/suites/actions/edit-folder.test.ts
index 887982eff..86f924357 100755
--- a/e2e/suites/actions/edit-folder.test.ts
+++ b/e2e/suites/actions/edit-folder.test.ts
@@ -244,7 +244,7 @@ describe('Edit folder', () => {
describe('on My Libraries', () => {
beforeEach(async (done) => {
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
done();
});
diff --git a/e2e/suites/actions/library-actions.test.ts b/e2e/suites/actions/library-actions.test.ts
index b892c0d6b..e7a3d89d8 100755
--- a/e2e/suites/actions/library-actions.test.ts
+++ b/e2e/suites/actions/library-actions.test.ts
@@ -96,7 +96,7 @@ describe('Library actions', () => {
});
it('Join a public library - Favorite Libraries - [C290105]', async () => {
- await page.goToFavoriteLibraries();
+ await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(sitePublic1Admin);
await toolbar.clickJoin();
@@ -104,7 +104,7 @@ describe('Library actions', () => {
});
it('Join a moderated library - Favorite Libraries - [C290109]', async () => {
- await page.goToFavoriteLibraries();
+ await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(siteModerated1Admin);
await toolbar.clickJoin();
@@ -114,7 +114,7 @@ describe('Library actions', () => {
});
it('Leave a library - My Libraries - [C290106]', async () => {
- await page.goToMyLibraries();
+ await page.goToMyLibrariesAndWait();
await dataTable.selectItem(sitePublic2Admin);
await toolbar.clickLeave();
await page.waitForDialog();
@@ -125,7 +125,7 @@ describe('Library actions', () => {
});
it('Leave a library - Favorite Libraries - [C290110]', async () => {
- await page.goToFavoriteLibraries();
+ await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(sitePublic3Admin);
await toolbar.clickLeave();
await page.waitForDialog();
@@ -136,7 +136,7 @@ describe('Library actions', () => {
});
it('Confirmation dialog UI - [C290136]', async () => {
- await page.goToMyLibraries();
+ await page.goToMyLibrariesAndWait();
await dataTable.selectItem(sitePublic4Admin);
await toolbar.clickLeave();
await page.waitForDialog();
@@ -149,7 +149,7 @@ describe('Library actions', () => {
});
it('Cancel Leave library - [C290111]', async () => {
- await page.goToMyLibraries();
+ await page.goToMyLibrariesAndWait();
await dataTable.selectItem(sitePublic4Admin);
await toolbar.clickLeave();
await page.waitForDialog();
@@ -160,7 +160,7 @@ describe('Library actions', () => {
});
it('Leave a library - failure notification - [C290107]', async () => {
- await page.goToMyLibraries();
+ await page.goToMyLibrariesAndWait();
await dataTable.selectItem(sitePublicUser);
await toolbar.clickLeave();
await page.waitForDialog();
@@ -170,7 +170,7 @@ describe('Library actions', () => {
});
it('Cancel join - Favorite Libraries - [C290108]', async () => {
- await page.goToFavoriteLibraries();
+ await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(siteModerated2Admin);
await toolbar.clickButton('Cancel join request');
diff --git a/e2e/suites/actions/mark-favorite.test.ts b/e2e/suites/actions/mark-favorite.test.ts
index 1268b8781..9019f240b 100644
--- a/e2e/suites/actions/mark-favorite.test.ts
+++ b/e2e/suites/actions/mark-favorite.test.ts
@@ -369,7 +369,7 @@ describe('Mark items as favorites', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
await page.dataTable.doubleClickOnRowByName(siteName);
await page.dataTable.waitForHeader();
done();
@@ -457,7 +457,7 @@ describe('Mark items as favorites', () => {
});
it('Mark a library as favorite - [C289974]', async () => {
- await page.goToMyLibraries();
+ await page.goToMyLibrariesAndWait();
await dataTable.selectItem(adminSite1);
await toolbar.clickMoreActionsFavorite();
@@ -465,7 +465,7 @@ describe('Mark items as favorites', () => {
});
it('Remove a library from favorites - on My Libraries - [C289975]', async () => {
- await page.goToMyLibraries();
+ await page.goToMyLibrariesAndWait();
await dataTable.selectItem(adminSite2);
await toolbar.clickMoreActionsFavorite();
@@ -473,7 +473,7 @@ describe('Mark items as favorites', () => {
});
it('Remove a library from favorites - on Favorite Libraries - [C289976]', async () => {
- await page.goToFavoriteLibraries();
+ await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(adminSite3);
await toolbar.clickMoreActionsFavorite();
diff --git a/e2e/suites/actions/new-menu.test.ts b/e2e/suites/actions/new-menu.test.ts
index e9764eb35..f66c985cb 100755
--- a/e2e/suites/actions/new-menu.test.ts
+++ b/e2e/suites/actions/new-menu.test.ts
@@ -86,14 +86,14 @@ describe('New menu', () => {
});
it('Create folder is enabled when having enough permissions - File Libraries - [C280393]', async () => {
- await page.clickFileLibraries();
+ await page.goToMyLibrariesAndWait();
await page.dataTable.doubleClickOnRowByName(siteUser);
await page.sidenav.openNewMenu();
expect(await sidenav.menu.isCreateFolderEnabled()).toBe(true, 'Create folder is not enabled');
});
it('Create folder is disabled when not enough permissions - [C280397]', async () => {
- await page.clickFileLibraries();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteAdmin);
await sidenav.openNewMenu();
expect(await sidenav.menu.isCreateFolderEnabled()).toBe(false, 'Create folder is not disabled');
@@ -107,7 +107,7 @@ describe('New menu', () => {
});
it('Upload File option is enabled when having permissions - on File Libraries - [C290142]', async () => {
- await page.clickFileLibraries();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteUser);
await sidenav.openNewMenu();
@@ -115,7 +115,7 @@ describe('New menu', () => {
});
it('Upload File option is disabled when user cannot create content in that location - [C217146]', async () => {
- await page.clickFileLibraries();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteAdmin);
await sidenav.openNewMenu();
@@ -130,7 +130,7 @@ describe('New menu', () => {
});
it('Upload Folder option is enabled when having permissions - on File Libraries - [C290146]', async () => {
- await page.clickFileLibraries();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteUser);
await sidenav.openNewMenu();
@@ -138,7 +138,7 @@ describe('New menu', () => {
});
it('Upload Folder option is disabled when user cannot create content in that location - [C213193]', async () => {
- await page.clickFileLibraries();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteAdmin);
await sidenav.openNewMenu();
@@ -154,7 +154,7 @@ describe('New menu', () => {
});
it('Create folder disabled button tooltip - [C280398]', async () => {
- await page.clickFileLibraries();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteAdmin);
await sidenav.openNewMenu();
diff --git a/e2e/suites/actions/share-file.test.ts b/e2e/suites/actions/share-file.test.ts
index 1cec0703c..df0444caf 100755
--- a/e2e/suites/actions/share-file.test.ts
+++ b/e2e/suites/actions/share-file.test.ts
@@ -261,14 +261,14 @@ describe('Share a file', () => {
describe('from File Libraries', () => {
- const file1 = `file1-${Utils.random()}.txt`; let file1Id;
- const file2 = `file2-${Utils.random()}.txt`; let file2Id;
+ const file1 = `file1-${Utils.random()}.txt`;
+ const file2 = `file2-${Utils.random()}.txt`;
const file3 = `file3-${Utils.random()}.txt`; let file3Id;
- const file4 = `file4-${Utils.random()}.txt`; let file4Id;
+ const file4 = `file4-${Utils.random()}.txt`;
const file5 = `file5-${Utils.random()}.txt`; let file5Id;
const file6 = `file6-${Utils.random()}.txt`; let file6Id;
const file7 = `file7-${Utils.random()}.txt`; let file7Id;
- const file8 = `file8-${Utils.random()}.txt`; let file8Id;
+ const file8 = `file8-${Utils.random()}.txt`;
const file9 = `file9-${Utils.random()}.txt`; let file9Id;
const siteName = `site-${Utils.random()}`;
@@ -279,14 +279,14 @@ describe('Share a file', () => {
const docLibId = await apis.user.sites.getDocLibId(siteName);
parentInSiteId = (await apis.user.nodes.createFolder(parentInSite, docLibId)).entry.id;
- file1Id = (await apis.user.nodes.createFile(file1, parentInSiteId)).entry.id;
- file2Id = (await apis.user.nodes.createFile(file2, parentInSiteId)).entry.id;
+ await apis.user.nodes.createFile(file1, parentInSiteId);
+ await apis.user.nodes.createFile(file2, parentInSiteId);
file3Id = (await apis.user.nodes.createFile(file3, parentInSiteId)).entry.id;
- file4Id = (await apis.user.nodes.createFile(file4, parentInSiteId)).entry.id;
+ await apis.user.nodes.createFile(file4, parentInSiteId);
file5Id = (await apis.user.nodes.createFile(file5, parentInSiteId)).entry.id;
file6Id = (await apis.user.nodes.createFile(file6, parentInSiteId)).entry.id;
file7Id = (await apis.user.nodes.createFile(file7, parentInSiteId)).entry.id;
- file8Id = (await apis.user.nodes.createFile(file8, parentInSiteId)).entry.id;
+ await apis.user.nodes.createFile(file8, parentInSiteId);
file9Id = (await apis.user.nodes.createFile(file9, parentInSiteId)).entry.id;
await apis.user.shared.shareFileById(file6Id, expiryDate);
await apis.user.shared.shareFileById(file7Id, expiryDate);
@@ -295,7 +295,7 @@ describe('Share a file', () => {
});
beforeEach(async (done) => {
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
await dataTable.doubleClickOnRowByName(parentInSite);
diff --git a/e2e/suites/actions/special-permissions-available-actions.test.ts b/e2e/suites/actions/special-permissions-available-actions.test.ts
index 8955e6721..50de63aae 100755
--- a/e2e/suites/actions/special-permissions-available-actions.test.ts
+++ b/e2e/suites/actions/special-permissions-available-actions.test.ts
@@ -23,7 +23,7 @@
* along with Alfresco. If not, see .
*/
-import { LoginPage, BrowsingPage } from '../../pages/pages';
+import { LoginPage, BrowsingPage, SearchResultsPage } from '../../pages/pages';
import { SITE_VISIBILITY, SITE_ROLES, FILES } from '../../configs';
import { RepoClient } from '../../utilities/repo-client/repo-client';
import { Utils } from '../../utilities/utils';
@@ -34,16 +34,16 @@ describe('Granular permissions available actions : ', () => {
const userManager = `manager-${Utils.random()}`;
const siteName = `site-private-${Utils.random()}`;
- const file1 = `file1-${Utils.random()}.txt`;
+ const file1 = `my-file1-${Utils.random()}.txt`;
let file1Id;
- const file2 = `file2-${Utils.random()}.txt`;
+ const file2 = `my-file2-${Utils.random()}.txt`;
let file2Id;
- const file3 = `file3-${Utils.random()}.txt`;
+ const file3 = `my-file3-${Utils.random()}.txt`;
let file3Id;
- const folder1 = `folder1-${Utils.random()}`;
+ const folder1 = `my-folder1-${Utils.random()}`;
let folder1Id;
- const folder2 = `folder2-${Utils.random()}`;
+ const folder2 = `my-folder2-${Utils.random()}`;
let folder2Id;
const docxFile = FILES.docxFile;
@@ -61,8 +61,10 @@ describe('Granular permissions available actions : ', () => {
const contextMenu = dataTable.menu;
const viewer = new Viewer();
const viewerToolbar = viewer.toolbar;
+ const searchResultsPage = new SearchResultsPage();
+ const { searchInput } = searchResultsPage.header;
- beforeAll(async done => {
+ beforeAll(async (done) => {
await apis.admin.people.createUser({ username: userConsumer });
await apis.admin.people.createUser({ username: userManager });
@@ -96,7 +98,7 @@ describe('Granular permissions available actions : ', () => {
done();
});
- afterAll(async done => {
+ afterAll(async (done) => {
await apis.admin.sites.deleteSite(siteName);
done();
});
@@ -104,8 +106,10 @@ describe('Granular permissions available actions : ', () => {
xit('');
describe('toolbar displays correct actions when selecting multiple files with different granular permissions', () => {
- beforeEach(async done => {
+ beforeEach(async (done) => {
await Utils.pressEscape();
+ await dataTable.clearSelection();
+ await page.clickPersonalFiles();
done();
});
@@ -114,6 +118,7 @@ describe('Granular permissions available actions : ', () => {
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
await dataTable.selectMultipleItems([file1, file2]);
+
expect(await toolbar.isViewPresent()).toBe(false, `View is displayed for selected files`);
expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for selected files`);
expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for selected files`);
@@ -128,6 +133,7 @@ describe('Granular permissions available actions : ', () => {
it('on Shared Files - [C280477]', async () => {
await page.clickSharedFilesAndWait();
await dataTable.selectMultipleItems([file1, file2]);
+
expect(await toolbar.isViewPresent()).toBe(false, `View is displayed for selected files`);
expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for selected files`);
expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for selected files`);
@@ -142,6 +148,7 @@ describe('Granular permissions available actions : ', () => {
it('on Favorites - [C280478]', async () => {
await page.clickFavoritesAndWait();
await dataTable.selectMultipleItems([file1, file2]);
+
expect(await toolbar.isViewPresent()).toBe(false, `View is displayed for selected files`);
expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for selected files`);
expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for selected files`);
@@ -153,11 +160,30 @@ describe('Granular permissions available actions : ', () => {
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
+
+ it('on Search Results - [C291823]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFiles();
+ await searchInput.searchForTextAndCloseSearchOptions('my-file');
+ await dataTable.selectMultipleItems([file1, file2]);
+
+ expect(await toolbar.isViewPresent()).toBe(false, `View is displayed for selected files`);
+ expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for selected files`);
+ expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for selected files`);
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for selected files`);
+ expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for selected files`);
+ expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for selected files`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
+ await toolbar.closeMoreMenu();
+ });
});
describe('toolbar actions appear correctly for a file - consumer', () => {
- beforeEach(async done => {
+ beforeEach(async (done) => {
await Utils.pressEscape();
+ await dataTable.clearSelection();
+ await page.clickPersonalFiles();
done();
});
@@ -210,11 +236,32 @@ describe('Granular permissions available actions : ', () => {
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${file1}`);
await toolbar.closeMoreMenu();
});
+
+ it('on Search Results - [C291818]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFiles();
+ await searchInput.searchForTextAndCloseSearchOptions(file1);
+ await dataTable.selectItem(file1);
+
+ expect(await toolbar.isViewPresent()).toBe(true, `View is not displayed for ${file1}`);
+ expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for ${file1}`);
+ expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${file1}`);
+ expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for ${file1}`);
+
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for ${file1}`);
+ expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for ${file1}`);
+ expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${file1}`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${file1}`);
+ await toolbar.closeMoreMenu();
+ });
});
describe('toolbar actions appear correctly for a folder - consumer', () => {
- beforeEach(async done => {
+ beforeEach(async (done) => {
await Utils.pressEscape();
+ await dataTable.clearSelection();
+ await page.clickPersonalFiles();
done();
});
@@ -252,12 +299,32 @@ describe('Granular permissions available actions : ', () => {
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folder1}`);
await toolbar.closeMoreMenu();
});
+
+ it('on Search Results - [C291819]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFolders();
+ await searchInput.searchForTextAndCloseSearchOptions(folder1);
+ await dataTable.selectItem(folder1);
+
+ expect(await toolbar.isViewPresent()).toBe(false, `View is displayed for ${folder1}`);
+ expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for ${folder1}`);
+ expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${folder1}`);
+ expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for ${folder1}`);
+
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for ${folder1}`);
+ expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for ${folder1}`);
+ expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${folder1}`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folder1}`);
+ await toolbar.closeMoreMenu();
+ });
});
describe('toolbar actions appear correctly for multiple selection of files - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
+ await page.clickPersonalFiles();
done();
});
@@ -305,12 +372,30 @@ describe('Granular permissions available actions : ', () => {
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
+
+ it('on Search Results - [C291824]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFiles();
+ await searchInput.searchForTextAndCloseSearchOptions('my-file');
+ await dataTable.selectMultipleItems([file1, file2]);
+
+ expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed');
+ expect(await toolbar.isDownloadPresent()).toBe(true, 'Download is not displayed');
+ expect(await toolbar.isEditPresent()).toBe(false, 'Edit is displayed');
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed`);
+ expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`);
+ expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
+ await toolbar.closeMoreMenu();
+ });
});
describe('toolbar actions appear correctly for multiple selection of folders - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
+ await page.clickPersonalFiles();
done();
});
@@ -344,12 +429,30 @@ describe('Granular permissions available actions : ', () => {
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
+
+ it('on Search Results - [C291825]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFolders();
+ await searchInput.searchForTextAndCloseSearchOptions('my-folder');
+ await dataTable.selectMultipleItems([folder1, folder2]);
+
+ expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed');
+ expect(await toolbar.isDownloadPresent()).toBe(true, 'Download is not displayed');
+ expect(await toolbar.isEditPresent()).toBe(false, 'Edit is displayed');
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed`);
+ expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`);
+ expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
+ await toolbar.closeMoreMenu();
+ });
});
describe('toolbar actions appear correctly for when both files and folders are selected - consumer', () => {
- beforeEach(async done => {
+ beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
+ await page.clickPersonalFiles();
done();
});
@@ -383,11 +486,30 @@ describe('Granular permissions available actions : ', () => {
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
await toolbar.closeMoreMenu();
});
+
+ it('on Search Results - [C291826]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkFilesAndFolders();
+ await searchInput.searchForTextAndCloseSearchOptions('my-f');
+ await dataTable.selectMultipleItems([file1, folder1]);
+
+ expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed');
+ expect(await toolbar.isDownloadPresent()).toBe(true, 'Download is not displayed');
+ expect(await toolbar.isEditPresent()).toBe(false, 'Edit is displayed');
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed`);
+ expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed`);
+ expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
+ await toolbar.closeMoreMenu();
+ });
});
describe('context menu actions are correct for a file - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
+ await dataTable.clearSelection();
+ await page.clickPersonalFiles();
done();
});
@@ -443,11 +565,31 @@ describe('Granular permissions available actions : ', () => {
expect(await contextMenu.isEditPresent()).toBe(false, `Edit is displayed for ${file1}`);
expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${file1}`);
});
+
+ it('on Search Results - [C291829]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFiles();
+ await searchInput.searchForTextAndCloseSearchOptions(file1);
+ await dataTable.rightClickOnItem(file1);
+ expect(await contextMenu.isDownloadPresent()).toBe(true, `Download is not displayed for ${file1}`);
+ expect(await contextMenu.isViewPresent()).toBe(true, `View is not displayed for ${file1}`);
+ expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${file1}`);
+ expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed for ${file1}`);
+ expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed for ${file1}`);
+ expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${file1}`);
+ expect(await contextMenu.isSharePresent()).toBe(true, `Share is not displayed for ${file1}`);
+ expect(await contextMenu.isManageVersionsPresent()).toBe(true, `Manage Versions not displayed for ${file1}`);
+ expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed for ${file1}`);
+ expect(await contextMenu.isEditPresent()).toBe(false, `Edit is displayed for ${file1}`);
+ expect(await contextMenu.isViewDetailsPresent()).toBe(false, `View details is displayed for ${file1}`);
+ });
});
describe('context menu actions are correct for a folder - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
+ await dataTable.clearSelection();
+ await page.clickPersonalFiles();
done();
});
@@ -485,12 +627,30 @@ describe('Granular permissions available actions : ', () => {
expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions is displayed for ${folder1}`);
expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folder1}`);
});
+
+ it('on Search Results - [C291830]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFolders();
+ await searchInput.searchForTextAndCloseSearchOptions(folder1);
+ await dataTable.rightClickOnItem(folder1);
+ expect(await contextMenu.isDownloadPresent()).toBe(true, `Download is not displayed for ${folder1}`);
+ expect(await contextMenu.isEditPresent()).toBe(false, `Edit is displayed for ${folder1}`);
+ expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folder1}`);
+ expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed for ${folder1}`);
+ expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed for ${folder1}`);
+ expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed for ${folder1}`);
+ expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed for ${folder1}`);
+ expect(await contextMenu.isViewPresent()).toBe(false, `View is displayed for ${folder1}`);
+ expect(await contextMenu.isManageVersionsPresent()).toBe(false, `Manage Versions displayed for ${folder1}`);
+ expect(await contextMenu.isSharePresent()).toBe(false, `Share is displayed for ${folder1}`);
+ });
});
describe('context menu actions are correct for multiple selection of files - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
+ await page.clickPersonalFiles();
done();
});
@@ -535,12 +695,29 @@ describe('Granular permissions available actions : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed`);
});
+
+ it('on Search Results - [C291834]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFiles();
+ await searchInput.searchForTextAndCloseSearchOptions('my-file');
+ await dataTable.selectMultipleItems([file1, file2]);
+ await dataTable.rightClickOnMultipleSelection();
+
+ expect(await contextMenu.isViewPresent()).toBe(false, 'View is displayed');
+ expect(await contextMenu.isDownloadPresent()).toBe(true, 'Download is not displayed');
+ expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed`);
+ expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed`);
+ expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`);
+ expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
+ expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed`);
+ });
});
describe('context menu actions are correct for multiple selection of folders - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
+ await page.clickPersonalFiles();
done();
});
@@ -572,12 +749,29 @@ describe('Granular permissions available actions : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed`);
});
+
+ it('on Search Results - [C291835]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFolders();
+ await searchInput.searchForTextAndCloseSearchOptions('my-folder');
+ await dataTable.selectMultipleItems([folder1, folder2]);
+ await dataTable.rightClickOnMultipleSelection();
+
+ expect(await contextMenu.isViewPresent()).toBe(false, 'View is displayed');
+ expect(await contextMenu.isDownloadPresent()).toBe(true, 'Download is not displayed');
+ expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed`);
+ expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed`);
+ expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`);
+ expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
+ expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed`);
+ });
});
describe('context menu actions are correct when both files and folders are selected - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
+ await page.clickPersonalFiles();
done();
});
@@ -609,11 +803,29 @@ describe('Granular permissions available actions : ', () => {
expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed`);
});
+
+ it('on Search Results - [C291836]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkFilesAndFolders();
+ await searchInput.searchForTextAndCloseSearchOptions('my-f');
+ await dataTable.selectMultipleItems([file1, folder1]);
+ await dataTable.rightClickOnMultipleSelection();
+
+ expect(await contextMenu.isViewPresent()).toBe(false, 'View is displayed');
+ expect(await contextMenu.isDownloadPresent()).toBe(true, 'Download is not displayed');
+ expect(await contextMenu.isCopyPresent()).toBe(true, `Copy is not displayed`);
+ expect(await contextMenu.isDeletePresent()).toBe(false, `Delete is displayed`);
+ expect(await contextMenu.isMovePresent()).toBe(false, `Move is displayed`);
+ expect(await contextMenu.isFavoritePresent()).toBe(true, `Favorite is not displayed`);
+ expect(await contextMenu.isManagePermissionsPresent()).toBe(false, `Permissions is displayed`);
+ });
});
describe('toolbar actions appear correctly in the viewer - consumer', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
+ await dataTable.clearSelection();
+ await page.clickPersonalFiles();
done();
});
diff --git a/e2e/suites/actions/toolbar-multiple-selection.test.ts b/e2e/suites/actions/toolbar-multiple-selection.test.ts
index 0d484be50..83142553a 100755
--- a/e2e/suites/actions/toolbar-multiple-selection.test.ts
+++ b/e2e/suites/actions/toolbar-multiple-selection.test.ts
@@ -24,7 +24,7 @@
*/
import { browser, protractor } from 'protractor';
-import { LoginPage, BrowsingPage } from '../../pages/pages';
+import { LoginPage, BrowsingPage, SearchResultsPage } from '../../pages/pages';
import { SITE_VISIBILITY } from '../../configs';
import { RepoClient } from '../../utilities/repo-client/repo-client';
import { Utils } from '../../utilities/utils';
@@ -32,14 +32,14 @@ import { Utils } from '../../utilities/utils';
describe('Toolbar actions - multiple selection : ', () => {
const username = `user-${Utils.random()}`;
- const file1 = `file1-${Utils.random()}.txt`;
+ const file1 = `my-file1-${Utils.random()}.txt`;
let file1Id;
- const file2 = `file2-${Utils.random()}.txt`;
+ const file2 = `my-file2-${Utils.random()}.txt`;
let file2Id;
- const folder1 = `folder1-${Utils.random()}`;
+ const folder1 = `my-folder1-${Utils.random()}`;
let folder1Id;
- const folder2 = `folder2-${Utils.random()}`;
+ const folder2 = `my-folder2-${Utils.random()}`;
let folder2Id;
const fileForDelete1 = `file-${Utils.random()}.txt`;
@@ -52,10 +52,10 @@ describe('Toolbar actions - multiple selection : ', () => {
let folderForDelete2Id;
const siteName = `site-${Utils.random()}`;
- const file1InSite = `file1-${Utils.random()}.txt`;
- const file2InSite = `file2-${Utils.random()}.txt`;
- const folder1InSite = `folder1-${Utils.random()}`;
- const folder2InSite = `folder2-${Utils.random()}`;
+ const file1InSite = `my-fileInSite1-${Utils.random()}.txt`;
+ const file2InSite = `my-fileInSite2-${Utils.random()}.txt`;
+ const folder1InSite = `my-folderInSite1-${Utils.random()}`;
+ const folder2InSite = `my-folderInSite2-${Utils.random()}`;
const apis = {
admin: new RepoClient(),
@@ -65,8 +65,10 @@ describe('Toolbar actions - multiple selection : ', () => {
const loginPage = new LoginPage();
const page = new BrowsingPage();
const { dataTable, toolbar } = page;
+ const searchResultsPage = new SearchResultsPage();
+ const { searchInput } = searchResultsPage.header;
- beforeAll(async done => {
+ beforeAll(async (done) => {
await apis.admin.people.createUser({ username });
file1Id = (await apis.user.nodes.createFiles([file1])).entry.id;
@@ -100,7 +102,7 @@ describe('Toolbar actions - multiple selection : ', () => {
done();
});
- afterAll(async done => {
+ afterAll(async (done) => {
await Promise.all([
apis.user.nodes.deleteNodesById([file1Id, file2Id, folder1Id, folder2Id]),
apis.user.trashcan.emptyTrash(),
@@ -111,11 +113,11 @@ describe('Toolbar actions - multiple selection : ', () => {
xit('');
- describe('Personal Files', () => {
- beforeEach(async done => {
+ describe('on Personal Files', () => {
+ beforeEach(async (done) => {
await Utils.pressEscape();
- await page.clickPersonalFilesAndWait();
await dataTable.clearSelection();
+ await page.clickPersonalFilesAndWait();
done();
});
@@ -182,13 +184,12 @@ describe('Toolbar actions - multiple selection : ', () => {
});
});
- describe('File Libraries', () => {
- beforeEach(async done => {
+ describe('on File Libraries', () => {
+ beforeEach(async (done) => {
await Utils.pressEscape();
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
- await dataTable.clearSelection();
done();
});
@@ -202,6 +203,7 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
+ await toolbar.closeMoreMenu();
});
it('correct actions appear when multiple folders are selected - [C280462]', async () => {
@@ -214,6 +216,7 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
+ await toolbar.closeMoreMenu();
});
it('correct actions appear when both files and folders are selected - [C280463]', async () => {
@@ -226,15 +229,15 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
+ await toolbar.closeMoreMenu();
});
});
- describe('Shared Files', () => {
- beforeEach(async done => {
- // await browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform();
+ describe('on Shared Files', () => {
+ beforeEach(async (done) => {
await Utils.pressEscape();
- await page.clickSharedFilesAndWait();
await dataTable.clearSelection();
+ await page.clickSharedFilesAndWait();
done();
});
@@ -248,14 +251,15 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
+ await toolbar.closeMoreMenu();
});
});
- describe('Recent Files', () => {
- beforeEach(async done => {
+ describe('on Recent Files', () => {
+ beforeEach(async (done) => {
await Utils.pressEscape();
- await page.clickRecentFilesAndWait();
await dataTable.clearSelection();
+ await page.clickRecentFilesAndWait();
done();
});
@@ -269,15 +273,15 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
+ await toolbar.closeMoreMenu();
});
});
- describe('Favorites', () => {
- beforeEach(async done => {
- // await browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform();
+ describe('on Favorites', () => {
+ beforeEach(async (done) => {
await Utils.pressEscape();
- await page.clickFavoritesAndWait();
await dataTable.clearSelection();
+ await page.clickFavoritesAndWait();
done();
});
@@ -291,6 +295,7 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
+ await toolbar.closeMoreMenu();
});
it('correct actions appear when multiple folders are selected - [C280470]', async () => {
@@ -303,6 +308,7 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
+ await toolbar.closeMoreMenu();
});
it('correct actions appear when both files and folders are selected - [C280471]', async () => {
@@ -315,14 +321,13 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for selected files`);
expect(await toolbar.menu.isMovePresent()).toBe(true, `Move is not displayed for selected files`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
+ await toolbar.closeMoreMenu();
});
});
- describe('Trash', () => {
- beforeEach(async done => {
- await Utils.pressEscape();
+ describe('on Trash', () => {
+ beforeEach(async (done) => {
await page.clickTrashAndWait();
- await dataTable.clearSelection();
done();
});
@@ -344,4 +349,63 @@ describe('Toolbar actions - multiple selection : ', () => {
expect(await toolbar.isButtonPresent('Restore')).toBe(true, 'Restore is not displayed');
});
});
+
+ describe('on Search Results', () => {
+ beforeEach(async (done) => {
+ await Utils.pressEscape();
+ await page.clickPersonalFilesAndWait();
+ done();
+ });
+
+ it('correct actions appear when multiple files are selected - [C291820]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFiles();
+ await searchInput.searchForTextAndCloseSearchOptions('my-fileInSite');
+ await dataTable.selectMultipleItems([file1InSite, file2InSite]);
+
+ expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed for selected files');
+ expect(await toolbar.isDownloadPresent()).toBe(true, 'Download is not displayed for selected files');
+ expect(await toolbar.isEditPresent()).toBe(false, 'Edit is displayed for selected files');
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for selected files`);
+ expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for selected files`);
+ expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for selected files`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
+ await toolbar.closeMoreMenu();
+ });
+
+ it('correct actions appear when multiple folders are selected - [C291821]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFolders();
+ await searchInput.searchForTextAndCloseSearchOptions('my-folderInSite');
+ await dataTable.selectMultipleItems([folder1InSite, folder2InSite]);
+
+ expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed');
+ expect(await toolbar.isDownloadPresent()).toBe(true, 'Download is not displayed');
+ expect(await toolbar.isEditPresent()).toBe(false, 'Edit is displayed');
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for selected files`);
+ expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for selected files`);
+ expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for selected files`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
+ await toolbar.closeMoreMenu();
+ });
+
+ it('correct actions appear when both files and folders are selected - [C291822]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkFilesAndFolders();
+ await searchInput.searchForTextAndCloseSearchOptions('my-f');
+ await dataTable.selectMultipleItems([file1InSite, file2InSite, folder1InSite, folder2InSite]);
+
+ expect(await toolbar.isViewPresent()).toBe(false, 'View is displayed');
+ expect(await toolbar.isDownloadPresent()).toBe(true, 'Download is not displayed');
+ expect(await toolbar.isEditPresent()).toBe(false, 'Edit is displayed');
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for selected files`);
+ expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for selected files`);
+ expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for selected files`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for selected files`);
+ await toolbar.closeMoreMenu();
+ });
+ });
});
diff --git a/e2e/suites/actions/toolbar-single-selection.test.ts b/e2e/suites/actions/toolbar-single-selection.test.ts
index 6cd5704b6..378da0510 100755
--- a/e2e/suites/actions/toolbar-single-selection.test.ts
+++ b/e2e/suites/actions/toolbar-single-selection.test.ts
@@ -23,7 +23,7 @@
* along with Alfresco. If not, see .
*/
-import { LoginPage, BrowsingPage } from '../../pages/pages';
+import { LoginPage, BrowsingPage, SearchResultsPage } from '../../pages/pages';
import { SITE_VISIBILITY } from '../../configs';
import { RepoClient } from '../../utilities/repo-client/repo-client';
import { Utils } from '../../utilities/utils';
@@ -37,8 +37,8 @@ describe('Toolbar actions - single selection : ', () => {
const folderForDelete = `folderForDelete-${Utils.random()}`; let folderForDeleteId;
const siteName = `site-${Utils.random()}`;
- const fileInSite = `fileAdmin-${Utils.random()}.txt`;
- const folderInSite = `folderAdmin-${Utils.random()}`;
+ const fileInSite = `file-site-${Utils.random()}.txt`;
+ const folderInSite = `folder-site-${Utils.random()}`;
const adminPublic = `admin-public-${Utils.random()}`;
const adminModerated = `admin-moderated-${Utils.random()}`;
@@ -51,6 +51,8 @@ describe('Toolbar actions - single selection : ', () => {
const loginPage = new LoginPage();
const page = new BrowsingPage();
const { dataTable, toolbar } = page;
+ const searchResultsPage = new SearchResultsPage();
+ const { searchInput } = searchResultsPage.header;
beforeAll(async (done) => {
await apis.admin.people.createUser({ username });
@@ -81,6 +83,8 @@ describe('Toolbar actions - single selection : ', () => {
await apis.user.favorites.addFavoriteById('site', adminModerated);
await apis.user.sites.requestToJoin(adminModerated);
+ await apis.user.queries.waitForSites(siteName, { expect: 1 });
+
await loginPage.loginWith(username);
done();
});
@@ -99,27 +103,18 @@ describe('Toolbar actions - single selection : ', () => {
xit('');
- describe('General tests', () => {
+ describe('on Personal Files', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await dataTable.clearSelection();
+ await page.clickPersonalFilesAndWait();
done();
});
it('selected row is marked with a check circle icon - [C213134]', async () => {
- await page.clickPersonalFilesAndWait();
await dataTable.selectItem(fileUser);
expect(await dataTable.hasCheckMarkIcon(fileUser)).toBe(true, 'check mark missing');
});
- });
-
- describe('on Personal Files', () => {
- beforeEach(async (done) => {
- await Utils.pressEscape();
- await page.clickPersonalFilesAndWait();
- await dataTable.clearSelection();
- done();
- });
it('actions are not displayed when no item is selected - [C213120]', async () => {
expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`);
@@ -157,10 +152,9 @@ describe('Toolbar actions - single selection : ', () => {
describe('on File Libraries', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
- await dataTable.clearSelection();
done();
});
@@ -200,12 +194,16 @@ describe('Toolbar actions - single selection : ', () => {
describe('on a library', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
- await dataTable.clearSelection();
done();
});
- it('Available actions when a library is selected - My Libraries - [C213135]', async () => {
- await page.goToMyLibraries();
+ afterAll(async (done) => {
+ await page.clickPersonalFiles();
+ done();
+ });
+
+ it('Available actions for a library - My Libraries - [C213135]', async () => {
+ await page.goToMyLibrariesAndWait();
await dataTable.selectItem(siteName);
expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${siteName}`);
@@ -213,10 +211,11 @@ describe('Toolbar actions - single selection : ', () => {
await toolbar.openMoreMenu();
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${siteName}`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${siteName}`);
+ await toolbar.closeMoreMenu();
});
- it('Available actions when a library is selected - Favorite Libraries - user is a member - [C289892]', async () => {
- await page.goToFavoriteLibraries();
+ it('Available actions for a library - Favorite Libraries - user is a member - [C289892]', async () => {
+ await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(siteName);
expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${siteName}`);
@@ -224,10 +223,11 @@ describe('Toolbar actions - single selection : ', () => {
await toolbar.openMoreMenu();
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${siteName}`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${siteName}`);
+ await toolbar.closeMoreMenu();
});
- it('Available actions when a library is selected - Favorite Libraries - user is not a member - [C290090]', async () => {
- await page.goToFavoriteLibraries();
+ it('Available actions for a library - Favorite Libraries - user is not a member - [C290090]', async () => {
+ await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(adminPublic);
expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${adminPublic}`);
@@ -235,10 +235,11 @@ describe('Toolbar actions - single selection : ', () => {
await toolbar.openMoreMenu();
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${adminPublic}`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminPublic}`);
+ await toolbar.closeMoreMenu();
});
- it('Available actions when a library is selected - Favorite Libraries - user requested to join - [C290091]', async () => {
- await page.goToFavoriteLibraries();
+ it('Available actions for a moderated library - Favorite Libraries - user requested to join - [C290091]', async () => {
+ await page.goToFavoriteLibrariesAndWait();
await dataTable.selectItem(adminModerated);
expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${adminModerated}`);
@@ -246,6 +247,52 @@ describe('Toolbar actions - single selection : ', () => {
await toolbar.openMoreMenu();
expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${adminModerated}`);
expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminModerated}`);
+ await toolbar.closeMoreMenu();
+ });
+
+ it('Available actions for a library - Search Results - [C290084]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkLibraries();
+ await searchInput.searchForTextAndCloseSearchOptions(siteName);
+ await dataTable.selectItem(siteName);
+
+ expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
+ expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${siteName}`);
+ expect(await toolbar.isButtonPresent('Leave library')).toBe(true, `Leave is not displayed for ${siteName}`);
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${siteName}`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${siteName}`);
+ await toolbar.closeMoreMenu();
+ });
+
+ it('Available actions for a library - Search Results - user is not a member - [C290085]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkLibraries();
+ await searchInput.searchForTextAndCloseSearchOptions(adminPublic);
+ await dataTable.selectItem(adminPublic);
+
+ expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
+ expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${adminPublic}`);
+ expect(await toolbar.isButtonPresent('Join')).toBe(true, `Join is not displayed for ${adminPublic}`);
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${adminPublic}`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminPublic}`);
+ await toolbar.closeMoreMenu();
+ });
+
+ it('Available actions for a moderated library - Search Results - user requested to join - [C290086]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkLibraries();
+ await searchInput.searchForTextAndCloseSearchOptions(adminModerated);
+ await dataTable.selectItem(adminModerated);
+
+ expect(await toolbar.isEmpty()).toBe(false, 'toolbar not displayed');
+ expect(await toolbar.isViewDetailsPresent()).toBe(true, `View details is not displayed for ${adminModerated}`);
+ expect(await toolbar.isButtonPresent('Cancel join request')).toBe(true, `Cancel join is not displayed for ${adminModerated}`);
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isDeletePresent()).toBe(true, `Delete is not displayed for ${adminModerated}`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${adminModerated}`);
+ await toolbar.closeMoreMenu();
});
});
@@ -253,7 +300,6 @@ describe('Toolbar actions - single selection : ', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickSharedFilesAndWait();
- await dataTable.clearSelection();
done();
});
@@ -281,7 +327,6 @@ describe('Toolbar actions - single selection : ', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickRecentFilesAndWait();
- await dataTable.clearSelection();
done();
});
@@ -308,7 +353,6 @@ describe('Toolbar actions - single selection : ', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickFavoritesAndWait();
- await dataTable.clearSelection();
done();
});
@@ -349,7 +393,6 @@ describe('Toolbar actions - single selection : ', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
await page.clickTrashAndWait();
- await dataTable.clearSelection();
done();
});
@@ -371,4 +414,56 @@ describe('Toolbar actions - single selection : ', () => {
expect(await toolbar.isButtonPresent('Restore')).toBe(true, `Restore is not enabled for folder`);
});
});
+
+ describe('on Search Results', () => {
+ beforeEach(async (done) => {
+ await Utils.pressEscape();
+ await page.clickPersonalFilesAndWait();
+ done();
+ });
+
+ it('actions are not displayed when no item is selected - [C291815]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkFilesAndFolders();
+ await searchInput.searchForTextAndCloseSearchOptions(fileInSite);
+
+ expect(await toolbar.isEmpty()).toBe(true, `actions displayed though nothing selected`);
+ });
+
+ it('correct actions appear when a file is selected - [C291816]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFiles();
+ await searchInput.searchForTextAndCloseSearchOptions(fileUser);
+ await dataTable.selectItem(fileUser);
+
+ expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${fileUser}`);
+ expect(await toolbar.isViewPresent()).toBe(true, `View is not displayed for ${fileUser}`);
+ expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not displayed for ${fileUser}`);
+ expect(await toolbar.isEditPresent()).toBe(false, `Edit is displayed for ${fileUser}`);
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for ${fileUser}`);
+ expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for ${fileUser}`);
+ expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${fileUser}`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${fileUser}`);
+ await toolbar.closeMoreMenu();
+ });
+
+ it('correct actions appear when a folder is selected - [C291817]', async () => {
+ await searchInput.clickSearchButton();
+ await searchInput.checkOnlyFolders();
+ await searchInput.searchForTextAndCloseSearchOptions(folderUser);
+ await dataTable.selectItem(folderUser);
+
+ expect(await toolbar.isEmpty()).toBe(false, `actions not displayed for ${folderUser}`);
+ expect(await toolbar.isViewPresent()).toBe(false, `View is displayed for ${folderUser}`);
+ expect(await toolbar.isDownloadPresent()).toBe(true, `Download is not enabled for ${folderUser}`);
+ expect(await toolbar.isEditPresent()).toBe(true, `Edit is not displayed for ${folderUser}`);
+ await toolbar.openMoreMenu();
+ expect(await toolbar.menu.isCopyPresent()).toBe(true, `Copy is not displayed for ${folderUser}`);
+ expect(await toolbar.menu.isDeletePresent()).toBe(false, `Delete is displayed for ${folderUser}`);
+ expect(await toolbar.menu.isMovePresent()).toBe(false, `Move is displayed for ${folderUser}`);
+ expect(await toolbar.menu.isFavoritePresent()).toBe(true, `Favorite is not displayed for ${folderUser}`);
+ await toolbar.closeMoreMenu();
+ });
+ });
});
diff --git a/e2e/suites/actions/unshare-file.test.ts b/e2e/suites/actions/unshare-file.test.ts
index 23b342c4b..84c0c5779 100755
--- a/e2e/suites/actions/unshare-file.test.ts
+++ b/e2e/suites/actions/unshare-file.test.ts
@@ -214,7 +214,7 @@ describe('Unshare a file', () => {
beforeEach(async (done) => {
await page.refresh();
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
await dataTable.doubleClickOnRowByName(parentInSite);
@@ -733,7 +733,7 @@ describe('Unshare a file', () => {
});
it('on File Libraries - file shared by other user - [C286682]', async () => {
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(sitePrivate);
await dataTable.waitForHeader();
await dataTable.selectItem(file1);
@@ -744,7 +744,7 @@ describe('Unshare a file', () => {
});
it('on File Libraries - file shared by the user - [C286701]', async () => {
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(sitePrivate);
await dataTable.waitForHeader();
await dataTable.selectItem(file2);
diff --git a/e2e/suites/application/page-titles.test.ts b/e2e/suites/application/page-titles.test.ts
index cdb636c34..16fadbe0d 100755
--- a/e2e/suites/application/page-titles.test.ts
+++ b/e2e/suites/application/page-titles.test.ts
@@ -24,12 +24,11 @@
*/
import { browser } from 'protractor';
-import { SIDEBAR_LABELS, PAGE_TITLES } from '../../configs';
+import { PAGE_TITLES } from '../../configs';
import { LoginPage, BrowsingPage } from '../../pages/pages';
import { RepoClient } from '../../utilities/repo-client/repo-client';
import { Utils } from '../../utilities/utils';
-
describe('Page titles', () => {
const loginPage = new LoginPage();
const page = new BrowsingPage();
@@ -73,10 +72,8 @@ describe('Page titles', () => {
});
it('Personal Files page - [C217157]', async () => {
- const label = SIDEBAR_LABELS.PERSONAL_FILES;
-
- await page.sidenav.navigateToLink(label);
- expect(await browser.getTitle()).toContain(label);
+ await page.clickPersonalFiles();
+ expect(await browser.getTitle()).toContain(PAGE_TITLES.PERSONAL_FILES);
});
it('My Libraries page - [C217158]', async () => {
@@ -90,31 +87,23 @@ describe('Page titles', () => {
});
it('Shared Files page - [C217159]', async () => {
- const label = SIDEBAR_LABELS.SHARED_FILES;
-
- await page.sidenav.navigateToLink(label);
- expect(await browser.getTitle()).toContain(label);
+ await page.clickSharedFiles();
+ expect(await browser.getTitle()).toContain(PAGE_TITLES.SHARED_FILES);
});
it('Recent Files page - [C217160]', async () => {
- const label = SIDEBAR_LABELS.RECENT_FILES;
-
- await page.sidenav.navigateToLink(label);
- expect(await browser.getTitle()).toContain(label);
+ await page.clickRecentFiles();
+ expect(await browser.getTitle()).toContain(PAGE_TITLES.RECENT_FILES);
});
it('Favorites page - [C217161]', async () => {
- const label = SIDEBAR_LABELS.FAVORITES;
-
- await page.sidenav.navigateToLink(label);
- expect(await browser.getTitle()).toContain(label);
+ await page.clickFavorites();
+ expect(await browser.getTitle()).toContain(PAGE_TITLES.FAVORITES);
});
it('Trash page - [C217162]', async () => {
- const label = SIDEBAR_LABELS.TRASH;
-
- await page.sidenav.navigateToLink(label);
- expect(await browser.getTitle()).toContain(label);
+ await page.clickTrash();
+ expect(await browser.getTitle()).toContain(PAGE_TITLES.TRASH);
});
it('File Preview page - [C280415]', async () => {
diff --git a/e2e/suites/info-drawer/library-properties.test.ts b/e2e/suites/info-drawer/library-properties.test.ts
index 7e8dd04d7..34391b709 100755
--- a/e2e/suites/info-drawer/library-properties.test.ts
+++ b/e2e/suites/info-drawer/library-properties.test.ts
@@ -187,7 +187,7 @@ describe('Library properties', () => {
});
it('Warning appears when editing the name of the library by entering an existing name - [C289341]', async () => {
- await apis.user.queries.waitForApi(site.name, { expect: 1 });
+ await apis.user.queries.waitForSites(site.name, { expect: 1 });
await dataTable.selectItem(siteDup);
await page.toolbar.clickViewDetails();
diff --git a/e2e/suites/list-views/file-libraries.test.ts b/e2e/suites/list-views/file-libraries.test.ts
index c9d22662a..aea6e6be4 100755
--- a/e2e/suites/list-views/file-libraries.test.ts
+++ b/e2e/suites/list-views/file-libraries.test.ts
@@ -100,7 +100,7 @@ describe('File Libraries', () => {
describe('My Libraries', () => {
beforeEach(async (done) => {
- await page.goToMyLibraries();
+ await page.goToMyLibrariesAndWait();
done();
});
@@ -171,7 +171,7 @@ describe('File Libraries', () => {
describe('Favorite Libraries', () => {
beforeEach(async (done) => {
- await page.goToFavoriteLibraries();
+ await page.goToFavoriteLibrariesAndWait();
done();
});
diff --git a/e2e/suites/navigation/breadcrumb.test.ts b/e2e/suites/navigation/breadcrumb.test.ts
index 8f1c1626f..c1d76b3cb 100755
--- a/e2e/suites/navigation/breadcrumb.test.ts
+++ b/e2e/suites/navigation/breadcrumb.test.ts
@@ -90,13 +90,13 @@ describe('Breadcrumb', () => {
});
it('My Libraries breadcrumb main node - [C260966]', async () => {
- await page.goToMyLibraries();
+ await page.goToMyLibrariesAndWait();
expect(await breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items');
expect(await breadcrumb.getCurrentItemName()).toBe('My Libraries');
});
it('Favorite Libraries breadcrumb main node - [C289891]', async () => {
- await page.goToFavoriteLibraries();
+ await page.goToFavoriteLibrariesAndWait();
expect(await breadcrumb.getItemsCount()).toEqual(1, 'Breadcrumb has incorrect number of items');
expect(await breadcrumb.getCurrentItemName()).toBe('Favorite Libraries');
});
@@ -186,7 +186,7 @@ describe('Breadcrumb', () => {
});
describe('as admin', () => {
- const user2 = 'a_user';
+ const user2 = `user2-${Utils.random()}`;
const userFolder = `userFolder-${Utils.random()}`; let userFolderId;
const user2Api = new RepoClient(user2, user2);
diff --git a/e2e/suites/navigation/sidebar.test.ts b/e2e/suites/navigation/sidebar.test.ts
index ed61a3dff..bbc585fa6 100755
--- a/e2e/suites/navigation/sidebar.test.ts
+++ b/e2e/suites/navigation/sidebar.test.ts
@@ -40,7 +40,7 @@ describe('Sidebar', () => {
it('has "Personal Files" as default - [C217149]', async () => {
expect(await browser.getCurrentUrl()).toContain(APP_ROUTES.PERSONAL_FILES);
- expect(await sidenav.isActive(SIDEBAR_LABELS.PERSONAL_FILES)).toBe(true, 'Active link');
+ expect(await sidenav.isActive(SIDEBAR_LABELS.PERSONAL_FILES)).toBe(true, 'Default active link');
});
it('File Libraries has correct sub-categories - [C217150]', async () => {
diff --git a/e2e/suites/pagination/pag-file-libraries.test.ts b/e2e/suites/pagination/pag-file-libraries.test.ts
index 132ba6446..64433da0a 100755
--- a/e2e/suites/pagination/pag-file-libraries.test.ts
+++ b/e2e/suites/pagination/pag-file-libraries.test.ts
@@ -52,7 +52,7 @@ describe('Pagination on multiple pages on File Libraries', () => {
});
beforeEach(async (done) => {
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
done();
});
diff --git a/e2e/suites/search/search-input.test.ts b/e2e/suites/search/search-input.test.ts
index 78cfb5460..f616d47b4 100644
--- a/e2e/suites/search/search-input.test.ts
+++ b/e2e/suites/search/search-input.test.ts
@@ -38,6 +38,7 @@ describe('Search input', () => {
beforeEach(async (done) => {
await Utils.pressEscape();
+ await page.clickPersonalFiles();
done();
});
diff --git a/e2e/suites/search/search-results-libraries.test.ts b/e2e/suites/search/search-results-libraries.test.ts
index a32025903..e44431d84 100644
--- a/e2e/suites/search/search-results-libraries.test.ts
+++ b/e2e/suites/search/search-results-libraries.test.ts
@@ -102,7 +102,7 @@ describe('Search results - libraries', () => {
await apis.admin.sites.createSite(adminPrivate, SITE_VISIBILITY.PRIVATE);
await apis.user.sites.waitForApi({ expect: 12 });
- await apis.user.queries.waitForApi('lib', { expect: 2 });
+ await apis.user.queries.waitForSites('lib', { expect: 2 });
await loginPage.loginWith(username);
done();
diff --git a/e2e/suites/search/search-results.test.ts b/e2e/suites/search/search-results.test.ts
index c6024b6ae..ed400e844 100644
--- a/e2e/suites/search/search-results.test.ts
+++ b/e2e/suites/search/search-results.test.ts
@@ -52,7 +52,7 @@ describe('Search results', () => {
await apis.user.sites.createSite(site);
await apis.user.search.waitForApi(username, { expect: 1 });
- await apis.user.queries.waitForApi(site, { expect: 1 });
+ await apis.user.queries.waitForSites(site, { expect: 1 });
await loginPage.loginWith(username);
done();
diff --git a/e2e/suites/viewer/viewer-actions.test.ts b/e2e/suites/viewer/viewer-actions.test.ts
index 5f55ceeb3..a60585dc3 100755
--- a/e2e/suites/viewer/viewer-actions.test.ts
+++ b/e2e/suites/viewer/viewer-actions.test.ts
@@ -251,7 +251,7 @@ describe('Viewer actions', () => {
});
beforeEach(async (done) => {
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteName);
await dataTable.waitForHeader();
done();
diff --git a/e2e/suites/viewer/viewer-general.test.ts b/e2e/suites/viewer/viewer-general.test.ts
index 2a5f72ba5..70a3144e0 100755
--- a/e2e/suites/viewer/viewer-general.test.ts
+++ b/e2e/suites/viewer/viewer-general.test.ts
@@ -23,7 +23,6 @@
* along with Alfresco. If not, see .
*/
-import { protractor, browser } from 'protractor';
import { LoginPage, BrowsingPage } from '../../pages/pages';
import { FILES, SITE_VISIBILITY } from '../../configs';
import { RepoClient } from '../../utilities/repo-client/repo-client';
@@ -83,7 +82,7 @@ describe('Viewer general', () => {
});
afterEach(async (done) => {
- await browser.actions().sendKeys(protractor.Key.ESCAPE).perform();
+ await Utils.pressEscape();
done();
});
@@ -101,7 +100,7 @@ describe('Viewer general', () => {
it('Viewer opens when clicking the View action for a file - [C279270]', async () => {
await dataTable.selectItem(xlsxFile);
- await page.toolbar.getButtonByTitleAttribute('View').click();
+ await page.toolbar.clickView();
expect(await viewer.isViewerOpened()).toBe(true, 'Viewer is not opened');
});
@@ -139,7 +138,7 @@ describe('Viewer general', () => {
});
it('Viewer opens for a file from File Libraries - [C284633]', async () => {
- await page.clickFileLibrariesAndWait();
+ await page.goToMyLibrariesAndWait();
await dataTable.doubleClickOnRowByName(siteUser);
await dataTable.waitForHeader();
await dataTable.doubleClickOnRowByName(fileInSite);
diff --git a/e2e/utilities/repo-client/apis/queries/queries-api.ts b/e2e/utilities/repo-client/apis/queries/queries-api.ts
index 87aba7bc4..e2ce4ef67 100755
--- a/e2e/utilities/repo-client/apis/queries/queries-api.ts
+++ b/e2e/utilities/repo-client/apis/queries/queries-api.ts
@@ -42,7 +42,17 @@ export class QueriesApi extends RepoApi {
return this.alfrescoJsApi.core.queriesApi.findSites(searchTerm, data);
}
- async waitForApi(searchTerm, data) {
+ async findNodes(searchTerm: string) {
+ const data = {
+ term: searchTerm,
+ fields: ['name']
+ };
+
+ await this.apiAuth();
+ return this.alfrescoJsApi.core.queriesApi.findNodes(searchTerm, data);
+ }
+
+ async waitForSites(searchTerm, data) {
try {
const sites = async () => {
const totalItems = (await this.findSites(searchTerm)).list.pagination.totalItems;
@@ -58,4 +68,21 @@ export class QueriesApi extends RepoApi {
console.log('-----> catch queries findSites: ', error);
}
}
+
+ async waitForFilesAndFolders(searchTerm, data) {
+ try {
+ const nodes = async () => {
+ const totalItems = (await this.findNodes(searchTerm)).list.pagination.totalItems;
+ if ( totalItems !== data.expect ) {
+ return Promise.reject(totalItems);
+ } else {
+ return Promise.resolve(totalItems);
+ }
+ };
+
+ return await Utils.retryCall(nodes);
+ } catch (error) {
+ console.log('-----> catch queries findFilesAndFolders: ', error);
+ }
+ }
}
diff --git a/e2e/utilities/repo-client/apis/search/search-api.ts b/e2e/utilities/repo-client/apis/search/search-api.ts
index c1f23f4bb..135d2006b 100755
--- a/e2e/utilities/repo-client/apis/search/search-api.ts
+++ b/e2e/utilities/repo-client/apis/search/search-api.ts
@@ -47,7 +47,36 @@ export class SearchApi extends RepoApi {
await this.apiAuth();
return this.alfrescoJsApi.search.searchApi.search(data);
+ }
+ async queryNodesNames(searchTerm: string) {
+ const data = {
+ query: {
+ query: `cm:name:\"${searchTerm}*\"`,
+ language: 'afts'
+ },
+ filterQueries: [
+ { query: `+TYPE:'cm:folder' OR +TYPE:'cm:content'`}
+ ]
+ };
+
+ await this.apiAuth();
+ return this.alfrescoJsApi.search.searchApi.search(data);
+ }
+
+ async queryNodesExactNames(searchTerm: string) {
+ const data = {
+ query: {
+ query: `cm:name:\"${searchTerm}\"`,
+ language: 'afts'
+ },
+ filterQueries: [
+ { query: `+TYPE:'cm:folder' OR +TYPE:'cm:content'`}
+ ]
+ };
+
+ await this.apiAuth();
+ return this.alfrescoJsApi.search.searchApi.search(data);
}
async waitForApi(username, data) {
@@ -66,4 +95,21 @@ export class SearchApi extends RepoApi {
console.log('-----> catch search: ', error);
}
}
+
+ async waitForNodes(searchTerm: string, data) {
+ try {
+ const nodes = async () => {
+ const totalItems = (await this.queryNodesNames(searchTerm)).list.pagination.totalItems;
+ if ( totalItems !== data.expect) {
+ return Promise.reject(totalItems);
+ } else {
+ return Promise.resolve(totalItems);
+ }
+ };
+
+ return await Utils.retryCall(nodes);
+ } catch (error) {
+ console.log('-----> catch search nodes: ', error);
+ }
+ }
}
diff --git a/src/app/components/sidenav/sidenav.component.html b/src/app/components/sidenav/sidenav.component.html
index 6bda93f6a..e3792dc90 100644
--- a/src/app/components/sidenav/sidenav.component.html
+++ b/src/app/components/sidenav/sidenav.component.html
@@ -66,6 +66,7 @@