ACS-8610: cleanup demo shell protractor tests (#10148)

This commit is contained in:
Denys Vuika
2024-09-10 08:36:42 -04:00
committed by GitHub
parent a754976ad9
commit f1208d45c3
402 changed files with 180 additions and 45538 deletions

View File

@@ -1,80 +1,3 @@
# Alfresco Testing Library
Contains the reusable pages for e2e tests
## Run e2e against a remote env using the .env.cloud file
Create a file `.env.cloud` under the `e2e` folder
```
HOST_BPM="https://gateway.example.com"
HOST_SSO="https://identity.example.com/auth/realms/alfresco"
URL_HOST_IDENTITY="https://identity.example.com/auth/admin/realms/alfresco"
IDENTITY_USERNAME_ADF="username"
IDENTITY_PASSWORD_ADF="password"
```
### How can I run the *cloud* e2e against a *remote* env with *chrome headless* ?
Add to `.env.cloud` and run `./scripts/test-e2e-lib.sh`
```
FOLDER="process-services-cloud"
URL_HOST_ADF="http://myadf.example.com"
...
```
or
`./scripts/test-e2e-lib.sh -host http://myadf.example.com -f process-services-cloud`
### How can I run the *cloud* e2e against a *remote* env with *full chrome* ?
Add to `.env.cloud` and run `./scripts/test-e2e-lib.sh -env .env.cloud`
```
BROWSER_RUN=true
FOLDER="process-services-cloud"
URL_HOST_ADF="http://myadf.example.co"
...
```
or
`./scripts/test-e2e-lib.sh -host http://myadf.example.com -f process-services-cloud -b`
### How can I run specific *specs* agains a *remote* env?
Add to `.env.cloud` and run `./scripts/test-e2e-lib.sh -env .env.cloud`
```
LIST_SPECS="process-services-cloud/apps-section-cloud.e2e.ts,process-services-cloud/task-filters-cloud.e2e.ts"
URL_HOST_ADF="http://myadf.example.co"
...
```
or `./scripts/test-e2e-lib.sh -host http://myadf.example.com -s process-services-cloud/apps-section-cloud.e2e.ts,process-services-cloud/task-filters-cloud.e2e.ts`
## Run e2e against a local env (use dist) using the .env.cloud file
Create a file `.env.cloud` under the `e2e` folder
```
HOST_BPM="https://gateway.example.com"
HOST_SSO="https://identity.example.com/auth/realms/alfresco"
URL_HOST_IDENTITY="https://identity.example.com/auth/admin/realms/alfresco"
IDENTITY_USERNAME_ADF="username"
IDENTITY_PASSWORD_ADF="password"
```
### How can I run the *cloud* e2e against a *local* env with *chrome headless* ?
Add to `.env.cloud` and run `./scripts/test-e2e-lib.sh -ud -env .env.cloud`
```
FOLDER="process-services-cloud"
URL_HOST_ADF="http://localhost:4200"
...
```
or `./scripts/test-e2e-lib.sh -ud -host http://localhost:4200 -f process-services-cloud `
### How can I run the *cloud* e2e against a *local* env with *full chrome* ?
Add to `.env.cloud` and run `./scripts/test-e2e-lib.sh -ud -env .env.cloud`
```
BROWSER_RUN=true
FOLDER="process-services-cloud"
URL_HOST_ADF="http://localhost:4200"
...
```
or `./scripts/test-e2e-lib.sh -ud -host http://localhost:4200 -f process-services-cloud -b`
### How can I run specific *specs* agains a *local* env?
Add to `.env.cloud` and run `./scripts/test-e2e-lib.sh -ud -env .env.cloud`
```
LIST_SPECS="process-services-cloud/apps-section-cloud.e2e.ts,process-services-cloud/task-filters-cloud.e2e.ts"
URL_HOST_ADF="http://localhost:4200"
...
```
or `./scripts/test-e2e-lib.sh -ud -host http://localhost:4200 -s process-services-cloud/apps-section-cloud.e2e.ts,process-services-cloud/task-filters-cloud.e2e.ts`
> This library is deprecated and will be removed in a future release.

View File

@@ -1,47 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* 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 { browser, $ } from 'protractor';
import { BrowserVisibility } from '../utils/browser-visibility';
import { BrowserActions } from '../utils/browser-actions';
export class ConfigEditorPage {
textField = $('#adf-form-config-editor div.overflow-guard > textarea');
async enterConfiguration(text: string): Promise<void> {
await BrowserActions.clearSendKeys(this.textField, text);
}
async clickSaveButton(): Promise<void> {
const saveButton = $('#app-form-config-save');
await BrowserActions.click(saveButton);
}
async clickClearButton(): Promise<void> {
await BrowserVisibility.waitUntilElementIsVisible(this.textField);
const clearButton = $('#app-form-config-clear');
await BrowserActions.click(clearButton);
}
async enterBulkConfiguration(text): Promise<void> {
await this.clickClearButton();
await BrowserVisibility.waitUntilElementIsVisible(this.textField);
await browser.executeScript('this.monaco.editor.getModels()[0].setValue(`' + JSON.stringify(text) + '`)');
await this.clickSaveButton();
}
}

View File

@@ -18,7 +18,6 @@
export * from './bread-crumb.page';
export * from './header.page';
export * from './user-info.page';
export * from './settings.page';
export * from './login.page';
export { LoginPage as LoginSSOPage } from './login.page';
@@ -29,7 +28,6 @@ export * from './form/public-api';
export * from './material/public-api';
export * from './card-view/public-api';
export * from './viewer.page';
export * from './config-editor-page';
export * from './snackbar.page';
export * from './data-table/public-api';
export * from './context-menu.page';

View File

@@ -1,165 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* 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 { $, browser, by, element } from 'protractor';
import { BrowserVisibility } from '../utils/browser-visibility';
import { BrowserActions } from '../utils/browser-actions';
import { DropdownPage } from '../../core/pages/material/dropdown.page';
import { materialLocators } from './public-api';
export class SettingsPage {
settingsURL: string = browser.baseUrl + '/settings';
ecmText = $('input[data-automation-id*="ecmHost"]');
clientIdText = $('input[id="clientId"]');
authHostText = $('input[id="oauthHost"]');
logoutUrlText = $('input[id="logout-url"]');
identityHostText = $('input[id="identityHost"]');
ssoRadioButton = element(by.cssContainingText(`[id*="${materialLocators.Radio.root}"]`, 'SSO'));
silentLoginToggleLabel = $(`${materialLocators.Slide.toggle.root}[formcontrolname="silentLogin"] label`);
silentLoginToggleElement = $(`${materialLocators.Slide.toggle.root}[formcontrolname="silentLogin"]`);
implicitFlowLabel = $(`${materialLocators.Slide.toggle.root}[formcontrolname="implicitFlow"] label`);
implicitFlowElement = $(`${materialLocators.Slide.toggle.root}[formcontrolname="implicitFlow"]`);
codeFlowElement = $(`${materialLocators.Slide.toggle.root}[formcontrolname="codeFlow"]`);
applyButton = $('button[data-automation-id="settings-apply-button"]');
providerDropdown = new DropdownPage($(`${materialLocators.Select.root}[id="adf-provider-selector"]`));
async goToSettingsPage(): Promise<void> {
let currentUrl;
try {
currentUrl = await browser.getCurrentUrl();
} catch (e) {}
if (!currentUrl || currentUrl.indexOf(this.settingsURL) === -1) {
await browser.get(this.settingsURL);
}
await this.providerDropdown.checkDropdownIsVisible();
}
async setProvider(option): Promise<void> {
await this.providerDropdown.selectDropdownOption(option);
await this.providerDropdown.checkOptionIsSelected(option);
}
async clickSsoRadioButton() {
await BrowserActions.click(this.ssoRadioButton);
}
async setProviderEcmSso(
contentServiceURL,
authHost,
identityHost,
silentLogin = true,
implicitFlow = true,
clientId?: string,
logoutUrl: string = '/logout',
codeFlow = true
) {
await this.goToSettingsPage();
await this.setProvider('ECM');
await this.clickSsoRadioButton();
await this.setContentServicesURL(contentServiceURL);
await this.setAuthHost(authHost);
await this.setIdentityHost(identityHost);
await this.setSilentLogin(silentLogin);
await this.setImplicitFlow(implicitFlow);
await this.setCodeFlow(codeFlow);
await this.setClientId(clientId);
await this.setLogoutUrl(logoutUrl);
await this.clickApply();
await browser.sleep(1000);
}
async setProviderEcmSsoWithoutCodeFlow(
contentServiceURL,
authHost,
identityHost,
silentLogin = true,
implicitFlow = true,
clientId?: string,
logoutUrl: string = '/logout'
) {
await this.goToSettingsPage();
await this.setProvider('ECM');
await this.clickSsoRadioButton();
await this.setContentServicesURL(contentServiceURL);
await this.setAuthHost(authHost);
await this.setIdentityHost(identityHost);
await this.setSilentLogin(silentLogin);
await this.setCodeFlow(false);
await this.setImplicitFlow(implicitFlow);
await this.setClientId(clientId);
await this.setLogoutUrl(logoutUrl);
await this.clickApply();
await browser.sleep(1000);
}
async setLogoutUrl(logoutUrl) {
await BrowserVisibility.waitUntilElementIsPresent(this.logoutUrlText);
await BrowserActions.clearSendKeys(this.logoutUrlText, logoutUrl);
}
async setClientId(clientId: string = browser.params.testConfig.appConfig.oauth2.clientId) {
await BrowserActions.clearSendKeys(this.clientIdText, clientId);
}
async setContentServicesURL(contentServiceURL) {
await BrowserActions.clearSendKeys(this.ecmText, contentServiceURL);
}
async setAuthHost(authHostURL) {
await BrowserActions.clearSendKeys(this.authHostText, authHostURL);
}
async setIdentityHost(identityHost) {
await BrowserActions.clearSendKeys(this.identityHostText, identityHost);
}
async clickApply() {
await BrowserActions.click(this.applyButton);
}
async setSilentLogin(enableToggle) {
await BrowserVisibility.waitUntilElementIsVisible(this.silentLoginToggleElement);
const isChecked = (await BrowserActions.getAttribute(this.silentLoginToggleElement, 'class')).includes(materialLocators.Slide.toggle.checked);
if ((isChecked && !enableToggle) || (!isChecked && enableToggle)) {
await BrowserActions.click(this.silentLoginToggleLabel);
}
}
async setImplicitFlow(enableToggle) {
await BrowserVisibility.waitUntilElementIsVisible(this.implicitFlowElement);
const isChecked = (await BrowserActions.getAttribute(this.implicitFlowElement, 'class')).includes(materialLocators.Slide.toggle.checked);
if ((isChecked && !enableToggle) || (!isChecked && enableToggle)) {
await BrowserActions.click(this.implicitFlowLabel);
}
}
async setCodeFlow(enableToggle) {
await BrowserVisibility.waitUntilElementIsVisible(this.codeFlowElement);
const isChecked = (await BrowserActions.getAttribute(this.codeFlowElement, 'class')).includes(materialLocators.Checked.root);
if ((isChecked && !enableToggle) || (!isChecked && enableToggle)) {
await BrowserActions.click(this.codeFlowElement);
}
}
}

View File

@@ -21,10 +21,7 @@ import { BrowserActions } from '../../core/utils/browser-actions';
import { materialLocators } from '../../public-api';
export class AppListCloudPage {
apsAppsContainer = $('adf-cloud-app-list');
allApps = $$('adf-cloud-app-details');
nameOfAllApps = $$('adf-cloud-app-details div[class*="item-card-title"] h1');
firstApp = $$('adf-cloud-app-details div[class*="item-card-title"] h1').first();
getAppNameLocatorByAppName = (appName: string): ElementFinder => $(`${materialLocators.Card.root}[title="${appName}"]`);
@@ -38,17 +35,8 @@ export class AppListCloudPage {
await BrowserActions.clickExecuteScript(`${materialLocators.Card.root}[title="` + applicationName + `"]`);
}
async countAllApps(): Promise<number> {
return this.allApps.count();
}
async getNameOfTheApplications(): Promise<string> {
return BrowserActions.getArrayText(this.nameOfAllApps);
}
async checkAppIsDisplayed(applicationName: string): Promise<void> {
const app = this.getAppNameLocatorByAppName(applicationName);
await BrowserVisibility.waitUntilElementIsVisible(app);
}
}

View File

@@ -1,48 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* 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 { $$, $ } from 'protractor';
import { BrowserVisibility } from '../../core/utils/browser-visibility';
import { BrowserActions } from '../../core/utils/browser-actions';
import { ConfigEditorPage } from '../../core/pages/config-editor-page';
import { materialLocators } from '../../public-api';
export class FormCloudComponentPage {
formCloudEditor = $$(`${materialLocators.Tab.list} ${materialLocators.Tab.label.class}`).get(1);
formCloudRender = $$(`${materialLocators.Tab.list} ${materialLocators.Tab.label.class}`).get(0);
configEditorPage = new ConfigEditorPage();
async goToEditor(): Promise<void> {
await BrowserActions.click(this.formCloudEditor);
}
async goToRenderedForm(): Promise<void> {
await BrowserActions.click(this.formCloudRender);
}
async setConfigToEditor(text): Promise<void> {
const configEditor = $('#adf-form-config-editor');
const form = $('adf-cloud-form');
await this.goToEditor();
await BrowserVisibility.waitUntilElementIsVisible(configEditor);
await this.configEditorPage.enterBulkConfiguration(text);
await this.goToRenderedForm();
await BrowserVisibility.waitUntilElementIsVisible(form);
}
}

View File

@@ -28,6 +28,5 @@ export * from './task-filters-cloud-component.page';
export * from './task-list-cloud-component.page';
export * from './start-process-cloud-component.page';
export * from './task-form-cloud-component.page';
export * from './form-cloud-component.page';
export * from './dialog/public-api';
export * from './form/public-api';

View File

@@ -1,83 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* 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 { $ } from 'protractor';
import { FiltersPage } from './filters.page';
import { materialLocators } from '../../public-api';
export class ProcessFiltersPage {
defaultProcessFilters = {
running: 'Running',
completed: 'Completed',
all: 'All'
};
filtersPage = new FiltersPage();
runningFilter = $('button[data-automation-id="Running_filter"]');
completedFilter = $('button[data-automation-id="Completed_filter"]');
allFilter = $('button[data-automation-id="All_filter"]');
accordionMenu = $(`.app-processes-menu ${materialLocators.Accordion.root}`);
async clickRunningFilterButton(): Promise<void> {
await this.filtersPage.clickFilterButton(this.runningFilter);
}
async clickCompletedFilterButton(): Promise<void> {
await this.filtersPage.clickFilterButton(this.completedFilter);
}
async clickAllFilterButton(): Promise<void> {
await this.filtersPage.clickFilterButton(this.allFilter);
}
async isRunningFilterHighlighted(): Promise<boolean> {
return this.filtersPage.isFilterHighlighted(this.defaultProcessFilters.running);
}
async isRunningFilterNotHighlighted(): Promise<boolean> {
return this.filtersPage.isFilterNotHighlighted(this.defaultProcessFilters.running);
}
async isCompletedFilterHighlighted(): Promise<boolean> {
return this.filtersPage.isFilterHighlighted(this.defaultProcessFilters.completed);
}
async isCompletedFilterNotHighlighted(): Promise<boolean> {
return this.filtersPage.isFilterNotHighlighted(this.defaultProcessFilters.completed);
}
async isAllFilterHighlighted(): Promise<boolean> {
return this.filtersPage.isFilterHighlighted(this.defaultProcessFilters.all);
}
async isAllFilterNotHighlighted(): Promise<boolean> {
return this.filtersPage.isFilterNotHighlighted(this.defaultProcessFilters.all);
}
async isRunningFilterDisplayed(): Promise<boolean> {
return this.filtersPage.isFilterDisplayed(this.defaultProcessFilters.running);
}
async isCompletedFilterDisplayed(): Promise<boolean> {
return this.filtersPage.isFilterDisplayed(this.defaultProcessFilters.completed);
}
async isAllFilterDisplayed(): Promise<boolean> {
return this.filtersPage.isFilterDisplayed(this.defaultProcessFilters.all);
}
}

View File

@@ -1,49 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* 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 { BrowserVisibility } from '../../core/utils/browser-visibility';
import { by, $ } from 'protractor';
import { BrowserActions } from '../../core/utils/browser-actions';
import { materialLocators } from '../../public-api';
export class ProcessInstanceTasksPage {
startProcessDialog = $('#adf-start-process-dialog');
title = this.startProcessDialog.$(`h4${materialLocators.Dialog.title}`);
closeButton = this.startProcessDialog.element(by.cssContainingText(`div.adf-start-process-dialog-actions button span`, 'Close'));
startForm = $('div[data-automation-id="start-form"]');
async clickOnStartForm(): Promise<void> {
await BrowserActions.click(this.startForm);
}
async checkStartProcessDialogIsDisplayed(): Promise<void> {
await BrowserVisibility.waitUntilElementIsVisible(this.startProcessDialog);
}
async getTitle(): Promise<string> {
return BrowserActions.getText(this.title);
}
async clickCloseButton(): Promise<void> {
await BrowserActions.click(this.closeButton);
}
async checkStartProcessDialogIsNotDisplayed(): Promise<void> {
await BrowserVisibility.waitUntilElementIsNotVisible(this.startProcessDialog);
}
}

View File

@@ -16,11 +16,8 @@
*/
export * from './filters.page';
export * from './process-filters.page';
export * from './process-list.page';
export * from './task-list.page';
export * from './task-filters.page';
export * from './process-instance-tasks.page';
export * from './process-instance-header.page';
export * from './start-process.page';
export * from './task-form.page';

View File

@@ -35,9 +35,7 @@ export class StartProcessPage {
noProcess = $('.adf-empty-content__title');
processDefinition = $('input[id="processDefinitionName"]');
processDefinitionOptionsPanel = $(`div[class*="${materialLocators.Autocomplete.panel.root}"]`);
processDefinitionDropdown = new DropdownPage($('#adf-select-process-dropdown'));
applicationDropdown = new DropdownPage($(`[data-automation-id*="start-process-app"] ${materialLocators.Select.arrow.class}`));
async checkNoProcessMessage(): Promise<void> {
await BrowserVisibility.waitUntilElementIsVisible(this.noProcess);
@@ -83,11 +81,6 @@ export class StartProcessPage {
}
}
async selectFromApplicationDropdown(name): Promise<void> {
await this.applicationDropdown.clickDropdown();
await this.applicationDropdown.selectOption(name);
}
async clickProcessDropdownArrow(): Promise<void> {
await BrowserVisibility.waitUntilElementIsVisible(this.selectProcessDropdownArrow);
await BrowserActions.click(this.selectProcessDropdownArrow);
@@ -117,19 +110,10 @@ export class StartProcessPage {
await BrowserActions.click(this.cancelProcessButton);
}
async isCancelProcessButtonEnabled(): Promise<boolean> {
return this.cancelProcessButton.isEnabled();
}
async clickFormStartProcessButton(): Promise<void> {
await BrowserActions.click(this.formStartProcessButton);
}
async isStartFormProcessButtonEnabled() {
await BrowserVisibility.waitUntilElementIsVisible(this.formStartProcessButton);
return this.formStartProcessButton.isEnabled();
}
async isStartProcessButtonEnabled() {
await BrowserVisibility.waitUntilElementIsNotVisible(this.startProcessButtonDisabled);
return this.startProcessButton.isEnabled();
@@ -157,10 +141,6 @@ export class StartProcessPage {
await locator.sendKeys(Key.TAB);
}
async clearField(locator): Promise<void> {
await BrowserActions.clearWithBackSpace(locator);
}
formFields(): FormFields {
return new FormFields();
}
@@ -174,18 +154,4 @@ export class StartProcessPage {
await this.enterProcessName(name);
await this.clickStartProcessButton();
}
async startProcessWithApplication(name: string, applicationName: string, processName: string) {
await this.enterProcessName(name);
await this.selectFromApplicationDropdown(applicationName);
await this.checkProcessDefinitionDropdownIsEnabled();
await this.selectFromProcessDropdown(processName);
await this.clickStartProcessButton();
}
async selectApplicationAndProcess(applicationName: string, processName: string) {
await this.selectFromApplicationDropdown(applicationName);
await this.checkProcessDefinitionDropdownIsEnabled();
await this.selectFromProcessDropdown(processName);
}
}

View File

@@ -1,75 +0,0 @@
/*!
* @license
* Copyright © 2005-2024 Hyland Software, Inc. and its affiliates. All rights reserved.
*
* 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 { BrowserVisibility } from '../../core/utils/browser-visibility';
import { DataTableComponentPage } from '../../core/pages/data-table-component.page';
import { BrowserActions } from '../../core/utils/browser-actions';
import { element, by, ElementFinder } from 'protractor';
export class TaskListPage {
rootElement: ElementFinder;
dataTable: DataTableComponentPage;
noTasksFound: ElementFinder;
constructor(
rootElement = element.all(by.css('adf-tasklist')).first()
) {
this.rootElement = rootElement;
this.dataTable = new DataTableComponentPage(this.rootElement);
this.noTasksFound = this.rootElement.element(
by.css('.adf-empty-content__title')
);
}
getDataTable() {
return this.dataTable;
}
getRowsDisplayedWithSameName(taskName: string): Promise<string> {
return this.dataTable.getRowsWithSameColumnValues('Task Name', taskName);
}
async checkContentIsDisplayedByColumn(column: string, processName: string): Promise<void> {
await this.dataTable.waitTillContentLoaded();
return this.dataTable.checkContentIsDisplayed(column, processName);
}
async checkContentIsNotDisplayedByColumn(column: string, processName: string): Promise<void> {
await this.dataTable.waitTillContentLoaded();
return this.dataTable.checkContentIsNotDisplayed(column, processName);
}
async checkTaskListIsLoaded(): Promise<void> {
await BrowserVisibility.waitUntilElementIsVisible(this.rootElement);
}
getNoTasksFoundMessage(): Promise<string> {
return BrowserActions.getText(this.noTasksFound);
}
checkRowIsSelected(taskName: string): Promise<void> {
return this.dataTable.checkRowIsSelected('Task Name', taskName);
}
async selectRowByName(taskName: string): Promise<void> {
await this.dataTable.selectRow('Task Name', taskName);
}
getAllRowsNameColumn(): Promise<any> {
return this.dataTable.getAllRowsColumnValues('Task Name');
}
}