From d14810df56ca48b16cdc212675222b4bee393bdd Mon Sep 17 00:00:00 2001 From: Marouan Bentaleb <38426175+marouanbentaleb@users.noreply.github.com> Date: Mon, 10 Sep 2018 11:09:45 +0100 Subject: [PATCH] [ADF-3237] Task Details - Create a way to change and remove a form (e2e) (#3640) * Adding automated tests for Task Details - Changing/Removing Form * Updating tests and adding missing one --- .../adf/process_services/taskDetailsPage.js | 81 +++++++++- e2e/process-services/task_details_form.e2e.ts | 150 ++++++++++++++++++ 2 files changed, 229 insertions(+), 2 deletions(-) create mode 100644 e2e/process-services/task_details_form.e2e.ts diff --git a/e2e/pages/adf/process_services/taskDetailsPage.js b/e2e/pages/adf/process_services/taskDetailsPage.js index e9cc845b97..b6e1f41a12 100644 --- a/e2e/pages/adf/process_services/taskDetailsPage.js +++ b/e2e/pages/adf/process_services/taskDetailsPage.js @@ -45,12 +45,89 @@ var TaskDetailsPage = function () { var taskDetailsEmptySection = element(by.css("div[data-automation-id='adf-tasks-details--empty']")); var completeTask = element(by.css("button[id='adf-no-form-complete-button']")); var auditLogButton = element(by.css("button[adf-task-audit]")); - var noPeopleInvolved = element(by.id('no-people-label')); var cancelInvolvePeopleButton = element(by.id('close-people-search')); var involvePeopleHeader = element(by.css("div[class='search-text-header']")); var removeInvolvedPeople = element(by.css("button[data-automation-id='Remove']")); var peopleTitle = element(by.id("people-title")); + var editFormButton = element.all(by.css("mat-icon[data-automation-id='card-textitem-edit-icon-create']")).last(); + var attachFormDropdown = element(by.css("div[class='adf-attach-form-row']")); + var cancelAttachForm = element(by.id("adf-no-form-cancel-button")); + var attachFormButton = element(by.id("adf-no-form-attach-form-button")); + var disabledAttachFormButton = element(by.css("button[id='adf-no-form-attach-form-button'][disabled]")); + var removeAttachForm = element(by.id("adf-no-form-remove-button")); + var attachFormName = element(by.css("span[class='adf-form-title ng-star-inserted']")); + + this.checkSelectedForm = function (formName) { + Util.waitUntilElementIsVisible(attachFormName); + expect(formName).toEqual(attachFormName.getText()); + }; + + this.checkAttachFormButtonIsDisabled = function () { + Util.waitUntilElementIsVisible(disabledAttachFormButton); + }; + + this.checkAttachFormButtonIsEnabled = function () { + Util.waitUntilElementIsClickable(attachFormButton); + }; + + this.checkEditFormButtonIsDisplayed = function () { + Util.waitUntilElementIsVisible(editFormButton); + }; + + this.clickEditFormButton = function () { + Util.waitUntilElementIsClickable(editFormButton); + return editFormButton.click(); + }; + + this.checkAttachFormDropdownIsDisplayed = function () { + Util.waitUntilElementIsVisible(attachFormDropdown); + }; + + this.clickAttachFormDropdown = function () { + Util.waitUntilElementIsClickable(attachFormDropdown); + return attachFormDropdown.click(); + }; + + this.selectAttachFormOption = function (option) { + let selectedOption = element(by.cssContainingText("mat-option[role='option']", option)); + Util.waitUntilElementIsClickable(selectedOption); + return selectedOption.click(); + }; + + this.checkCancelAttachFormIsDisplayed = function () { + Util.waitUntilElementIsVisible(cancelAttachForm); + }; + + this.clickCancelAttachForm = function () { + Util.waitUntilElementIsClickable(cancelAttachForm); + return cancelAttachForm.click(); + }; + + this.checkRemoveAttachFormIsDisplayed = function () { + Util.waitUntilElementIsVisible(removeAttachForm); + }; + + this.clickRemoveAttachForm = function () { + Util.waitUntilElementIsClickable(removeAttachForm); + return removeAttachForm.click(); + }; + + this.checkAttachFormButtonIsDisplayed = function () { + Util.waitUntilElementIsVisible(attachFormButton); + }; + + this.clickAttachFormButton = function () { + Util.waitUntilElementIsClickable(attachFormButton); + return attachFormButton.click(); + }; + + this.checkFormIsAttached = function (formName) { + Util.waitUntilElementIsVisible(formNameField); + formNameField.getText().then(function (attachedFormName){ + expect(attachedFormName).toEqual(formName); + }) + }; this.getFormName = function () { Util.waitUntilElementIsVisible(formNameField); @@ -267,7 +344,7 @@ var TaskDetailsPage = function () { Util.waitUntilElementIsVisible(pic); return pic.getText(); } - + this.checkTaskDetails = function () { Util.waitUntilElementIsVisible(taskDetailsSection); return taskDetailsSection.getText(); diff --git a/e2e/process-services/task_details_form.e2e.ts b/e2e/process-services/task_details_form.e2e.ts new file mode 100644 index 0000000000..bc2dbee2f3 --- /dev/null +++ b/e2e/process-services/task_details_form.e2e.ts @@ -0,0 +1,150 @@ +/*! + * @license + * Copyright 2016 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 TestConfig = require('../test.config'); +import Util = require('../util/util'); + +import LoginPage = require('../pages/adf/loginPage'); +import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage'); +import TasksListPage = require('../pages/adf/process_services/tasksListPage'); +import TaskDetailsPage = require('../pages/adf/process_services/taskDetailsPage'); +import FiltersPage = require('../pages/adf/process_services/filtersPage'); + +import TaskModel = require('../models/APS/StandaloneTask'); + +import AlfrescoApi = require('alfresco-js-api-node'); +import { UsersActions } from '../actions/users.actions'; + +describe('Task Details - Form', () => { + let loginPage = new LoginPage(); + let processServicesPage = new ProcessServicesPage(); + let tasksListPage = new TasksListPage(); + let taskDetailsPage = new TaskDetailsPage(); + let filtersPage = new FiltersPage(); + let task, otherTask, user, newForm, attachedForm, otherAttachedForm; + + beforeAll(async(done) => { + let users = new UsersActions(); + let attachedFormModel = {'name': Util.generateRandomString(), 'description': '', 'modelType': 2, 'stencilSet': 0}; + let otherTaskModel = new TaskModel(); + let otherAttachedFormModel = {'name': Util.generateRandomString(), 'description': '', 'modelType': 2, 'stencilSet': 0}; + let newFormModel = {'name': Util.generateRandomString(), 'description': '', 'modelType': 2, 'stencilSet': 0}; + + this.alfrescoJsApi = new AlfrescoApi({ + provider: 'BPM', + hostBpm: TestConfig.adf.url + }); + + await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + user = await users.createTenantAndUser(this.alfrescoJsApi); + + await this.alfrescoJsApi.login(user.email, user.password); + + attachedForm = await this.alfrescoJsApi.activiti.modelsApi.createModel(attachedFormModel); + + newForm = await this.alfrescoJsApi.activiti.modelsApi.createModel(newFormModel); + + let otherEmptyTask = await this.alfrescoJsApi.activiti.taskApi.createNewTask(otherTaskModel); + + otherAttachedForm = await this.alfrescoJsApi.activiti.modelsApi.createModel(otherAttachedFormModel); + + await this.alfrescoJsApi.activiti.taskApi.attachForm(otherEmptyTask.id, {'formId': otherAttachedForm.id}); + + otherTask = await this.alfrescoJsApi.activiti.taskApi.getTask(otherEmptyTask.id); + + loginPage.loginToProcessServicesUsingUserModel(user); + + done(); + }); + + beforeEach(async (done) => { + let taskModel = new TaskModel(); + + let emptyTask = await this.alfrescoJsApi.activiti.taskApi.createNewTask(taskModel); + + await this.alfrescoJsApi.activiti.taskApi.attachForm(emptyTask.id, {'formId': attachedForm.id}); + + task = await this.alfrescoJsApi.activiti.taskApi.getTask(emptyTask.id); + + processServicesPage.goToProcessServices(); + processServicesPage.goToTaskApp(); + tasksListPage.checkTaskListIsLoaded(); + filtersPage.goToFilter('Involved Tasks'); + tasksListPage.checkTaskListIsLoaded(); + + done(); + }); + + it('[C280018] Should be able to change the form in a task', () => { + tasksListPage.selectTaskFromTasksList(task.name); + + taskDetailsPage.checkEditFormButtonIsDisplayed(); + taskDetailsPage.clickEditFormButton(); + + taskDetailsPage.checkAttachFormDropdownIsDisplayed(); + taskDetailsPage.checkAttachFormButtonIsDisabled(); + + taskDetailsPage.clickAttachFormDropdown(); + + taskDetailsPage.selectAttachFormOption(newForm.name); + taskDetailsPage.checkSelectedForm(newForm.name); + taskDetailsPage.checkAttachFormButtonIsEnabled(); + + taskDetailsPage.checkCancelAttachFormIsDisplayed(); + taskDetailsPage.clickCancelAttachForm(); + + taskDetailsPage.checkFormIsAttached(attachedForm.name); + + taskDetailsPage.checkEditFormButtonIsDisplayed(); + taskDetailsPage.clickEditFormButton(); + + taskDetailsPage.checkAttachFormDropdownIsDisplayed(); + taskDetailsPage.clickAttachFormDropdown(); + + taskDetailsPage.selectAttachFormOption(newForm.name); + + taskDetailsPage.checkAttachFormButtonIsDisplayed(); + taskDetailsPage.clickAttachFormButton(); + + taskDetailsPage.checkFormIsAttached(newForm.name); + }); + + it('[C280019] Should be able to remove the form form a task', () => { + tasksListPage.selectTaskFromTasksList(task.name); + + taskDetailsPage.checkEditFormButtonIsDisplayed(); + taskDetailsPage.clickEditFormButton(); + + taskDetailsPage.checkRemoveAttachFormIsDisplayed(); + taskDetailsPage.clickRemoveAttachForm(); + + taskDetailsPage.checkFormIsAttached('No form'); + }); + + it('[C280557] Should display task details when selecting another task while the Attach Form dialog is displayed', () => { + tasksListPage.selectTaskFromTasksList(task.name); + + taskDetailsPage.checkEditFormButtonIsDisplayed(); + taskDetailsPage.clickEditFormButton(); + + taskDetailsPage.checkRemoveAttachFormIsDisplayed(); + + tasksListPage.selectTaskFromTasksList(otherTask.name); + taskDetailsPage.checkFormIsAttached(otherAttachedForm.name); + }); +});