From 213455e060cf80833d7ffbe5fbeab4e460beea83 Mon Sep 17 00:00:00 2001 From: MichalFidor <42964298+MichalFidor@users.noreply.github.com> Date: Fri, 19 Nov 2021 08:55:58 +0100 Subject: [PATCH] AAE-6348 E2E for multiselect dropdown (#7376) * AAE-6348 E2E for multiselect dropdown --- .../form-field/dropdown-widget.e2e.ts | 44 +++++++++++++++++-- .../form/widgets/dropdown-widget.page.ts | 13 +++++- .../resources/resources.ts | 1 + 3 files changed, 53 insertions(+), 5 deletions(-) diff --git a/e2e/process-services-cloud/form-field/dropdown-widget.e2e.ts b/e2e/process-services-cloud/form-field/dropdown-widget.e2e.ts index f1873ada7a..c613d773e3 100644 --- a/e2e/process-services-cloud/form-field/dropdown-widget.e2e.ts +++ b/e2e/process-services-cloud/form-field/dropdown-widget.e2e.ts @@ -49,10 +49,11 @@ describe('Form Field Component - Dropdown Widget', () => { const dropdown = widget.dropdown(); - let runningProcessInstance, testUser, groupInfo, tasklist, task; + let runningProcessInstance, runningProcessInstanceMultiselect, testUser, groupInfo, tasklist, tasklistMulti, taskMulti, task; const simpleApp = browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.name; beforeAll(async () => { + const { processes } = browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP; await apiService.loginWithProfile('identityAdmin'); testUser = await identityService.createIdentityUserWithRole( [identityService.ROLES.ACTIVITI_USER]); @@ -61,16 +62,20 @@ describe('Form Field Component - Dropdown Widget', () => { await identityService.addUserToGroup(testUser.idIdentityService, groupInfo.id); await apiService.login(testUser.username, testUser.password); - const processDefinition = await processDefinitionService - .getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.dropdownOptionsProcess, simpleApp); + const processDefinition = await processDefinitionService.getProcessDefinitionByName(processes.dropdownOptionsProcess, simpleApp); + const processDefinitionMultiselect = await processDefinitionService.getProcessDefinitionByName(processes['multiselect-dropdown'], simpleApp); await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); - + await processInstancesService.createProcessInstance(processDefinitionMultiselect.entry.key, simpleApp); runningProcessInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); + runningProcessInstanceMultiselect = await processInstancesService.createProcessInstance(processDefinitionMultiselect.entry.key, simpleApp); tasklist = await queryService.getProcessInstanceTasks(runningProcessInstance.entry.id, simpleApp); task = await tasklist.list.entries[0]; + tasklistMulti = await queryService.getProcessInstanceTasks(runningProcessInstanceMultiselect.entry.id, simpleApp); + taskMulti = await tasklistMulti.list.entries[0]; await tasksService.claimTask(task.entry.id, simpleApp); + await tasksService.claimTask(taskMulti.entry.id, simpleApp); await loginSSOPage.login(testUser.username, testUser.password); }); @@ -86,6 +91,37 @@ describe('Form Field Component - Dropdown Widget', () => { await appListCloudComponent.goToApp(simpleApp); }); + it('Should be able to finish task with mulitselect dropdown form field', async () => { + const optionsToSelect = ['First', 'Third']; + await taskFilter.clickTaskFilter('my-tasks'); + await taskList.getDataTable().waitTillContentLoaded(); + + await taskList.checkContentIsDisplayedByName(taskMulti.entry.name); + await taskList.selectRow(taskMulti.entry.name); + + await taskHeaderCloudPage.checkTaskPropertyListIsDisplayed(); + await dropdown.openDropdown('#DropdownMultiselect'); + await dropdown.selectMultipleOptions(optionsToSelect); + await dropdown.closeDropdown(); + + const optionsSelected = [await dropdown.getSelectedOptionText('DropdownMultiselect')]; + + await taskFormCloudComponent.checkCompleteButtonIsDisplayed(); + await taskFormCloudComponent.clickCompleteButton(); + await taskFilter.clickTaskFilter('completed-tasks'); + await taskList.getDataTable().waitTillContentLoaded(); + + await taskList.checkContentIsDisplayedByName(taskMulti.entry.name); + await taskList.selectRow(taskMulti.entry.name); + + await taskFormCloudComponent.formFields().checkFormIsDisplayed(); + await taskFormCloudComponent.formFields().checkWidgetIsVisible('DropdownMultiselect'); + + optionsSelected.push(await dropdown.getSelectedOptionText('DropdownMultiselect')); + + await expect(optionsSelected.toString().replace(/\s+/g, '')).toEqual([optionsToSelect, optionsToSelect].toString()); + }); + it('[C309878] Should be able to select a dropdown option, save and complete the task form', async () => { await taskFilter.clickTaskFilter('my-tasks'); await taskList.getDataTable().waitTillContentLoaded(); diff --git a/lib/testing/src/lib/protractor/core/pages/form/widgets/dropdown-widget.page.ts b/lib/testing/src/lib/protractor/core/pages/form/widgets/dropdown-widget.page.ts index 1ae63e5ee8..0402f40b02 100644 --- a/lib/testing/src/lib/protractor/core/pages/form/widgets/dropdown-widget.page.ts +++ b/lib/testing/src/lib/protractor/core/pages/form/widgets/dropdown-widget.page.ts @@ -16,8 +16,9 @@ */ import { FormFields } from '../form-fields'; -import { by, element, $ } from 'protractor'; +import { by, element, $, protractor } from 'protractor'; import { BrowserVisibility, BrowserActions } from '../../../utils/public-api'; +import { TestElement } from '../../../test-element'; export class DropdownWidgetPage { @@ -33,6 +34,16 @@ export class DropdownWidgetPage { await BrowserActions.click(row); } + async selectMultipleOptions(options: string[]): Promise { + for (const option of options) { + await TestElement.byText('mat-option span', option).click(); + } + } + + async closeDropdown(): Promise { + await $('body').sendKeys(protractor.Key.ESCAPE); + } + async openDropdown(locator: string = '#dropdown'): Promise { await this.checkDropdownIsDisplayed(locator); const dropdown = locator ? $(`${locator}`) : $(`#dropdown`); diff --git a/lib/testing/src/lib/protractor/process-services-cloud/resources/resources.ts b/lib/testing/src/lib/protractor/process-services-cloud/resources/resources.ts index 6947ebf4a0..a7b84892d9 100644 --- a/lib/testing/src/lib/protractor/process-services-cloud/resources/resources.ts +++ b/lib/testing/src/lib/protractor/process-services-cloud/resources/resources.ts @@ -128,6 +128,7 @@ export const ACTIVITI_CLOUD_APPS = { multiinstancedmnsequence: 'multiinstance-dmnsequence', multiinstancemanualtask: 'multiinstance-manualtask', multiinstancesubprocess: 'multiinstance-subprocess', + 'multiselect-dropdown': 'multiselect-dropdown', calledprocess: 'calledprocess', booleanvisibilityprocess: 'booleanvisibilityprocess', numbervisibilityprocess: 'numbervisibilityprocess',