From b49645316ad0d7c0a1be28a8dda22bf766070ad6 Mon Sep 17 00:00:00 2001 From: arditdomi <32884230+arditdomi@users.noreply.github.com> Date: Tue, 11 Feb 2020 12:20:42 +0000 Subject: [PATCH] [AAE-1764] Fix testing methods checking visibility of widgets (#5457) * [AAE-1764] Fix testing methods checking visibility of widgets * [AAE-1764] Fix e2e failing because of method refactoring * [AAE-1764] Fix widget visibility e2e --- .../form-field/visibility-condition.e2e.ts | 23 +++- .../widget-visibility-condition.e2e.ts | 2 +- .../forms/multiple-visibility-conditions.ts | 125 +++++++++++++++++- .../src/lib/core/pages/form/formFields.ts | 8 +- .../core/pages/form/widgets/checkboxWidget.ts | 2 +- 5 files changed, 143 insertions(+), 17 deletions(-) diff --git a/e2e/process-services-cloud/form-field/visibility-condition.e2e.ts b/e2e/process-services-cloud/form-field/visibility-condition.e2e.ts index 0c12d60d8b..27fbf5d4e1 100644 --- a/e2e/process-services-cloud/form-field/visibility-condition.e2e.ts +++ b/e2e/process-services-cloud/form-field/visibility-condition.e2e.ts @@ -21,7 +21,7 @@ import { browser } from 'protractor'; import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; import { checkboxVisibilityFormJson, multipleCheckboxVisibilityFormJson } from '../../resources/forms/checkbox-visibility-condition'; -import { multipleVisibilityFormJson } from '../../resources/forms/multiple-visibility-conditions'; +import { multipleTextVisibilityFormJson, multipleVisibilityFormJson } from '../../resources/forms/multiple-visibility-conditions'; import { displayValueTextJson } from '../../resources/forms/displayValue-visibilityConditions'; describe('Visibility conditions - cloud', () => { @@ -203,7 +203,7 @@ describe('Visibility conditions - cloud', () => { await expect(text1).toEqual('aaa'); await expect(text2).toEqual(''); - await widget.textWidget().isWidgetVisible(widgets.checkboxBasicVariable); + await widget.checkboxWidget().isCheckboxDisplayed(widgets.checkboxBasicVariable); await widget.textWidget().setValue(widgets.textOneId, 'bbb'); text1 = await widget.textWidget().getFieldValue(widgets.textOneId); @@ -211,7 +211,7 @@ describe('Visibility conditions - cloud', () => { await expect(text1).toEqual('bbb'); await expect(text2).toEqual(''); - await widget.textWidget().isWidgetVisible(widgets.checkboxBasicField); + await widget.checkboxWidget().isCheckboxHidden(widgets.checkboxBasicField); await widget.textWidget().setValue(widgets.textTwoId, 'aaa'); text1 = await widget.textWidget().getFieldValue(widgets.textOneId); @@ -219,7 +219,7 @@ describe('Visibility conditions - cloud', () => { await expect(text1).toEqual('bbb'); await expect(text2).toEqual('aaa'); - await widget.textWidget().isWidgetNotVisible(widgets.checkboxBasicField); + await widget.checkboxWidget().isCheckboxHidden(widgets.checkboxBasicField); await widget.textWidget().setValue(widgets.textOneId, 'aaa'); text1 = await widget.textWidget().getFieldValue(widgets.textOneId); @@ -227,11 +227,20 @@ describe('Visibility conditions - cloud', () => { await expect(text1).toEqual('aaa'); await expect(text2).toEqual('aaa'); - await widget.textWidget().isWidgetNotVisible(widgets.checkboxBasicField); + await widget.checkboxWidget().isCheckboxHidden(widgets.checkboxBasicField); + + await widget.textWidget().setValue(widgets.textTwoId, 'bbb'); + text1 = await widget.textWidget().getFieldValue(widgets.textOneId); + text2 = await widget.textWidget().getFieldValue(widgets.textTwoId); + + await expect(text1).toEqual('aaa'); + await expect(text2).toEqual('bbb'); + + await widget.checkboxWidget().isCheckboxDisplayed(widgets.checkboxBasicField); }); - it('[C312443] Should be able to see Checkbox widget when has multiple visibility conditions and OR NOT next condition operators', async () => { - await formCloudDemoPage.setConfigToEditor(multipleVisibilityFormJson); + it('[C312443] Should be able to see text widget when has multiple visibility conditions and OR NOT next condition operators', async () => { + await formCloudDemoPage.setConfigToEditor(multipleTextVisibilityFormJson); await widget.textWidget().setValue(widgets.textTwoId, 'test'); await widget.textWidget().setValue(widgets.textThreeId, 'test'); diff --git a/e2e/process-services/widgets/widget-visibility-condition.e2e.ts b/e2e/process-services/widgets/widget-visibility-condition.e2e.ts index 74047f4cc9..620cfeba64 100644 --- a/e2e/process-services/widgets/widget-visibility-condition.e2e.ts +++ b/e2e/process-services/widgets/widget-visibility-condition.e2e.ts @@ -128,7 +128,7 @@ describe('Process-Services - Visibility conditions', () => { it('[C311425] Should be able to see Checkbox widget when visibility condition refers to a field and another field', async () => { await widget.textWidget().isWidgetVisible(widgets.textOneId); - await widget.checkboxWidget().isCheckboxHidden(checkbox.checkboxFieldField); + await widget.checkboxWidget().isCheckboxDisplayed(checkbox.checkboxFieldField); await widget.textWidget().setValue(widgets.textOneId, value.displayCheckbox); await widget.checkboxWidget().isCheckboxHidden(checkbox.checkboxFieldField); diff --git a/e2e/resources/forms/multiple-visibility-conditions.ts b/e2e/resources/forms/multiple-visibility-conditions.ts index 6915197bf0..6223f740f0 100644 --- a/e2e/resources/forms/multiple-visibility-conditions.ts +++ b/e2e/resources/forms/multiple-visibility-conditions.ts @@ -74,7 +74,23 @@ type: 'boolean', required: false, colspan: 1, - visibilityCondition: null, + visibilityCondition: { + leftType: 'field', + leftValue: 'textone', + operator: '==', + rightValue: 'aaa', + rightType: 'value', + nextConditionOperator: 'and-not', + nextCondition: { + leftType: 'field', + leftValue: 'texttwo', + operator: '==', + rightValue: 'aaa', + rightType: 'value', + nextConditionOperator: '', + nextCondition: null + } + }, params: { existingColspan: 1, maxColspan: 2 @@ -467,3 +483,110 @@ } } }; + + export const multipleTextVisibilityFormJson = { + formRepresentation: { + id: 'form-1fc64874-5fa9-4eb0-be06-61abd51abef7', + name: 'form2', + description: '', + version: 0, + standAlone: true, + formDefinition: { + tabs: [], + fields: [ + { + id: 'e6071f44-50cf-4b51-8b69-651df3ca4509', + name: 'Label', + type: 'container', + tab: null, + numberOfColumns: 2, + fields: { + 1: [ + { + id: 'textOne', + name: 'Text1', + type: 'text', + required: false, + colspan: 1, + placeholder: null, + minLength: 0, + maxLength: 0, + regexPattern: null, + visibilityCondition: { + leftType: 'field', + leftValue: 'textTwo', + operator: '!=', + rightValue: 'test', + rightType: 'value', + nextConditionOperator: 'or-not', + nextCondition: { + leftType: 'field', + leftValue: 'textThree', + operator: '==', + rightValue: 'test', + rightType: 'value', + nextConditionOperator: '', + nextCondition: null + } + }, + params: { + existingColspan: 1, + maxColspan: 2 + } + } + ], + 2: [ + { + id: 'textTwo', + name: 'Text2', + type: 'text', + required: false, + colspan: 1, + placeholder: null, + minLength: 0, + maxLength: 0, + regexPattern: null, + visibilityCondition: null, + params: { + existingColspan: 1, + maxColspan: 2 + } + } + ] + } + }, + { + id: '4f086395-6f63-47c7-aeda-f315ae5b3891', + name: 'Label', + type: 'container', + tab: null, + numberOfColumns: 2, + fields: { + 1: [ + { + id: 'textThree', + name: 'Text3', + type: 'text', + required: false, + colspan: 1, + placeholder: null, + minLength: 0, + maxLength: 0, + regexPattern: null, + visibilityCondition: null, + params: { + existingColspan: 1, + maxColspan: 2 + } + } + ], + 2: [] + } + } + ], + outcomes: [], + metadata: {}, + variables: [] + } + } +}; diff --git a/lib/testing/src/lib/core/pages/form/formFields.ts b/lib/testing/src/lib/core/pages/form/formFields.ts index fc31ad53df..525c0eac29 100644 --- a/lib/testing/src/lib/core/pages/form/formFields.ts +++ b/lib/testing/src/lib/core/pages/form/formFields.ts @@ -54,13 +54,7 @@ export class FormFields { } async checkWidgetIsHidden(fieldId): Promise { - const hiddenElement = element(by.css(`adf-form-field div[id='field-${fieldId}-container'][hidden]`)); - await BrowserVisibility.waitUntilElementIsNotVisible(hiddenElement); - } - - async checkWidgetIsNotHidden(fieldId): Promise { - await this.checkWidgetIsVisible(fieldId); - const hiddenElement = element(by.css(`adf-form-field div[id='field-${fieldId}-container'][hidden]`)); + const hiddenElement = element(by.css(`adf-form-field div[id='field-${fieldId}-container']`)); await BrowserVisibility.waitUntilElementIsNotVisible(hiddenElement, 6000); } diff --git a/lib/testing/src/lib/core/pages/form/widgets/checkboxWidget.ts b/lib/testing/src/lib/core/pages/form/widgets/checkboxWidget.ts index 6c25041139..89ebbed1e6 100644 --- a/lib/testing/src/lib/core/pages/form/widgets/checkboxWidget.ts +++ b/lib/testing/src/lib/core/pages/form/widgets/checkboxWidget.ts @@ -35,7 +35,7 @@ export class CheckboxWidget { } async isCheckboxDisplayed(fieldId): Promise { - await this.formFields.checkWidgetIsNotHidden(fieldId); + await this.formFields.checkWidgetIsVisible(fieldId); } async isCheckboxHidden(fieldId): Promise {