[ADF-3596]Create automated tests for start process (#3834)

* Add automated tests for Start a process

* Deleted a shadow variable.

* Fixing a test

* Modified the testrail ID of two tests.

* Resolve lint errors.
This commit is contained in:
cristinaj
2018-09-28 12:29:33 +03:00
committed by Eugenio Romano
parent 711d51dd1d
commit 80e0a966ad
4 changed files with 154 additions and 20 deletions

View File

@@ -26,10 +26,21 @@ var StartProcessPage = function () {
var formStartProcessButton = element(by.css('button[data-automation-id="adf-form-start process"]'));
var startProcessButton = element(by.css("button[data-automation-id='btn-start']"));
var noProcess = element(by.id('no-process-message'));
var processDefinition = element(by.css("input[id='processDefinitionName']"));
var processDefinitionOptionsPanel = element(by.css("div[class*='processDefinitionOptions']"));
this.checkNoProcessMessage = function () {
Util.waitUntilElementIsVisible(noProcess);
}
};
this.pressDownArrowAndEnter = function () {
processDefinition.sendKeys(protractor.Key.ARROW_DOWN);
return browser.actions().sendKeys(protractor.Key.ENTER).perform();
};
this.checkNoProcessDefinitionOptionIsDisplayed = function () {
Util.waitUntilElementIsNotOnPage(processDefinitionOptionsPanel);
};
this.getDefaultName = function () {
Util.waitUntilElementIsVisible(defaultProcessName);
@@ -52,9 +63,30 @@ var StartProcessPage = function () {
};
this.selectFromProcessDropdown = function (name) {
this.clickProcessDropdownArrow();
return this.selectOption(name);
};
this.clickProcessDropdownArrow = function() {
Util.waitUntilElementIsVisible(selectProcessDropdownArrow);
Util.waitUntilElementIsClickable(selectProcessDropdownArrow)
selectProcessDropdownArrow.click();
};
this.checkOptionIsDisplayed = function (name) {
var selectProcessDropdown = element(by.cssContainingText('.mat-option-text', name));
Util.waitUntilElementIsVisible(selectProcessDropdown);
Util.waitUntilElementIsClickable(selectProcessDropdown);
return this;
};
this.checkOptionIsNotDisplayed = function (name) {
var selectProcessDropdown = element(by.cssContainingText('.mat-option-text', name));
Util.waitUntilElementIsNotOnPage(selectProcessDropdown);
return this;
};
this.selectOption = function (name) {
var selectProcessDropdown = element(by.cssContainingText('.mat-option-text', name));
Util.waitUntilElementIsVisible(selectProcessDropdown);
Util.waitUntilElementIsClickable(selectProcessDropdown);
@@ -62,6 +94,18 @@ var StartProcessPage = function () {
return this;
};
this.typeProcessDefinition = function (name) {
Util.waitUntilElementIsVisible(processDefinition);
Util.waitUntilElementIsClickable(processDefinition);
processDefinition.sendKeys(name);
return this;
};
this.getProcessDefinitionValue = function () {
Util.waitUntilElementIsVisible(processDefinition);
return processDefinition.getAttribute('value');
};
this.clickCancelProcessButton = function () {
Util.waitUntilElementIsVisible(cancelProcessButton);
cancelProcessButton.click();
@@ -81,6 +125,10 @@ var StartProcessPage = function () {
expect(startProcessButton.isEnabled()).toBe(false);
};
this.clickStartProcessButton = function () {
return startProcessButton.click();
};
};
module.exports = StartProcessPage;

View File

@@ -27,6 +27,7 @@ import ProcessFiltersPage = require('../pages/adf/process_services/processFilter
import AppNavigationBarPage = require('../pages/adf/process_services/appNavigationBarPage');
import ProcessDetailsPage = require('../pages/adf/process_services/processDetailsPage');
import { AttachmentListPage } from '../pages/adf/process_services/attachmentListPage';
import { AppsActions } from '../actions/APS/apps.actions';
import User = require('../models/APS/User');
import AppPublish = require('../models/APS/AppPublish');
@@ -49,8 +50,11 @@ describe('Start Process Component', () => {
let appNavigationBarPage = new AppNavigationBarPage();
let processDetailsPage = new ProcessDetailsPage();
let attachmentListPage = new AttachmentListPage();
const apps = new AppsActions();
let app = resources.Files.APP_WITH_PROCESSES;
let appId, procUserModel, secondProcUserModel, tenantId;
let simpleApp = resources.Files.WIDGETS_SMOKE_TEST;
let appId, procUserModel, secondProcUserModel, tenantId, simpleAppCreated;
let processModelWithSe = 'process_with_se', processModelWithoutSe = 'process_without_se';
let auditLogFile = path.join('../e2e/download/', 'Audit.pdf');
@@ -83,17 +87,12 @@ describe('Start Process Component', () => {
await this.alfrescoJsApiUserTwo.login(secondProcUserModel.email, secondProcUserModel.password);
let pathFile = path.join(TestConfig.main.rootPath + app.file_location);
let file = fs.createReadStream(pathFile);
let appCreated = await apps.importPublishDeployApp(this.alfrescoJsApiUserTwo, app.file_location);
let appCreated = await this.alfrescoJsApiUserTwo.activiti.appsApi.importAppDefinition(file);
simpleAppCreated = await apps.importPublishDeployApp(this.alfrescoJsApiUserTwo, simpleApp.file_location);
appId = appCreated.id;
let publishApp = await this.alfrescoJsApiUserTwo.activiti.appsApi.publishAppDefinition(appId, new AppPublish());
await this.alfrescoJsApiUserTwo.activiti.appsApi.deployAppDefinitions({ appDefinitions: [{ id: publishApp.appDefinition.id }] });
done();
});
@@ -101,6 +100,8 @@ describe('Start Process Component', () => {
afterAll(async (done) => {
await this.alfrescoJsApiUserTwo.activiti.modelsApi.deleteModel(appId);
await this.alfrescoJsApiUserTwo.activiti.modelsApi.deleteModel(simpleAppCreated.id);
// await this.alfrescoJsApiUserTwo.activiti.modelsApi.deleteModel(secondModelId);
//
// await this.alfrescoJsApiUserTwo.activiti.modelsApi.deleteModel(modelId);
@@ -159,7 +160,7 @@ describe('Start Process Component', () => {
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.selectFromProcessDropdown('process_without_se');
startProcessPage.selectFromProcessDropdown(processModelWithoutSe);
startProcessPage.deleteDefaultName('My Default Name');
startProcessPage.checkStartProcessButtonIsDisabled();
});
@@ -169,7 +170,7 @@ describe('Start Process Component', () => {
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.selectFromProcessDropdown('process_without_se');
startProcessPage.selectFromProcessDropdown(processModelWithoutSe);
expect(startProcessPage.getDefaultName()).toEqual('My Default Name');
startProcessPage.checkStartProcessButtonIsEnabled();
});
@@ -180,7 +181,7 @@ describe('Start Process Component', () => {
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.enterProcessName('Test');
startProcessPage.selectFromProcessDropdown('process_with_se');
startProcessPage.selectFromProcessDropdown(processModelWithSe);
startProcessPage.clickFormStartProcessButton()
.then(() => {
processDetailsPage.getId()
@@ -201,13 +202,95 @@ describe('Start Process Component', () => {
});
});
it('[C286503] No options are displayed when typing a process that does not exist', () => {
processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.typeProcessDefinition('nonexistent');
startProcessPage.checkNoProcessDefinitionOptionIsDisplayed();
startProcessPage.checkStartProcessButtonIsDisabled();
});
it('[C286504] Proper options are displayed when typing a part of existent process definitions', () => {
processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.typeProcessDefinition('process');
startProcessPage.checkOptionIsDisplayed(processModelWithoutSe);
startProcessPage.checkOptionIsDisplayed(processModelWithSe);
startProcessPage.selectOption(processModelWithoutSe);
startProcessPage.checkStartProcessButtonIsEnabled();
});
it('[C286508] Only one option is displayed when typing an existent process definition', () => {
processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.typeProcessDefinition(processModelWithoutSe);
startProcessPage.checkOptionIsDisplayed(processModelWithoutSe);
startProcessPage.checkOptionIsNotDisplayed(processModelWithSe);
startProcessPage.selectOption(processModelWithoutSe);
startProcessPage.checkStartProcessButtonIsEnabled();
});
it('[C286509] Should select automatically the processDefinition when the app contains only one', () => {
processServicesPage.goToApp(simpleApp.title);
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
expect(startProcessPage.getProcessDefinitionValue()).toBe(simpleApp.title);
startProcessPage.checkStartProcessButtonIsEnabled();
});
it('[C286511] Should be able to type the process definition and start a process', () => {
processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.enterProcessName('Type');
startProcessPage.typeProcessDefinition(processModelWithoutSe);
startProcessPage.selectOption(processModelWithoutSe);
startProcessPage.checkStartProcessButtonIsEnabled();
expect(startProcessPage.getProcessDefinitionValue()).toBe(processModelWithoutSe);
startProcessPage.clickStartProcessButton();
processFiltersPage.clickRunningFilterButton();
processFiltersPage.selectFromProcessList('Type');
});
it('[C286513] Should be able to use down arrow key when navigating throw suggestions', () => {
processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.typeProcessDefinition('process');
startProcessPage.pressDownArrowAndEnter();
expect(startProcessPage.getProcessDefinitionValue()).toBe(processModelWithoutSe);
});
it('[C286514] Should the process definition input be cleared when clicking on options drop down ', () => {
processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.typeProcessDefinition('process');
startProcessPage.selectOption(processModelWithoutSe);
expect(startProcessPage.getProcessDefinitionValue()).toBe(processModelWithoutSe);
startProcessPage.clickProcessDropdownArrow();
expect(startProcessPage.getProcessDefinitionValue()).toBe('');
});
it('[C260453] Add a comment on an active process', () => {
processServicesPage.goToApp(app.title);
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.enterProcessName('Comment Process');
startProcessPage.selectFromProcessDropdown('process_with_se');
startProcessPage.selectFromProcessDropdown(processModelWithSe);
startProcessPage.clickFormStartProcessButton();
processFiltersPage.clickRunningFilterButton();
processFiltersPage.selectFromProcessList('Comment Process');
@@ -221,7 +304,7 @@ describe('Start Process Component', () => {
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.enterProcessName('Audit Log');
startProcessPage.selectFromProcessDropdown('process_with_se');
startProcessPage.selectFromProcessDropdown(processModelWithSe);
startProcessPage.clickFormStartProcessButton();
processFiltersPage.clickRunningFilterButton();
processFiltersPage.selectFromProcessList('Audit Log');
@@ -239,7 +322,7 @@ describe('Start Process Component', () => {
processFiltersPage.clickNewProcessDropdown();
startProcessPage.enterProcessName('Attach File');
startProcessPage.selectFromProcessDropdown('process_with_se');
startProcessPage.selectFromProcessDropdown(processModelWithSe);
startProcessPage.clickFormStartProcessButton();
processFiltersPage.clickRunningFilterButton();
@@ -258,7 +341,7 @@ describe('Start Process Component', () => {
processFiltersPage.clickNewProcessDropdown();
startProcessPage.enterProcessName('Show Diagram');
startProcessPage.selectFromProcessDropdown('process_with_se');
startProcessPage.selectFromProcessDropdown(processModelWithSe);
startProcessPage.clickFormStartProcessButton();
processFiltersPage.clickRunningFilterButton();
@@ -273,7 +356,7 @@ describe('Start Process Component', () => {
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.enterProcessName('Active Task');
startProcessPage.selectFromProcessDropdown('process_with_se');
startProcessPage.selectFromProcessDropdown(processModelWithSe);
startProcessPage.clickFormStartProcessButton();
processFiltersPage.clickRunningFilterButton();
processFiltersPage.selectFromProcessList('Active Task');
@@ -290,7 +373,7 @@ describe('Start Process Component', () => {
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.enterProcessName('Cancel Process');
startProcessPage.selectFromProcessDropdown('process_with_se');
startProcessPage.selectFromProcessDropdown(processModelWithSe);
startProcessPage.clickFormStartProcessButton();
processFiltersPage.clickRunningFilterButton();
processFiltersPage.selectFromProcessList('Cancel Process');
@@ -306,7 +389,7 @@ describe('Start Process Component', () => {
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.enterProcessName('Comment Process 2');
startProcessPage.selectFromProcessDropdown('process_with_se');
startProcessPage.selectFromProcessDropdown(processModelWithSe);
startProcessPage.clickFormStartProcessButton();
processFiltersPage.clickRunningFilterButton();
processFiltersPage.selectFromProcessList('Comment Process 2');
@@ -323,7 +406,7 @@ describe('Start Process Component', () => {
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
startProcessPage.enterProcessName('File');
startProcessPage.selectFromProcessDropdown('process_with_se');
startProcessPage.selectFromProcessDropdown(processModelWithSe);
startProcessPage.clickFormStartProcessButton();
processFiltersPage.clickRunningFilterButton();
processFiltersPage.selectFromProcessList('File');

View File

@@ -71,6 +71,7 @@ exports.Files = {
WIDGETS_SMOKE_TEST: {
file_location: "/resources/apps/Widgets smoke test.zip",
formName: "Widgets smoke test",
title: "Widgets smoke test",
form_fields: {
text_id: "text",
header_id: "header",

View File

@@ -20,10 +20,12 @@
matInput
[formControl]="processDefinitionInput"
[matAutocomplete]="auto"
id="processDefinitionName"
#inputAutocomplete>
<div class="adf-process-input-autocomplete">
<mat-autocomplete
#auto="matAutocomplete"
id="processDefinitionOptions"
[displayWith]="displayFn">
<mat-option *ngFor="let processDef of filteredProcesses | async" [value]="processDef.name">
{{ processDef.name }}