From 7fa9b59082276078595049d643b83870bd4e422f Mon Sep 17 00:00:00 2001 From: dhrn <14145706+dhrn@users.noreply.github.com> Date: Wed, 22 Apr 2020 18:29:44 +0530 Subject: [PATCH] [ADF-5118] Enable E2E (#5628) * Enable E2E 1. C305010 2. C311290 3. C317658 * * improved e2e * * minor changes * * upload fixed * improve e2e Co-authored-by: Eugenio Romano --- .../task-visibility-condition.e2e.ts | 33 ++++--- .../process-custom-filters.e2e.ts | 85 ++++++++----------- .../process-header-cloud.e2e.ts | 11 ++- .../process-list-selection-cloud.e2e.ts | 22 +++-- ...cess-task-attach-content-file-cloud.e2e.ts | 32 ++++--- .../start-task-form-cloud.e2e.ts | 63 ++++++-------- .../tasks-custom-filters.e2e.ts | 5 -- e2e/protractor.excludes.json | 5 +- .../identity/group-identity.service.ts | 24 ++++-- ...dit-process-filter-cloud-component.page.ts | 10 +++ .../process-header-cloud-component.page.ts | 16 ++-- 11 files changed, 156 insertions(+), 150 deletions(-) diff --git a/e2e/process-services-cloud/form-field/task-visibility-condition.e2e.ts b/e2e/process-services-cloud/form-field/task-visibility-condition.e2e.ts index b4998ad94c..c53ebc9afa 100644 --- a/e2e/process-services-cloud/form-field/task-visibility-condition.e2e.ts +++ b/e2e/process-services-cloud/form-field/task-visibility-condition.e2e.ts @@ -15,13 +15,22 @@ * limitations under the License. */ -import { LoginSSOPage, AppListCloudPage, IdentityService, GroupIdentityService, ApiService, StringUtil, StartTasksCloudPage, TaskFormCloudComponent, EditProcessFilterCloudComponentPage, StartProcessPage } from '@alfresco/adf-testing'; +import { + LoginSSOPage, + AppListCloudPage, + IdentityService, + GroupIdentityService, + ApiService, + StringUtil, + StartTasksCloudPage, + TaskFormCloudComponent, + StartProcessPage +} from '@alfresco/adf-testing'; import { browser, by } from 'protractor'; import { NavigationBarPage } from '../../pages/adf/navigation-bar.page'; import { TasksCloudDemoPage } from '../../pages/adf/demo-shell/process-services/tasks-cloud-demo.page'; import { ProcessCloudDemoPage } from '../../pages/adf/demo-shell/process-services/process-cloud-demo.page'; -import { ProcessDetailsCloudDemoPage } from '../../pages/adf/demo-shell/process-services-cloud/process-details-cloud-demo.page'; describe('Task cloud visibility', async () => { @@ -32,8 +41,6 @@ describe('Task cloud visibility', async () => { const taskFormCloudComponent = new TaskFormCloudComponent(); const startProcessPage = new StartProcessPage(); const processCloudDemoPage = new ProcessCloudDemoPage(); - const processDetailsCloudDemoPage = new ProcessDetailsCloudDemoPage(); - const editProcessFilterCloudComponentPage = new EditProcessFilterCloudComponentPage(); const loginSSOPage = new LoginSSOPage(); const simpleApp = browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.name; @@ -74,6 +81,7 @@ describe('Task cloud visibility', async () => { await startTask.selectFormDefinition(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.forms.requirednumbervisibility.name); await startTask.clickStartButton(); + await tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitTillContentLoaded(); await tasksCloudDemoPage.taskListCloudComponent().selectRow(standaloneTaskName); await taskFormCloudComponent.formFields().checkWidgetIsVisible('Number1'); @@ -90,7 +98,6 @@ describe('Task cloud visibility', async () => { }); it('[C315169] Should be able to start a process with visibility condition for number widgets ', async () => { - await processCloudDemoPage.openNewProcessForm(); await startProcessPage.clearField(startProcessPage.processNameInput); await startProcessPage.selectFromProcessDropdown(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.numbervisibilityprocess); @@ -98,9 +105,10 @@ describe('Task cloud visibility', async () => { await startProcessPage.enterProcessName(processName); await startProcessPage.clickStartProcessButton(); - await editProcessFilterCloudComponentPage.openFilter(); - await editProcessFilterCloudComponentPage.setProcessName(processName); - await processDetailsCloudDemoPage.selectProcessTaskByName(processName); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ processName }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); + await processCloudDemoPage.processListCloudComponent().selectRow(processName); + await tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitTillContentLoaded(); await tasksCloudDemoPage.taskListCloudComponent().selectRow('number_visibility_task'); await taskFormCloudComponent.clickClaimButton(); @@ -122,16 +130,16 @@ describe('Task cloud visibility', async () => { }); it('[C315232] Should be able to complete a process with visibility condition for boolean widgets', async () => { - await processCloudDemoPage.openNewProcessForm(); await startProcessPage.clearField(startProcessPage.processNameInput); await startProcessPage.selectFromProcessDropdown(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.booleanvisibilityprocess); await startProcessPage.enterProcessName(processName); await startProcessPage.clickStartProcessButton(); - await editProcessFilterCloudComponentPage.openFilter(); - await editProcessFilterCloudComponentPage.setProcessName(processName); - await processDetailsCloudDemoPage.selectProcessTaskByName(processName); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ processName }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); + await processCloudDemoPage.processListCloudComponent().selectRow(processName); + await tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitTillContentLoaded(); await tasksCloudDemoPage.taskListCloudComponent().selectRow('boolean_visibility_task'); await taskFormCloudComponent.clickClaimButton(); @@ -154,6 +162,7 @@ describe('Task cloud visibility', async () => { await startTask.selectFormDefinition(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.forms.booleanvisibility.name); await startTask.clickStartButton(); + await tasksCloudDemoPage.taskListCloudComponent().getDataTable().waitTillContentLoaded(); await tasksCloudDemoPage.taskListCloudComponent().selectRow(standaloneTaskName); await taskFormCloudComponent.formFields().checkWidgetIsVisible('Checkbox2'); diff --git a/e2e/process-services-cloud/process-custom-filters.e2e.ts b/e2e/process-services-cloud/process-custom-filters.e2e.ts index a2368d0d80..06054dd714 100644 --- a/e2e/process-services-cloud/process-custom-filters.e2e.ts +++ b/e2e/process-services-cloud/process-custom-filters.e2e.ts @@ -105,8 +105,8 @@ describe('Process list cloud', () => { }); afterAll(async () => { + await apiService.login(testUser.email, testUser.password); await processInstancesService.deleteProcessInstance(anotherProcessInstance.entry.id, candidateBaseApp); - await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); await identityService.deleteIdentityUser(testUser.idIdentityService); }); @@ -120,109 +120,90 @@ describe('Process list cloud', () => { }); it('[C290069] Should display processes ordered by name when Name is selected from sort dropdown', async () => { - const editProcessFilterCloudComponent = processCloudDemoPage.editProcessFilterCloudComponent(); - await editProcessFilterCloudComponent.openFilter(); - await editProcessFilterCloudComponent.setStatusFilterDropDown('RUNNING'); - await editProcessFilterCloudComponent.setSortFilterDropDown('Name'); - await editProcessFilterCloudComponent.setOrderFilterDropDown('ASC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ status: 'RUNNING', sort: 'Name', order: 'ASC' }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Name')).toBe(true); - await processCloudDemoPage.editProcessFilterCloudComponent().setOrderFilterDropDown('DESC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ order: 'DESC'}); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Name')).toBe(true); - }); it('[C291783] Should display processes ordered by id when Id is selected from sort dropdown', async () => { - const editProcessFilterCloudComponent = processCloudDemoPage.editProcessFilterCloudComponent(); - await editProcessFilterCloudComponent.openFilter(); - await editProcessFilterCloudComponent.setStatusFilterDropDown('RUNNING'); - await editProcessFilterCloudComponent.setSortFilterDropDown('Id'); - await editProcessFilterCloudComponent.setOrderFilterDropDown('ASC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ status: 'RUNNING', sort: 'Id', order: 'ASC' }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Id')).toBe(true); - await processCloudDemoPage.editProcessFilterCloudComponent().setOrderFilterDropDown('DESC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ order: 'DESC'}); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Id')).toBe(true); - }); it('[C305054] Should display processes ordered by status when Status is selected from sort dropdown', async () => { - const editProcessFilterCloudComponent = processCloudDemoPage.editProcessFilterCloudComponent(); - await editProcessFilterCloudComponent.openFilter(); - await editProcessFilterCloudComponent.setStatusFilterDropDown('ALL'); - await editProcessFilterCloudComponent.setSortFilterDropDown('Status'); - await editProcessFilterCloudComponent.setOrderFilterDropDown('ASC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ status: 'ALL', sort: 'Status', order: 'ASC' }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Status')).toBe(true); - await processCloudDemoPage.editProcessFilterCloudComponent().setOrderFilterDropDown('DESC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ order: 'DESC'}); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Status')).toBe(true); }); it('[C305054] Should display processes ordered by initiator when Initiator is selected from sort dropdown', async () => { - const editProcessFilterCloudComponent = processCloudDemoPage.editProcessFilterCloudComponent(); - await editProcessFilterCloudComponent.openFilter(); - await editProcessFilterCloudComponent.setStatusFilterDropDown('ALL'); - await editProcessFilterCloudComponent.setSortFilterDropDown('Initiator'); - await editProcessFilterCloudComponent.setOrderFilterDropDown('ASC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ status: 'ALL', sort: 'Initiator', order: 'ASC' }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Initiator')).toBe(true); - await processCloudDemoPage.editProcessFilterCloudComponent().setOrderFilterDropDown('DESC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ order: 'DESC'}); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Initiator')).toBe(true); }); it('[C305054] Should display processes ordered by processdefinitionid date when ProcessDefinitionId is selected from sort dropdown', async () => { - const editProcessFilterCloudComponent = processCloudDemoPage.editProcessFilterCloudComponent(); - await editProcessFilterCloudComponent.openFilter(); - await editProcessFilterCloudComponent.setStatusFilterDropDown('ALL'); - await editProcessFilterCloudComponent.setSortFilterDropDown('ProcessDefinitionId'); - await editProcessFilterCloudComponent.setOrderFilterDropDown('ASC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ status: 'ALL', sort: 'ProcessDefinitionId', order: 'ASC' }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Process Definition Id')).toBe(true); - await processCloudDemoPage.editProcessFilterCloudComponent().setOrderFilterDropDown('DESC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ order: 'DESC'}); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Process Definition Id')).toBe(true); }); it('[C305054] Should display processes ordered by processdefinitionkey date when ProcessDefinitionKey is selected from sort dropdown', async () => { - const editProcessFilterCloudComponent = processCloudDemoPage.editProcessFilterCloudComponent(); - await editProcessFilterCloudComponent.openFilter(); - await editProcessFilterCloudComponent.setStatusFilterDropDown('ALL'); - await editProcessFilterCloudComponent.setSortFilterDropDown('ProcessDefinitionKey'); - await editProcessFilterCloudComponent.setOrderFilterDropDown('ASC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ status: 'ALL', sort: 'ProcessDefinitionKey', order: 'ASC' }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Process Definition Key')).toBe(true); - await processCloudDemoPage.editProcessFilterCloudComponent().setOrderFilterDropDown('DESC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ order: 'DESC'}); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Process Definition Key')).toBe(true); }); it('[C305054] Should display processes ordered by last modified date when Last Modified is selected from sort dropdown', async () => { - const editProcessFilterCloudComponent = processCloudDemoPage.editProcessFilterCloudComponent(); - await editProcessFilterCloudComponent.openFilter(); - await editProcessFilterCloudComponent.setStatusFilterDropDown('ALL'); - await editProcessFilterCloudComponent.setSortFilterDropDown('LastModified'); - await editProcessFilterCloudComponent.setOrderFilterDropDown('ASC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ status: 'ALL', sort: 'LastModified', order: 'ASC' }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Last Modified')).toBe(true); - await processCloudDemoPage.editProcessFilterCloudComponent().setOrderFilterDropDown('DESC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ order: 'DESC'}); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Last Modified')).toBe(true); }); it('[C305054] Should display processes ordered by business key date when BusinessKey is selected from sort dropdown', async () => { - const editProcessFilterCloudComponent = processCloudDemoPage.editProcessFilterCloudComponent(); - await editProcessFilterCloudComponent.openFilter(); - await editProcessFilterCloudComponent.setStatusFilterDropDown('ALL'); - await editProcessFilterCloudComponent.setSortFilterDropDown('BusinessKey'); - await editProcessFilterCloudComponent.setOrderFilterDropDown('ASC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ status: 'ALL', sort: 'BusinessKey', order: 'ASC' }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('ASC', 'Business Key')).toBe(true); - await processCloudDemoPage.editProcessFilterCloudComponent().setOrderFilterDropDown('DESC'); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ order: 'DESC'}); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().checkListIsSorted('DESC', 'Business Key')).toBe(true); }); @@ -253,6 +234,7 @@ describe('Process list cloud', () => { await processCloudDemoPage.editProcessFilterCloudComponent().setStatusFilterDropDown('RUNNING'); await processCloudDemoPage.editProcessFilterCloudComponent().setAppNameDropDown(candidateBaseApp); await processCloudDemoPage.editProcessFilterCloudComponent().setProcessInstanceId(runningProcessInstance.entry.id); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(runningProcessInstance.entry.id); await expect(await processCloudDemoPage.editProcessFilterCloudComponent().getNumberOfAppNameOptions()).toBe(noOfApps); @@ -270,6 +252,7 @@ describe('Process list cloud', () => { await processCloudDemoPage.editProcessFilterCloudComponent().setStatusFilterDropDown('RUNNING'); await processCloudDemoPage.editProcessFilterCloudComponent().setAppNameDropDown(candidateBaseApp); await processCloudDemoPage.editProcessFilterCloudComponent().setProcessInstanceId(switchProcessInstance.entry.id); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(switchProcessInstance.entry.id); await processCloudDemoPage.editProcessFilterCloudComponent().clickSaveAsButton(); diff --git a/e2e/process-services-cloud/process-header-cloud.e2e.ts b/e2e/process-services-cloud/process-header-cloud.e2e.ts index a96a49c7bc..2266ade171 100644 --- a/e2e/process-services-cloud/process-header-cloud.e2e.ts +++ b/e2e/process-services-cloud/process-header-cloud.e2e.ts @@ -96,7 +96,6 @@ describe('Process Header cloud component', () => { afterAll(async() => { await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); await identityService.deleteIdentityUser(testUser.idIdentityService); - }); beforeEach(async () => { @@ -110,11 +109,10 @@ describe('Process Header cloud component', () => { await processCloudDemoPage.processFilterCloudComponent.clickOnProcessFilters(); await processCloudDemoPage.processFilterCloudComponent.clickRunningProcessesFilter(); await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toBe('Running Processes'); - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProcessName(runningProcess.entry.name); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ processName: runningProcess.entry.name }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(runningProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().checkProcessListIsLoaded(); await processCloudDemoPage.processListCloudComponent().selectRow(runningProcess.entry.name); await expect(await processHeaderCloudPage.getId()).toEqual(runningProcess.entry.id); await expect(await processHeaderCloudPage.getName()).toEqual(runningProcess.entry.name); @@ -133,8 +131,9 @@ describe('Process Header cloud component', () => { await processCloudDemoPage.processFilterCloudComponent.clickCompletedProcessesFilter(); await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toBe('Completed Processes'); - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('initiator', testUser.username); + + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ initiator: testUser.username }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(childCompleteProcess.entry.name); await processCloudDemoPage.processListCloudComponent().checkProcessListIsLoaded(); diff --git a/e2e/process-services-cloud/process-list-selection-cloud.e2e.ts b/e2e/process-services-cloud/process-list-selection-cloud.e2e.ts index beb91af853..6275e6a458 100644 --- a/e2e/process-services-cloud/process-list-selection-cloud.e2e.ts +++ b/e2e/process-services-cloud/process-list-selection-cloud.e2e.ts @@ -47,7 +47,6 @@ describe('Process list cloud', () => { const editProcessFilterConfigFile = editProcessFilterConfiguration.getConfiguration(); beforeAll(async () => { - await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); identityService = new IdentityService(apiService); groupIdentityService = new GroupIdentityService(apiService); @@ -73,7 +72,6 @@ describe('Process list cloud', () => { afterAll(async() => { await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password); await identityService.deleteIdentityUser(testUser.idIdentityService); - }); beforeEach(async () => { @@ -108,8 +106,8 @@ describe('Process list cloud', () => { await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible(); await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual('Running Processes'); - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('initiator', testUser.username); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': testUser.username }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await processCloudDemoPage.processListCloudComponent().selectRowById(processInstances[0]); await processCloudDemoPage.processListCloudComponent().checkRowIsSelectedById(processInstances[0]); await expect(await processCloudDemoPage.processListCloudComponent().getDataTable().getNumberOfSelectedRows()).toEqual(1); @@ -124,8 +122,8 @@ describe('Process list cloud', () => { await tasksCloudDemoPage.clickAppButton(); await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible(); await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual('Running Processes'); - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('initiator', testUser.username); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': testUser.username }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await processCloudDemoPage.processListCloudComponent().selectRowById(processInstances[0]); await processCloudDemoPage.processListCloudComponent().checkRowIsSelectedById(processInstances[0]); await processCloudDemoPage.processListCloudComponent().selectRowWithKeyboard(processInstances[1]); @@ -141,8 +139,8 @@ describe('Process list cloud', () => { await tasksCloudDemoPage.clickAppButton(); await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible(); await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual('Running Processes'); - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('initiator', testUser.username); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': testUser.username }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await processCloudDemoPage.processListCloudComponent().checkCheckboxById(processInstances[0]); await processCloudDemoPage.processListCloudComponent().checkRowIsCheckedById(processInstances[0]); await processCloudDemoPage.processListCloudComponent().checkCheckboxById(processInstances[1]); @@ -158,8 +156,8 @@ describe('Process list cloud', () => { await tasksCloudDemoPage.enableMultiSelection(); await tasksCloudDemoPage.clickAppButton(); await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible(); - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('initiator', testUser.username); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': testUser.username }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual('Running Processes'); await browser.sleep(1000); await processCloudDemoPage.processListCloudComponent().getDataTable().checkAllRowsButtonIsDisplayed(); @@ -182,8 +180,8 @@ describe('Process list cloud', () => { await tasksCloudDemoPage.clickAppButton(); await processCloudDemoPage.processFilterCloudComponent.isProcessFiltersListVisible(); await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toEqual('Running Processes'); - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProperty('initiator', testUser.username); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ 'initiator': testUser.username }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); await processCloudDemoPage.processListCloudComponent().checkCheckboxById(processInstances[0]); await processCloudDemoPage.processListCloudComponent().checkRowIsCheckedById(processInstances[0]); await processDetailsCloudDemoPage.checkListedSelectedProcessInstance(processInstances[0]); diff --git a/e2e/process-services-cloud/process-task-attach-content-file-cloud.e2e.ts b/e2e/process-services-cloud/process-task-attach-content-file-cloud.e2e.ts index a4abd2d753..ad7ef02f12 100644 --- a/e2e/process-services-cloud/process-task-attach-content-file-cloud.e2e.ts +++ b/e2e/process-services-cloud/process-task-attach-content-file-cloud.e2e.ts @@ -18,17 +18,17 @@ import { AlfrescoApiCompatibility as AlfrescoApi } from '@alfresco/js-api'; import { browser } from 'protractor'; import { + ApiService, AppListCloudPage, - LoginSSOPage, - StringUtil, - TaskFormCloudComponent, - ProcessCloudWidgetPage, - ViewerPage, - UploadActions, ContentNodeSelectorDialogPage, + LoginSSOPage, + ProcessCloudWidgetPage, ProcessDefinitionsService, ProcessInstancesService, - ApiService + StringUtil, + TaskFormCloudComponent, + UploadActions, + ViewerPage } from '@alfresco/adf-testing'; import { ProcessCloudDemoPage } from '../pages/adf/demo-shell/process-services/process-cloud-demo.page'; import { NavigationBarPage } from '../pages/adf/navigation-bar.page'; @@ -75,26 +75,32 @@ describe('Process Task - Attach content file', () => { processDefinitionService = new ProcessDefinitionsService(apiService); const processDefinition = await processDefinitionService.getProcessDefinitionByName(processDefinitionName, simpleApp); processInstancesService = new ProcessInstancesService(apiService); - processInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); - await loginSSOPage.loginSSOIdentityService(browser.params.testConfig.hrUser.email, browser.params.testConfig.hrUser.password); + processInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp, { name: 'upload process' }); await this.alfrescoJsApi.login(browser.params.testConfig.hrUser.email, browser.params.testConfig.hrUser.password); uploadedFolder = await uploadActions.createFolder(folderName, '-my-'); await uploadActions.uploadFile(pdfFileOne.location, pdfFileOne.name, uploadedFolder.entry.id); await uploadActions.uploadFile(pdfFileTwo.location, pdfFileTwo.name, uploadedFolder.entry.id); - await navigationBarPage.navigateToProcessServicesCloudPage(); - await appListCloudComponent.checkApsContainer(); }); afterAll(async () => { await uploadActions.deleteFileOrFolder(uploadedFolder.entry.id); }); + beforeEach(async () => { + await loginSSOPage.loginSSOIdentityService(browser.params.testConfig.hrUser.email, browser.params.testConfig.hrUser.password); + await navigationBarPage.navigateToProcessServicesCloudPage(); + await appListCloudComponent.checkApsContainer(); + }); + it('[C311290] Should be able to attach multiple files when widget allows multiple files to be attached from content', async () => { await appListCloudComponent.checkAppIsDisplayed(simpleApp); await appListCloudComponent.goToApp(simpleApp); await processCloudDemoPage.processFilterCloudComponent.clickOnProcessFilters(); await processCloudDemoPage.processFilterCloudComponent.clickRunningProcessesFilter(); + await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); + await processCloudDemoPage.editProcessFilterCloudComponent().setProcessName('upload process'); + await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toBe('Running Processes'); await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(processInstance.entry.id); @@ -127,6 +133,10 @@ describe('Process Task - Attach content file', () => { await processCloudDemoPage.processFilterCloudComponent.clickOnProcessFilters(); await processCloudDemoPage.processFilterCloudComponent.clickCompletedProcessesFilter(); + await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); + await processCloudDemoPage.editProcessFilterCloudComponent().setProcessName('upload process'); + await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); + await expect(await processCloudDemoPage.processFilterCloudComponent.getActiveFilterName()).toBe('Completed Processes'); await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedById(processInstance.entry.id); }); diff --git a/e2e/process-services-cloud/start-task-form-cloud.e2e.ts b/e2e/process-services-cloud/start-task-form-cloud.e2e.ts index 910681629a..3f59785770 100644 --- a/e2e/process-services-cloud/start-task-form-cloud.e2e.ts +++ b/e2e/process-services-cloud/start-task-form-cloud.e2e.ts @@ -325,10 +325,9 @@ describe('Start Task Form', () => { }); it('[C310358] Should be able to attach a file to a form from local', async () => { - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProcessName(uploadLocalFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(uploadLocalFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().getDataTable().selectRow('Name', uploadLocalFileProcess.entry.name); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ processName: uploadLocalFileProcess.entry.name }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); + await processCloudDemoPage.processListCloudComponent().selectRow(uploadLocalFileProcess.entry.name); await processDetailsCloudDemoPage.checkTaskIsDisplayed('UploadFileTask'); await processDetailsCloudDemoPage.selectProcessTaskByName('UploadFileTask'); await taskFormCloudComponent.clickClaimButton(); @@ -342,10 +341,9 @@ describe('Start Task Form', () => { }); it('[C311285] Should be able to attach a file to a form from acs repository', async () => { - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProcessName(uploadContentFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(uploadContentFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().getDataTable().selectRow('Name', uploadContentFileProcess.entry.name); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ processName: uploadContentFileProcess.entry.name }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); + await processCloudDemoPage.processListCloudComponent().selectRow(uploadContentFileProcess.entry.name); await processDetailsCloudDemoPage.checkTaskIsDisplayed('UploadFileTask'); await processDetailsCloudDemoPage.selectProcessTaskByName('UploadFileTask'); await taskFormCloudComponent.clickClaimButton(); @@ -368,10 +366,9 @@ describe('Start Task Form', () => { }); it('[C311287] Content node selector default location when attaching a file to a form from acs repository', async () => { - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProcessName(uploadDefaultFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(uploadDefaultFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().getDataTable().selectRow('Name', uploadDefaultFileProcess.entry.name); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ processName: uploadDefaultFileProcess.entry.name }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); + await processCloudDemoPage.processListCloudComponent().selectRow(uploadDefaultFileProcess.entry.name); await processDetailsCloudDemoPage.checkTaskIsDisplayed('UploadFileTask'); await processDetailsCloudDemoPage.selectProcessTaskByName('UploadFileTask'); await taskFormCloudComponent.clickClaimButton(); @@ -394,10 +391,9 @@ describe('Start Task Form', () => { }); it('[C311288] No file should be attached when canceling the content node selector', async () => { - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProcessName(cancelUploadFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(cancelUploadFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().getDataTable().selectRow('Name', cancelUploadFileProcess.entry.name); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ processName: cancelUploadFileProcess.entry.name }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); + await processCloudDemoPage.processListCloudComponent().selectRow(cancelUploadFileProcess.entry.name); await processDetailsCloudDemoPage.checkTaskIsDisplayed('UploadFileTask'); await processDetailsCloudDemoPage.selectProcessTaskByName('UploadFileTask'); await taskFormCloudComponent.clickClaimButton(); @@ -418,10 +414,9 @@ describe('Start Task Form', () => { }); it('[C311289] Should be able to attach single file', async () => { - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProcessName(uploadContentFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(uploadContentFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().getDataTable().selectRow('Name', uploadContentFileProcess.entry.name); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ processName: uploadContentFileProcess.entry.name }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); + await processCloudDemoPage.processListCloudComponent().selectRow(uploadContentFileProcess.entry.name); await processDetailsCloudDemoPage.checkTaskIsDisplayed('UploadFileTask'); await processDetailsCloudDemoPage.selectProcessTaskByName('UploadFileTask'); @@ -441,10 +436,9 @@ describe('Start Task Form', () => { }); it('[C311292] Attached file is not displayed anymore after release if the form is not saved', async () => { - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProcessName(uploadContentFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(uploadContentFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().getDataTable().selectRow('Name', uploadContentFileProcess.entry.name); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ processName: uploadContentFileProcess.entry.name }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); + await processCloudDemoPage.processListCloudComponent().selectRow(uploadContentFileProcess.entry.name); await processDetailsCloudDemoPage.checkTaskIsDisplayed('UploadFileTask'); await processDetailsCloudDemoPage.selectProcessTaskByName('UploadFileTask'); @@ -468,10 +462,9 @@ describe('Start Task Form', () => { }); it('[C311293] Attached file is displayed after release if the form was saved', async () => { - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProcessName(uploadContentFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(uploadContentFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().getDataTable().selectRow('Name', uploadContentFileProcess.entry.name); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ processName: uploadContentFileProcess.entry.name }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); + await processCloudDemoPage.processListCloudComponent().selectRow(uploadContentFileProcess.entry.name); await processDetailsCloudDemoPage.checkTaskIsDisplayed('UploadFileTask'); await processDetailsCloudDemoPage.selectProcessTaskByName('UploadFileTask'); @@ -494,10 +487,9 @@ describe('Start Task Form', () => { }); it('[C311295] Attached file is displayed after complete', async () => { - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProcessName(completeUploadFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(completeUploadFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().getDataTable().selectRow('Name', completeUploadFileProcess.entry.name); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ processName: completeUploadFileProcess.entry.name }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); + await processCloudDemoPage.processListCloudComponent().selectRow(completeUploadFileProcess.entry.name); await processDetailsCloudDemoPage.checkTaskIsDisplayed('UploadFileTask'); await processDetailsCloudDemoPage.selectProcessTaskByName('UploadFileTask'); await taskFormCloudComponent.clickClaimButton(); @@ -527,10 +519,9 @@ describe('Start Task Form', () => { }); it('[C315292] Should be able to download attached file from acs repository', async () => { - await processCloudDemoPage.editProcessFilterCloudComponent().openFilter(); - await processCloudDemoPage.editProcessFilterCloudComponent().setProcessName(downloadContentFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().checkContentIsDisplayedByName(downloadContentFileProcess.entry.name); - await processCloudDemoPage.processListCloudComponent().getDataTable().selectRow('Name', downloadContentFileProcess.entry.name); + await processCloudDemoPage.editProcessFilterCloudComponent().setFilter({ processName: downloadContentFileProcess.entry.name }); + await processCloudDemoPage.processListCloudComponent().getDataTable().waitTillContentLoaded(); + await processCloudDemoPage.processListCloudComponent().selectRow(downloadContentFileProcess.entry.name); await processDetailsCloudDemoPage.checkTaskIsDisplayed('UploadFileTask'); await processDetailsCloudDemoPage.selectProcessTaskByName('UploadFileTask'); await taskFormCloudComponent.clickClaimButton(); diff --git a/e2e/process-services-cloud/tasks-custom-filters.e2e.ts b/e2e/process-services-cloud/tasks-custom-filters.e2e.ts index c3a462404d..ea0e74e3b0 100644 --- a/e2e/process-services-cloud/tasks-custom-filters.e2e.ts +++ b/e2e/process-services-cloud/tasks-custom-filters.e2e.ts @@ -175,9 +175,7 @@ describe('Task filters cloud', () => { .getProcessDefinitionByName(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.dropdownrestprocess, simpleApp); const processInstance = await processInstancesService.createProcessInstance(processDefinition.entry.key, simpleApp); - taskAssigned = await queryService.getProcessInstanceTasks(processInstance.entry.id, simpleApp); - await processInstancesService.suspendProcessInstance(processInstance.entry.id, simpleApp); }); @@ -185,9 +183,6 @@ describe('Task filters cloud', () => { await tasksCloudDemoPage.editTaskFilterCloudComponent().openFilter(); await tasksCloudDemoPage.editTaskFilterCloudComponent().clearAssignee(); await tasksCloudDemoPage.editTaskFilterCloudComponent().setStatusFilterDropDown('SUSPENDED'); - - await expect(true).toEqual(false); - await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(taskAssigned.list.entries[0].entry.name); }); }); diff --git a/e2e/protractor.excludes.json b/e2e/protractor.excludes.json index bc23fc1e29..da6d3a775f 100644 --- a/e2e/protractor.excludes.json +++ b/e2e/protractor.excludes.json @@ -1,7 +1,4 @@ { - "C260249" : "REPO-4772 ACS 6.2", - "C305010": "Problem start date", - "C311290": "https://issues.alfresco.com/jira/browse/ADF-5118", - "C317658": "https://issues.alfresco.com/jira/browse/ADF-5118" + "C260249" : "REPO-4772 ACS 6.2" } diff --git a/lib/testing/src/lib/core/actions/identity/group-identity.service.ts b/lib/testing/src/lib/core/actions/identity/group-identity.service.ts index 2d6849cbb4..90701dcb81 100644 --- a/lib/testing/src/lib/core/actions/identity/group-identity.service.ts +++ b/lib/testing/src/lib/core/actions/identity/group-identity.service.ts @@ -17,6 +17,8 @@ import { ApiService } from '../api.service'; import { StringUtil } from '../../utils/string.util'; +import { ApiUtil } from '../../structure/api.util'; +import { Logger } from '../../utils/logger'; import { browser } from 'protractor'; export class GroupIdentityService { @@ -58,12 +60,24 @@ export class GroupIdentityService { } async getGroupInfoByGroupName(groupName: string): Promise { - const path = `/groups`; - const method = 'GET'; - const queryParams = { search: groupName }, postBody = {}; + const predicate = (result: any) => { + return !!result; + }; - const data = await this.api.performIdentityOperation(path, method, queryParams, postBody); - return data[0]; + const apiCall = async () => { + try { + const path = `/groups`; + const method = 'GET'; + const queryParams = { search: groupName }, postBody = {}; + + const data = await this.api.performIdentityOperation(path, method, queryParams, postBody); + return data[0]; + } catch (error) { + Logger.error('Group not found'); + } + }; + + return ApiUtil.waitForApi(apiCall, predicate); } async assignRole(groupId: string, roleId: string, roleName: string): Promise { diff --git a/lib/testing/src/lib/process-services-cloud/pages/edit-process-filter-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/edit-process-filter-cloud-component.page.ts index 06321311f8..166b091edb 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/edit-process-filter-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/edit-process-filter-cloud-component.page.ts @@ -189,4 +189,14 @@ export class EditProcessFilterCloudComponentPage { await BrowserActions.click(this.saveButton); } + async setFilter({ name = '', status = '', sort = '', order = '', initiator = '', processName = '' }): Promise { + await this.openFilter(); + if (name) { await this.setProcessName(name); } + if (status) { await this.setStatusFilterDropDown(status); } + if (sort) { await this.setSortFilterDropDown(sort); } + if (order) { await this.setOrderFilterDropDown(order); } + if (initiator) { await this.setProperty('initiator', initiator); } + if (processName) { await this.setProcessName(processName); } + await this.openFilter(); + } } diff --git a/lib/testing/src/lib/process-services-cloud/pages/process-header-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/process-header-cloud-component.page.ts index caec4e02a6..1fdf6b69e2 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/process-header-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/process-header-cloud-component.page.ts @@ -20,14 +20,14 @@ import { BrowserActions } from '../../core/utils/browser-actions'; export class ProcessHeaderCloudPage { - idField: ElementFinder = element.all(by.css('span[data-automation-id*="id"] span')).first(); - nameField: ElementFinder = element.all(by.css('span[data-automation-id*="name"] span')).first(); - statusField: ElementFinder = element(by.css('span[data-automation-id*="status"] span')); - initiatorField: ElementFinder = element(by.css('span[data-automation-id*="initiator"] span')); - startDateField: ElementFinder = element.all(by.css('span[data-automation-id*="startDate"] span')).first(); - lastModifiedField: ElementFinder = element.all(by.css('span[data-automation-id*="lastModified"] span')).first(); - parentIdField: ElementFinder = element(by.css('span[data-automation-id*="parentId"] span')); - businessKeyField: ElementFinder = element.all(by.css('span[data-automation-id*="businessKey"] span')).first(); + idField: ElementFinder = element.all(by.css('span[data-automation-id*="id"] span span')).first(); + nameField: ElementFinder = element.all(by.css('span[data-automation-id*="name"] span span')).first(); + statusField: ElementFinder = element(by.css('span[data-automation-id*="status"] span span')); + initiatorField: ElementFinder = element(by.css('span[data-automation-id*="initiator"] span span')); + startDateField: ElementFinder = element.all(by.css('span[data-automation-id*="startDate"] span span')).first(); + lastModifiedField: ElementFinder = element.all(by.css('span[data-automation-id*="lastModified"] span span')).first(); + parentIdField: ElementFinder = element(by.css('span[data-automation-id*="parentId"] span span')); + businessKeyField: ElementFinder = element.all(by.css('span[data-automation-id*="businessKey"] span span')).first(); async getId(): Promise { return BrowserActions.getText(this.idField);