Eugenio Romano 5e54cd4d43
Increase timeout and modify login async (#4795)
* increase timeout and modify login async

* run e2e if testing is changed

* improve cdk fix

* fix travis update projects

* disable ghostMode lite server

* lint fix

* fix timeout

* multiple try

* Update content-services-e2e.sh

* Update search-e2e.sh

* Update process-services-e2e.sh

* Update core-e2e.sh

* Update protractor.conf.ts

* fix unit

* remove async

* increqase notification time

* 3 parallel

* dix path issue in save

* small refactor protractor ts

* fix save

* create license check first script adf cli

* modify regex check

* refactor notification history component

* decrease notification

* fix notification message problem

* fix test

* update packages wit high risk

* revert cahnge login sso e2e

* fix dep

* fix documentation duplication and issue

* fix after review

* fix after review

* try 6 parallel test

* back to 3 parallel test no real time improve with 6
2019-06-06 16:47:50 +01:00

373 lines
13 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 { AppSettingsToggles } from './dialog/appSettingsToggles';
import { element, by, browser } from 'protractor';
import { TabsPage } from '@alfresco/adf-testing';
import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing';
export class TaskDetailsPage {
appSettingsTogglesClass = new AppSettingsToggles();
formContent = element(by.css('adf-form'));
formNameField = element(by.css('span[data-automation-id*="formName"] span'));
assigneeField = element(by.css('span[data-automation-id*="assignee"] span'));
statusField = element(by.css('span[data-automation-id*="status"] span'));
categoryField = element(by.css('span[data-automation-id*="category"] span'));
parentNameField = element(by.css('span[data-automation-id*="parentName"] span'));
parentTaskIdField = element(by.css('span[data-automation-id*="parentTaskId"] span'));
durationField = element(by.css('span[data-automation-id*="duration"] span'));
endDateField = element.all(by.css('span[data-automation-id*="endDate"] span')).first();
createdField = element(by.css('span[data-automation-id="card-dateitem-created"] span'));
idField = element.all(by.css('span[data-automation-id*="id"] span')).first();
descriptionField = element(by.css('span[data-automation-id*="description"] span'));
dueDateField = element(by.css('span[data-automation-id*="dueDate"] span'));
activitiesTitle = element(by.css('div[class*="adf-info-drawer-layout-header-title"] div'));
commentField = element(by.id('comment-input'));
addCommentButton = element(by.css('[data-automation-id="comments-input-add"]'));
involvePeopleButton = element(by.css('div[class*="add-people"]'));
addPeopleField = element(by.css('input[data-automation-id="adf-people-search-input"]'));
addInvolvedUserButton = element(by.css('button[id="add-people"] span'));
emailInvolvedUser = by.xpath('following-sibling::div[@class="adf-people-email"]');
taskDetailsInfoDrawer = element(by.tagName('adf-info-drawer'));
taskDetailsSection = element(by.css('div[data-automation-id="adf-tasks-details"]'));
taskDetailsEmptySection = element(by.css('div[data-automation-id="adf-tasks-details--empty"]'));
completeTask = element(by.css('button[id="adf-no-form-complete-button"]'));
completeFormTask = element(by.css('button[id="adf-form-complete"]'));
taskDetailsTitle = element(by.css('h2[class="adf-activiti-task-details__header"] span'));
auditLogButton = element(by.css('button[adf-task-audit]'));
noPeopleInvolved = element(by.id('no-people-label'));
cancelInvolvePeopleButton = element(by.id('close-people-search'));
involvePeopleHeader = element(by.css('div[class="adf-search-text-header"]'));
removeInvolvedPeople = element(by.css('button[data-automation-id="Remove"]'));
peopleTitle = element(by.id('people-title'));
attachFormDropdown = element(by.css('div[class="adf-attach-form-row"]'));
cancelAttachForm = element(by.id('adf-no-form-cancel-button'));
attachFormButton = element(by.id('adf-no-form-attach-form-button'));
disabledAttachFormButton = element(by.css('button[id="adf-no-form-attach-form-button"][disabled]'));
removeAttachForm = element(by.id('adf-no-form-remove-button'));
attachFormName = element(by.css('span[class="adf-form-title ng-star-inserted"]'));
emptyTaskDetails = element(by.css('adf-task-details > div > div'));
getTaskDetailsTitle() {
return BrowserActions.getText(this.taskDetailsTitle);
}
checkSelectedForm(formName) {
BrowserVisibility.waitUntilElementIsVisible(this.attachFormName);
expect(formName).toEqual(this.attachFormName.getText());
}
checkAttachFormButtonIsDisabled() {
BrowserVisibility.waitUntilElementIsVisible(this.disabledAttachFormButton);
}
checkAttachFormButtonIsEnabled() {
BrowserVisibility.waitUntilElementIsClickable(this.attachFormButton);
}
checkAttachFormDropdownIsDisplayed() {
BrowserVisibility.waitUntilElementIsVisible(this.attachFormDropdown);
}
clickAttachFormDropdown() {
return BrowserActions.click(this.attachFormDropdown);
}
selectAttachFormOption(option) {
const selectedOption = element(by.cssContainingText('mat-option[role="option"]', option));
return BrowserActions.click(selectedOption);
}
checkCancelAttachFormIsDisplayed() {
BrowserVisibility.waitUntilElementIsVisible(this.cancelAttachForm);
}
noFormIsDisplayed() {
BrowserVisibility.waitUntilElementIsNotOnPage(this.formContent);
return this;
}
clickCancelAttachForm() {
return BrowserActions.click(this.cancelAttachForm);
}
checkRemoveAttachFormIsDisplayed() {
BrowserVisibility.waitUntilElementIsVisible(this.removeAttachForm);
}
clickRemoveAttachForm() {
return BrowserActions.click(this.removeAttachForm);
}
checkAttachFormButtonIsDisplayed() {
BrowserVisibility.waitUntilElementIsVisible(this.attachFormButton);
}
checkAttachFormButtonIsNotDisplayed() {
BrowserVisibility.waitUntilElementIsNotOnPage(this.attachFormButton);
}
clickAttachFormButton() {
return BrowserActions.click(this.attachFormButton);
}
checkFormIsAttached(formName) {
BrowserVisibility.waitUntilElementIsVisible(this.formNameField);
this.formNameField.getText().then((attachedFormName) => {
expect(attachedFormName).toEqual(formName);
});
}
getFormName() {
return BrowserActions.getText(this.formNameField);
}
clickForm() {
BrowserActions.closeMenuAndDialogs();
BrowserActions.click(this.formNameField);
}
getAssignee() {
return BrowserActions.getText(this.assigneeField);
}
getStatus() {
return BrowserActions.getText(this.statusField);
}
getCategory() {
return BrowserActions.getText(this.categoryField);
}
getParentName() {
return BrowserActions.getText(this.parentNameField);
}
getParentTaskId() {
return BrowserActions.getText(this.parentTaskIdField);
}
getDuration() {
return BrowserActions.getText(this.durationField);
}
getEndDate() {
return BrowserActions.getText(this.endDateField);
}
getCreated() {
return BrowserActions.getText(this.createdField);
}
getId() {
return BrowserActions.getText(this.idField);
}
getDescription() {
return BrowserActions.getText(this.descriptionField);
}
getDueDate() {
return BrowserActions.getText(this.dueDateField);
}
getTitle() {
return BrowserActions.getText(this.activitiesTitle);
}
selectActivityTab() {
const tabsPage = new TabsPage;
tabsPage.clickTabByTitle('Activity');
return this;
}
selectDetailsTab() {
const tabsPage = new TabsPage;
tabsPage.clickTabByTitle('Details');
return this;
}
addComment(comment) {
BrowserVisibility.waitUntilElementIsVisible(this.commentField);
this.commentField.sendKeys(comment);
BrowserActions.click(this.addCommentButton);
return this;
}
checkCommentIsDisplayed(comment) {
const row = element(by.cssContainingText('div[id="comment-message"]', comment));
BrowserVisibility.waitUntilElementIsVisible(row);
return this;
}
clickInvolvePeopleButton() {
BrowserVisibility.waitUntilElementIsVisible(this.involvePeopleButton);
BrowserVisibility.waitUntilElementIsClickable(this.involvePeopleButton);
browser.actions().mouseMove(this.involvePeopleButton).perform();
BrowserActions.click(this.involvePeopleButton);
return this;
}
typeUser(user) {
BrowserVisibility.waitUntilElementIsVisible(this.addPeopleField);
this.addPeopleField.sendKeys(user);
return this;
}
selectUserToInvolve(user) {
this.getRowsUser(user).click();
return this;
}
checkUserIsSelected(user) {
const row = element(by.cssContainingText('div[class*="search-list-container"] div[class*="people-full-name"]', user));
BrowserVisibility.waitUntilElementIsVisible(row);
return this;
}
clickAddInvolvedUserButton() {
BrowserActions.click(this.addInvolvedUserButton);
return this;
}
getRowsUser(user) {
const row = element(by.cssContainingText('div[class*="people-full-name"]', user));
BrowserVisibility.waitUntilElementIsVisible(row);
return row;
}
removeInvolvedUser(user) {
const row = this.getRowsUser(user).element(by.xpath('ancestor::div[contains(@class, "adf-datatable-row")]'));
BrowserVisibility.waitUntilElementIsVisible(row);
row.element(by.css('button[data-automation-id="action_menu_0"]')).click();
BrowserVisibility.waitUntilElementIsVisible(this.removeInvolvedPeople);
return BrowserActions.click(this.removeInvolvedPeople);
}
getInvolvedUserEmail(user) {
const email = this.getRowsUser(user).element(this.emailInvolvedUser);
return BrowserActions.getText(email);
}
clickAuditLogButton() {
BrowserActions.click(this.auditLogButton);
}
appSettingsToggles() {
return this.appSettingsTogglesClass;
}
taskInfoDrawerIsDisplayed() {
BrowserVisibility.waitUntilElementIsVisible(this.taskDetailsInfoDrawer);
}
taskInfoDrawerIsNotDisplayed() {
BrowserVisibility.waitUntilElementIsNotOnPage(this.taskDetailsInfoDrawer);
}
checkNoPeopleIsInvolved() {
BrowserVisibility.waitUntilElementIsVisible(this.noPeopleInvolved);
return this;
}
clickCancelInvolvePeopleButton() {
BrowserActions.click(this.cancelInvolvePeopleButton);
return this;
}
getInvolvePeopleHeader() {
return BrowserActions.getText(this.involvePeopleHeader);
}
getInvolvePeoplePlaceholder() {
BrowserVisibility.waitUntilElementIsVisible(this.addPeopleField);
return this.addPeopleField.getAttribute('placeholder');
}
checkCancelButtonIsEnabled() {
BrowserVisibility.waitUntilElementIsVisible(this.cancelInvolvePeopleButton);
BrowserVisibility.waitUntilElementIsClickable(this.cancelInvolvePeopleButton);
return this;
}
checkAddPeopleButtonIsEnabled() {
BrowserVisibility.waitUntilElementIsVisible(this.addInvolvedUserButton);
BrowserVisibility.waitUntilElementIsClickable(this.addInvolvedUserButton);
return this;
}
noUserIsDisplayedInSearchInvolvePeople(user) {
BrowserVisibility.waitUntilElementIsNotOnPage(element(by.cssContainingText('div[class*="people-full-name"]', user)));
return this;
}
getInvolvedPeopleTitle() {
return BrowserActions.getText(this.peopleTitle);
}
checkTaskDetailsEmpty() {
return BrowserActions.getText(this.taskDetailsEmptySection);
}
checkTaskDetailsDisplayed() {
BrowserVisibility.waitUntilElementIsVisible(this.taskDetailsSection);
BrowserVisibility.waitUntilElementIsVisible(this.formNameField);
BrowserVisibility.waitUntilElementIsVisible(this.assigneeField);
BrowserVisibility.waitUntilElementIsVisible(this.statusField);
BrowserVisibility.waitUntilElementIsVisible(this.categoryField);
BrowserVisibility.waitUntilElementIsVisible(this.parentNameField);
BrowserVisibility.waitUntilElementIsVisible(this.createdField);
BrowserVisibility.waitUntilElementIsVisible(this.idField);
BrowserVisibility.waitUntilElementIsVisible(this.descriptionField);
BrowserVisibility.waitUntilElementIsVisible(this.dueDateField);
BrowserVisibility.waitUntilElementIsVisible(this.activitiesTitle);
return BrowserActions.getText(this.taskDetailsSection);
}
clickCompleteTask() {
return BrowserActions.click(this.completeTask);
}
checkCompleteFormButtonIsDisplayed() {
BrowserVisibility.waitUntilElementIsVisible(this.completeFormTask);
return this.completeFormTask;
}
checkCompleteTaskButtonIsEnabled() {
BrowserVisibility.waitUntilElementIsClickable(this.completeTask);
return this;
}
checkCompleteTaskButtonIsDisplayed() {
BrowserVisibility.waitUntilElementIsVisible(this.completeTask);
return this;
}
clickCompleteFormTask() {
return BrowserActions.click(this.completeFormTask);
}
getEmptyTaskDetailsMessage() {
return BrowserActions.getText(this.emptyTaskDetails);
}
}