mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-19 17:14:57 +00:00
* update project script possible different JS-API * first commit no controll flow * second commit no controll flow * third commit no controll flow * 4 commit no controll flow * 5 commit no controll flow * 6 commit no controll flow * 7 commit no controll flow * 8 commit no controll flow * 9 commit no controll flow * 10 commit no controll flow * 11 commit no controll flow * 12 commit no controll flow * 13 commit no controll flow * 14 commit no controll flow * 15 commit no controll flow * 16 commit no controll flow * 17 commit no controll flow * 18 commit no controll flow * 19 commit no controll flow * 20 commit no controll flow * remove wdpromise, protractor promise and deferred promises * - fixed some incorrect “expect” calls - fixed some matchers - removed “return this;” when not needed - added a few more await-s * forgot a file * fix some failing tests * replaced driver calls with browser calls and enabled back waitForAngular * fix rightClick methods and hopefully some tests * fix settings-component * some more fixes for core and content tests * try to fix some more issues * linting * revert some changes, allowing download on headless chrome won’t work with multiple browser instances * fixes for Search tests * try to remove some wait calls * fix build * increase allScriptsTimeout and try another protractor and web driver version * improve navigation methods * some fixes for notification history and login sso * forgot a space * fix packages and enable some screenshots * navigation bar fixes * fix some test * some fixes for notification history and navigation bar use correct visibility method in attachFileWidget test * fix searching and another fix for navigation * try solve sso login * some more fixes * refactor async forEach into for..of * try fix for search tests * resolve rebabse problems * remove install * fix lint * fix core e2e * fix core e2e * fix core e2e * fix ps tests * fix some tests * fix core e2e * fix core e2e * fix core * fix some issues PS * fix core * fix core * fix some ps test * fix rebase issues * remove save * fix url regressed after rebase * fix url regressed after rebase * fix ps and core * fix lint * more parallel e2e ps * fix some ps cloud test * some cloud fix * fix lint * fix some test * remove files to be ignored * out-tsc * improve one cs test * fix candidate base app * fix ps test * remove click function * clean methods alrady present in browser action * try ugly wait * move wait * remove duplicate call * remove underscore * fix after review * fix imports * minor cosmetic fixes * fix comments test
249 lines
10 KiB
TypeScript
249 lines
10 KiB
TypeScript
/*!
|
|
* @license
|
|
* Copyright 2019 Alfresco Software, Ltd.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import { browser, by, element, ElementFinder } from 'protractor';
|
|
import { ProcessServicesPage } from './process-services/processServicesPage';
|
|
import { AppListCloudPage } from '@alfresco/adf-testing';
|
|
import { PeopleGroupCloudComponentPage } from './demo-shell/process-services/peopleGroupCloudComponentPage';
|
|
import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing';
|
|
|
|
export class NavigationBarPage {
|
|
|
|
linkListContainer: ElementFinder = element(by.css('.adf-sidenav-linklist'));
|
|
linkMenuChildrenContainer: ElementFinder = element(by.css('.nestedMenu'));
|
|
dataTableNestedButton = this.linkMenuChildrenContainer.element(by.css('.adf-sidenav-link[data-automation-id="Datatable"]'));
|
|
dataTableCopyContentButton = this.linkMenuChildrenContainer.element(by.css('.adf-sidenav-link[data-automation-id="Copy Content"]'));
|
|
dataTableDragAndDropButton = this.linkMenuChildrenContainer.element(by.css('.adf-sidenav-link[data-automation-id="Drag and Drop"]'));
|
|
processServicesNestedButton = this.linkMenuChildrenContainer.element(by.css('.adf-sidenav-link[data-automation-id="App"]'));
|
|
processServicesCloudHomeButton = this.linkMenuChildrenContainer.element(by.css('.adf-sidenav-link[data-automation-id="Home"]'));
|
|
themeButton: ElementFinder = element(by.css('button[data-automation-id="theme menu"]'));
|
|
themeMenuContent: ElementFinder = element(by.css('div[class*="mat-menu-panel"]'));
|
|
languageMenuButton: ElementFinder = element(by.css('button[data-automation-id="language-menu-button"]'));
|
|
appTitle: ElementFinder = element(by.css('.adf-app-title'));
|
|
menuButton: ElementFinder = element(by.css('button[data-automation-id="adf-menu-icon"]'));
|
|
formButton = this.linkMenuChildrenContainer.element(by.css('.adf-sidenav-link[data-automation-id="Form"]'));
|
|
peopleGroupCloudButton = this.linkMenuChildrenContainer.element(by.css('.adf-sidenav-link[data-automation-id="People/Group Cloud"]'));
|
|
|
|
async clickNavigationBarItem(title): Promise<void> {
|
|
const menu = element(by.css(`.adf-sidenav-link[data-automation-id="${title}"]`));
|
|
await BrowserActions.closeMenuAndDialogs();
|
|
await BrowserActions.click(menu);
|
|
}
|
|
|
|
async clickHomeButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('Home');
|
|
}
|
|
|
|
async clickContentServicesButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('Content Services');
|
|
}
|
|
|
|
async clickCardViewButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('CardView');
|
|
}
|
|
|
|
async clickHeaderDataButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('Header Data');
|
|
}
|
|
|
|
async clickTaskListButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('Task List');
|
|
}
|
|
|
|
async clickProcessCloudButton() {
|
|
await this.clickNavigationBarItem('Process Cloud');
|
|
await BrowserVisibility.waitUntilElementIsVisible(this.linkMenuChildrenContainer);
|
|
}
|
|
|
|
async navigateToProcessServicesCloudPage(): Promise<AppListCloudPage> {
|
|
await this.clickProcessCloudButton();
|
|
await BrowserActions.click(this.processServicesCloudHomeButton);
|
|
await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer);
|
|
return new AppListCloudPage();
|
|
}
|
|
|
|
async navigateToFormCloudPage(): Promise<void> {
|
|
await this.clickProcessCloudButton();
|
|
await BrowserActions.click(this.formButton);
|
|
await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer);
|
|
}
|
|
|
|
async navigateToPeopleGroupCloudPage(): Promise<PeopleGroupCloudComponentPage> {
|
|
await this.clickProcessCloudButton();
|
|
await BrowserActions.click(this.peopleGroupCloudButton);
|
|
await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer);
|
|
return new PeopleGroupCloudComponentPage();
|
|
}
|
|
|
|
async clickProcessServicesButton() {
|
|
await this.clickNavigationBarItem('Process Services');
|
|
await BrowserVisibility.waitUntilElementIsVisible(this.linkMenuChildrenContainer);
|
|
}
|
|
|
|
async navigateToProcessServicesPage(): Promise<ProcessServicesPage> {
|
|
await this.clickProcessServicesButton();
|
|
await BrowserActions.click(this.processServicesNestedButton);
|
|
await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer);
|
|
return new ProcessServicesPage();
|
|
}
|
|
|
|
async navigateToProcessServicesFormPage(): Promise<void> {
|
|
await this.clickProcessServicesButton();
|
|
await BrowserActions.click(this.formButton);
|
|
await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer);
|
|
}
|
|
|
|
async clickLoginButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('Login');
|
|
}
|
|
|
|
async clickTrashcanButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('Trashcan');
|
|
}
|
|
|
|
async clickCustomSources(): Promise<void> {
|
|
await this.clickNavigationBarItem('Custom Sources');
|
|
}
|
|
|
|
async clickDataTable(): Promise<void> {
|
|
await this.clickNavigationBarItem('Datatable');
|
|
await BrowserVisibility.waitUntilElementIsVisible(this.linkMenuChildrenContainer);
|
|
}
|
|
|
|
async navigateToDatatable(): Promise<void> {
|
|
await this.clickDataTable();
|
|
await BrowserActions.click(this.dataTableNestedButton);
|
|
await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer);
|
|
}
|
|
|
|
async navigateToDragAndDropDatatable(): Promise<void> {
|
|
await this.clickDataTable();
|
|
await BrowserActions.click(this.dataTableDragAndDropButton);
|
|
await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer);
|
|
}
|
|
|
|
async navigateToCopyContentDatatable(): Promise<void> {
|
|
await this.clickDataTable();
|
|
await BrowserActions.click(this.dataTableCopyContentButton);
|
|
await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer);
|
|
}
|
|
|
|
async clickTagButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('Tag');
|
|
}
|
|
|
|
async clickSocialButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('Social');
|
|
}
|
|
|
|
async clickSettingsButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('Settings');
|
|
}
|
|
|
|
async clickConfigEditorButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('Configuration Editor');
|
|
}
|
|
|
|
async clickOverlayViewerButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('Overlay Viewer');
|
|
}
|
|
|
|
async clickTreeViewButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('Tree View');
|
|
}
|
|
|
|
async clickIconsButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('Icons');
|
|
}
|
|
|
|
async clickAboutButton(): Promise<void> {
|
|
await this.clickNavigationBarItem('About');
|
|
}
|
|
|
|
async clickLogoutButton(): Promise<void> {
|
|
await BrowserActions.closeMenuAndDialogs();
|
|
await BrowserActions.clickExecuteScript('.adf-sidenav-link[adf-logout]');
|
|
}
|
|
|
|
async clickThemeButton(): Promise<void> {
|
|
await BrowserActions.closeMenuAndDialogs();
|
|
await BrowserActions.click(this.themeButton);
|
|
await BrowserVisibility.waitUntilElementIsVisible(this.themeMenuContent);
|
|
}
|
|
|
|
async clickOnSpecificThemeButton(themeName): Promise<void> {
|
|
const themeElement: ElementFinder = element(by.css(`button[data-automation-id="${themeName}"]`));
|
|
await BrowserActions.click(themeElement);
|
|
await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer);
|
|
}
|
|
|
|
async openContentServicesFolder(folderId): Promise<void> {
|
|
await BrowserActions.getUrl(`${browser.params.testConfig.adf.url}/files/${folderId}`);
|
|
}
|
|
|
|
async openLanguageMenu(): Promise<void> {
|
|
await BrowserActions.closeMenuAndDialogs();
|
|
await BrowserActions.click(this.languageMenuButton);
|
|
await BrowserVisibility.waitUntilElementIsVisible(this.appTitle);
|
|
}
|
|
|
|
async chooseLanguage(language): Promise<void> {
|
|
const buttonLanguage: ElementFinder = element(by.xpath(`//adf-language-menu//button[contains(text(), '${language}')]`));
|
|
await BrowserActions.click(buttonLanguage);
|
|
await BrowserVisibility.waitUntilElementIsNotPresent(this.linkMenuChildrenContainer);
|
|
}
|
|
|
|
async checkMenuButtonIsDisplayed(): Promise<void> {
|
|
await BrowserVisibility.waitUntilElementIsVisible(this.menuButton);
|
|
}
|
|
|
|
async checkMenuButtonIsNotDisplayed(): Promise<void> {
|
|
await BrowserVisibility.waitUntilElementIsNotVisible(this.menuButton);
|
|
}
|
|
|
|
async checkToolbarColor(color): Promise<void> {
|
|
const toolbarColor: ElementFinder = element(by.css(`mat-toolbar[class*="mat-${color}"]`));
|
|
await BrowserVisibility.waitUntilElementIsVisible(toolbarColor);
|
|
}
|
|
|
|
async clickAppLogo(logoTitle): Promise<void> {
|
|
const appLogo: ElementFinder = element(by.css('a[title="' + logoTitle + '"]'));
|
|
await BrowserActions.click(appLogo);
|
|
}
|
|
|
|
async clickAppLogoText(): Promise<void> {
|
|
await BrowserActions.click(this.appTitle);
|
|
}
|
|
|
|
async checkLogoTooltip(logoTooltipTitle): Promise<void> {
|
|
const logoTooltip: ElementFinder = element(by.css('a[title="' + logoTooltipTitle + '"]'));
|
|
await BrowserVisibility.waitUntilElementIsVisible(logoTooltip);
|
|
}
|
|
|
|
async openViewer(nodeId): Promise<void> {
|
|
await BrowserActions.getUrl(browser.params.testConfig.adf.url + `/files(overlay:files/${nodeId}/view`);
|
|
}
|
|
|
|
async goToSite(site): Promise<void> {
|
|
await BrowserActions.getUrl(browser.params.testConfig.adf.url + `/files/${site.entry.guid}/display/list`);
|
|
}
|
|
|
|
async scrollTo(el: ElementFinder): Promise<void> {
|
|
await browser.executeScript(`return arguments[0].scrollTop = arguments[1].offsetTop`, this.linkListContainer.getWebElement(), el.getWebElement());
|
|
}
|
|
}
|