From 15d898f0a70c62dfdcbe264b61c55054b74279fd Mon Sep 17 00:00:00 2001 From: rgherghelas <39947234+rgherghelas@users.noreply.github.com> Date: Fri, 25 Jan 2019 14:02:14 +0200 Subject: [PATCH] [ADF-3884] Added start process e2e tests (#4133) * add tests for start process * modify login parameters * fix lint error * add test * update import and unused methods * update test --- .../process-services/processCloudDemoPage.ts | 28 ++++ .../adf/process-services/startProcessPage.ts | 18 ++- .../start-process-cloud.e2e.ts | 129 ++++++++++++++++++ 3 files changed, 174 insertions(+), 1 deletion(-) create mode 100644 e2e/process-services-cloud/start-process-cloud.e2e.ts diff --git a/e2e/pages/adf/demo-shell/process-services/processCloudDemoPage.ts b/e2e/pages/adf/demo-shell/process-services/processCloudDemoPage.ts index e66ad33ec6..fe0b13197a 100644 --- a/e2e/pages/adf/demo-shell/process-services/processCloudDemoPage.ts +++ b/e2e/pages/adf/demo-shell/process-services/processCloudDemoPage.ts @@ -30,6 +30,9 @@ export class ProcessCloudDemoPage { activeFilter = element(by.css("mat-list-item[class*='active'] span")); processFilters = element(by.css("mat-expansion-panel[data-automation-id='Process Filters']")); + createButton = element(by.css('button[data-automation-id="create-button"')); + newProcessButton = element(by.css('button[data-automation-id="btn-start-process"]')); + processListCloud = new ProcessListCloudComponent(); editProcessFilterCloud = new EditProcessFilterCloudComponent(); @@ -74,4 +77,29 @@ export class ProcessCloudDemoPage { Util.waitUntilElementIsVisible(this.processFilters); return this.processFilters.click(); } + + openNewProcessForm() { + this.createButtonIsDisplayed(); + this.clickOnCreateButton(); + this.newProcessButtonIsDisplayed(); + this.newProcessButton.click(); + return this; + } + + createButtonIsDisplayed() { + Util.waitUntilElementIsVisible(this.createButton); + return this; + } + + newProcessButtonIsDisplayed() { + Util.waitUntilElementIsVisible(this.newProcessButton); + return this; + } + + clickOnCreateButton() { + Util.waitUntilElementIsClickable(this.createButton); + this.createButton.click(); + return this; + } + } diff --git a/e2e/pages/adf/process-services/startProcessPage.ts b/e2e/pages/adf/process-services/startProcessPage.ts index 2b15f6a398..875fa3c192 100644 --- a/e2e/pages/adf/process-services/startProcessPage.ts +++ b/e2e/pages/adf/process-services/startProcessPage.ts @@ -16,7 +16,7 @@ */ import { Util } from '../../../util/util'; -import { by, element } from 'protractor'; +import { by, element, Key } from 'protractor'; export class StartProcessPage { @@ -66,6 +66,7 @@ export class StartProcessPage { } clearProcessName() { + Util.waitUntilElementIsVisible(this.processNameInput); this.processNameInput.clear(); } @@ -150,4 +151,19 @@ export class StartProcessPage { Util.waitUntilElementIsVisible(errorElement); return this; } + + blur(locator) { + locator.click(); + locator.sendKeys(Key.TAB); + return this; + } + + clearField(locator) { + Util.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/process-services-cloud/start-process-cloud.e2e.ts b/e2e/process-services-cloud/start-process-cloud.e2e.ts new file mode 100644 index 0000000000..5689de1395 --- /dev/null +++ b/e2e/process-services-cloud/start-process-cloud.e2e.ts @@ -0,0 +1,129 @@ +/*! + * @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 { LoginSSOPage } from '../pages/adf/loginSSOPage'; +import { SettingsPage } from '../pages/adf/settingsPage'; +import { AppListCloudComponent } from '../pages/adf/process-cloud/appListCloudComponent'; +import TestConfig = require('../test.config'); +import { NavigationBarPage } from '../pages/adf/navigationBarPage'; +import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; +import { StartProcessPage } from '../pages/adf/process-services/startProcessPage'; +import { Util } from '../util/util'; +describe('Start Process', () => { + + const settingsPage = new SettingsPage(); + const loginSSOPage = new LoginSSOPage(); + const navigationBarPage = new NavigationBarPage(); + const appListCloudComponent = new AppListCloudComponent(); + const processCloudDemoPage = new ProcessCloudDemoPage(); + const startProcessPage = new StartProcessPage(); + const processName = Util.generateRandomString(10); + const processName255Characters = Util.generateRandomString(255); + const processNameBiggerThen255Characters = Util.generateRandomString(256); + const lengthValidationError = 'Length exceeded, 255 characters max.'; + const requiredError = 'Process Name is required', requiredProcessError = 'Process Definition is required'; + const processDefinition = 'processwithvariables'; + const user = TestConfig.adf.adminEmail, password = TestConfig.adf.adminPassword; + const appName = 'simple-app', noProcessApp = 'noprocessapp'; + let silentLogin; + + beforeAll((done) => { + silentLogin = false; + settingsPage.setProviderBpmSso(TestConfig.adf.hostBPM, TestConfig.adf.hostSso, silentLogin); + loginSSOPage.clickOnSSOButton(); + loginSSOPage.loginAPS(user, password); + navigationBarPage.navigateToProcessServicesCloudPage(); + appListCloudComponent.checkApsContainer(); + done(); + }); + + afterEach((done) => { + navigationBarPage.navigateToProcessServicesCloudPage(); + done(); + }); + + it('[C291857] Should be possible to cancel a process', () => { + appListCloudComponent.checkAppIsDisplayed(appName); + appListCloudComponent.goToApp(appName); + processCloudDemoPage.openNewProcessForm(); + startProcessPage.clearField(startProcessPage.processNameInput); + startProcessPage.blur(startProcessPage.processNameInput); + startProcessPage.checkValidationErrorIsDisplayed(requiredError); + startProcessPage.checkStartProcessButtonIsDisabled(); + startProcessPage.clickCancelProcessButton(); + }); + + it('[C291842] Should be displayed an error message if process name exceed 255 characters', () => { + appListCloudComponent.goToApp(appName); + processCloudDemoPage.openNewProcessForm(); + startProcessPage.enterProcessName(processName255Characters); + startProcessPage.checkStartProcessButtonIsEnabled(); + + startProcessPage.enterProcessName(processNameBiggerThen255Characters); + startProcessPage.blur(startProcessPage.processNameInput); + startProcessPage.checkValidationErrorIsDisplayed(lengthValidationError); + startProcessPage.checkStartProcessButtonIsDisabled(); + }); + + it('[C291855] Should NOT be able to start a process without process model', () => { + appListCloudComponent.checkAppIsDisplayed(noProcessApp); + appListCloudComponent.goToApp(noProcessApp); + processCloudDemoPage.openNewProcessForm(); + startProcessPage.checkNoProcessMessage(); + }); + + it('[C291860] Should be able to start a process', () => { + appListCloudComponent.checkAppIsDisplayed(appName); + appListCloudComponent.goToApp(appName); + processCloudDemoPage.openNewProcessForm(); + + startProcessPage.clearField(startProcessPage.processNameInput); + startProcessPage.enterProcessName(processName); + startProcessPage.checkStartProcessButtonIsEnabled(); + startProcessPage.clickStartProcessButton(); + processCloudDemoPage.clickOnProcessFilters(); + + processCloudDemoPage.runningProcessesFilter().clickProcessFilter(); + expect(processCloudDemoPage.getActiveFilterName()).toBe('Running Processes'); + processCloudDemoPage.processListCloudComponent().getDataTable().checkContentIsDisplayed(processName); + + }); + + it('[C291860] Should be able to start a process with variables', () => { + appListCloudComponent.checkAppIsDisplayed(appName); + appListCloudComponent.goToApp(appName); + processCloudDemoPage.openNewProcessForm(); + + startProcessPage.clearField(startProcessPage.processNameInput); + startProcessPage.enterProcessName(processName); + + startProcessPage.clearField(startProcessPage.processDefinition); + startProcessPage.blur(startProcessPage.processDefinition); + startProcessPage.checkValidationErrorIsDisplayed(requiredProcessError); + + startProcessPage.selectFromProcessDropdown(processDefinition); + startProcessPage.checkStartProcessButtonIsEnabled(); + startProcessPage.clickStartProcessButton(); + processCloudDemoPage.clickOnProcessFilters(); + + processCloudDemoPage.runningProcessesFilter().clickProcessFilter(); + expect(processCloudDemoPage.getActiveFilterName()).toBe('Running Processes'); + processCloudDemoPage.processListCloudComponent().getDataTable().checkContentIsDisplayed(processName); + + }); + +});