mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-26 17:24:56 +00:00
[ACA-3590]Created process-instance-header, info-drawer and task-header POs (#5894)
* Created process-instance-header and info-drawer POs * Refactor ADF tests to use ProcessInstanceHeaderPage * Fix lint * Fix card-view-date-item PO * Add task-header PO * no message * Add set and get for due date property * Changed how it was previously * Exclude attach folder and attach file tests * Bugs already fixed, remove excludes * Modify data-table-item for cases when column title is empty * Add new methods to datatable PO
This commit is contained in:
parent
54df083311
commit
506f0dfbb1
@ -16,19 +16,12 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { by, element, protractor } from 'protractor';
|
import { by, element, protractor } from 'protractor';
|
||||||
import { BrowserVisibility, BrowserActions } from '@alfresco/adf-testing';
|
import { BrowserVisibility, BrowserActions, ProcessInstanceHeaderPage } from '@alfresco/adf-testing';
|
||||||
|
|
||||||
export class ProcessDetailsPage {
|
export class ProcessDetailsPage {
|
||||||
|
processInstanceHeaderPage = new ProcessInstanceHeaderPage();
|
||||||
processTitle = element(by.css('.mat-card-title'));
|
processTitle = element(by.css('.mat-card-title'));
|
||||||
processDetailsMessage = element(by.css('adf-process-instance-details div'));
|
processDetailsMessage = element(by.css('adf-process-instance-details div'));
|
||||||
processStatusField = element(by.css('[data-automation-id="card-textitem-value-status"]'));
|
|
||||||
processEndDateField = element(by.css('span[data-automation-id="card-dateitem-ended"]'));
|
|
||||||
processCategoryField = element(by.css('[data-automation-id="card-textitem-value-category"]'));
|
|
||||||
processBusinessKeyField = element(by.css('[data-automation-id="card-textitem-value-businessKey"]'));
|
|
||||||
processCreatedByField = element(by.css('[data-automation-id="card-textitem-value-createdBy"]'));
|
|
||||||
processCreatedField = element(by.css('span[data-automation-id="card-dateitem-created"]'));
|
|
||||||
processIdField = element(by.css('[data-automation-id="card-textitem-value-id"]'));
|
|
||||||
processDescription = element(by.css('[data-automation-id="card-textitem-value-description"]'));
|
|
||||||
showDiagramButtonDisabled = element(by.css('button[id="show-diagram-button"][disabled]'));
|
showDiagramButtonDisabled = element(by.css('button[id="show-diagram-button"][disabled]'));
|
||||||
propertiesList = element(by.css('.adf-property-list'));
|
propertiesList = element(by.css('.adf-property-list'));
|
||||||
showDiagramButton = element(by.id('show-diagram-button'));
|
showDiagramButton = element(by.id('show-diagram-button'));
|
||||||
@ -42,22 +35,6 @@ export class ProcessDetailsPage {
|
|||||||
completedTask = element(by.css('div[data-automation-id="completed-tasks"]'));
|
completedTask = element(by.css('div[data-automation-id="completed-tasks"]'));
|
||||||
taskTitle = element(by.css('.adf-activiti-task-details__header'));
|
taskTitle = element(by.css('.adf-activiti-task-details__header'));
|
||||||
|
|
||||||
async checkDetailsAreDisplayed(): Promise<void> {
|
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.processStatusField);
|
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.processEndDateField);
|
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.processCategoryField);
|
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.processBusinessKeyField);
|
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.processCreatedByField);
|
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.processCreatedField);
|
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.processIdField);
|
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.processDescription);
|
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.showDiagramButton);
|
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.activeTask);
|
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.cancelProcessButton);
|
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.commentInput);
|
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.auditLogButton);
|
|
||||||
}
|
|
||||||
|
|
||||||
checkProcessTitleIsDisplayed(): Promise<string> {
|
checkProcessTitleIsDisplayed(): Promise<string> {
|
||||||
return BrowserActions.getText(this.processTitle);
|
return BrowserActions.getText(this.processTitle);
|
||||||
}
|
}
|
||||||
@ -66,36 +43,40 @@ export class ProcessDetailsPage {
|
|||||||
return BrowserActions.getText(this.processDetailsMessage);
|
return BrowserActions.getText(this.processDetailsMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async checkProcessHeaderDetailsAreVisible(): Promise<void> {
|
||||||
|
await this.processInstanceHeaderPage.checkDetailsAreDisplayed();
|
||||||
|
}
|
||||||
|
|
||||||
getProcessStatus(): Promise<string> {
|
getProcessStatus(): Promise<string> {
|
||||||
return BrowserActions.getInputValue(this.processStatusField);
|
return this.processInstanceHeaderPage.getStatusFieldValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
getEndDate(): Promise<string> {
|
getEndDate(): Promise<string> {
|
||||||
return BrowserActions.getText(this.processEndDateField);
|
return this.processInstanceHeaderPage.getEndDateFieldValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
getProcessCategory(): Promise<string> {
|
getProcessCategory(): Promise<string> {
|
||||||
return BrowserActions.getInputValue(this.processCategoryField);
|
return this.processInstanceHeaderPage.getCategoryFieldValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
getBusinessKey(): Promise<string> {
|
getBusinessKey(): Promise<string> {
|
||||||
return BrowserActions.getInputValue(this.processBusinessKeyField);
|
return this.processInstanceHeaderPage.getBusinessKeyFieldValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
getCreatedBy(): Promise<string> {
|
getCreatedBy(): Promise<string> {
|
||||||
return BrowserActions.getInputValue(this.processCreatedByField);
|
return this.processInstanceHeaderPage.getStartedByFieldValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
getCreated(): Promise<string> {
|
getCreated(): Promise<string> {
|
||||||
return BrowserActions.getText(this.processCreatedField);
|
return this.processInstanceHeaderPage.getStartDateFieldValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
getId(): Promise<string> {
|
getId(): Promise<string> {
|
||||||
return BrowserActions.getInputValue(this.processIdField);
|
return this.processInstanceHeaderPage.getIdFieldValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
getProcessDescription(): Promise<string> {
|
getProcessDescription(): Promise<string> {
|
||||||
return BrowserActions.getInputValue(this.processDescription);
|
return this.processInstanceHeaderPage.getDescriptionFieldValue();
|
||||||
}
|
}
|
||||||
|
|
||||||
async clickShowDiagram(): Promise<void> {
|
async clickShowDiagram(): Promise<void> {
|
||||||
|
@ -70,7 +70,7 @@ describe('Process Instance Details', () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it('[C307031] Should display the created date in the default format', async () => {
|
it('[C307031] Should display the created date in the default format', async () => {
|
||||||
await processDetailsPage.checkDetailsAreDisplayed();
|
await processDetailsPage.checkProcessHeaderDetailsAreVisible();
|
||||||
await expect(await processDetailsPage.getCreated()).toEqual(moment(process.started).format(PROCESS_DATE_FORMAT));
|
await expect(await processDetailsPage.getCreated()).toEqual(moment(process.started).format(PROCESS_DATE_FORMAT));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -194,7 +194,9 @@ describe('Start Process Component', () => {
|
|||||||
await startProcessPage.enterProcessName('Test');
|
await startProcessPage.enterProcessName('Test');
|
||||||
await startProcessPage.selectFromProcessDropdown(browser.params.resources.Files.APP_WITH_PROCESSES.process_se_name);
|
await startProcessPage.selectFromProcessDropdown(browser.params.resources.Files.APP_WITH_PROCESSES.process_se_name);
|
||||||
await startProcessPage.clickFormStartProcessButton();
|
await startProcessPage.clickFormStartProcessButton();
|
||||||
await processDetailsPage.checkDetailsAreDisplayed();
|
|
||||||
|
await processDetailsPage.checkProcessHeaderDetailsAreVisible();
|
||||||
|
|
||||||
const processId = await processDetailsPage.getId();
|
const processId = await processDetailsPage.getId();
|
||||||
const response = await apiService.getInstance().activiti.processApi.getProcessInstance(processId);
|
const response = await apiService.getInstance().activiti.processApi.getProcessInstance(processId);
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"C290180": "https://issues.alfresco.com/jira/browse/ACS-364",
|
"C290180": "https://issues.alfresco.com/jira/browse/ACS-364",
|
||||||
"C277201": "Investigate after NG10",
|
"C277201": "Investigate after NG10",
|
||||||
"C362240": "Include once ADF starts using ACS 7, https://issues.alfresco.com/jira/browse/ADF-5182",
|
"C362240": "Include once ADF starts using ACS 7 , https://issues.alfresco.com/jira/browse/ADF-5182",
|
||||||
"C362241": "Include once ADF starts using ACS 7, https://issues.alfresco.com/jira/browse/ADF-5182",
|
"C362241": "Include once ADF starts using ACS 7, https://issues.alfresco.com/jira/browse/ADF-5182",
|
||||||
"C362242": "Include once ADF starts using ACS 7, https://issues.alfresco.com/jira/browse/ADF-5182",
|
"C362242": "Include once ADF starts using ACS 7, https://issues.alfresco.com/jira/browse/ADF-5182",
|
||||||
"C362265": "Include once ADF starts using ACS 7, https://issues.alfresco.com/jira/browse/ADF-5182"
|
"C362265": "Include once ADF starts using ACS 7, https://issues.alfresco.com/jira/browse/ADF-5182"
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
import { element, by, ElementFinder } from 'protractor';
|
import { element, by, ElementFinder } from 'protractor';
|
||||||
import { DateTimePickerPage } from '../material/date-time-picker.page';
|
import { DateTimePickerPage } from '../material/date-time-picker.page';
|
||||||
import { DatePickerPage } from '../material/date-picker.page';
|
import { DatePickerPage } from '../material/date-picker.page';
|
||||||
|
import { BrowserVisibility } from '../../utils/browser-visibility';
|
||||||
|
|
||||||
export class CardDateItemPage {
|
export class CardDateItemPage {
|
||||||
|
|
||||||
@ -25,7 +26,7 @@ export class CardDateItemPage {
|
|||||||
dateTimePickerPage: DateTimePickerPage;
|
dateTimePickerPage: DateTimePickerPage;
|
||||||
datePickerPage = new DatePickerPage();
|
datePickerPage = new DatePickerPage();
|
||||||
|
|
||||||
labelLocator = by.css('div[data-automation-id*="card-date-label"]');
|
labelLocator = by.css('div[data-automation-id*="card-dateitem-label"]');
|
||||||
valueLocator = by.css('span[data-automation-id*="card-date"]');
|
valueLocator = by.css('span[data-automation-id*="card-date"]');
|
||||||
dateTimePicker = element.all(by.css('.mat-datetimepicker-toggle')).first();
|
dateTimePicker = element.all(by.css('.mat-datetimepicker-toggle')).first();
|
||||||
saveButton = by.css('button[data-automation-id*="card-dateitem-update"]');
|
saveButton = by.css('button[data-automation-id*="card-dateitem-update"]');
|
||||||
@ -46,4 +47,9 @@ export class CardDateItemPage {
|
|||||||
async getDateValue(): Promise<string> {
|
async getDateValue(): Promise<string> {
|
||||||
return this.rootElement.element(this.valueLocator).getText();
|
return this.rootElement.element(this.valueLocator).getText();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async checkLabelIsVisible(): Promise<void> {
|
||||||
|
const labelElement = this.rootElement.element(this.labelLocator);
|
||||||
|
await BrowserVisibility.waitUntilElementIsVisible(labelElement);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ export class CardTextItemPage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async getFieldValue(): Promise<string> {
|
async getFieldValue(): Promise<string> {
|
||||||
const fieldElement = this.rootElement.all(this.field).first();
|
const fieldElement = this.rootElement.element(this.field);
|
||||||
return BrowserActions.getInputValue(fieldElement);
|
return BrowserActions.getInputValue(fieldElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -43,6 +43,11 @@ export class CardTextItemPage {
|
|||||||
await BrowserVisibility.waitUntilElementIsPresent(labelElement);
|
await BrowserVisibility.waitUntilElementIsPresent(labelElement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async checkLabelIsVisible(): Promise<void> {
|
||||||
|
const labelElement = this.rootElement.element(this.labelLocator);
|
||||||
|
await BrowserVisibility.waitUntilElementIsVisible(labelElement);
|
||||||
|
}
|
||||||
|
|
||||||
async enterTextField(text: string): Promise<void> {
|
async enterTextField(text: string): Promise<void> {
|
||||||
await BrowserVisibility.waitUntilElementIsVisible(this.rootElement.element(this.textField));
|
await BrowserVisibility.waitUntilElementIsVisible(this.rootElement.element(this.textField));
|
||||||
await BrowserActions.clearSendKeys(this.rootElement.element(this.textField), text);
|
await BrowserActions.clearSendKeys(this.rootElement.element(this.textField), text);
|
||||||
|
@ -27,4 +27,8 @@ export abstract class Column {
|
|||||||
createLocator(columnValue: string): string {
|
createLocator(columnValue: string): string {
|
||||||
return `//div[@data-automation-id="${this.columnType}_${columnValue}"]`;
|
return `//div[@data-automation-id="${this.columnType}_${columnValue}"]`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getColumnName(): string {
|
||||||
|
return this.columnName;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,15 +33,15 @@ export class DataTableItem {
|
|||||||
this.columns.push(column);
|
this.columns.push(column);
|
||||||
}
|
}
|
||||||
|
|
||||||
getColumn(columnName: string): Column {
|
async getColumn(columnName: string): Promise<Column> {
|
||||||
return this.columns.find(
|
return this.columns.find(
|
||||||
(column) => column.columnName === columnName
|
(column) => column.getColumnName() === columnName
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
getRow(columnName: string, columnValue: string): ElementFinder {
|
async getRow(columnName: string, columnValue: string): Promise<ElementFinder> {
|
||||||
const column = this.getColumn(columnName);
|
const column = await this.getColumn(columnName);
|
||||||
const locator = `//div[@title="${columnName}"]` + column.createLocator(columnValue) + `//ancestor::adf-datatable-row[contains(@class, 'adf-datatable-row')]`;
|
const locator = `//div[@title="${column.columnName}"]` + column.createLocator(columnValue) + `//ancestor::adf-datatable-row[contains(@class, 'adf-datatable-row')]`;
|
||||||
return this.rootElement.element(by.xpath(locator));
|
return this.rootElement.element(by.xpath(locator));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ export class DataTableItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async rightClickOnRow(columnName: string, columnValue: string): Promise<void> {
|
async rightClickOnRow(columnName: string, columnValue: string): Promise<void> {
|
||||||
const row = this.getRow(columnName, columnValue);
|
const row = await this.getRow(columnName, columnValue);
|
||||||
await BrowserActions.rightClick(row);
|
await BrowserActions.rightClick(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,8 +61,27 @@ export class DataTableItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async clickAndEnterOnRow(columnName: string, columnValue: string): Promise<void> {
|
async clickAndEnterOnRow(columnName: string, columnValue: string): Promise<void> {
|
||||||
const row = this.getRow(columnName, columnValue);
|
const row = await this.getRow(columnName, columnValue);
|
||||||
await BrowserActions.click(row);
|
await BrowserActions.click(row);
|
||||||
await browser.actions().sendKeys(protractor.Key.ENTER).perform();
|
await browser.actions().sendKeys(protractor.Key.ENTER).perform();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getColumnValueForRow(identifyingColumnName: string, identifyingColumnValue: string, columnName: string): Promise<string> {
|
||||||
|
const row = await this.getRow(identifyingColumnName, identifyingColumnValue);
|
||||||
|
await BrowserVisibility.waitUntilElementIsVisible(row);
|
||||||
|
const rowColumn = row.element(by.css(`div[title="${columnName}"] span`));
|
||||||
|
return BrowserActions.getText(rowColumn);
|
||||||
|
}
|
||||||
|
|
||||||
|
async checkRowIsSelected(columnName: string, columnValue: string): Promise<void> {
|
||||||
|
const column = await this.getColumn(columnName);
|
||||||
|
const locator = `//div[@title="${column.columnName}"]` + column.createLocator(columnValue) + `//ancestor::adf-datatable-row[contains(@class, 'is-selected')]`;
|
||||||
|
await BrowserVisibility.waitUntilElementIsVisible(element(by.xpath(locator)));
|
||||||
|
}
|
||||||
|
|
||||||
|
async checkRowIsNotSelected(columnName: string, columnValue: string): Promise<void> {
|
||||||
|
const column = await this.getColumn(columnName);
|
||||||
|
const locator = `//div[@title="${column.columnName}"]` + column.createLocator(columnValue) + `//ancestor::adf-datatable-row[contains(@class, 'is-selected')]`;
|
||||||
|
await BrowserVisibility.waitUntilElementIsNotVisible(element(by.xpath(locator)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
75
lib/testing/src/lib/core/pages/info-drawer.page.ts
Normal file
75
lib/testing/src/lib/core/pages/info-drawer.page.ts
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
/*!
|
||||||
|
* @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 { element, by, ElementFinder } from 'protractor';
|
||||||
|
import { BrowserVisibility } from './../utils/browser-visibility';
|
||||||
|
import { TabsPage } from './material/tabs.page';
|
||||||
|
|
||||||
|
export class InfoDrawerPage {
|
||||||
|
|
||||||
|
rootElement: ElementFinder;
|
||||||
|
infoDrawerHeader = by.css('adf-info-drawer-layout-header');
|
||||||
|
tabsPage: TabsPage = new TabsPage();
|
||||||
|
|
||||||
|
constructor(classLocator: string = 'adf-info-drawer') {
|
||||||
|
this.rootElement = element(by.css(`adf-info-drawer[class*='${classLocator}']`));
|
||||||
|
}
|
||||||
|
|
||||||
|
async isInfoDrawerDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await BrowserVisibility.waitUntilElementIsVisible(this.rootElement);
|
||||||
|
return true;
|
||||||
|
} catch (error) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async isInfoDrawerNotDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await BrowserVisibility.waitUntilElementIsNotVisible(this.rootElement);
|
||||||
|
return true;
|
||||||
|
} catch (error) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async isInfoDrawerHeaderDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await BrowserVisibility.waitUntilElementIsVisible(this.rootElement.element(this.infoDrawerHeader));
|
||||||
|
return true;
|
||||||
|
} catch (error) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async isInfoDrawerHeaderNotDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await BrowserVisibility.waitUntilElementIsNotVisible(this.rootElement.element(this.infoDrawerHeader));
|
||||||
|
return true;
|
||||||
|
} catch (error) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getNoOfTabs(): Promise<Number> {
|
||||||
|
return this.tabsPage.getNoOfTabs();
|
||||||
|
}
|
||||||
|
|
||||||
|
async getTabsLabels(): Promise<string> {
|
||||||
|
return this.tabsPage.getTabsLabels();
|
||||||
|
}
|
||||||
|
}
|
@ -17,9 +17,12 @@
|
|||||||
|
|
||||||
import { element, by } from 'protractor';
|
import { element, by } from 'protractor';
|
||||||
import { BrowserActions } from '../../utils/browser-actions';
|
import { BrowserActions } from '../../utils/browser-actions';
|
||||||
|
import { BrowserVisibility } from '../../utils/browser-visibility';
|
||||||
|
|
||||||
export class TabsPage {
|
export class TabsPage {
|
||||||
|
|
||||||
|
tabs = element.all(by.css("div[id*='mat-tab-label']"));
|
||||||
|
|
||||||
async clickTabByTitle(tabTitle): Promise<void> {
|
async clickTabByTitle(tabTitle): Promise<void> {
|
||||||
const tab = element(by.cssContainingText("div[id*='mat-tab-label']", tabTitle));
|
const tab = element(by.cssContainingText("div[id*='mat-tab-label']", tabTitle));
|
||||||
await BrowserActions.click(tab);
|
await BrowserActions.click(tab);
|
||||||
@ -30,4 +33,14 @@ export class TabsPage {
|
|||||||
const result = await tab.getAttribute('aria-selected');
|
const result = await tab.getAttribute('aria-selected');
|
||||||
await expect(result).toBe('true');
|
await expect(result).toBe('true');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getNoOfTabs(): Promise<number> {
|
||||||
|
BrowserVisibility.waitUntilElementIsVisible(this.tabs.first());
|
||||||
|
return this.tabs.count();
|
||||||
|
}
|
||||||
|
|
||||||
|
async getTabsLabels(): Promise<string> {
|
||||||
|
BrowserVisibility.waitUntilElementIsVisible(this.tabs.first());
|
||||||
|
return this.tabs.getText();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -36,3 +36,4 @@ export * from './about.page';
|
|||||||
export * from './snackbar.page';
|
export * from './snackbar.page';
|
||||||
export * from './data-table/public-api';
|
export * from './data-table/public-api';
|
||||||
export * from './context-menu.page';
|
export * from './context-menu.page';
|
||||||
|
export * from './info-drawer.page';
|
||||||
|
@ -0,0 +1,146 @@
|
|||||||
|
/*!
|
||||||
|
* @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 { CardTextItemPage } from '../../core/pages/card-view/card-view-text-item.page';
|
||||||
|
import { CardDateItemPage } from '../../core/pages/card-view/card-view-date-item.page';
|
||||||
|
|
||||||
|
export class ProcessInstanceHeaderPage {
|
||||||
|
|
||||||
|
status = new CardTextItemPage('status');
|
||||||
|
endDate = new CardDateItemPage('ended');
|
||||||
|
category = new CardTextItemPage('category');
|
||||||
|
businessKey = new CardTextItemPage('businessKey');
|
||||||
|
startedBy = new CardTextItemPage('createdBy');
|
||||||
|
startDate = new CardDateItemPage('created');
|
||||||
|
id = new CardTextItemPage('id');
|
||||||
|
description = new CardTextItemPage('description');
|
||||||
|
|
||||||
|
async isIdFieldDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await this.id.checkLabelIsVisible();
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getIdFieldValue(): Promise<string> {
|
||||||
|
return this.id.getFieldValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
async isStatusFieldDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await this.status.checkLabelIsVisible();
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getStatusFieldValue(): Promise<string> {
|
||||||
|
return this.status.getFieldValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
async isEndDateFieldDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await this.endDate.checkLabelIsVisible();
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getEndDateFieldValue(): Promise<string> {
|
||||||
|
return this.endDate.getDateValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
async isCategoryFieldDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await this.category.checkLabelIsVisible();
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getCategoryFieldValue(): Promise<string> {
|
||||||
|
return this.category.getFieldValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
async isBusinessKeyFieldDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await this.businessKey.checkLabelIsVisible();
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getBusinessKeyFieldValue(): Promise<string> {
|
||||||
|
return this.businessKey.getFieldValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
async isStartedByFieldDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await this.startedBy.checkLabelIsVisible();
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getStartedByFieldValue(): Promise<string> {
|
||||||
|
return this.startedBy.getFieldValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
async isStartDateFieldDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await this.startDate.checkLabelIsVisible();
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getStartDateFieldValue(): Promise<string> {
|
||||||
|
return this.startDate.getDateValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
async isDescriptionFieldDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await this.description.checkLabelIsVisible();
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getDescriptionFieldValue(): Promise<string> {
|
||||||
|
return this.description.getFieldValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
async checkDetailsAreDisplayed(): Promise<void> {
|
||||||
|
await this.status.checkLabelIsVisible();
|
||||||
|
await this.endDate.checkLabelIsVisible();
|
||||||
|
await this.category.checkLabelIsVisible();
|
||||||
|
await this.businessKey.checkLabelIsVisible();
|
||||||
|
await this.startedBy.checkLabelIsVisible();
|
||||||
|
await this.startDate.checkLabelIsVisible();
|
||||||
|
await this.id.checkLabelIsVisible();
|
||||||
|
await this.description.checkLabelIsVisible();
|
||||||
|
}
|
||||||
|
}
|
@ -21,7 +21,9 @@ export * from './process-filters.page';
|
|||||||
export * from './process-list.page';
|
export * from './process-list.page';
|
||||||
export * from './task-list.page';
|
export * from './task-list.page';
|
||||||
export * from './task-filters.page';
|
export * from './task-filters.page';
|
||||||
|
export * from './task-header.page';
|
||||||
export * from './process-instance-tasks.page';
|
export * from './process-instance-tasks.page';
|
||||||
|
export * from './process-instance-header.page';
|
||||||
export * from './start-process.page';
|
export * from './start-process.page';
|
||||||
export * from './select-apps-dialog.page';
|
export * from './select-apps-dialog.page';
|
||||||
export * from './external-node-selector-dialog.page';
|
export * from './external-node-selector-dialog.page';
|
||||||
|
@ -0,0 +1,91 @@
|
|||||||
|
/*!
|
||||||
|
* @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 { CardTextItemPage } from '../../core/pages/card-view/card-view-text-item.page';
|
||||||
|
import { CardDateItemPage } from '../../core/pages/card-view/card-view-date-item.page';
|
||||||
|
|
||||||
|
export class TaskHeaderPage {
|
||||||
|
|
||||||
|
assignee = new CardTextItemPage('assignee');
|
||||||
|
status = new CardTextItemPage('status');
|
||||||
|
priority = new CardTextItemPage('priority');
|
||||||
|
dueDate = new CardDateItemPage('dueDate');
|
||||||
|
category = new CardTextItemPage('category');
|
||||||
|
parentName = new CardDateItemPage('parentName');
|
||||||
|
createdDate = new CardDateItemPage('created');
|
||||||
|
duration = new CardTextItemPage('duration');
|
||||||
|
parentTaskId = new CardTextItemPage('parentTaskId');
|
||||||
|
endDate = new CardDateItemPage('endDate');
|
||||||
|
id = new CardTextItemPage('id');
|
||||||
|
description = new CardTextItemPage('description');
|
||||||
|
formName = new CardTextItemPage('formName');
|
||||||
|
|
||||||
|
async isIdFieldDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await this.id.checkLabelIsVisible();
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getIdFieldValue(): Promise<string> {
|
||||||
|
return this.id.getFieldValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
async isStatusFieldDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await this.status.checkLabelIsVisible();
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getStatusFieldValue(): Promise<string> {
|
||||||
|
return this.status.getFieldValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
async isPriorityFieldDisplayed(): Promise<boolean> {
|
||||||
|
try {
|
||||||
|
await this.priority.checkLabelIsVisible();
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async getPriorityFieldValue(): Promise<string> {
|
||||||
|
return this.priority.getFieldValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
async setPriorityFieldValue(priority): Promise<void> {
|
||||||
|
await this.priority.enterTextField(priority);
|
||||||
|
}
|
||||||
|
|
||||||
|
async getDueDateFieldValue(): Promise<string> {
|
||||||
|
return this.dueDate.getDateValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
async setDueDateFieldValue(date): Promise<void> {
|
||||||
|
await this.dueDate.setDateValue(date);
|
||||||
|
}
|
||||||
|
|
||||||
|
async setDueDateFieldValueToCurrentDate(): Promise<void> {
|
||||||
|
await this.dueDate.setTodayDateValue();
|
||||||
|
}
|
||||||
|
}
|
@ -199,7 +199,7 @@ if [ "$CI" = "true" ]; then
|
|||||||
webdriver-manager update --gecko=false --versions.chrome=$chrome
|
webdriver-manager update --gecko=false --versions.chrome=$chrome
|
||||||
else
|
else
|
||||||
echo "Updating wedriver-manager with latest chromedriver, be sure to use evergreen Chrome."
|
echo "Updating wedriver-manager with latest chromedriver, be sure to use evergreen Chrome."
|
||||||
webdriver-manager update --gecko=false
|
./node_modules/protractor/bin/webdriver-manager update --gecko=false
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export DEBUG_OPTION=''
|
export DEBUG_OPTION=''
|
||||||
|
Loading…
x
Reference in New Issue
Block a user