stabilize some e2e cloud (#5701)

* stabilize some e2e cloud

* Update protractor.conf.ts

* Update protractor.conf.ts

* improve some other test

* fix
This commit is contained in:
Eugenio Romano 2020-05-14 09:42:40 +01:00 committed by GitHub
parent bf729f60a2
commit c26b8e046c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 48 additions and 32 deletions

View File

@ -125,11 +125,9 @@ describe('People Groups Cloud Component', () => {
await peopleCloudComponent.searchAssignee(apsUser.lastName);
await peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName} ${apsUser.lastName}`);
await peopleCloudComponent.searchAssignee(devopsUser.lastName);
await peopleCloudComponent.checkUserIsNotDisplayed(`${devopsUser.firstName} ${devopsUser.lastName}`);
await peopleCloudComponent.checkUserIsNotDisplayed(`${apsUser.firstName} ${apsUser.lastName}`);
await peopleCloudComponent.checkNoResultsFoundError();
await peopleCloudComponent.searchAssignee(noRoleUser.lastName);
await browser.sleep(5000);
await peopleCloudComponent.checkUserIsNotDisplayed(`${noRoleUser.firstName} ${noRoleUser.lastName}`);
await peopleCloudComponent.checkNoResultsFoundError();
});
it('Multiple roles filtering', async () => {
@ -139,8 +137,7 @@ describe('People Groups Cloud Component', () => {
await peopleCloudComponent.searchAssignee(testUser.lastName);
await peopleCloudComponent.checkUserIsDisplayed(`${testUser.firstName} ${testUser.lastName}`);
await peopleCloudComponent.searchAssignee(noRoleUser.lastName);
await peopleCloudComponent.checkUserIsNotDisplayed(`${testUser.firstName} ${testUser.lastName}`);
await peopleCloudComponent.checkUserIsNotDisplayed(`${noRoleUser.firstName} ${noRoleUser.lastName}`);
await peopleCloudComponent.checkNoResultsFoundError();
});
});
@ -238,8 +235,8 @@ describe('People Groups Cloud Component', () => {
await peopleCloudComponent.checkSelectedPeople(`${testUser.firstName} ${testUser.lastName}`);
await peopleCloudComponent.checkSelectedPeople(`${noRoleUser.firstName} ${noRoleUser.lastName}`);
await peopleCloudComponent.searchAssigneeToExisting(noRoleUser.lastName);
await peopleCloudComponent.checkUserIsNotDisplayed(`${noRoleUser.firstName} ${noRoleUser.lastName}`);
await peopleCloudComponent.searchAssignee(noRoleUser.lastName);
await peopleCloudComponent.checkNoResultsFoundError();
});
it('[C309677] Should populate the Users without any validation when the Preselect flag is set to false', async () => {

View File

@ -102,13 +102,13 @@ describe('People Groups Cloud Component', () => {
await peopleCloudComponent.selectAssigneeFromList(`${testUser.firstName} ${testUser.lastName}`);
await peopleCloudComponent.checkSelectedPeople(`${testUser.firstName} ${testUser.lastName}`);
await peopleCloudComponent.searchAssigneeToExisting(apsUser.firstName);
await peopleCloudComponent.searchAssignee(apsUser.firstName);
await peopleCloudComponent.checkUserIsDisplayed(`${apsUser.firstName} ${apsUser.lastName}`);
await peopleCloudComponent.selectAssigneeFromList(`${apsUser.firstName} ${apsUser.lastName}`);
await peopleCloudComponent.checkSelectedPeople(`${apsUser.firstName} ${apsUser.lastName}`);
await peopleCloudComponent.searchAssigneeToExisting(noRoleUser.firstName);
await peopleCloudComponent.checkUserIsNotDisplayed(`${noRoleUser.firstName} ${noRoleUser.lastName}`);
await peopleCloudComponent.searchAssignee(noRoleUser.firstName);
await peopleCloudComponent.checkNoResultsFoundError();
});
it('[C305041] Should filter the Groups Single Selection with the Application name filter', async () => {

View File

@ -118,7 +118,7 @@ describe('Process Header cloud component', () => {
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);
await expect(await processHeaderCloudPage.getStatus()).toEqual(runningProcess.entry.status);
await expect(await processHeaderCloudPage.getStatus()).toEqual('RUNNING');
await expect(await processHeaderCloudPage.getInitiator()).toEqual(runningProcess.entry.initiator);
await expect(await processHeaderCloudPage.getStartDate()).toEqual(runningCreatedDate);
await expect(await processHeaderCloudPage.getParentId()).toEqual(CONSTANTS.PROCESS_DETAILS.NO_PARENT);
@ -143,7 +143,7 @@ describe('Process Header cloud component', () => {
await expect(await processHeaderCloudPage.getId()).toEqual(childCompleteProcess.entry.id);
await expect(await processHeaderCloudPage.getName()).toEqual(CONSTANTS.PROCESS_DETAILS.NO_NAME);
await expect(await processHeaderCloudPage.getStatus()).toEqual(childCompleteProcess.entry.status);
await expect(await processHeaderCloudPage.getStatus()).toEqual('COMPLETED');
await expect(await processHeaderCloudPage.getInitiator()).toEqual(childCompleteProcess.entry.initiator);
await expect(await processHeaderCloudPage.getStartDate()).toEqual(completedCreatedDate);
await expect(await processHeaderCloudPage.getParentId()).toEqual(childCompleteProcess.entry.parentId);

View File

@ -16,7 +16,16 @@
*/
import { browser } from 'protractor';
import { LoginSSOPage, TasksService, ApiService, AppListCloudPage, StringUtil, IdentityService, GroupIdentityService } from '@alfresco/adf-testing';
import {
LoginSSOPage,
TasksService,
ApiService,
AppListCloudPage,
StringUtil,
IdentityService,
GroupIdentityService,
QueryService
} from '@alfresco/adf-testing';
import { NavigationBarPage } from '../pages/adf/navigation-bar.page';
import { TasksCloudDemoPage } from '../pages/adf/demo-shell/process-services/tasks-cloud-demo.page';
@ -27,16 +36,19 @@ describe('Task filters cloud', () => {
const navigationBarPage = new NavigationBarPage();
const appListCloudComponent = new AppListCloudPage();
const tasksCloudDemoPage = new TasksCloudDemoPage();
let tasksService: TasksService;
let identityService: IdentityService;
let groupIdentityService: GroupIdentityService;
let queryService: QueryService;
let testUser, groupInfo;
const apiService = new ApiService(browser.params.config.oauth2.clientId, browser.params.config.bpmHost, browser.params.config.oauth2.host, 'BPM');
const newTask = StringUtil.generateRandomString(5), completedTask = StringUtil.generateRandomString(5);
const simpleApp = browser.params.resources.ACTIVITI_CLOUD_APPS.SIMPLE_APP.name;
beforeAll(async() => {
beforeAll(async () => {
queryService = new QueryService(apiService);
await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
identityService = new IdentityService(apiService);
@ -48,11 +60,13 @@ describe('Task filters cloud', () => {
await apiService.login(testUser.email, testUser.password);
await loginSSOPage.loginSSOIdentityService(testUser.email, testUser.password);
});
afterAll(async() => {
afterAll(async () => {
await apiService.login(browser.params.identityAdmin.email, browser.params.identityAdmin.password);
await identityService.deleteIdentityUser(testUser.idIdentityService);
});
beforeEach(async () => {
@ -84,6 +98,7 @@ describe('Task filters cloud', () => {
await tasksService.claimTask(toBeCompletedTask.entry.id, simpleApp);
await tasksService.completeTask(toBeCompletedTask.entry.id, simpleApp);
await queryService.getTaskByStatus(toBeCompletedTask.entry.name, simpleApp, 'COMPLETED');
await tasksCloudDemoPage.taskFilterCloudComponent.clickTaskFilter('my-tasks');
await expect(await tasksCloudDemoPage.taskFilterCloudComponent.getActiveFilterName()).toBe('My Tasks');
await tasksCloudDemoPage.taskListCloudComponent().checkContentIsNotDisplayedByName(completedTask);
@ -94,5 +109,5 @@ describe('Task filters cloud', () => {
await tasksCloudDemoPage.taskListCloudComponent().checkContentIsDisplayedByName(completedTask);
});
});
});
});

View File

@ -145,7 +145,7 @@ describe('Task Header cloud component', () => {
await expect(await taskHeaderCloudPage.getId()).toEqual(basicCreatedTask.entry.id);
await expect(await taskHeaderCloudPage.getDescription())
.toEqual(isValueInvalid(basicCreatedTask.entry.description) ? CONSTANTS.TASK_DETAILS.NO_DESCRIPTION : basicCreatedTask.entry.description);
await expect(await taskHeaderCloudPage.getStatus()).toEqual(basicCreatedTask.entry.status);
await expect(await taskHeaderCloudPage.getStatus()).toEqual('ASSIGNED');
await expect(await taskHeaderCloudPage.getPriority()).toEqual(basicCreatedTask.entry.priority.toString());
await expect(await taskHeaderCloudPage.getCategory()).toEqual(!basicCreatedTask.entry.category ?
CONSTANTS.TASK_DETAILS.NO_CATEGORY : basicCreatedTask.entry.category);
@ -165,7 +165,7 @@ describe('Task Header cloud component', () => {
await expect(await taskHeaderCloudPage.getId()).toEqual(completedTask.entry.id);
await expect(await taskHeaderCloudPage.getDescription())
.toEqual(isValueInvalid(completedTask.entry.description) ? CONSTANTS.TASK_DETAILS.NO_DESCRIPTION : completedTask.entry.description);
await expect(await taskHeaderCloudPage.getStatus()).toEqual(completedTask.entry.status);
await expect(await taskHeaderCloudPage.getStatus()).toEqual('COMPLETED');
await expect(await taskHeaderCloudPage.getPriority()).toEqual(completedTask.entry.priority.toString());
await expect(await taskHeaderCloudPage.getCategory()).toEqual(!completedTask.entry.category ?
CONSTANTS.TASK_DETAILS.NO_CATEGORY : completedTask.entry.category);
@ -185,7 +185,7 @@ describe('Task Header cloud component', () => {
await expect(await taskHeaderCloudPage.getId()).toEqual(subTask.entry.id);
await expect(await taskHeaderCloudPage.getDescription())
.toEqual(isValueInvalid(subTask.entry.description) ? CONSTANTS.TASK_DETAILS.NO_DESCRIPTION : subTask.entry.description);
await expect(await taskHeaderCloudPage.getStatus()).toEqual(subTask.entry.status);
await expect(await taskHeaderCloudPage.getStatus()).toEqual('ASSIGNED');
await expect(await taskHeaderCloudPage.getPriority()).toEqual(subTask.entry.priority.toString());
await expect(await taskHeaderCloudPage.getCategory()).toEqual(!subTask.entry.category ?
CONSTANTS.TASK_DETAILS.NO_CATEGORY : subTask.entry.category);
@ -239,12 +239,17 @@ describe('Task Header cloud component', () => {
const currentAssignee = await peopleCloudComponentPage.getChipAssignee();
await expect(currentAssignee).toContain(testUser.firstName, 'Invalid Assignee first name set for the new task');
await expect(currentAssignee).toContain(testUser.lastName, 'Invalid Assignee last name set for the new task');
await peopleCloudComponentPage.searchAssignee('hrUser');
await peopleCloudComponentPage.checkUserIsDisplayed('HR User');
await peopleCloudComponentPage.selectAssigneeFromList('HR User');
await peopleCloudComponentPage.checkSelectedPeople('HR User');
await peopleCloudComponentPage.searchAssignee('processAdmin');
await peopleCloudComponentPage.checkUserIsDisplayed('Process Admin User');
await peopleCloudComponentPage.selectAssigneeFromList('Process Admin User');
await peopleCloudComponentPage.checkSelectedPeople('Process Admin User');
await peopleCloudComponentPage.searchAssignee('modeler');
await peopleCloudComponentPage.checkOptionIsNotDisplayed();
await peopleCloudComponentPage.checkNoResultsFoundError();
});
describe('Default Date format', () => {

View File

@ -17,7 +17,8 @@
import { browser, by, element, ElementFinder, protractor } from 'protractor';
const DEFAULT_TIMEOUT = global['TestConfig'] ? global['TestConfig'].main.timeout : 40000;
const DEFAULT_TIMEOUT = global['TestConfig'] ? global['TestConfig'].main.timeout : 20000;
const NOT_VISIBLE_DEFAULT_TIMEOUT = global['TestConfig'] ? global['TestConfig'].main.timeout : 5000;
export class BrowserVisibility {
@ -48,7 +49,7 @@ export class BrowserVisibility {
/*
* Wait for element to not be visible
*/
static async waitUntilElementIsNotVisible(elementToCheck: ElementFinder, waitTimeout: number = DEFAULT_TIMEOUT): Promise<any> {
static async waitUntilElementIsNotVisible(elementToCheck: ElementFinder, waitTimeout: number = NOT_VISIBLE_DEFAULT_TIMEOUT): Promise<any> {
return browser.wait(protractor.ExpectedConditions.invisibilityOf(elementToCheck), waitTimeout, 'Element is Visible and it should not' + elementToCheck.locator());
}
@ -59,7 +60,7 @@ export class BrowserVisibility {
return browser.wait(protractor.ExpectedConditions.textToBePresentInElementValue(elementToCheck, elementValue), waitTimeout, 'Element doesn\'t have a value ' + elementToCheck.locator());
}
static async waitUntilElementIsNotPresent(elementToCheck: ElementFinder, waitTimeout: number = DEFAULT_TIMEOUT): Promise<any> {
static async waitUntilElementIsNotPresent(elementToCheck: ElementFinder, waitTimeout: number = NOT_VISIBLE_DEFAULT_TIMEOUT): Promise<any> {
return browser.wait(protractor.ExpectedConditions.stalenessOf(elementToCheck), waitTimeout, 'Element is present ' + elementToCheck.locator());
}

View File

@ -24,6 +24,7 @@ export class PeopleCloudComponentPage {
peopleCloudSearch: ElementFinder = element(by.css('input[data-automation-id="adf-people-cloud-search-input"]'));
assigneeField: ElementFinder = element(by.css('input[data-automation-id="adf-people-cloud-search-input"]'));
selectionReady: ElementFinder = element(by.css('div[data-automation-id="adf-people-cloud-row"]'));
formFields: FormFields = new FormFields();
labelLocator: Locator = by.css("label[class*='adf-label']");
inputLocator: Locator = by.css('input');
@ -48,10 +49,6 @@ export class PeopleCloudComponentPage {
await BrowserActions.clearSendKeys(this.peopleCloudSearch, name);
}
async searchAssigneeToExisting(name: string): Promise<void> {
await BrowserActions.clearSendKeys(this.peopleCloudSearch, name);
}
async selectAssigneeFromList(name: string): Promise<void> {
const assigneeRow = element.all(by.cssContainingText('mat-option span.adf-people-label-name', name)).first();
await BrowserActions.click(assigneeRow);
@ -79,6 +76,7 @@ export class PeopleCloudComponentPage {
}
async checkUserIsNotDisplayed(name: string): Promise<void> {
await BrowserVisibility.waitUntilElementIsVisible(this.selectionReady);
const assigneeRow = element(by.cssContainingText('mat-option span.adf-people-label-name', name));
await BrowserVisibility.waitUntilElementIsNotVisible(assigneeRow);
}

View File

@ -34,7 +34,7 @@ export class TaskFiltersCloudComponentPage {
this.filter = this.getTaskFilterLocatorByFilterName(filterName);
await BrowserVisibility.waitUntilElementIsClickable(this.filter);
await BrowserActions.click(this.filter);
await browser.sleep(1000);
await browser.sleep(1500);
}
async checkTaskFilterNotDisplayed(filterName: string): Promise<void> {

View File

@ -19,7 +19,7 @@ const projectRoot = path.resolve(__dirname);
const width = 1657, height = 1657;
let ENV_FILE = process.env.ENV_FILE;
let GROUP_SUFFIX = process.env.PREFIX;
let GROUP_SUFFIX = process.env.PREFIX || 'adf';
RESOURCES.ACTIVITI_CLOUD_APPS = ACTIVITI_CLOUD_APPS;
if (ENV_FILE) {