[ADF-4976] Fix cloud ps e2e errors (#5195)

* fix cloud ps e2e errors

* fix lint

* fix ps test add 200ms for animation

* Update processListPage.ts
This commit is contained in:
Eugenio Romano
2019-10-28 09:47:30 +00:00
committed by Denys Vuika
parent 6119ce83de
commit 450b20eca4
7 changed files with 64 additions and 31 deletions

View File

@@ -20,7 +20,7 @@ import { element, by, ElementFinder } from 'protractor';
export class ProcessListPage { export class ProcessListPage {
processListTitle: ElementFinder = element.all(by.css("div[class='adf-empty-content__title']")).first(); processListTitle: ElementFinder = element(by.css('div[class="adf-empty-content__title"]'));
processInstanceList: ElementFinder = element(by.css('adf-process-instance-list')); processInstanceList: ElementFinder = element(by.css('adf-process-instance-list'));
getDisplayedProcessListTitle(): Promise<string> { getDisplayedProcessListTitle(): Promise<string> {

View File

@@ -28,17 +28,17 @@ export class ProcessServiceTabBarPage {
async clickTasksButton(): Promise<void> { async clickTasksButton(): Promise<void> {
await BrowserActions.click(this.tasksButton); await BrowserActions.click(this.tasksButton);
await browser.sleep(300); await browser.sleep(500);
} }
async clickProcessButton(): Promise<void> { async clickProcessButton(): Promise<void> {
await BrowserActions.click(this.processButton); await BrowserActions.click(this.processButton);
await browser.sleep(300); await browser.sleep(500);
} }
async clickSettingsButton(): Promise<void> { async clickSettingsButton(): Promise<void> {
await BrowserActions.click(this.settingsButton); await BrowserActions.click(this.settingsButton);
await browser.sleep(300); await browser.sleep(500);
} }
async clickReportsButton(): Promise<void> { async clickReportsButton(): Promise<void> {

View File

@@ -31,6 +31,7 @@ import {
} from '@alfresco/adf-testing'; } from '@alfresco/adf-testing';
import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { NavigationBarPage } from '../pages/adf/navigationBarPage';
import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage';
import { FormCloudService } from '../../lib/testing/src/lib/form-cloud/actions/form-cloud.service';
describe('Task form cloud component', () => { describe('Task form cloud component', () => {
@@ -48,7 +49,6 @@ describe('Task form cloud component', () => {
let processDefinitionService: ProcessDefinitionsService; let processDefinitionService: ProcessDefinitionsService;
let processInstancesService: ProcessInstancesService; let processInstancesService: ProcessInstancesService;
let identityService: IdentityService; let identityService: IdentityService;
let groupIdentityService: GroupIdentityService;
let completedTask, createdTask, assigneeTask, toBeCompletedTask, formValidationsTask, testUser, formTaskId; let completedTask, createdTask, assigneeTask, toBeCompletedTask, formValidationsTask, testUser, formTaskId;
const candidateBaseApp = browser.params.resources.ACTIVITI_CLOUD_APPS.CANDIDATE_BASE_APP.name; const candidateBaseApp = browser.params.resources.ACTIVITI_CLOUD_APPS.CANDIDATE_BASE_APP.name;
@@ -86,7 +86,8 @@ describe('Task form cloud component', () => {
await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
identityService = new IdentityService(apiService); identityService = new IdentityService(apiService);
groupIdentityService = new GroupIdentityService(apiService); const groupIdentityService = new GroupIdentityService(apiService);
const formCloudService = new FormCloudService(apiService);
testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.ROLES.APS_USER]); testUser = await identityService.createIdentityUserWithRole(apiService, [identityService.ROLES.APS_USER]);
@@ -101,15 +102,19 @@ describe('Task form cloud component', () => {
assigneeTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); assigneeTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp);
await tasksService.claimTask(assigneeTask.entry.id, candidateBaseApp); await tasksService.claimTask(assigneeTask.entry.id, candidateBaseApp);
const tabVisibilityFieldsId = await formCloudService.getIdByFormName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.name, browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.forms.tabVisibilityFields.name);
const tabVisibilityVarsId = await formCloudService.getIdByFormName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.name, browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.forms.tabVisibilityVars.name);
for (let i = 0; i < 3; i++) { for (let i = 0; i < 3; i++) {
visibilityConditionTasks[i] = await tasksService.createStandaloneTaskWithForm(StringUtil.generateRandomString(), visibilityConditionTasks[i] = await tasksService.createStandaloneTaskWithForm(StringUtil.generateRandomString(),
simpleApp, browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.forms.tabVisibilityFields.id); simpleApp, tabVisibilityFieldsId);
await tasksService.claimTask(visibilityConditionTasks[i].entry.id, simpleApp); await tasksService.claimTask(visibilityConditionTasks[i].entry.id, simpleApp);
} }
for (let i = 3; i < 6; i++) { for (let i = 3; i < 6; i++) {
visibilityConditionTasks[i] = await tasksService.createStandaloneTaskWithForm(StringUtil.generateRandomString(), visibilityConditionTasks[i] = await tasksService.createStandaloneTaskWithForm(StringUtil.generateRandomString(),
simpleApp, browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.forms.tabVisibilityVars.id); simpleApp, tabVisibilityVarsId);
await tasksService.claimTask(visibilityConditionTasks[i].entry.id, simpleApp); await tasksService.claimTask(visibilityConditionTasks[i].entry.id, simpleApp);
} }
@@ -346,7 +351,6 @@ describe('Task form cloud component', () => {
await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabFieldValue); await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabFieldValue);
await widget.textWidget().isWidgetVisible(widgets.textOneId); await widget.textWidget().isWidgetVisible(widgets.textOneId);
await widget.textWidget().isWidgetNotVisible(widgets.textTwoId); await widget.textWidget().isWidgetNotVisible(widgets.textTwoId);
await widget.textWidget().setValue(widgets.textOneId, value.displayTab); await widget.textWidget().setValue(widgets.textOneId, value.displayTab);
await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields);
await widget.tab().checkTabIsDisplayedByLabel(tab.tabFieldValue); await widget.tab().checkTabIsDisplayedByLabel(tab.tabFieldValue);
@@ -402,7 +406,9 @@ describe('Task form cloud component', () => {
await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks');
await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[2].entry.name); await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[2].entry.name);
await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[2].entry.name); await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[2].entry.name);
await taskHeaderCloudPage.checkTaskPropertyListIsDisplayed(); await taskHeaderCloudPage.checkTaskPropertyListIsDisplayed();
await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields);
@@ -419,14 +425,16 @@ describe('Task form cloud component', () => {
await widget.tab().clickTabByLabel(tab.tabWithFields); await widget.tab().clickTabByLabel(tab.tabWithFields);
await widget.textWidget().setValue(widgets.textOneId, value.notDisplayTab); await widget.textWidget().setValue(widgets.textOneId, value.notDisplayTab);
await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabFieldVar); await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabFieldVar);
await taskFormCloudComponent.clickCompleteButton(); await taskFormCloudComponent.clickCompleteButton();
await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks');
await tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(visibilityConditionTasks[2].entry.name); await tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(visibilityConditionTasks[2].entry.name);
await tasksCloudDemoPage.completedTasksFilter().clickTaskFilter(); await tasksCloudDemoPage.completedTasksFilter().clickTaskFilter();
await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[2].entry.name); await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[2].entry.name);
await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[2].entry.name); await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[2].entry.name);
await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields);
await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabFieldVar); await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabFieldVar);
}); });

