From 6400fd6ba8be9a3adbccb3fa8e4517cbc05c9355 Mon Sep 17 00:00:00 2001 From: Cristina Jalba Date: Tue, 8 Jun 2021 18:58:11 +0300 Subject: [PATCH] [ACA-4474]Add isStartProcessButtonEnabled method * [ACA-4474] Add isStartProcessButtonEnabled method * Refactor tests * Fix lint error * Refactor isStartProcessButtonEnabled method * Fix startProcessWithProcessDefinition method * Fix tests * no message * Fix isStartProcessButtonDisabled method * Exclude failing e2e --- .../form-field/task-visibility-condition.e2e.ts | 2 +- .../start-task/start-process-cloud.e2e.ts | 9 ++++----- .../start-task/start-task-form-cloud.e2e.ts | 10 +++++----- .../process/start-process-component.e2e.ts | 13 ++++++------- e2e/protractor.excludes.json | 3 ++- .../pages/start-process-cloud-component.page.ts | 17 ++++++++++++++--- .../pages/start-process.page.ts | 6 ++++-- 7 files changed, 36 insertions(+), 24 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 21f76a6a8a..2ab602160d 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 @@ -112,7 +112,7 @@ describe('Task cloud visibility', async () => { await startProcessPage.selectFromProcessDropdown(browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.processes.numbervisibilityprocess); await startProcessPage.enterProcessName(processName); - await startProcessPage.checkStartProcessButtonIsEnabled(); + await expect(await startProcessPage.isStartProcessButtonEnabled()).toEqual(true); await startProcessPage.clickStartProcessButton(); await editProcessFilter.setFilter({ processName }); diff --git a/e2e/process-services-cloud/start-task/start-process-cloud.e2e.ts b/e2e/process-services-cloud/start-task/start-process-cloud.e2e.ts index da9bea0649..aff80a9a65 100644 --- a/e2e/process-services-cloud/start-task/start-process-cloud.e2e.ts +++ b/e2e/process-services-cloud/start-task/start-process-cloud.e2e.ts @@ -77,7 +77,7 @@ describe('Start Process', () => { await browser.actions().sendKeys(protractor.Key.ENTER).perform(); await startProcessPage.checkValidationErrorIsDisplayed(requiredError); - await expect(await startProcessPage.checkStartProcessButtonIsEnabled()).toBe(false); + await expect(await startProcessPage.isStartProcessButtonDisabled()).toEqual(true); await BrowserActions.closeMenuAndDialogs(); await startProcessPage.clickCancelProcessButton(); @@ -90,11 +90,11 @@ describe('Start Process', () => { await startProcessPage.selectFirstOptionFromProcessDropdown(); await startProcessPage.enterProcessName(processName255Characters); - await expect(await startProcessPage.checkStartProcessButtonIsEnabled()).toBe(true); + await expect(await startProcessPage.isStartProcessButtonEnabled()).toEqual(true); await startProcessPage.enterProcessName(processNameBiggerThen255Characters); await startProcessPage.checkValidationErrorIsDisplayed(lengthValidationError); - await expect(await startProcessPage.checkStartProcessButtonIsEnabled()).toBe(false); + await expect(await startProcessPage.isStartProcessButtonDisabled()).toEqual(true); }); it('[C291860] Should be able to start a process', async () => { @@ -105,8 +105,7 @@ describe('Start Process', () => { await startProcessPage.clearField(startProcessPage.processNameInput); await startProcessPage.enterProcessName(processName); - await expect(await startProcessPage.checkStartProcessButtonIsEnabled()).toBe(true); - await browser.sleep(400); + await expect(await startProcessPage.isStartProcessButtonEnabled()).toEqual(true); await startProcessPage.clickStartProcessButton(); await processFilter.clickOnProcessFilters(); diff --git a/e2e/process-services-cloud/start-task/start-task-form-cloud.e2e.ts b/e2e/process-services-cloud/start-task/start-task-form-cloud.e2e.ts index f4476716ae..da49b379c9 100644 --- a/e2e/process-services-cloud/start-task/start-task-form-cloud.e2e.ts +++ b/e2e/process-services-cloud/start-task/start-task-form-cloud.e2e.ts @@ -241,23 +241,23 @@ describe('Start Task Form', () => { it('[C311277] Should be able to start a process with a start event form - form validation', async () => { await expect(await widget.textWidget().getErrorMessage('FirstName')).toContain('Enter no more than 10 characters'); - await expect(await startProcessPage.checkStartProcessButtonIsEnabled()).toBe(false); + await expect(await startProcessPage.isStartProcessButtonDisabled()).toEqual(true); await widget.textWidget().setValue('FirstName', 'Sam'); await expect(await widget.textWidget().getErrorMessage('FirstName')).toContain('Enter at least 5 characters'); - await expect(await startProcessPage.checkStartProcessButtonIsEnabled()).toBe(false); + await expect(await startProcessPage.isStartProcessButtonDisabled()).toEqual(true); await widget.numberWidget().setFieldValue('Number07vyx9', 9); await expect(await widget.numberWidget().getErrorMessage('Number07vyx9')).toContain('Can\'t be less than 10'); - await expect(await startProcessPage.checkStartProcessButtonIsEnabled()).toBe(false); + await expect(await startProcessPage.isStartProcessButtonDisabled()).toEqual(true); await widget.numberWidget().setFieldValue('Number07vyx9', 99999); await expect(await widget.numberWidget().getErrorMessage('Number07vyx9')).toContain('Can\'t be greater than 1,000'); - await expect(await startProcessPage.checkStartProcessButtonIsEnabled()).toBe(false); + await expect(await startProcessPage.isStartProcessButtonDisabled()).toEqual(true); }); it('[C311277] Should be able to start a process with a start event form - claim and complete the process', async () => { await widget.textWidget().setValue('FirstName', 'Sample'); await widget.numberWidget().setFieldValue('Number07vyx9', 100); - await expect(await startProcessPage.checkStartProcessButtonIsEnabled()).toBe(true); + await expect(await startProcessPage.isStartProcessButtonEnabled()).toEqual(true); await startProcessPage.clickStartProcessButton(); await processFilter.clickRunningProcessesFilter(); await expect(await processFilter.getActiveFilterName()).toBe(CONSTANTS.PROCESS_FILTERS.RUNNING); diff --git a/e2e/process-services/process/start-process-component.e2e.ts b/e2e/process-services/process/start-process-component.e2e.ts index 6e4e872f57..54f5d90710 100644 --- a/e2e/process-services/process/start-process-component.e2e.ts +++ b/e2e/process-services/process/start-process-component.e2e.ts @@ -190,8 +190,7 @@ describe('Start Process Component', () => { await startProcessPage.selectFromProcessDropdown(browser.params.resources.Files.APP_WITH_PROCESSES.process_wse_name); await expect(await startProcessPage.getDefaultName()).toEqual('My Default Name'); - - await startProcessPage.checkStartProcessButtonIsEnabled(); + await expect(await startProcessPage.isStartProcessButtonEnabled()).toEqual(true); }); it('[C260449] Should be possible to start a process with start event', async () => { @@ -237,7 +236,7 @@ describe('Start Process Component', () => { await startProcessPage.checkProcessOptionIsDisplayed(browser.params.resources.Files.APP_WITH_PROCESSES.process_wse_name); await startProcessPage.checkProcessOptionIsDisplayed(browser.params.resources.Files.APP_WITH_PROCESSES.process_se_name); await startProcessPage.selectProcessOption(browser.params.resources.Files.APP_WITH_PROCESSES.process_wse_name); - await startProcessPage.checkStartProcessButtonIsEnabled(); + await expect(await startProcessPage.isStartProcessButtonEnabled()).toEqual(true); }); it('[C286508] Should display only one option when typing an existent process definition', async () => { @@ -249,7 +248,7 @@ describe('Start Process Component', () => { await startProcessPage.checkProcessOptionIsDisplayed(browser.params.resources.Files.APP_WITH_PROCESSES.process_wse_name); await startProcessPage.checkProcessOptionIsNotDisplayed(browser.params.resources.Files.APP_WITH_PROCESSES.process_se_name); await startProcessPage.selectProcessOption(browser.params.resources.Files.APP_WITH_PROCESSES.process_wse_name); - await startProcessPage.checkStartProcessButtonIsEnabled(); + await expect(await startProcessPage.isStartProcessButtonEnabled()).toEqual(true); }); it('[C286509] Should select automatically the processDefinition when the app contains only one', async () => { @@ -258,7 +257,7 @@ describe('Start Process Component', () => { await processFiltersPage.clickCreateProcessButton(); await processFiltersPage.clickNewProcessDropdown(); await expect(await startProcessPage.getProcessDefinitionValue()).toBe(simpleApp.title); - await startProcessPage.checkStartProcessButtonIsEnabled(); + await expect(await startProcessPage.isStartProcessButtonEnabled()).toEqual(true); }); it('[C286511] Should be able to type the process definition and start a process', async () => { @@ -269,7 +268,7 @@ describe('Start Process Component', () => { await startProcessPage.typeProcessDefinition(browser.params.resources.Files.APP_WITH_PROCESSES.process_wse_name); await startProcessPage.selectProcessOption(browser.params.resources.Files.APP_WITH_PROCESSES.process_wse_name); await startProcessPage.enterProcessName('Type'); - await startProcessPage.checkStartProcessButtonIsEnabled(); + await expect(await startProcessPage.isStartProcessButtonEnabled()).toEqual(true); await expect(await startProcessPage.getProcessDefinitionValue()).toBe(browser.params.resources.Files.APP_WITH_PROCESSES.process_wse_name); await startProcessPage.clickStartProcessButton(); await processFiltersPage.clickRunningFilterButton(); @@ -441,7 +440,7 @@ describe('Start Process Component', () => { await startProcessPage.enterProcessName(processName255Characters); await startProcessPage.selectFromProcessDropdown(browser.params.resources.Files.APP_WITH_PROCESSES.process_wse_name); - await startProcessPage.checkStartProcessButtonIsEnabled(); + await expect(await startProcessPage.isStartProcessButtonEnabled()).toEqual(true); await startProcessPage.enterProcessName(processNameBiggerThen255Characters); await startProcessPage.checkValidationErrorIsDisplayed(lengthValidationError); diff --git a/e2e/protractor.excludes.json b/e2e/protractor.excludes.json index 753f856427..8e497c5889 100644 --- a/e2e/protractor.excludes.json +++ b/e2e/protractor.excludes.json @@ -3,5 +3,6 @@ "C272819": "https://alfresco.atlassian.net/browse/ADF-5385", "C290069": "https://alfresco.atlassian.net/browse/ADF-5387", "C291811": "https://alfresco.atlassian.net/browse/ADF-5405", - "C291809": "https://alfresco.atlassian.net/browse/ADF-5405" + "C291809": "https://alfresco.atlassian.net/browse/ADF-5405", + "C307988": "https://alfresco.atlassian.net/browse/ADF-5421" } diff --git a/lib/testing/src/lib/process-services-cloud/pages/start-process-cloud-component.page.ts b/lib/testing/src/lib/process-services-cloud/pages/start-process-cloud-component.page.ts index 7ee9afc005..5cf6387151 100644 --- a/lib/testing/src/lib/process-services-cloud/pages/start-process-cloud-component.page.ts +++ b/lib/testing/src/lib/process-services-cloud/pages/start-process-cloud-component.page.ts @@ -28,6 +28,7 @@ export class StartProcessCloudPage { cancelProcessButton = element(by.id('cancel_process')); formStartProcessButton = element(by.css('button[data-automation-id="adf-form-start process"]')); startProcessButton = element(by.css('button[data-automation-id="btn-start"]')); + startProcessButtonDisabled = element(by.css('button[data-automation-id="btn-start"][disabled]')); noProcess = element(by.id('no-process-message')); processDefinition = element(by.css('input[id="processDefinitionName"]')); processDefinitionOptionsPanel = element(by.css('div[class*="processDefinitionOptions"]')); @@ -83,12 +84,21 @@ export class StartProcessCloudPage { await BrowserActions.click(this.cancelProcessButton); } - async checkStartProcessButtonIsEnabled(): Promise { - await browser.sleep(2000); // waiting for API response + async isStartProcessButtonEnabled(): Promise { + await BrowserVisibility.waitUntilElementIsNotVisible(this.startProcessButtonDisabled); await BrowserVisibility.waitUntilElementIsVisible(this.startProcessButton); return this.startProcessButton.isEnabled(); } + async isStartProcessButtonDisabled(): Promise { + try { + await BrowserVisibility.waitUntilElementIsVisible(this.startProcessButtonDisabled); + return true; + } catch (error) { + return false; + } + } + async clickStartProcessButton(): Promise { await BrowserActions.click(this.startProcessButton); } @@ -111,7 +121,8 @@ export class StartProcessCloudPage { async startProcessWithProcessDefinition(processName: string, processDefinition: string) { await this.selectFromProcessDropdown(processDefinition); await this.enterProcessName(processName); - await this.checkStartProcessButtonIsEnabled(); + await BrowserVisibility.waitUntilElementIsNotVisible(this.startProcessButtonDisabled); + await BrowserVisibility.waitUntilElementIsVisible(this.startProcessButton); await this.clickStartProcessButton(); } diff --git a/lib/testing/src/lib/process-services/pages/start-process.page.ts b/lib/testing/src/lib/process-services/pages/start-process.page.ts index c8e6a40f85..c1062c69c5 100644 --- a/lib/testing/src/lib/process-services/pages/start-process.page.ts +++ b/lib/testing/src/lib/process-services/pages/start-process.page.ts @@ -31,6 +31,7 @@ export class StartProcessPage { cancelProcessButton = element(by.id('cancel_process')); formStartProcessButton = element(by.css('button[data-automation-id="adf-form-start process"]')); startProcessButton = element(by.css('button[data-automation-id="btn-start"]')); + startProcessButtonDisabled = element(by.css('button[data-automation-id="btn-start"][disabled]')); noProcess = element(by.css('.adf-empty-content__title')); processDefinition = element(by.css('input[id="processDefinitionName"]')); processDefinitionOptionsPanel = element(by.css('div[class*="mat-autocomplete-panel"]')); @@ -124,8 +125,9 @@ export class StartProcessPage { return this.formStartProcessButton.isEnabled(); } - async checkStartProcessButtonIsEnabled() { - await expect(await this.startProcessButton.isEnabled()).toBe(true); + async isStartProcessButtonEnabled() { + await BrowserVisibility.waitUntilElementIsNotVisible(this.startProcessButtonDisabled); + return this.startProcessButton.isEnabled(); } async checkStartProcessButtonIsDisabled() {