diff --git a/e2e/pages/adf/configEditorPage.ts b/e2e/pages/adf/configEditorPage.ts index c31bc7b068..ce6b349b3b 100644 --- a/e2e/pages/adf/configEditorPage.ts +++ b/e2e/pages/adf/configEditorPage.ts @@ -69,4 +69,11 @@ export class ConfigEditorPage { Util.waitUntilElementIsClickable(button); return button.click(); } + + clickEditProcessCloudConfiguration() { + let button = element(by.id('adf-edit-process-filter-conf')); + Util.waitUntilElementIsVisible(button); + Util.waitUntilElementIsClickable(button); + return button.click(); + } } diff --git a/e2e/pages/adf/dialog/editProcessFilterDialog.ts b/e2e/pages/adf/dialog/editProcessFilterDialog.ts new file mode 100644 index 0000000000..325b168cc7 --- /dev/null +++ b/e2e/pages/adf/dialog/editProcessFilterDialog.ts @@ -0,0 +1,82 @@ +/*! + * @license + * Copyright 2019 Alfresco Software, Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { by, element } from 'protractor'; +import { Util } from '../../../util/util'; + +export class EditProcessFilterDialog { + + componentElement = element(by.css('adf-cloud-process-filter-dialog-cloud')); + title = element(by.id('adf-process-filter-dialog-title')); + filterNameInput = element(by.id('adf-filter-name-id')); + saveButtonLocator = by.id('adf-save-button-id'); + cancelButtonLocator = by.id('adf-cancel-button-id'); + + clickOnSaveButton() { + let saveButton = this.componentElement.element(this.saveButtonLocator); + Util.waitUntilElementIsVisible(saveButton); + saveButton.click(); + Util.waitUntilElementIsNotVisible(this.componentElement); + return this; + } + + checkSaveButtonIsEnabled() { + Util.waitUntilElementIsVisible(this.componentElement.element(this.saveButtonLocator)); + return this.componentElement.element(this.saveButtonLocator).isEnabled(); + } + + clickOnCancelButton() { + let cancelButton = this.componentElement.element(this.cancelButtonLocator); + Util.waitUntilElementIsVisible(cancelButton); + cancelButton.click(); + Util.waitUntilElementIsNotVisible(this.componentElement); + return this; + } + + checkCancelButtonIsEnabled() { + Util.waitUntilElementIsVisible(this.componentElement.element(this.cancelButtonLocator)); + return this.componentElement.element(this.cancelButtonLocator).isEnabled(); + } + + getFilterName() { + Util.waitUntilElementIsVisible(this.filterNameInput); + return this.filterNameInput.getAttribute('value'); + } + + setFilterName(filterName) { + this.clearFilterName(); + this.filterNameInput.sendKeys(filterName); + return this; + } + + clearFilterName() { + Util.waitUntilElementIsVisible(this.filterNameInput); + this.filterNameInput.click(); + this.filterNameInput.getAttribute('value').then((value) => { + for (let i = value.length; i >= 0; i--) { + this.filterNameInput.sendKeys(protractor.Key.BACK_SPACE); + } + }); + return this; + } + + getTitle() { + Util.waitUntilElementIsVisible(this.title); + return this.title.getText(); + } + +} diff --git a/e2e/pages/adf/process-cloud/editProcessFilterCloudComponent.ts b/e2e/pages/adf/process-cloud/editProcessFilterCloudComponent.ts index 5e8acdb3b0..2a1f122ab6 100644 --- a/e2e/pages/adf/process-cloud/editProcessFilterCloudComponent.ts +++ b/e2e/pages/adf/process-cloud/editProcessFilterCloudComponent.ts @@ -16,11 +16,19 @@ */ import { Util } from '../../../util/util'; import { by, element } from 'protractor'; +import { EditProcessFilterDialog } from '../dialog/editProcessFilterDialog'; export class EditProcessFilterCloudComponent { customiseFilter = element(by.id('adf-edit-process-filter-title-id')); selectedOption = element(by.css('mat-option[class*="mat-selected"]')); + saveAsButton = element(by.css('button[id="adf-save-as-id"]')); + + editProcessFilter = new EditProcessFilterDialog(); + + editProcessFilterDialog() { + return this.editProcessFilter; + } clickCustomiseFilterHeader() { Util.waitUntilElementIsVisible(this.customiseFilter); @@ -59,9 +67,39 @@ export class EditProcessFilterCloudComponent { } clickOnDropDownArrow(option) { - let dropDownArrow = element(by.css("mat-form-field[data-automation-id='" + option + "'] div[class*='arrow']")); + let dropDownArrow = element.all(by.css("mat-form-field[data-automation-id='" + option + "'] div[class*='arrow']")).first(); Util.waitUntilElementIsVisible(dropDownArrow); dropDownArrow.click(); Util.waitUntilElementIsVisible(this.selectedOption); } + + setProcessInstanceId(option) { + return this.setProperty('processInstanceId', option); + } + + getProcessInstanceId() { + return this.getProperty('processInstanceId'); + } + + getProperty(property) { + let locator = element.all(by.css('input[data-automation-id="adf-cloud-edit-process-property-' + property + '"]')).first(); + Util.waitUntilElementIsVisible(locator); + return locator.getAttribute('value'); + } + + setProperty(property, option) { + let locator = element.all(by.css('input[data-automation-id="adf-cloud-edit-process-property-' + property + '"]')).first(); + Util.waitUntilElementIsVisible(locator); + locator.clear(); + locator.sendKeys(option); + locator.sendKeys(protractor.Key.ENTER); + return this; + } + + clickSaveAsButton() { + Util.waitUntilElementIsClickable(this.saveAsButton); + Util.waitUntilElementIsVisible(this.saveAsButton); + this.saveAsButton.click(); + return this.editProcessFilter; + } } diff --git a/e2e/process-services-cloud/process-custom-filters.e2e.ts b/e2e/process-services-cloud/process-custom-filters.e2e.ts index 863aa5c431..e14f645746 100644 --- a/e2e/process-services-cloud/process-custom-filters.e2e.ts +++ b/e2e/process-services-cloud/process-custom-filters.e2e.ts @@ -23,6 +23,7 @@ import { NavigationBarPage } from '../pages/adf/navigationBarPage'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; import { AppListCloudComponent } from '../pages/adf/process-cloud/appListCloudComponent'; +import { ConfigEditorPage } from '../pages/adf/configEditorPage'; import { ProcessDefinitions } from '../actions/APS-cloud/process-definitions'; import { ProcessInstances } from '../actions/APS-cloud/process-instances'; @@ -32,6 +33,7 @@ import { Query } from '../actions/APS-cloud/query'; describe('Process list cloud', () => { describe('Process List', () => { + const configEditorPage = new ConfigEditorPage(); const settingsPage = new SettingsPage(); const loginSSOPage = new LoginSSOPage(); const navigationBarPage = new NavigationBarPage(); @@ -55,6 +57,16 @@ describe('Process list cloud', () => { loginSSOPage.clickOnSSOButton(); loginSSOPage.loginAPS(user, password); + navigationBarPage.clickConfigEditorButton(); + configEditorPage.clickEditProcessCloudConfiguration(); + configEditorPage.clickClearButton(); + configEditorPage.enterConfiguration('{' + + '"properties": [' + + '"state",' + '"processInstanceId",' + '"sort",' + '"order"' + + ']' + + '}'); + configEditorPage.clickSaveButton(); + await processDefinitionService.init(user, password); let processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); await processInstancesService.init(user, password); @@ -119,6 +131,23 @@ describe('Process list cloud', () => { }); }); + it('[C297697] The value of the filter should be preserved when saving it', async() => { + processCloudDemoPage.editProcessFilterCloudComponent().clickCustomiseFilterHeader() + .setProcessInstanceId(completedProcess.entry.id); + + processCloudDemoPage.processListCloudComponent().getDataTable().checkSpinnerIsDisplayed().checkSpinnerIsNotDisplayed(); + + expect(tasksCloudDemoPage.taskListCloudComponent().getDataTable().getAllDisplayedRows()).toBe(1); + tasksCloudDemoPage.taskListCloudComponent().getDataTable().checkContentIsDisplayed(completedProcess.entry.id); + + processCloudDemoPage.editProcessFilterCloudComponent().clickSaveAsButton(); + processCloudDemoPage.editProcessFilterCloudComponent().editProcessFilterDialog().setFilterName('New').clickOnSaveButton(); + expect(processCloudDemoPage.getActiveFilterName()).toBe('New'); + + processCloudDemoPage.editProcessFilterCloudComponent().clickCustomiseFilterHeader(); + expect(processCloudDemoPage.editProcessFilterCloudComponent().getProcessInstanceId()).toEqual(completedProcess.entry.id); + }); + }); });