From ac76ddf9833491bdcf34732a2c512f88342305c3 Mon Sep 17 00:00:00 2001 From: Cristina Jalba Date: Thu, 29 Aug 2019 17:24:29 +0300 Subject: [PATCH] Add visibility conditions on tabs tests when completing a task --- .../task-form-cloud-component.e2e.ts | 223 +++++++++++++++++- e2e/util/resources.js | 10 + .../src/lib/core/pages/form/widgets/widget.ts | 1 + .../pages/task-form-cloud-component.page.ts | 4 + 4 files changed, 236 insertions(+), 2 deletions(-) diff --git a/e2e/process-services-cloud/task-form-cloud-component.e2e.ts b/e2e/process-services-cloud/task-form-cloud-component.e2e.ts index 0ead97d713..c713387fac 100644 --- a/e2e/process-services-cloud/task-form-cloud-component.e2e.ts +++ b/e2e/process-services-cloud/task-form-cloud-component.e2e.ts @@ -58,6 +58,32 @@ describe('Task form cloud component', () => { const completedTaskName = StringUtil.generateRandomString(), assignedTaskName = StringUtil.generateRandomString(); const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, browser.params.config.providers); + const visibilityConditionTasks = []; + + const tab = { + tabWithFields: 'tabWithFields', + tabFieldValue: 'tabBasicFieldValue', + tabVarValue: 'tabBasicVarValue', + tabVarField: 'tabBasicVarField', + tabFieldField: 'tabBasicFieldField', + tabVarVar: 'tabBasicVarVar', + tabFieldVar: 'tabBasicFieldVar', + tabNextOperators: 'tabNextOperators' + }; + + const widgets = { + textOneId: 'TextOne', + textTwoId: 'TextTwo', + textThreeId: 'TextThree', + textFourId: 'TextFour', + numberOneId: 'NumberOne' + }; + + const value = { + displayTab: 'showTab', + notDisplayTab: 'anythingElse' + }; + beforeAll(async () => { await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); @@ -75,9 +101,20 @@ describe('Task form cloud component', () => { createdTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); assigneeTask = await tasksService.createStandaloneTask(StringUtil.generateRandomString(), candidateBaseApp); - await tasksService.claimTask(assigneeTask.entry.id, candidateBaseApp); + for (let i = 0; i < 3; i++) { + visibilityConditionTasks[i] = await tasksService.createStandaloneTaskWithForm(StringUtil.generateRandomString(), + simpleApp, resources.ACTIVITI7_APPS.SIMPLE_APP.forms.tabVisibilityFields.id); + await tasksService.claimTask(visibilityConditionTasks[i].entry.id, simpleApp); + } + + for (let i = 3; i < 6; i++) { + visibilityConditionTasks[i] = await tasksService.createStandaloneTaskWithForm(StringUtil.generateRandomString(), + simpleApp, resources.ACTIVITI7_APPS.SIMPLE_APP.forms.tabVisibilityVars.id); + await tasksService.claimTask(visibilityConditionTasks[i].entry.id, simpleApp); + } + formValidationsTask = await tasksService.createStandaloneTaskWithForm(StringUtil.generateRandomString(), candidateBaseApp, formToTestValidationsKey); await tasksService.claimTask(formValidationsTask.entry.id, candidateBaseApp); @@ -218,7 +255,6 @@ describe('Task form cloud component', () => { await widget.amountWidget().setFieldValue('Amount0mtp1h', '660'); await expect(await taskFormCloudComponent.isCompleteButtonEnabled()).toBe(true); - }); it('[C307093] Complete button is not displayed when the task is already completed', async () => { @@ -292,4 +328,187 @@ describe('Task form cloud component', () => { }); }); + describe('Complete task - cloud directive', () => { + + beforeEach(async () => { + await navigationBarPage.navigateToProcessServicesCloudPage(); + await appListCloudComponent.checkApsContainer(); + await appListCloudComponent.goToApp(simpleApp); + }); + + it('[C315174] Should be able to complete a standalone task with visible tab with empty value for field', async () => { + await tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[0].entry.name); + await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[0].entry.name); + await taskHeaderCloudPage.checkTaskPropertyListIsDisplayed(); + + await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); + await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabFieldValue); + await widget.textWidget().isWidgetVisible(widgets.textOneId); + await widget.textWidget().isWidgetNotVisible(widgets.textTwoId); + + await widget.textWidget().setValue(widgets.textOneId, value.displayTab); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabFieldValue); + + await taskFormCloudComponent.clickCompleteButton(); + await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(visibilityConditionTasks[0].entry.name); + + await tasksCloudDemoPage.completedTasksFilter().clickTaskFilter(); + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[0].entry.name); + await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[0].entry.name); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabFieldValue); + }); + + it('[C315177] Should be able to complete a standalone task with invisible tab with invalid value for field', async () => { + // ACTIVITI-3746 + await tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[1].entry.name); + await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[1].entry.name); + await taskHeaderCloudPage.checkTaskPropertyListIsDisplayed(); + + await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabFieldField); + await widget.textWidget().isWidgetVisible(widgets.textOneId); + await widget.textWidget().isWidgetNotVisible(widgets.numberOneId); + + await widget.textWidget().setValue(widgets.textOneId, value.displayTab); + await widget.textWidget().setValue(widgets.textThreeId, value.displayTab); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabFieldField); + await widget.tab().clickTabByLabel(tab.tabFieldField); + await widget.textWidget().isWidgetVisible(widgets.numberOneId); + await widget.textWidget().setValue(widgets.numberOneId, value.displayTab); + + await widget.tab().clickTabByLabel(tab.tabWithFields); + await widget.textWidget().setValue(widgets.textOneId, value.notDisplayTab); + await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabFieldField); + + await taskFormCloudComponent.clickCompleteButton(); + await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(visibilityConditionTasks[1].entry.name); + + await tasksCloudDemoPage.completedTasksFilter().clickTaskFilter(); + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[1].entry.name); + await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[1].entry.name); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); + await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabFieldField); + }); + + it('[C315178] Should be able to complete a standalone task with invisible tab with valid value', async () => { + await tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[2].entry.name); + await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[2].entry.name); + await taskHeaderCloudPage.checkTaskPropertyListIsDisplayed(); + + await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); + await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabFieldVar); + await widget.textWidget().isWidgetVisible(widgets.textOneId); + await widget.textWidget().isWidgetNotVisible(widgets.textTwoId); + + await widget.textWidget().setValue(widgets.textOneId, value.displayTab); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabFieldVar); + await widget.tab().clickTabByLabel(tab.tabFieldVar); + await widget.textWidget().isWidgetVisible(widgets.textFourId); + await widget.textWidget().setValue(widgets.textFourId, value.displayTab); + + await widget.tab().clickTabByLabel(tab.tabWithFields); + await widget.textWidget().setValue(widgets.textOneId, value.notDisplayTab); + await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabFieldVar); + + await taskFormCloudComponent.clickCompleteButton(); + await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(visibilityConditionTasks[2].entry.name); + + await tasksCloudDemoPage.completedTasksFilter().clickTaskFilter(); + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[2].entry.name); + await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[2].entry.name); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); + await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabFieldVar); + }); + + it('[C315175] Should be able to complete a standalone task with invisible tab with empty value for field', async () => { + await tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[3].entry.name); + await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[3].entry.name); + await taskHeaderCloudPage.checkTaskPropertyListIsDisplayed(); + + await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); + await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabVarValue); + await widget.textWidget().isWidgetVisible(widgets.textOneId); + await widget.textWidget().isWidgetNotVisible(widgets.textTwoId); + + await taskFormCloudComponent.clickCompleteButton(); + await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(visibilityConditionTasks[3].entry.name); + + await tasksCloudDemoPage.completedTasksFilter().clickTaskFilter(); + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[3].entry.name); + await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[3].entry.name); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); + await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabVarValue); + }); + + it('[C315176] Should not be able to complete a standalone task with visible tab with invalid value for field', async () => { + await tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[4].entry.name); + await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[4].entry.name); + await taskHeaderCloudPage.checkTaskPropertyListIsDisplayed(); + + await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); + await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabVarField); + await widget.textWidget().isWidgetVisible(widgets.textOneId); + await widget.textWidget().isWidgetNotVisible(widgets.textTwoId); + + await widget.tab().clickTabByLabel(tab.tabWithFields); + await widget.textWidget().setValue(widgets.textOneId, value.displayTab); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabVarField); + + await widget.tab().clickTabByLabel(tab.tabVarField); + await widget.textWidget().setValue(widgets.numberOneId, value.displayTab); + + await expect(await taskFormCloudComponent.completeButtonIsEnabled()).toEqual(false); + }); + + it('[C315179] Should be able to complete a standalone task with visible tab with valid value for field', async () => { + await tasksCloudDemoPage.myTasksFilter().clickTaskFilter(); + await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[5].entry.name); + await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[5].entry.name); + await taskHeaderCloudPage.checkTaskPropertyListIsDisplayed(); + + await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabVarVar); + await widget.textWidget().isWidgetVisible(widgets.textOneId); + await widget.textWidget().isWidgetNotVisible(widgets.textTwoId); + + await widget.tab().clickTabByLabel(tab.tabVarVar); + await widget.textWidget().setValue(widgets.textThreeId, value.displayTab); + + await taskFormCloudComponent.clickCompleteButton(); + await expect(await tasksCloudDemoPage.getActiveFilterName()).toBe('My Tasks'); + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(visibilityConditionTasks[5].entry.name); + + await tasksCloudDemoPage.completedTasksFilter().clickTaskFilter(); + await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(visibilityConditionTasks[5].entry.name); + await tasksCloudDemoPage.taskListCloudComponent().selectRow(visibilityConditionTasks[5].entry.name); + await widget.tab().checkTabIsDisplayedByLabel(tab.tabWithFields); + await widget.tab().checkTabIsNotDisplayedByLabel(tab.tabVarValue); + }); + + }); + }); diff --git a/e2e/util/resources.js b/e2e/util/resources.js index abd3143f95..f282fae6a3 100644 --- a/e2e/util/resources.js +++ b/e2e/util/resources.js @@ -537,6 +537,16 @@ exports.ACTIVITI7_APPS = { processwithvariables: "processwithvariables", simpleProcess: "simpleprocess", dropdownrestprocess: "dropdownrestprocess" + }, + forms: { + tabVisibilityFields: { + name: "tabvisibilitywithfields", + id: "form-a81d4541-95eb-4154-a3f4-12dad0a669f9" + }, + tabVisibilityVars: { + name: "tabvisibilitywithvars", + id: "form-08649360-2964-4479-a003-257074e21f59" + } } }, SUB_PROCESS_APP: { diff --git a/lib/testing/src/lib/core/pages/form/widgets/widget.ts b/lib/testing/src/lib/core/pages/form/widgets/widget.ts index 60fe01534d..a2b6b5e9e2 100644 --- a/lib/testing/src/lib/core/pages/form/widgets/widget.ts +++ b/lib/testing/src/lib/core/pages/form/widgets/widget.ts @@ -35,6 +35,7 @@ import { PeopleWidget } from './peopleWidget'; import { Tab } from './tab'; import { DocumentWidget } from './documentWidget'; import { AttachFileWidgetCloud } from './attachFileWidgetCloud'; +import { Tab } from './tab'; export class Widget { diff --git a/lib/testing/src/lib/process-services-cloud/pages/task-form-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/task-form-cloud-component.page.ts index 17b79dfb1d..ec3eb7fd05 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/task-form-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/task-form-cloud-component.page.ts @@ -76,6 +76,10 @@ export class TaskFormCloudComponent { await BrowserVisibility.waitUntilElementIsNotVisible(this.completeButton); } + async completeButtonIsEnabled() { + return this.completeButton.isEnabled(); + } + async clickCompleteButton(): Promise { await BrowserActions.click(this.completeButton); }