diff --git a/e2e/pages/adf/process_services/taskDetailsPage.ts b/e2e/pages/adf/process_services/taskDetailsPage.ts index 61e0709239..d6ea0a8e45 100644 --- a/e2e/pages/adf/process_services/taskDetailsPage.ts +++ b/e2e/pages/adf/process_services/taskDetailsPage.ts @@ -21,7 +21,7 @@ import { element, by, browser, protractor } from 'protractor'; import Util = require('../../../util/util'); export class TaskDetailsPage { - + 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')); @@ -108,6 +108,11 @@ export class TaskDetailsPage { Util.waitUntilElementIsVisible(this.cancelAttachForm); } + noFormIsDisplayed() { + Util.waitUntilElementIsNotOnPage(this.formContent); + return this; + } + clickCancelAttachForm() { Util.waitUntilElementIsClickable(this.cancelAttachForm); return this.cancelAttachForm.click(); @@ -126,6 +131,10 @@ export class TaskDetailsPage { Util.waitUntilElementIsVisible(this.attachFormButton); } + checkAttachFormButtonIsNotDisplayed() { + Util.waitUntilElementIsNotOnPage(this.attachFormButton); + } + clickAttachFormButton() { Util.waitUntilElementIsClickable(this.attachFormButton); return this.attachFormButton.click(); @@ -388,6 +397,16 @@ export class TaskDetailsPage { return this.completeFormTask; } + checkCompleteTaskButtonIsEnabled() { + Util.waitUntilElementIsClickable(this.completeTask); + return this; + } + + checkCompleteTaskButtonIsDisplayed() { + Util.waitUntilElementIsVisible(this.completeTask); + return this; + } + clickCompleteFormTask() { Util.waitUntilElementIsClickable(this.completeFormTask); return this.completeFormTask.click(); diff --git a/e2e/process-services/Task_details_no_form.e2e.ts b/e2e/process-services/Task_details_no_form.e2e.ts new file mode 100644 index 0000000000..a262f98ea6 --- /dev/null +++ b/e2e/process-services/Task_details_no_form.e2e.ts @@ -0,0 +1,84 @@ +/*! + * @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 { LoginPage } from '../pages/adf/loginPage'; +import { ProcessServicesPage } from '../pages/adf/process_services/processServicesPage'; +import { TasksPage } from '../pages/adf/process_services/tasksPage'; + +import CONSTANTS = require('../util/constants'); + +import Tenant = require('../models/APS/Tenant'); +import Task = require('../models/APS/Task'); + +import TestConfig = require('../test.config'); +import resources = require('../util/resources'); + +import AlfrescoApi = require('alfresco-js-api-node'); +import { UsersActions } from '../actions/users.actions'; +import { AppsActions } from '../actions/APS/apps.actions'; + +describe('Task Details - No form', () => { + + let loginPage = new LoginPage(); + let processServicesPage = new ProcessServicesPage(); + let processUserModel; + let app = resources.Files.NO_FORM_APP; + let taskPage = new TasksPage(); + let noFormMessage = 'No forms attached'; + let apps = new AppsActions(); + let importedApp; + + beforeAll(async (done) => { + let users = new UsersActions(); + + this.alfrescoJsApi = new AlfrescoApi({ + provider: 'BPM', + hostBpm: TestConfig.adf.url + }); + + await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + let newTenant = await this.alfrescoJsApi.activiti.adminTenantsApi.createTenant(new Tenant()); + + processUserModel = await users.createApsUser(this.alfrescoJsApi, newTenant.id); + + await this.alfrescoJsApi.login(processUserModel.email, processUserModel.password); + + importedApp = await apps.importPublishDeployApp(this.alfrescoJsApi, app.file_location); + + await apps.startProcess(this.alfrescoJsApi, importedApp); + + loginPage.loginToProcessServicesUsingUserModel(processUserModel); + + done(); + }); + + it('[C289311] Should attach form and complete buttons to be displayed when no form is attached', () => { + processServicesPage.goToProcessServices().goToTaskApp().clickTasksButton(); + taskPage.filtersPage().goToFilter(CONSTANTS.TASK_FILTERS.MY_TASKS); + + taskPage.tasksListPage().checkTaskIsDisplayedInTasksList(app.taskName); + taskPage.tasksListPage().selectTaskFromTasksList(app.taskName); + taskPage.taskDetails().noFormIsDisplayed(); + taskPage.taskDetails().checkCompleteTaskButtonIsDisplayed().checkCompleteTaskButtonIsEnabled(); + taskPage.taskDetails().checkAttachFormButtonIsNotDisplayed(); + expect(taskPage.taskDetails().getFormName()).toEqual(CONSTANTS.TASK_DETAILS.NO_FORM); + expect(taskPage.formFields().getNoFormMessage()).toEqual(noFormMessage); + + }); + +}) diff --git a/e2e/process-services/standalone_task.e2e.ts b/e2e/process-services/standalone_task.e2e.ts index b21dfac0da..75daee938a 100644 --- a/e2e/process-services/standalone_task.e2e.ts +++ b/e2e/process-services/standalone_task.e2e.ts @@ -76,7 +76,10 @@ describe('Start Task - Task App', () => { taskPage.createNewTask().addName(tasks[0]).clickStartButton() .then(() => { taskPage.tasksListPage().checkTaskIsDisplayedInTasksList(tasks[0]); - taskPage.formFields().noFormIsDisplayed(); + taskPage.taskDetails().noFormIsDisplayed(); + taskPage.taskDetails().checkCompleteTaskButtonIsDisplayed().checkCompleteTaskButtonIsEnabled(); + taskPage.taskDetails().checkAttachFormButtonIsDisplayed(); + taskPage.taskDetails().checkAttachFormButtonIsEnabled(); expect(taskPage.taskDetails().getFormName()).toEqual(CONSTANTS.TASK_DETAILS.NO_FORM); expect(taskPage.formFields().getNoFormMessage()).toEqual(noFormMessage); }); diff --git a/e2e/resources/apps/No form app.zip b/e2e/resources/apps/No form app.zip new file mode 100644 index 0000000000..31e392b5fe Binary files /dev/null and b/e2e/resources/apps/No form app.zip differ diff --git a/e2e/util/resources.js b/e2e/util/resources.js index 05c880a046..cc3c718c70 100644 --- a/e2e/util/resources.js +++ b/e2e/util/resources.js @@ -61,12 +61,10 @@ exports.Files = { peopleWidgetId: "label1" }, - SIMPLE_APP: { - file_location: "/resources/Simple App.zip", - title: "Simple App", - id: -18, - process_definitions: null, - start_form: null + NO_FORM_APP: { + file_location: "/resources/apps/No form app.zip", + title: "No form app", + taskName: "No form task" }, SIMPLE_APP_WITH_USER_FORM: {