From 5f17ee0b01d6b2cbdb2404dec8108c3e68b12381 Mon Sep 17 00:00:00 2001 From: rgherghelas <39947234+rgherghelas@users.noreply.github.com> Date: Mon, 18 Mar 2019 13:58:39 +0200 Subject: [PATCH] [ADF-4149] - Moved the StartTasksCloudComponent/TaskDetailsCloudComponent pages (#4407) * moved the taskDetailsCloudComponent page and startTaskCloudComponent page * update the import and fix tests * update import and tests * update exports * update imports * remove comment and index.ts * update imports and class name * remove comment * Modify task-details-cloud-component page name in task-header-cloud-component * update method * remove user-info-dialog * remove task details page * revert task details changes * revert changes --- .../process-services/taskDetailsPage.ts | 46 ------------- .../adf/process-services/taskDetailsPage.ts | 1 + .../start-task-custom-app-cloud.e2e.ts | 15 ++--- .../task-details-cloud.e2e.ts | 64 +++++++++---------- .../pages/public-api.ts | 2 + .../pages/start-tasks-cloud-component.page.ts | 30 ++++----- .../pages/task-header-cloud-component.page.ts | 33 ++++++---- 7 files changed, 77 insertions(+), 114 deletions(-) delete mode 100644 e2e/pages/adf/demo-shell/process-services/taskDetailsPage.ts rename e2e/pages/adf/process-cloud/startTasksCloudComponent.ts => lib/testing/src/lib/process-services-cloud/pages/start-tasks-cloud-component.page.ts (72%) rename e2e/pages/adf/process-cloud/taskDetailsCloudComponent.ts => lib/testing/src/lib/process-services-cloud/pages/task-header-cloud-component.page.ts (65%) diff --git a/e2e/pages/adf/demo-shell/process-services/taskDetailsPage.ts b/e2e/pages/adf/demo-shell/process-services/taskDetailsPage.ts deleted file mode 100644 index c60839c324..0000000000 --- a/e2e/pages/adf/demo-shell/process-services/taskDetailsPage.ts +++ /dev/null @@ -1,46 +0,0 @@ -/*! - * @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 { by, element } from 'protractor'; -import { Util } from '../../../../util/util'; - -export class TaskDetailsPage { - - taskDetailsHeader = element(by.css(`h4[data-automation-id='task-details-header']`)); - taskPropertyList = element(by.css('adf-cloud-task-header adf-card-view div[class="adf-property-list"]')); - - getTaskDetailsHeader() { - Util.waitUntilElementIsOnPage(this.taskPropertyList); - return this.taskDetailsHeader.getText(); - } - - checkPropertyIsDisplayed(propertyName) { - Util.waitUntilElementIsVisible(element(by.css(`div[data-automation-id="header-${propertyName}"]`))); - return element(by.css(`div[data-automation-id="header-${propertyName}"]`)); - } - - getPropertyLabel(propertyLabel) { - Util.waitUntilElementIsVisible(this.checkPropertyIsDisplayed(propertyLabel).element(by.css(`div[data-automation-id="card-textitem-label-${propertyLabel}"]`))); - return this.checkPropertyIsDisplayed(propertyLabel).element(by.css(`div[data-automation-id="card-textitem-label-${propertyLabel}"]`)).getText(); - } - - getPropertyValue(propertyValue) { - Util.waitUntilElementIsVisible(this.checkPropertyIsDisplayed(propertyValue).element(by.css(`span[data-automation-id="card-textitem-value-${propertyValue}"]`))); - return this.checkPropertyIsDisplayed(propertyValue).element(by.css(`span[data-automation-id="card-textitem-value-${propertyValue}"]`)).getText(); - } - -} diff --git a/e2e/pages/adf/process-services/taskDetailsPage.ts b/e2e/pages/adf/process-services/taskDetailsPage.ts index c61357f895..484c5c5e08 100644 --- a/e2e/pages/adf/process-services/taskDetailsPage.ts +++ b/e2e/pages/adf/process-services/taskDetailsPage.ts @@ -23,6 +23,7 @@ import { TabsPage } 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')); diff --git a/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts b/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts index 1fa95f7337..30664fcd71 100644 --- a/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts +++ b/e2e/process-services-cloud/start-task-custom-app-cloud.e2e.ts @@ -21,21 +21,21 @@ import { AppListCloudPage } from '@alfresco/adf-testing'; import TestConfig = require('../test.config'); import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; -import { StartTasksCloudComponent } from '../pages/adf/process-cloud/startTasksCloudComponent'; +import { StartTasksCloudPage } from '@alfresco/adf-testing'; import { Util } from '../util/util'; import { PeopleCloudComponent } from '../pages/adf/process-cloud/peopleCloudComponent'; -import { TaskDetailsPage } from '../pages/adf/demo-shell/process-services/taskDetailsPage'; +import { TaskHeaderCloudPage } from '@alfresco/adf-testing'; import { browser } from 'protractor'; describe('Start Task', () => { const settingsPage = new SettingsPage(); const loginSSOPage = new LoginSSOPage(); - const taskDetailsPage = new TaskDetailsPage(); + const taskHeaderCloudPage = new TaskHeaderCloudPage(); const navigationBarPage = new NavigationBarPage(); const appListCloudComponent = new AppListCloudPage(); const tasksCloudDemoPage = new TasksCloudDemoPage(); - const startTask = new StartTasksCloudComponent(); + const startTask = new StartTasksCloudPage(); const peopleCloudComponent = new PeopleCloudComponent(); const standaloneTaskName = Util.generateRandomString(5); const unassignedTaskName = Util.generateRandomString(5); @@ -157,10 +157,9 @@ describe('Start Task', () => { tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitForTableBody(); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(unassignedTaskName); let taskId = tasksCloudDemoPage.taskListCloudComponent().getIdCellValue(unassignedTaskName); - tasksCloudDemoPage.taskListCloudComponent().getRow(unassignedTaskName).click(); - expect(taskDetailsPage.getTaskDetailsHeader()).toContain(taskId); - expect(taskDetailsPage.getPropertyLabel('assignee')).toBe('Assignee'); - expect(taskDetailsPage.getPropertyValue('assignee')).toBe('No assignee'); + tasksCloudDemoPage.taskListCloudComponent().selectRow(unassignedTaskName); + expect(taskHeaderCloudPage.getTaskDetailsHeader()).toContain(taskId); + expect(taskHeaderCloudPage.getAssignee()).toBe('No assignee'); }); }); diff --git a/e2e/process-services-cloud/task-details-cloud.e2e.ts b/e2e/process-services-cloud/task-details-cloud.e2e.ts index de5db16659..ec6f5a5b4f 100644 --- a/e2e/process-services-cloud/task-details-cloud.e2e.ts +++ b/e2e/process-services-cloud/task-details-cloud.e2e.ts @@ -27,7 +27,7 @@ import { LoginSSOPage } from '@alfresco/adf-testing'; import { SettingsPage } from '../pages/adf/settingsPage'; import { AppListCloudPage } from '@alfresco/adf-testing'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; -import { TaskDetailsCloudComponent } from '../pages/adf/process-cloud/taskDetailsCloudComponent'; +import { TaskHeaderCloudPage } from '@alfresco/adf-testing'; import { browser } from 'protractor'; describe('Task Header cloud component', () => { @@ -38,7 +38,7 @@ describe('Task Header cloud component', () => { const simpleApp = 'simple-app'; let priority = 30, description = 'descriptionTask', formatDate = 'MMM DD YYYY'; - let taskDetailsCloudPage = new TaskDetailsCloudComponent(); + let taskHeaderCloudPage = new TaskHeaderCloudPage(); const settingsPage = new SettingsPage(); const loginSSOPage = new LoginSSOPage(); @@ -88,19 +88,19 @@ describe('Task Header cloud component', () => { tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(basicCreatedTaskName); tasksCloudDemoPage.taskListCloudComponent().selectRow(basicCreatedTaskName); - expect(taskDetailsCloudPage.getId()).toEqual(basicCreatedTask.entry.id); - expect(taskDetailsCloudPage.getDescription()) + expect(taskHeaderCloudPage.getId()).toEqual(basicCreatedTask.entry.id); + expect(taskHeaderCloudPage.getDescription()) .toEqual(basicCreatedTask.entry.description === null ? CONSTANTS.TASK_DETAILS.NO_DESCRIPTION : basicCreatedTask.entry.description); - expect(taskDetailsCloudPage.getStatus()).toEqual(basicCreatedTask.entry.status); - expect(taskDetailsCloudPage.getPriority()).toEqual(basicCreatedTask.entry.priority === 0 ? '' : basicCreatedTask.entry.priority.toString()); - expect(taskDetailsCloudPage.getCategory()).toEqual(basicCreatedTask.entry.category === null ? + expect(taskHeaderCloudPage.getStatus()).toEqual(basicCreatedTask.entry.status); + expect(taskHeaderCloudPage.getPriority()).toEqual(basicCreatedTask.entry.priority === 0 ? '' : basicCreatedTask.entry.priority.toString()); + expect(taskHeaderCloudPage.getCategory()).toEqual(!basicCreatedTask.entry.category ? CONSTANTS.TASK_DETAILS.NO_CATEGORY : basicCreatedTask.entry.category); - expect(taskDetailsCloudPage.getDueDate()).toEqual(basicCreatedTask.entry.dueDate === null ? + expect(taskHeaderCloudPage.getDueDate()).toEqual(basicCreatedTask.entry.dueDate === null ? CONSTANTS.TASK_DETAILS.NO_DATE : basicCreatedDate); - expect(taskDetailsCloudPage.getCreated()).toEqual(basicCreatedDate); - expect(taskDetailsCloudPage.getAssignee()).toEqual(basicCreatedTask.entry.assignee === null ? '' : basicCreatedTask.entry.assignee); - expect(taskDetailsCloudPage.getParentName()).toEqual(CONSTANTS.TASK_DETAILS.NO_PARENT); - expect(taskDetailsCloudPage.getParentTaskId()) + expect(taskHeaderCloudPage.getCreated()).toEqual(basicCreatedDate); + expect(taskHeaderCloudPage.getAssignee()).toEqual(basicCreatedTask.entry.assignee === null ? '' : basicCreatedTask.entry.assignee); + expect(taskHeaderCloudPage.getParentName()).toEqual(CONSTANTS.TASK_DETAILS.NO_PARENT); + expect(taskHeaderCloudPage.getParentTaskId()) .toEqual(basicCreatedTask.entry.parentTaskId === null ? '' : basicCreatedTask.entry.parentTaskId); }); @@ -108,19 +108,19 @@ describe('Task Header cloud component', () => { tasksCloudDemoPage.completedTasksFilter().clickTaskFilter(); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(completedTaskName); tasksCloudDemoPage.taskListCloudComponent().selectRow(completedTaskName); - expect(taskDetailsCloudPage.getId()).toEqual(completedTask.entry.id); - expect(taskDetailsCloudPage.getDescription()) + expect(taskHeaderCloudPage.getId()).toEqual(completedTask.entry.id); + expect(taskHeaderCloudPage.getDescription()) .toEqual(completedTask.entry.description === null ? CONSTANTS.TASK_DETAILS.NO_DESCRIPTION : completedTask.entry.description); - expect(taskDetailsCloudPage.getStatus()).toEqual(completedTask.entry.status); - expect(taskDetailsCloudPage.getPriority()).toEqual(completedTask.entry.priority === '0' ? '' : completedTask.entry.priority.toString()); - expect(taskDetailsCloudPage.getCategory()).toEqual(completedTask.entry.category === null ? + expect(taskHeaderCloudPage.getStatus()).toEqual(completedTask.entry.status); + expect(taskHeaderCloudPage.getPriority()).toEqual(completedTask.entry.priority === '0' ? '' : completedTask.entry.priority.toString()); + expect(taskHeaderCloudPage.getCategory()).toEqual(!completedTask.entry.category ? CONSTANTS.TASK_DETAILS.NO_CATEGORY : completedTask.entry.category); - expect(taskDetailsCloudPage.getDueDate()).toEqual(completedTask.entry.dueDate === null ? + expect(taskHeaderCloudPage.getDueDate()).toEqual(completedTask.entry.dueDate === null ? CONSTANTS.TASK_DETAILS.NO_DATE : completedCreatedDate); - expect(taskDetailsCloudPage.getCreated()).toEqual(completedCreatedDate); - expect(taskDetailsCloudPage.getAssignee()).toEqual(completedTask.entry.assignee === null ? '' : completedTask.entry.assignee); - expect(taskDetailsCloudPage.getParentName()).toEqual(CONSTANTS.TASK_DETAILS.NO_PARENT); - expect(taskDetailsCloudPage.getParentTaskId()) + expect(taskHeaderCloudPage.getCreated()).toEqual(completedCreatedDate); + expect(taskHeaderCloudPage.getAssignee()).toEqual(completedTask.entry.assignee === null ? '' : completedTask.entry.assignee); + expect(taskHeaderCloudPage.getParentName()).toEqual(CONSTANTS.TASK_DETAILS.NO_PARENT); + expect(taskHeaderCloudPage.getParentTaskId()) .toEqual(completedTask.entry.parentTaskId === null ? '' : completedTask.entry.parentTaskId); }); @@ -128,19 +128,19 @@ describe('Task Header cloud component', () => { tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(subTask.entry.name); tasksCloudDemoPage.taskListCloudComponent().selectRow(subTask.entry.name); - expect(taskDetailsCloudPage.getId()).toEqual(subTask.entry.id); - expect(taskDetailsCloudPage.getDescription()) + expect(taskHeaderCloudPage.getId()).toEqual(subTask.entry.id); + expect(taskHeaderCloudPage.getDescription()) .toEqual(subTask.entry.description === null ? CONSTANTS.TASK_DETAILS.NO_DESCRIPTION : subTask.entry.description); - expect(taskDetailsCloudPage.getStatus()).toEqual(subTask.entry.status); - expect(taskDetailsCloudPage.getPriority()).toEqual(subTask.entry.priority === 0 ? '' : subTask.entry.priority.toString()); - expect(taskDetailsCloudPage.getCategory()).toEqual(subTask.entry.category === null ? + expect(taskHeaderCloudPage.getStatus()).toEqual(subTask.entry.status); + expect(taskHeaderCloudPage.getPriority()).toEqual(subTask.entry.priority === 0 ? '' : subTask.entry.priority.toString()); + expect(taskHeaderCloudPage.getCategory()).toEqual(!subTask.entry.category ? CONSTANTS.TASK_DETAILS.NO_CATEGORY : subTask.entry.category); - expect(taskDetailsCloudPage.getDueDate()).toEqual(subTask.entry.dueDate === null ? + expect(taskHeaderCloudPage.getDueDate()).toEqual(subTask.entry.dueDate === null ? CONSTANTS.TASK_DETAILS.NO_DATE : subTaskCreatedDate); - expect(taskDetailsCloudPage.getCreated()).toEqual(subTaskCreatedDate); - expect(taskDetailsCloudPage.getAssignee()).toEqual(subTask.entry.assignee === null ? '' : subTask.entry.assignee); - expect(taskDetailsCloudPage.getParentName()).toEqual(basicCreatedTask.entry.name); - expect(taskDetailsCloudPage.getParentTaskId()) + expect(taskHeaderCloudPage.getCreated()).toEqual(subTaskCreatedDate); + expect(taskHeaderCloudPage.getAssignee()).toEqual(subTask.entry.assignee === null ? '' : subTask.entry.assignee); + expect(taskHeaderCloudPage.getParentName()).toEqual(basicCreatedTask.entry.name); + expect(taskHeaderCloudPage.getParentTaskId()) .toEqual(subTask.entry.parentTaskId === null ? '' : subTask.entry.parentTaskId); }); diff --git a/lib/testing/src/lib/process-services-cloud/pages/public-api.ts b/lib/testing/src/lib/process-services-cloud/pages/public-api.ts index 9052df9a95..2b844fe887 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/public-api.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/public-api.ts @@ -5,3 +5,5 @@ export * from './login-sso.page'; export * from '../../core/pages/user-info.page'; export * from '../app/app-list-cloud.page'; +export * from './start-tasks-cloud-component.page'; +export * from './task-header-cloud-component.page'; diff --git a/e2e/pages/adf/process-cloud/startTasksCloudComponent.ts b/lib/testing/src/lib/process-services-cloud/pages/start-tasks-cloud-component.page.ts similarity index 72% rename from e2e/pages/adf/process-cloud/startTasksCloudComponent.ts rename to lib/testing/src/lib/process-services-cloud/pages/start-tasks-cloud-component.page.ts index 79d2e09534..fc314e83e9 100644 --- a/e2e/pages/adf/process-cloud/startTasksCloudComponent.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/start-tasks-cloud-component.page.ts @@ -15,10 +15,10 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { element, by, Key, protractor } from 'protractor'; +import { BrowserVisibility } from '../../core/browser-visibility'; -export class StartTasksCloudComponent { +export class StartTasksCloudPage { name = element(by.css('input[id="name_id"]')); dueDate = element(by.css('input[id="date_id"]')); @@ -30,55 +30,55 @@ export class StartTasksCloudComponent { form = element(by.css('adf-cloud-start-task form')); checkFormIsDisplayed() { - Util.waitUntilElementIsVisible(this.form); + BrowserVisibility.waitUntilElementIsVisible(this.form); return this; } addName(userName) { - Util.waitUntilElementIsVisible(this.name); + BrowserVisibility.waitUntilElementIsVisible(this.name); this.name.clear(); this.name.sendKeys(userName); return this; } addDescription(userDescription) { - Util.waitUntilElementIsVisible(this.description); + BrowserVisibility.waitUntilElementIsVisible(this.description); this.description.sendKeys(userDescription); return this; } addPriority(userPriority) { - Util.waitUntilElementIsVisible(this.priority); + BrowserVisibility.waitUntilElementIsVisible(this.priority); this.priority.sendKeys(userPriority); return this; } addDueDate(date) { - Util.waitUntilElementIsVisible(this.dueDate); + BrowserVisibility.waitUntilElementIsVisible(this.dueDate); this.clearField(this.dueDate); this.dueDate.sendKeys(date); return this; } clickStartButton() { - Util.waitUntilElementIsVisible(this.startButton); - Util.waitUntilElementIsClickable(this.startButton); + BrowserVisibility.waitUntilElementIsVisible(this.startButton); + BrowserVisibility.waitUntilElementIsClickable(this.startButton); return this.startButton.click(); } checkStartButtonIsEnabled() { - Util.waitUntilElementIsVisible(this.startButtonEnabled); + BrowserVisibility.waitUntilElementIsVisible(this.startButtonEnabled); return this; } checkStartButtonIsDisabled() { - Util.waitUntilElementIsVisible(this.startButton.getAttribute('disabled')); + BrowserVisibility.waitUntilElementIsVisible(this.startButton.getAttribute('disabled')); return this; } clickCancelButton() { - Util.waitUntilElementIsVisible(this.cancelButton); - Util.waitUntilElementIsClickable(this.cancelButton); + BrowserVisibility.waitUntilElementIsVisible(this.cancelButton); + BrowserVisibility.waitUntilElementIsClickable(this.cancelButton); return this.cancelButton.click(); } @@ -90,7 +90,7 @@ export class StartTasksCloudComponent { checkValidationErrorIsDisplayed(error, elementRef = 'mat-error') { const errorElement = element(by.cssContainingText(elementRef, error)); - Util.waitUntilElementIsVisible(errorElement); + BrowserVisibility.waitUntilElementIsVisible(errorElement); return this; } @@ -105,7 +105,7 @@ export class StartTasksCloudComponent { } clearField(locator) { - Util.waitUntilElementIsVisible(locator); + BrowserVisibility.waitUntilElementIsVisible(locator); locator.getAttribute('value').then((result) => { for (let i = result.length; i >= 0; i--) { locator.sendKeys(protractor.Key.BACK_SPACE); diff --git a/e2e/pages/adf/process-cloud/taskDetailsCloudComponent.ts b/lib/testing/src/lib/process-services-cloud/pages/task-header-cloud-component.page.ts similarity index 65% rename from e2e/pages/adf/process-cloud/taskDetailsCloudComponent.ts rename to lib/testing/src/lib/process-services-cloud/pages/task-header-cloud-component.page.ts index bf93ac22e4..de3a940e0d 100644 --- a/e2e/pages/adf/process-cloud/taskDetailsCloudComponent.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/task-header-cloud-component.page.ts @@ -15,10 +15,10 @@ * limitations under the License. */ -import { Util } from '../../../util/util'; import { element, by } from 'protractor'; +import { BrowserVisibility } from '../../core/browser-visibility'; -export class TaskDetailsCloudComponent { +export class TaskHeaderCloudPage { assigneeField = element(by.css('span[data-automation-id*="assignee"] span')); statusField = element(by.css('span[data-automation-id*="status"] span')); @@ -31,60 +31,67 @@ export class TaskDetailsCloudComponent { endDateField = element.all(by.css('span[data-automation-id*="endDate"] span')).first(); idField = element.all(by.css('span[data-automation-id*="id"] span')).first(); descriptionField = element(by.css('span[data-automation-id*="description"] span')); + taskDetailsHeader = element(by.css(`h4[data-automation-id='task-details-header']`)); + taskPropertyList = element(by.css('adf-cloud-task-header adf-card-view div[class="adf-property-list"]')); getAssignee() { - Util.waitUntilElementIsVisible(this.assigneeField); + BrowserVisibility.waitUntilElementIsVisible(this.assigneeField); return this.assigneeField.getText(); } getStatus() { - Util.waitUntilElementIsVisible(this.statusField); + BrowserVisibility.waitUntilElementIsVisible(this.statusField); return this.statusField.getText(); } getPriority() { - Util.waitUntilElementIsVisible(this.priorityField); + BrowserVisibility.waitUntilElementIsVisible(this.priorityField); return this.priorityField.getText(); } getCategory() { - Util.waitUntilElementIsVisible(this.categoryField); + BrowserVisibility.waitUntilElementIsVisible(this.categoryField); return this.categoryField.getText(); } getParentName() { - Util.waitUntilElementIsVisible(this.parentNameField); + BrowserVisibility.waitUntilElementIsVisible(this.parentNameField); return this.parentNameField.getText(); } getParentTaskId() { - Util.waitUntilElementIsVisible(this.parentTaskIdField); + BrowserVisibility.waitUntilElementIsVisible(this.parentTaskIdField); return this.parentTaskIdField.getText(); } getEndDate() { - Util.waitUntilElementIsVisible(this.endDateField); + BrowserVisibility.waitUntilElementIsVisible(this.endDateField); return this.endDateField.getText(); } getCreated() { - Util.waitUntilElementIsVisible(this.createdField); + BrowserVisibility.waitUntilElementIsVisible(this.createdField); return this.createdField.getText(); } getId() { - Util.waitUntilElementIsVisible(this.idField); + BrowserVisibility.waitUntilElementIsVisible(this.idField); return this.idField.getText(); } getDescription() { - Util.waitUntilElementIsVisible(this.descriptionField); + BrowserVisibility.waitUntilElementIsVisible(this.descriptionField); return this.descriptionField.getText(); } getDueDate() { - Util.waitUntilElementIsVisible(this.dueDateField); + BrowserVisibility.waitUntilElementIsVisible(this.dueDateField); return this.dueDateField.getText(); } + getTaskDetailsHeader() { + BrowserVisibility.waitUntilElementIsVisible(this.taskPropertyList); + return this.taskDetailsHeader.getText(); + } + }