/*! * @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 { element, by, Key, ElementFinder } from 'protractor'; import { BrowserVisibility, BrowserActions, DropdownPage } from '@alfresco/adf-testing'; export class StartTaskDialogPage { name = element(by.css('input[id="name_id"]')); dueDate = element(by.css('input[id="date_id"]')); description = element(by.css('textarea[id="description_id"]')); assignee = element(by.css('div#people-widget-content input')); startButton = element(by.css('button[id="button-start"]')); startButtonEnabled = element(by.css('button[id="button-start"]:not(disabled)')); cancelButton = element(by.css('button[id="button-cancel"]')); selectFormDropdown = new DropdownPage(element(by.css('mat-select[id="form_id"]'))); selectAssigneeDropdown = new DropdownPage(); async addName(userName: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.name); await this.name.clear(); await this.name.sendKeys(userName); } async addDescription(userDescription: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.description); await this.description.sendKeys(userDescription); } async addDueDate(date: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.dueDate); await this.dueDate.sendKeys(date); } async addAssignee(name: string): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.assignee); await this.assignee.sendKeys(name); await this.selectAssigneeFromList(name); } async selectAssigneeFromList(name: string): Promise { await this.selectAssigneeDropdown.selectOption(name); } async getAssignee(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.assignee); return this.assignee.getAttribute('data-placeholder'); } async selectForm(form): Promise { await this.selectFormDropdown.selectDropdownOption(form); } async clickStartButton(): Promise { return BrowserActions.click(this.startButton); } async checkStartButtonIsEnabled(): Promise { await BrowserVisibility.waitUntilElementIsVisible(this.startButtonEnabled); } async checkStartButtonIsDisabled(): Promise { await BrowserVisibility.waitUntilElementIsVisible(element(by.css('button[id="button-start"]:disabled'))); } async clickCancelButton(): Promise { await BrowserActions.click(this.cancelButton); } async blur(locator: ElementFinder): Promise { await BrowserActions.click(locator); await locator.sendKeys(Key.TAB); } async checkValidationErrorIsDisplayed(error: string, elementRef = 'mat-error'): Promise { const errorElement = element(by.cssContainingText(elementRef, error)); await BrowserVisibility.waitUntilElementIsVisible(errorElement); } }