From f2c954d91199e1f7508c68fe26d9c422d7f43e33 Mon Sep 17 00:00:00 2001 From: cristinaj Date: Wed, 24 Apr 2019 20:00:52 +0300 Subject: [PATCH] [ADF-4028][ADF-4047]Add process list cloud selection tests (#4537) * Add process list cloud selection tests * Fix lint issues * Fix lint issues * Added columns to contentServicesPage * Fix lint error. * Add the possibility to test the selection mode for process details. --- demo-shell/resources/i18n/en.json | 3 +- .../cloud/cloud-settings.component.html | 3 + .../cloud/cloud-settings.component.ts | 10 +- .../cloud/processes-cloud-demo.component.ts | 6 +- .../cloud/services/cloud-layout.service.ts | 1 + .../document-list-properties.e2e.ts | 112 +++++++++++++ e2e/pages/adf/contentServicesPage.ts | 49 ++++-- .../process-services/processCloudDemoPage.ts | 1 - .../process-services/tasksCloudDemoPage.ts | 6 + .../process-list-selection-cloud.e2e.ts | 150 ++++++++++++++++++ .../process-list-cloud-component.page.ts | 41 ++++- 11 files changed, 360 insertions(+), 22 deletions(-) create mode 100644 e2e/content-services/document-list/document-list-properties.e2e.ts create mode 100644 e2e/process-services-cloud/process-list-selection-cloud.e2e.ts diff --git a/demo-shell/resources/i18n/en.json b/demo-shell/resources/i18n/en.json index 17e745dcd7..bb329b5568 100644 --- a/demo-shell/resources/i18n/en.json +++ b/demo-shell/resources/i18n/en.json @@ -318,6 +318,7 @@ "MULTISELECTION": "Multiselection", "TESTING_MODE": "Testing Mode", "SELECTION_MODE": "Selection Mode", - "TASK_DETAILS_REDIRECTION": "Display task details on task click" + "TASK_DETAILS_REDIRECTION": "Display task details on task click", + "PROCESS_DETAILS_REDIRECTION": "Display process details on process click" } } diff --git a/demo-shell/src/app/components/cloud/cloud-settings.component.html b/demo-shell/src/app/components/cloud/cloud-settings.component.html index 3621839066..62d8ded230 100644 --- a/demo-shell/src/app/components/cloud/cloud-settings.component.html +++ b/demo-shell/src/app/components/cloud/cloud-settings.component.html @@ -8,6 +8,9 @@ {{ 'SETTINGS_CLOUD.TASK_DETAILS_REDIRECTION' | translate }} + + {{ 'SETTINGS_CLOUD.PROCESS_DETAILS_REDIRECTION' | translate }} + {{ 'SETTINGS_CLOUD.SELECTION_MODE' | translate }} diff --git a/demo-shell/src/app/components/cloud/cloud-settings.component.ts b/demo-shell/src/app/components/cloud/cloud-settings.component.ts index 7d2932b258..cdb7a31fb8 100644 --- a/demo-shell/src/app/components/cloud/cloud-settings.component.ts +++ b/demo-shell/src/app/components/cloud/cloud-settings.component.ts @@ -29,6 +29,7 @@ export class CloudSettingsComponent implements OnInit { selectionMode: string; testingMode: boolean; taskDetailsRedirection: boolean; + processDetailsRedirection: boolean; selectionModeOptions = [ { value: '', title: 'None' }, @@ -49,6 +50,7 @@ export class CloudSettingsComponent implements OnInit { this.testingMode = settings.testingMode; this.selectionMode = settings.selectionMode; this.taskDetailsRedirection = settings.taskDetailsRedirection; + this.processDetailsRedirection = settings.processDetailsRedirection; } } @@ -67,6 +69,11 @@ export class CloudSettingsComponent implements OnInit { this.setSetting(); } + toggleProcessDetailsRedirection() { + this.processDetailsRedirection = !this.processDetailsRedirection; + this.setSetting(); + } + onSelectionModeChange() { this.setSetting(); } @@ -76,7 +83,8 @@ export class CloudSettingsComponent implements OnInit { multiselect: this.multiselect, testingMode: this.testingMode, selectionMode: this.selectionMode, - taskDetailsRedirection: this.taskDetailsRedirection + taskDetailsRedirection: this.taskDetailsRedirection, + processDetailsRedirection: this.processDetailsRedirection }); } } diff --git a/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts b/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts index 99ec46a3c6..31a417e206 100644 --- a/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts +++ b/demo-shell/src/app/components/cloud/processes-cloud-demo.component.ts @@ -53,6 +53,7 @@ export class ProcessesCloudDemoComponent implements OnInit { selectedRows: string[] = []; testingMode: boolean; processFilterProperties: any = { filterProperties: [], sortProperties: [], actions: [] }; + processDetailsRedirection: boolean; editedFilter: ProcessFilterCloudModel; @@ -89,6 +90,7 @@ export class ProcessesCloudDemoComponent implements OnInit { this.multiselect = settings.multiselect; this.testingMode = settings.testingMode; this.selectionMode = settings.selectionMode; + this.processDetailsRedirection = settings.processDetailsRedirection; } } @@ -101,7 +103,9 @@ export class ProcessesCloudDemoComponent implements OnInit { } onRowClick(processInstanceId) { - this.router.navigate([`/cloud/${this.appName}/process-details/${processInstanceId}`]); + if (!this.multiselect && this.selectionMode !== 'multiple' && this.processDetailsRedirection) { + this.router.navigate([`/cloud/${this.appName}/process-details/${processInstanceId}`]); + } } onFilterChange(query: any) { diff --git a/demo-shell/src/app/components/cloud/services/cloud-layout.service.ts b/demo-shell/src/app/components/cloud/services/cloud-layout.service.ts index 6d8bb5ebcf..7bf710169c 100644 --- a/demo-shell/src/app/components/cloud/services/cloud-layout.service.ts +++ b/demo-shell/src/app/components/cloud/services/cloud-layout.service.ts @@ -27,6 +27,7 @@ export class CloudLayoutService { multiselect: false, testingMode: false, taskDetailsRedirection: true, + processDetailsRedirection: true, selectionMode: 'single' }; diff --git a/e2e/content-services/document-list/document-list-properties.e2e.ts b/e2e/content-services/document-list/document-list-properties.e2e.ts new file mode 100644 index 0000000000..58b419a460 --- /dev/null +++ b/e2e/content-services/document-list/document-list-properties.e2e.ts @@ -0,0 +1,112 @@ +/*! + * @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 { LoginPage } from '@alfresco/adf-testing'; +import { ContentServicesPage } from '../../pages/adf/contentServicesPage'; +import { NavigationBarPage } from '../../pages/adf/navigationBarPage'; + +import { AcsUserModel } from '../../models/ACS/acsUserModel'; +import TestConfig = require('../../test.config'); +import resources = require('../../util/resources'); + +import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; +import { UploadActions } from '../../actions/ACS/upload.actions'; +import { DropActions } from '../../actions/drop.actions'; +import { FileModel } from '../../models/ACS/fileModel'; + +describe('Document List Component - Properties', () => { + + const loginPage = new LoginPage(); + const contentServicesPage = new ContentServicesPage(); + const navigationBar = new NavigationBarPage(); + + let subFolder, parentFolder; + const uploadActions = new UploadActions(); + let acsUser = null; + + const pngFile = new FileModel({ + 'name': resources.Files.ADF_DOCUMENTS.PNG.file_name, + 'location': resources.Files.ADF_DOCUMENTS.PNG.file_location + }); + + beforeAll(() => { + this.alfrescoJsApi = new AlfrescoApi({ + provider: 'ECM', + hostEcm: TestConfig.adf.url + }); + }); + + describe('Allow drop files property', async () => { + + beforeEach(async (done) => { + acsUser = new AcsUserModel(); + + await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + await this.alfrescoJsApi.core.peopleApi.addPerson(acsUser); + + await this.alfrescoJsApi.login(acsUser.id, acsUser.password); + + parentFolder = await uploadActions.createFolder(this.alfrescoJsApi, 'parentFolder', '-my-'); + + subFolder = await uploadActions.createFolder(this.alfrescoJsApi, 'subFolder', parentFolder.entry.id); + + loginPage.loginToContentServicesUsingUserModel(acsUser); + + done(); + }); + + afterEach(async (done) => { + await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, subFolder.entry.id); + await uploadActions.deleteFilesOrFolder(this.alfrescoJsApi, parentFolder.entry.id); + done(); + }); + + it('[C299154] Should disallow upload content on a folder row if allowDropFiles is false', () => { + navigationBar.clickContentServicesButton(); + contentServicesPage.doubleClickRow(parentFolder.entry.name); + + contentServicesPage.disableDropFilesInAFolder(); + + const dragAndDropArea = contentServicesPage.getRowByName(subFolder.entry.name); + + const dragAndDrop = new DropActions(); + dragAndDrop.dropFile(dragAndDropArea, pngFile.location); + + contentServicesPage.checkContentIsDisplayed(pngFile.name); + contentServicesPage.doubleClickRow(subFolder.entry.name); + contentServicesPage.checkEmptyFolderTextToBe('This folder is empty'); + }); + + it('[C91319] Should allow upload content on a folder row if allowDropFiles is true', () => { + navigationBar.clickContentServicesButton(); + contentServicesPage.doubleClickRow(parentFolder.entry.name); + + contentServicesPage.enableDropFilesInAFolder(); + + const dragAndDropArea = contentServicesPage.getRowByName(subFolder.entry.name); + + const dragAndDrop = new DropActions(); + dragAndDrop.dropFile(dragAndDropArea, pngFile.location); + + contentServicesPage.checkContentIsNotDisplayed(pngFile.name); + contentServicesPage.doubleClickRow(subFolder.entry.name); + contentServicesPage.checkContentIsDisplayed(pngFile.name); + }); + }); +}); diff --git a/e2e/pages/adf/contentServicesPage.ts b/e2e/pages/adf/contentServicesPage.ts index 4b263f7524..3f0539d31f 100644 --- a/e2e/pages/adf/contentServicesPage.ts +++ b/e2e/pages/adf/contentServicesPage.ts @@ -18,6 +18,7 @@ import TestConfig = require('../../test.config'); import { CreateFolderDialog } from './dialog/createFolderDialog'; import { CreateLibraryDialog } from './dialog/createLibraryDialog'; +import { FormControllersPage } from '@alfresco/adf-testing'; import { DropActions } from '../../actions/drop.actions'; import { by, element, protractor, $$, browser } from 'protractor'; @@ -27,7 +28,17 @@ import { BrowserVisibility, DocumentListPage } from '@alfresco/adf-testing'; export class ContentServicesPage { + columns = { + name: 'Display name', + size: 'Size', + nodeId: 'Node id', + createdBy: 'Created by', + created: 'Created' + }; + contentList = new DocumentListPage(element.all(by.css('adf-upload-drag-area adf-document-list')).first()); + formControllersPage = new FormControllersPage(); + multipleFileUploadToggle = element(by.id('adf-document-list-enable-drop-files')); createFolderDialog = new CreateFolderDialog(); createLibraryDialog = new CreateLibraryDialog(); dragAndDropAction = new DropActions(); @@ -165,16 +176,26 @@ export class ContentServicesPage { return this; } + enableDropFilesInAFolder() { + this.formControllersPage.enableToggle(this.multipleFileUploadToggle); + return this; + } + + disableDropFilesInAFolder() { + this.formControllersPage.disableToggle(this.multipleFileUploadToggle); + return this; + } + getElementsDisplayedSize() { - return this.contentList.dataTablePage().getAllRowsColumnValues('Size'); + return this.contentList.dataTablePage().getAllRowsColumnValues(this.columns.size); } getElementsDisplayedName() { - return this.contentList.dataTablePage().getAllRowsColumnValues('Display name'); + return this.contentList.dataTablePage().getAllRowsColumnValues(this.columns.name); } getElementsDisplayedId() { - return this.contentList.dataTablePage().getAllRowsColumnValues('Node id'); + return this.contentList.dataTablePage().getAllRowsColumnValues(this.columns.nodeId); } checkElementsSortedAsc(elements) { @@ -311,7 +332,7 @@ export class ContentServicesPage { } getAllRowsNameColumn() { - return this.contentList.getAllRowsColumnValues('Display name'); + return this.contentList.getAllRowsColumnValues(this.columns.name); } sortByName(sortOrder) { @@ -336,19 +357,19 @@ export class ContentServicesPage { } async checkListIsSortedByNameColumn(sortOrder) { - return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, 'Display name'); + return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, this.columns.name); } async checkListIsSortedByCreatedColumn(sortOrder) { - return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, 'Created'); + return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, this.columns.created); } async checkListIsSortedByAuthorColumn(sortOrder) { - return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, 'Created by'); + return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, this.columns.createdBy); } async checkListIsSortedBySizeColumn(sortOrder) { - return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, 'Size'); + return await this.contentList.dataTablePage().checkListIsSorted(sortOrder, this.columns.size); } sortAndCheckListIsOrderedByAuthor(sortOrder) { @@ -396,7 +417,7 @@ export class ContentServicesPage { } checkContentIsDisplayed(content) { - this.contentList.dataTablePage().checkContentIsDisplayed('Display name', content); + this.contentList.dataTablePage().checkContentIsDisplayed(this.columns.name, content); return this; } @@ -408,7 +429,7 @@ export class ContentServicesPage { } checkContentIsNotDisplayed(content) { - this.contentList.dataTablePage().checkContentIsNotDisplayed('Display name', content); + this.contentList.dataTablePage().checkContentIsNotDisplayed(this.columns.name, content); return this; } @@ -551,7 +572,7 @@ export class ContentServicesPage { } getColumnValueForRow(file, columnName) { - return this.contentList.dataTablePage().getColumnValueForRow('Display name', file, columnName); + return this.contentList.dataTablePage().getColumnValueForRow(this.columns.name, file, columnName); } async getStyleValueForRowText(rowName, styleName) { @@ -651,7 +672,7 @@ export class ContentServicesPage { } checkRowIsDisplayed(rowName) { - const row = this.contentList.dataTablePage().getCellElementByValue('Display name', rowName); + const row = this.contentList.dataTablePage().getCellElementByValue(this.columns.name, rowName); BrowserVisibility.waitUntilElementIsVisible(row); } @@ -674,4 +695,8 @@ export class ContentServicesPage { this.multiSelectToggle.click(); } + getRowByName(rowName) { + return this.contentList.dataTable.getRow(this.columns.name, rowName); + } + } diff --git a/e2e/pages/adf/demo-shell/process-services/processCloudDemoPage.ts b/e2e/pages/adf/demo-shell/process-services/processCloudDemoPage.ts index afb1f7f51e..bb14c563ec 100644 --- a/e2e/pages/adf/demo-shell/process-services/processCloudDemoPage.ts +++ b/e2e/pages/adf/demo-shell/process-services/processCloudDemoPage.ts @@ -98,5 +98,4 @@ export class ProcessCloudDemoPage { this.createButton.click(); return this; } - } diff --git a/e2e/pages/adf/demo-shell/process-services/tasksCloudDemoPage.ts b/e2e/pages/adf/demo-shell/process-services/tasksCloudDemoPage.ts index 445b05b1d7..18c191bc45 100644 --- a/e2e/pages/adf/demo-shell/process-services/tasksCloudDemoPage.ts +++ b/e2e/pages/adf/demo-shell/process-services/tasksCloudDemoPage.ts @@ -34,6 +34,7 @@ export class TasksCloudDemoPage { modeDropDownArrow = element(by.css('mat-form-field[data-automation-id="selectionMode"] div[class*="arrow-wrapper"]')); modeSelector = element(by.css("div[class*='mat-select-panel']")); displayTaskDetailsToggle = element(by.css('mat-slide-toggle[data-automation-id="taskDetailsRedirection"]')); + displayProcessDetailsToggle = element(by.css('mat-slide-toggle[data-automation-id="processDetailsRedirection"]')); multiSelectionToggle = element(by.css('mat-slide-toggle[data-automation-id="multiSelection"]')); formControllersPage = new FormControllersPage(); @@ -45,6 +46,11 @@ export class TasksCloudDemoPage { return this; } + disableDisplayProcessDetails() { + this.formControllersPage.disableToggle(this.displayProcessDetailsToggle); + return this; + } + enableMultiSelection() { this.formControllersPage.enableToggle(this.multiSelectionToggle); return this; diff --git a/e2e/process-services-cloud/process-list-selection-cloud.e2e.ts b/e2e/process-services-cloud/process-list-selection-cloud.e2e.ts new file mode 100644 index 0000000000..96cf93c843 --- /dev/null +++ b/e2e/process-services-cloud/process-list-selection-cloud.e2e.ts @@ -0,0 +1,150 @@ +/*! + * @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 TestConfig = require('../test.config'); +import { LoginSSOPage } from '@alfresco/adf-testing'; +import { SettingsPage } from '@alfresco/adf-testing'; +import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/processCloudDemoPage'; +import { AppListCloudPage } from '@alfresco/adf-testing'; +import { NavigationBarPage } from '../pages/adf/navigationBarPage'; +import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasksCloudDemoPage'; + +import { ProcessDefinitionsService, ApiService } from '@alfresco/adf-testing'; +import { ProcessInstancesService } from '@alfresco/adf-testing'; + +import { browser } from 'protractor'; + +describe('Process list cloud', () => { + + describe('Process List - selection', () => { + const settingsPage = new SettingsPage(); + const loginSSOPage = new LoginSSOPage(); + const navigationBarPage = new NavigationBarPage(); + const appListCloudComponent = new AppListCloudPage(); + const processCloudDemoPage = new ProcessCloudDemoPage(); + const tasksCloudDemoPage = new TasksCloudDemoPage(); + + let processDefinitionService: ProcessDefinitionsService; + let processInstancesService: ProcessInstancesService; + + let silentLogin; + const simpleApp = 'simple-app'; + const noOfProcesses = 3; + let response; + const processInstances = []; + + beforeAll(async (done) => { + silentLogin = false; + settingsPage.setProviderBpmSso(TestConfig.adf.hostBPM, TestConfig.adf.hostSso, TestConfig.adf.hostIdentity, silentLogin); + loginSSOPage.clickOnSSOButton(); + browser.ignoreSynchronization = true; + loginSSOPage.loginSSOIdentityService(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + const apiService = new ApiService('activiti', TestConfig.adf.hostBPM, TestConfig.adf.hostSso, 'BPM'); + await apiService.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword); + + processDefinitionService = new ProcessDefinitionsService(apiService); + const processDefinition = await processDefinitionService.getProcessDefinitions(simpleApp); + + processInstancesService = new ProcessInstancesService(apiService); + for (let i = 0; i < noOfProcesses; i++) { + response = await processInstancesService.createProcessInstance(processDefinition.list.entries[0].entry.key, simpleApp); + processInstances.push(response.entry.id); + } + + navigationBarPage.navigateToProcessServicesCloudPage(); + appListCloudComponent.checkApsContainer(); + appListCloudComponent.goToApp(simpleApp); + processCloudDemoPage.clickOnProcessFilters(); + processCloudDemoPage.runningProcessesFilter().clickProcessFilter(); + expect(processCloudDemoPage.getActiveFilterName()).toBe('Running Processes'); + tasksCloudDemoPage.clickSettingsButton().disableDisplayProcessDetails(); + tasksCloudDemoPage.clickAppButton(); + done(); + + }); + + it('[C297469] Should NOT be able to select a process when settings are set to None', () => { + tasksCloudDemoPage.clickSettingsButton().selectSelectionMode('None'); + tasksCloudDemoPage.clickAppButton(); + expect(processCloudDemoPage.getActiveFilterName()).toEqual('Running Processes'); + + processCloudDemoPage.processListCloudComponent().selectRowById(processInstances[0]); + processCloudDemoPage.processListCloudComponent().getDataTable().checkNoRowIsSelected(); + }); + + it('[C297468] Should be able to select only one process when settings are set to Single', () => { + tasksCloudDemoPage.clickSettingsButton().selectSelectionMode('Single'); + tasksCloudDemoPage.clickAppButton(); + expect(processCloudDemoPage.getActiveFilterName()).toEqual('Running Processes'); + + processCloudDemoPage.processListCloudComponent().selectRowById(processInstances[0]); + processCloudDemoPage.processListCloudComponent().checkRowIsSelectedById(processInstances[0]); + expect(processCloudDemoPage.processListCloudComponent().getDataTable().getNumberOfSelectedRows()).toEqual(1); + processCloudDemoPage.processListCloudComponent().selectRowById(processInstances[1]); + processCloudDemoPage.processListCloudComponent().checkRowIsSelectedById(processInstances[1]); + expect(processCloudDemoPage.processListCloudComponent().getDataTable().getNumberOfSelectedRows()).toEqual(1); + }); + + it('[C297470] Should be able to select multiple processes using keyboard', () => { + tasksCloudDemoPage.clickSettingsButton().selectSelectionMode('Multiple'); + tasksCloudDemoPage.clickAppButton(); + expect(processCloudDemoPage.getActiveFilterName()).toEqual('Running Processes'); + + processCloudDemoPage.processListCloudComponent().selectRowById(processInstances[0]); + processCloudDemoPage.processListCloudComponent().checkRowIsSelectedById(processInstances[0]); + processCloudDemoPage.processListCloudComponent().selectRowWithKeyboard(processInstances[1]); + processCloudDemoPage.processListCloudComponent().checkRowIsSelectedById(processInstances[0]); + processCloudDemoPage.processListCloudComponent().checkRowIsSelectedById(processInstances[1]); + processCloudDemoPage.processListCloudComponent().checkRowIsNotSelectedById(processInstances[2]); + expect(processCloudDemoPage.processListCloudComponent().getDataTable().getNumberOfSelectedRows()).toEqual(2); + }); + + it('[C297465] Should be able to select multiple processes using checkboxes', () => { + tasksCloudDemoPage.clickSettingsButton().enableMultiSelection(); + tasksCloudDemoPage.clickAppButton(); + expect(processCloudDemoPage.getActiveFilterName()).toEqual('Running Processes'); + + processCloudDemoPage.processListCloudComponent().checkCheckboxById(processInstances[0]); + processCloudDemoPage.processListCloudComponent().checkRowIsCheckedById(processInstances[0]); + processCloudDemoPage.processListCloudComponent().checkCheckboxById(processInstances[1]); + processCloudDemoPage.processListCloudComponent().checkRowIsCheckedById(processInstances[1]); + processCloudDemoPage.processListCloudComponent().checkRowIsNotCheckedById(processInstances[2]); + processCloudDemoPage.processListCloudComponent().checkCheckboxById(processInstances[1]); + processCloudDemoPage.processListCloudComponent().checkRowIsNotCheckedById(processInstances[1]); + processCloudDemoPage.processListCloudComponent().checkRowIsCheckedById(processInstances[0]); + }); + + it('[C299125] Should be possible to select all the rows when multiselect is true', () => { + tasksCloudDemoPage.clickSettingsButton().enableMultiSelection(); + tasksCloudDemoPage.clickAppButton(); + expect(processCloudDemoPage.getActiveFilterName()).toEqual('Running Processes'); + + processCloudDemoPage.processListCloudComponent().getDataTable().checkAllRowsButtonIsDisplayed().checkAllRows(); + processCloudDemoPage.processListCloudComponent().checkRowIsCheckedById(processInstances[0]); + processCloudDemoPage.processListCloudComponent().checkRowIsCheckedById(processInstances[1]); + processCloudDemoPage.processListCloudComponent().checkRowIsCheckedById(processInstances[2]); + + processCloudDemoPage.processListCloudComponent().getDataTable().checkAllRowsButtonIsDisplayed().checkAllRows(); + processCloudDemoPage.processListCloudComponent().checkRowIsNotCheckedById(processInstances[0]); + processCloudDemoPage.processListCloudComponent().checkRowIsNotCheckedById(processInstances[1]); + processCloudDemoPage.processListCloudComponent().checkRowIsNotCheckedById(processInstances[2]); + }); + + }); + +}); diff --git a/lib/testing/src/lib/process-services-cloud/pages/process-list-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/process-list-cloud-component.page.ts index a6f57abda1..e1a4938541 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/process-list-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/process-list-cloud-component.page.ts @@ -21,6 +21,11 @@ import { element, by } from 'protractor'; export class ProcessListCloudComponentPage { + columns = { + id: 'Id', + name: 'Name' + }; + processList = element(by.css('adf-cloud-process-list')); noProcessFound = element.all(by.css("div[class='adf-empty-content__title']")).first(); @@ -31,27 +36,51 @@ export class ProcessListCloudComponentPage { } selectRow(processName) { - return this.dataTable.selectRow('Name', processName); + return this.dataTable.selectRow(this.columns.name, processName); } selectRowById(processId) { - return this.dataTable.selectRow('Id', processId); + return this.dataTable.selectRow(this.columns.id, processId); + } + + checkRowIsSelectedById(processId) { + return this.dataTable.checkRowIsSelected(this.columns.id, processId); + } + + checkRowIsNotSelectedById(processId) { + return this.dataTable.checkRowIsNotSelected(this.columns.id, processId); + } + + checkRowIsCheckedById(processId) { + return this.dataTable.checkRowIsChecked(this.columns.id, processId); + } + + checkRowIsNotCheckedById(processId) { + return this.dataTable.checkRowIsNotChecked(this.columns.id, processId); + } + + checkCheckboxById(processId) { + return this.dataTable.clickCheckbox(this.columns.id, processId); } checkContentIsDisplayedByName(processName) { - return this.dataTable.checkContentIsDisplayed('Name', processName); + return this.dataTable.checkContentIsDisplayed(this.columns.name, processName); } checkContentIsDisplayedById(processId) { - return this.dataTable.checkContentIsDisplayed('Id', processId); + return this.dataTable.checkContentIsDisplayed(this.columns.id, processId); } checkContentIsNotDisplayedById(processId) { - return this.dataTable.checkContentIsNotDisplayed('Id', processId); + return this.dataTable.checkContentIsNotDisplayed(this.columns.id, processId); + } + + selectRowWithKeyboard(processId) { + return this.dataTable.selectRowWithKeyboard(this.columns.id, processId); } getAllRowsNameColumn() { - return this.dataTable.getAllRowsColumnValues('Name'); + return this.dataTable.getAllRowsColumnValues(this.columns.name); } checkProcessListIsLoaded() {