View File

@@ -88,7 +88,9 @@ describe('Empty Process List Test', () => {
await processFiltersPage.clickNewProcessDropdown(); await processFiltersPage.clickNewProcessDropdown();
await startProcessPage.selectFromProcessDropdown(appB.processName); await startProcessPage.selectFromProcessDropdown(appB.processName);
await startProcessPage.clickStartProcessButton(); await startProcessPage.clickStartProcessButton();
await expect(await processFiltersPage.numberOfProcessRows()).toEqual(1); await expect(await processFiltersPage.numberOfProcessRows()).toEqual(1);
await processDetailsPage.checkProcessDetailsCard(); await processDetailsPage.checkProcessDetailsCard();
}); });

View File

@@ -17,6 +17,7 @@
import { browser, by, element, ElementArrayFinder, ElementFinder, protractor } from 'protractor'; import { browser, by, element, ElementArrayFinder, ElementFinder, protractor } from 'protractor';
import { BrowserVisibility } from '../utils/browser-visibility'; import { BrowserVisibility } from '../utils/browser-visibility';
import { Logger } from './logger';
export class BrowserActions { export class BrowserActions {
@@ -30,7 +31,8 @@ export class BrowserActions {
await browser.executeScript(`arguments[0].scrollIntoView();`, elementFinder); await browser.executeScript(`arguments[0].scrollIntoView();`, elementFinder);
await browser.executeScript(`arguments[0].click();`, elementFinder); await browser.executeScript(`arguments[0].click();`, elementFinder);
} catch (jsErr) { } catch (jsErr) {
throw jsErr; Logger.error(`click error element ${elementFinder}`);
throw jsErr;
} }
} }
} }

View File

@@ -45,4 +45,35 @@ export class FormCloudService {
} }
async getForms(appName: string): Promise<any[]> {
try {
const path = '/' + appName + '/form/v1/forms';
const method = 'GET';
const queryParams = {}, postBody = {};
return this.api.performBpmOperation(path, method, queryParams, postBody);
} catch (error) {
Logger.error('Get forms error ', error.message);
}
return [];
}
async getIdByFormName(appName: string, formName: string): Promise<string> {
const forms = await this.getForms(appName);
const formEntry = forms.find((currentForm) => {
return currentForm.formRepresentation.name === formName;
});
if (formEntry.formRepresentation) {
return formEntry.formRepresentation.id;
}
return null;
}
} }

View File

@@ -64,44 +64,34 @@ export const ACTIVITI_CLOUD_APPS: any = {
}, },
forms: { forms: {
tabVisibilityFields: { tabVisibilityFields: {
name: 'tabvisibilitywithfields', name: 'tabvisibilitywithfields'
id: 'form-26b01063-4fb0-455f-b3ba-90172e013678'
}, },
tabVisibilityVars: { tabVisibilityVars: {
name: 'tabvisibilitywithvars', name: 'tabvisibilitywithvars'
id: 'form-7bf363d2-83c9-4b00-853e-373d0d59963c'
}, },
usertaskform: { usertaskform: {
name: 'usertaskform', name: 'usertaskform'
id: 'form-056ba4aa-90c2-48eb-ba39-7013d732503b'
}, },
dropdownform: { dropdownform: {
name: 'dropdownform', name: 'dropdownform'
id: 'form-5688156c-150c-43bc-83cb-617fd045202a'
}, },
formVisibility: { formVisibility: {
name: 'form-visibility', name: 'form-visibility'
id: 'form-30418ed3-2beb-464f-ad51-4ca5da02f6d8'
}, },
multilingualform: { multilingualform: {
name: 'multilingualform', name: 'multilingualform'
id: 'form-fb8f1628-82d9-4e0e-b032-bf02598e7d24'
}, },
inputform: { inputform: {
name: 'inputform', name: 'inputform'
id: 'form-d69fd470-b67a-4e7c-bb70-8979fc10374f'
}, },
outputform: { outputform: {
name: 'outputform', name: 'outputform'
id: 'form-eeb2174f-b25a-4386-bf73-bda4de195eee'
}, },
exclusiveconditionform: { exclusiveconditionform: {
name: 'exclusive-condition-form', name: 'exclusive-condition-form'
id: 'form-03f56f41-c9a7-430a-a713-fc37bab070c1'
}, },
uploadlocalfileform: { uploadlocalfileform: {
name: 'upload-localfile-form', name: 'upload-localfile-form'
id: 'form-f4f02bc1-9cb6-43d6-9328-385db73e2762'
} }
}, },
security: [ security: [