mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-06-30 18:15:11 +00:00
[ADF-3335] Task filter e2e tests (#3614)
* [ADF-3335] Automation Tests for Tasks Filter component * [ADF-3335] Changed " for \' * [ADF-3335] Solved style issues * Update task_filters_component.e2e.ts * [ADF-3335] Added missing parentheses * [ADF-3335] Added missing bracket * [ADF-3335] Improved data automation selectors
This commit is contained in:
parent
7172d5b631
commit
6cf6c9c0e4
@ -62,7 +62,7 @@
|
||||
#taskListPagination>
|
||||
</adf-pagination>
|
||||
</div>
|
||||
<div class="adf-grid-item adf-tasks-details" *ngIf="!isStartTaskMode()" fxFlex.gt-md="1 1 auto">
|
||||
<div class="adf-grid-item adf-tasks-details" *ngIf="!isStartTaskMode()" fxFlex.gt-md="1 1 auto" data-automation-id="adf-tasks-details">
|
||||
<adf-task-details #activitidetails
|
||||
[debugMode]="true"
|
||||
[taskId]="currentTaskId"
|
||||
|
@ -41,6 +41,9 @@ var TaskDetailsPage = function () {
|
||||
var editActionInvolvedUser = by.xpath("following-sibling::div[@class='people-edit-label ng-star-inserted']");
|
||||
var involvedUserPic = by.xpath("ancestor::div/ancestor::div/preceding-sibling::div//div[@class='adf-people-search-people-pic ng-star-inserted']");
|
||||
var infoDrawer = element(by.css("adf-info-drawer"));
|
||||
var taskDetailsSection = element(by.css("div[data-automation-id='adf-tasks-details']"));
|
||||
var taskDetailsEmptySection = element(by.css("div[data-automation-id='adf-tasks-details--empty']"));
|
||||
var completeTask = element(by.css("button[id='adf-no-form-complete-button']"));
|
||||
var auditLogButton = element(by.css("button[adf-task-audit]"));
|
||||
|
||||
var noPeopleInvolved = element(by.id('no-people-label'));
|
||||
@ -263,6 +266,38 @@ var TaskDetailsPage = function () {
|
||||
var pic = this.getRowsUser(user).element(involvedUserPic);
|
||||
Util.waitUntilElementIsVisible(pic);
|
||||
return pic.getText();
|
||||
}
|
||||
|
||||
this.checkTaskDetails = function () {
|
||||
Util.waitUntilElementIsVisible(taskDetailsSection);
|
||||
return taskDetailsSection.getText();
|
||||
};
|
||||
|
||||
this.checkTaskDetailsEmpty = function () {
|
||||
Util.waitUntilElementIsVisible(taskDetailsEmptySection);
|
||||
return taskDetailsEmptySection.getText();
|
||||
};
|
||||
|
||||
this.checkTaskDetailsDisplayed = function () {
|
||||
Util.waitUntilElementIsVisible(taskDetailsSection);
|
||||
Util.waitUntilElementIsVisible(formNameField);
|
||||
Util.waitUntilElementIsVisible(assigneeField);
|
||||
Util.waitUntilElementIsVisible(statusField);
|
||||
Util.waitUntilElementIsVisible(categoryField);
|
||||
Util.waitUntilElementIsVisible(parentNameField);
|
||||
Util.waitUntilElementIsVisible(createdField);
|
||||
Util.waitUntilElementIsVisible(idField);
|
||||
Util.waitUntilElementIsVisible(descriptionField);
|
||||
Util.waitUntilElementIsVisible(dueDateField);
|
||||
Util.waitUntilElementIsVisible(dueDateField);
|
||||
Util.waitUntilElementIsVisible(activitiesTitle);
|
||||
|
||||
return taskDetailsSection.getText();
|
||||
};
|
||||
|
||||
this.clickCompleteTask = function () {
|
||||
Util.waitUntilElementIsVisible(completeTask);
|
||||
return completeTask.click();
|
||||
};
|
||||
|
||||
};
|
||||
|
115
e2e/pages/adf/process_services/taskFiltersPage.js
Normal file
115
e2e/pages/adf/process_services/taskFiltersPage.js
Normal file
@ -0,0 +1,115 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 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.
|
||||
*/
|
||||
|
||||
var Util = require('../../../util/util');
|
||||
|
||||
var TaskFiltersPage = function () {
|
||||
|
||||
var myTasks = element(by.css("span[data-automation-id='My Tasks_filter']"));
|
||||
var queuedTask = element(by.css("span[data-automation-id='Queued Tasks_filter']"));
|
||||
var completedTask = element(by.css("span[data-automation-id='Completed Tasks_filter']"));
|
||||
var involvedTask = element(by.css("span[data-automation-id='Involved Tasks_filter']"));
|
||||
var tasksAccordionButton = element(by.css("div[data-automation-id='adf-panel-heading']"));
|
||||
var tasksAccordionExpanded = element(by.xpath("mat-expansion-panel[contains(@class, 'mat-expanded')]"));
|
||||
var startTaskButton = element(by.css("button[id='button-start']"));
|
||||
var newTaskButton = element(by.css("button[data-automation-id='btn-start-task']"));
|
||||
var activeFilter = element(by.xpath("mat-list-item[contains(@class, 'active')]"));
|
||||
var emptyTaskDetails = element(by.css("adf-task-details > div > div"));
|
||||
var emptyTaskList = element(by.css("p[class='adf-empty-content__title']"));
|
||||
|
||||
this.checkMyTasksItem = function() {
|
||||
Util.waitUntilElementIsVisible(myTasks);
|
||||
return myTasks;
|
||||
};
|
||||
|
||||
this.checkQueuedTaskItem = function() {
|
||||
Util.waitUntilElementIsVisible(queuedTask);
|
||||
return queuedTask;
|
||||
};
|
||||
|
||||
this.clickMyTaskTaskItem = function() {
|
||||
Util.waitUntilElementIsVisible(myTasks);
|
||||
return myTasks.click();
|
||||
};
|
||||
|
||||
this.clickCompletedTaskItem = function() {
|
||||
Util.waitUntilElementIsVisible(completedTask);
|
||||
return completedTask.click();
|
||||
};
|
||||
|
||||
this.checkCompletedTaskItem = function() {
|
||||
Util.waitUntilElementIsVisible(completedTask);
|
||||
return completedTask;
|
||||
};
|
||||
|
||||
this.clickQueuedTaskItem = function() {
|
||||
Util.waitUntilElementIsVisible(queuedTask);
|
||||
return queuedTask.click();
|
||||
};
|
||||
|
||||
this.clickInvolvedTaskItem = function() {
|
||||
Util.waitUntilElementIsVisible(involvedTask);
|
||||
return involvedTask.click();
|
||||
};
|
||||
|
||||
this.checkInvolvedTaskItem = function() {
|
||||
Util.waitUntilElementIsVisible(involvedTask);
|
||||
return involvedTask;
|
||||
};
|
||||
|
||||
this.clickTasksAccordionButton = function() {
|
||||
Util.waitUntilElementIsVisible(tasksAccordionButton);
|
||||
return tasksAccordionButton.click();
|
||||
};
|
||||
|
||||
this.checkTasksAccordionExtended = function() {
|
||||
Util.waitUntilElementIsVisible(tasksAccordionExpanded);
|
||||
return tasksAccordionExpanded;
|
||||
};
|
||||
|
||||
this.checkTasksAccordionClosed = function() {
|
||||
Util.waitUntilElementIsNotVisible(tasksAccordionExpanded);
|
||||
return tasksAccordionExpanded;
|
||||
};
|
||||
|
||||
this.clickStartTaskButton = function() {
|
||||
Util.waitUntilElementIsVisible(startTaskButton);
|
||||
startTaskButton.click();
|
||||
};
|
||||
|
||||
this.clickNewTaskButton = function() {
|
||||
Util.waitUntilElementIsVisible(newTaskButton);
|
||||
newTaskButton.click();
|
||||
};
|
||||
|
||||
this.checkActiveFilterActive = function() {
|
||||
Util.waitUntilElementIsVisible(activeFilter);
|
||||
return activeFilter.getText();
|
||||
}
|
||||
|
||||
this.checkEmptyTaskList = function() {
|
||||
Util.waitUntilElementIsVisible(emptyTaskList);
|
||||
return emptyTaskList.getText();
|
||||
};
|
||||
|
||||
this.checkEmptyTaskDetails = function() {
|
||||
Util.waitUntilElementIsVisible(emptyTaskDetails);
|
||||
return emptyTaskDetails.getText();
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = TaskFiltersPage;
|
@ -21,8 +21,21 @@ var TasksListPage = function () {
|
||||
|
||||
var taskList = element(by.css("adf-tasklist"));
|
||||
var tableBody = element.all(by.css("adf-datatable div[class='adf-datatable-body']")).first();
|
||||
var sortByName = element(by.css('div[data-automation-id="auto_id_name"]'));
|
||||
var firstTaskOnTaskList = element.all(by.css('div[class="adf-datatable-body"] span')).first();
|
||||
var spinner = element(by.css('mat-progress-spinner'));
|
||||
|
||||
this.clickSortByName = function () {
|
||||
Util.waitUntilElementIsVisible(sortByName);
|
||||
return sortByName.click();
|
||||
};
|
||||
|
||||
this.checkHighlightedTaskInTasksList = function(taskName) {
|
||||
var row = by.cssContainingText('div[class="adf-datatable-row is-selected ng-star-inserted"] span', taskName);
|
||||
Util.waitUntilElementIsVisible(taskList.element(row));
|
||||
return this;
|
||||
};
|
||||
|
||||
this.checkTaskIsDisplayedInTasksList = function(taskName) {
|
||||
var row = by.cssContainingText("span", taskName);
|
||||
Util.waitUntilElementIsVisible(taskList.element(row));
|
||||
@ -51,12 +64,14 @@ var TasksListPage = function () {
|
||||
Util.waitUntilElementIsVisible(tableBody);
|
||||
};
|
||||
|
||||
this.firstTaskOnTaskList = function (){
|
||||
Util.waitUntilElementIsVisible(firstTaskOnTaskList);
|
||||
return firstTaskOnTaskList.getText();
|
||||
};
|
||||
|
||||
this.checkSpinnerIsDisplayed = function () {
|
||||
Util.waitUntilElementIsPresent(spinner);
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
module.exports = TasksListPage;
|
||||
|
||||
|
||||
|
@ -25,7 +25,7 @@ var TasksListPage = require('./tasksListPage');
|
||||
|
||||
var TasksPage = function () {
|
||||
|
||||
var createButton = element(by.css("button[data-automation-id='create-button']"));
|
||||
var createButton = element(by.css("button[data-automation-id='create-button'"));
|
||||
var newTaskButton = element(by.css("button[data-automation-id='btn-start-task']"));
|
||||
var addChecklistButton = element(by.css("button[class*='adf-add-to-checklist-button']"));
|
||||
var rowByRowName = by.xpath("ancestor::mat-chip");
|
||||
@ -45,6 +45,12 @@ var TasksPage = function () {
|
||||
return new StartTaskDialog();
|
||||
};
|
||||
|
||||
this.clickOnNewTaskButton = function() {
|
||||
Util.waitUntilElementIsClickable(newTaskButton);
|
||||
newTaskButton.click();
|
||||
return this;
|
||||
};
|
||||
|
||||
this.createButtonIsDisplayed = function() {
|
||||
Util.waitUntilElementIsVisible(createButton);
|
||||
return this;
|
||||
|
178
e2e/task_filters_component.e2e.ts
Normal file
178
e2e/task_filters_component.e2e.ts
Normal file
@ -0,0 +1,178 @@
|
||||
/*!
|
||||
* @license
|
||||
* Copyright 2016 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 TestConfig = require('./test.config');
|
||||
import resources = require('./util/resources');
|
||||
import LoginPage = require('./pages/adf/loginPage');
|
||||
import NavigationBarPage = require('./pages/adf/navigationBarPage');
|
||||
import ProcessServicesPage = require('./pages/adf/process_services/processServicesPage');
|
||||
import TasksPage = require('./pages/adf/process_services/tasksPage');
|
||||
import TasksListPage = require('./pages/adf/process_services/tasksListPage');
|
||||
import TaskFiltersPage = require('./pages/adf/process_services/taskFiltersPage');
|
||||
import TaskDetailsPage = require('./pages/adf/process_services/taskDetailsPage');
|
||||
|
||||
import AlfrescoApi = require('alfresco-js-api-node');
|
||||
import { AppsActions } from './actions/APS/apps.actions';
|
||||
import { UsersActions } from './actions/users.actions';
|
||||
|
||||
describe('Task Filters Test', () => {
|
||||
|
||||
let loginPage = new LoginPage();
|
||||
let navigationBarPage = new NavigationBarPage();
|
||||
let processServicesPage = new ProcessServicesPage();
|
||||
let tasksPage = new TasksPage();
|
||||
let tasksListPage = new TasksListPage();
|
||||
let taskFiltersPage = new TaskFiltersPage();
|
||||
let taskDetailsPage = new TaskDetailsPage();
|
||||
|
||||
let app = resources.Files.APP_WITH_DATE_FIELD_FORM;
|
||||
|
||||
beforeAll(async (done) => {
|
||||
let apps = new AppsActions();
|
||||
let users = new UsersActions();
|
||||
|
||||
this.alfrescoJsApi = new AlfrescoApi({
|
||||
provider: 'BPM',
|
||||
hostBpm: TestConfig.adf.url
|
||||
});
|
||||
|
||||
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
|
||||
|
||||
let user = await users.createTenantAndUser(this.alfrescoJsApi);
|
||||
|
||||
await this.alfrescoJsApi.login(user.email, user.password);
|
||||
|
||||
await apps.importPublishDeployApp(this.alfrescoJsApi, app.file_location);
|
||||
|
||||
await loginPage.loginToProcessServicesUsingUserModel(user);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
beforeEach(async (done) => {
|
||||
navigationBarPage.clickProcessServicesButton();
|
||||
processServicesPage.checkApsContainer();
|
||||
processServicesPage.goToApp(app.title);
|
||||
|
||||
done();
|
||||
});
|
||||
|
||||
it('[C260330] Should display task list when app is in task section', () => {
|
||||
tasksPage.clickOnCreateButton();
|
||||
taskFiltersPage.clickNewTaskButton();
|
||||
tasksPage.createNewTask().addName('Test').clickStartButton();
|
||||
taskFiltersPage.clickMyTaskTaskItem();
|
||||
tasksListPage.checkTaskIsDisplayedInTasksList('Test');
|
||||
expect(taskFiltersPage.checkActiveFilterActive()).toBe('My Tasks');
|
||||
expect(taskDetailsPage.checkTaskDetailsDisplayed()).toBeDefined();
|
||||
|
||||
taskFiltersPage.clickQueuedTaskItem();
|
||||
expect(taskFiltersPage.checkActiveFilterActive()).toBe('Queued Tasks');
|
||||
tasksListPage.checkTaskIsNotDisplayedInTasksList('Test');
|
||||
expect(taskDetailsPage.checkTaskDetailsEmpty()).toBeDefined();
|
||||
|
||||
taskFiltersPage.clickInvolvedTaskItem();
|
||||
expect(taskFiltersPage.checkActiveFilterActive()).toBe('Involved Tasks');
|
||||
tasksListPage.checkTaskIsDisplayedInTasksList('Test');
|
||||
expect( taskDetailsPage.checkTaskDetailsDisplayed()).toBeDefined();
|
||||
|
||||
taskFiltersPage.clickCompletedTaskItem();
|
||||
expect(taskFiltersPage.checkActiveFilterActive()).toBe('Completed Tasks');
|
||||
tasksListPage.checkTaskIsNotDisplayedInTasksList('Test');
|
||||
expect(taskDetailsPage.checkTaskDetailsEmpty()).toBeDefined();
|
||||
});
|
||||
|
||||
it('[C260348] Should display task list when app is in task section', () => {
|
||||
expect(taskFiltersPage.checkMyTasksItem()).toBeDefined();
|
||||
expect(taskFiltersPage.checkQueuedTaskItem()).toBeDefined();
|
||||
expect(taskFiltersPage.checkInvolvedTaskItem()).toBeDefined();
|
||||
expect(taskFiltersPage.checkCompletedTaskItem()).toBeDefined();
|
||||
expect(taskFiltersPage.checkTasksAccordionExtended()).toBeDefined();
|
||||
|
||||
taskFiltersPage.clickTasksAccordionButton();
|
||||
expect(taskFiltersPage.checkTasksAccordionClosed()).toBeDefined();
|
||||
|
||||
taskFiltersPage.clickTasksAccordionButton();
|
||||
expect(taskFiltersPage.checkMyTasksItem()).toBeDefined();
|
||||
expect(taskFiltersPage.checkQueuedTaskItem()).toBeDefined();
|
||||
expect(taskFiltersPage.checkInvolvedTaskItem()).toBeDefined();
|
||||
expect(taskFiltersPage.checkCompletedTaskItem()).toBeDefined();
|
||||
|
||||
tasksPage.clickOnCreateButton();
|
||||
taskFiltersPage.clickNewTaskButton();
|
||||
tasksPage.createNewTask().addName('Test').clickStartButton();
|
||||
taskFiltersPage.clickMyTaskTaskItem();
|
||||
tasksListPage.checkTaskIsDisplayedInTasksList('Test');
|
||||
expect(taskFiltersPage.checkActiveFilterActive()).toBe('My Tasks');
|
||||
expect(taskDetailsPage.checkTaskDetailsDisplayed()).toBeDefined();
|
||||
|
||||
taskFiltersPage.clickQueuedTaskItem();
|
||||
expect(taskFiltersPage.checkActiveFilterActive()).toBe('Queued Tasks');
|
||||
expect(taskFiltersPage.checkEmptyTaskList()).toBe('No Tasks Found');
|
||||
expect(taskFiltersPage.checkEmptyTaskDetails()).toBe('No task details found');
|
||||
|
||||
taskFiltersPage.clickInvolvedTaskItem();
|
||||
expect(taskFiltersPage.checkActiveFilterActive()).toBe('Involved Tasks');
|
||||
tasksListPage.checkTaskIsDisplayedInTasksList('Test');
|
||||
expect(taskDetailsPage.checkTaskDetailsDisplayed()).toBeDefined();
|
||||
|
||||
taskFiltersPage.clickCompletedTaskItem();
|
||||
expect(taskFiltersPage.checkActiveFilterActive()).toBe('Completed Tasks');
|
||||
expect(taskFiltersPage.checkEmptyTaskList()).toBe('No Tasks Found');
|
||||
expect(taskFiltersPage.checkEmptyTaskDetails()).toBe('No task details found');
|
||||
});
|
||||
|
||||
it('[C260349] Should display task list when app is in task section', () => {
|
||||
tasksPage.clickOnCreateButton();
|
||||
taskFiltersPage.clickNewTaskButton();
|
||||
tasksPage.createNewTask().addName('Test1').clickStartButton();
|
||||
taskDetailsPage.clickCompleteTask();
|
||||
tasksPage.clickOnCreateButton();
|
||||
taskFiltersPage.clickNewTaskButton();
|
||||
tasksPage.createNewTask().addName('Test2').clickStartButton();
|
||||
taskDetailsPage.clickCompleteTask();
|
||||
tasksPage.clickOnCreateButton();
|
||||
taskFiltersPage.clickNewTaskButton();
|
||||
tasksPage.createNewTask().addName('Test3').clickStartButton();
|
||||
|
||||
tasksPage.clickOnCreateButton();
|
||||
taskFiltersPage.clickNewTaskButton();
|
||||
tasksPage.createNewTask().addName('Test4').clickStartButton();
|
||||
tasksListPage.checkTaskIsDisplayedInTasksList('Test4');
|
||||
tasksListPage.checkHighlightedTaskInTasksList('Test4');
|
||||
tasksListPage.checkTaskIsDisplayedInTasksList('Test3');
|
||||
taskDetailsPage.checkTaskDetailsDisplayed();
|
||||
|
||||
tasksListPage.clickSortByName();
|
||||
expect(tasksListPage.firstTaskOnTaskList()).toBe('Test3');
|
||||
tasksListPage.clickSortByName();
|
||||
expect(tasksListPage.firstTaskOnTaskList()).toBe('Test4');
|
||||
|
||||
taskFiltersPage.clickCompletedTaskItem();
|
||||
tasksListPage.checkTaskIsDisplayedInTasksList('Test1');
|
||||
tasksListPage.checkTaskIsDisplayedInTasksList('Test2');
|
||||
expect(tasksListPage.firstTaskOnTaskList()).toBe('Test2');
|
||||
|
||||
tasksListPage.clickSortByName();
|
||||
expect(tasksListPage.firstTaskOnTaskList()).toBe('Test1');
|
||||
|
||||
taskFiltersPage.clickInvolvedTaskItem();
|
||||
tasksListPage.checkTaskIsDisplayedInTasksList('Test3');
|
||||
tasksListPage.checkTaskIsDisplayedInTasksList('Test4');
|
||||
});
|
||||
|
||||
});
|
@ -7,7 +7,7 @@
|
||||
[hideToggle]="!hasAccordionIcon">
|
||||
<mat-expansion-panel-header>
|
||||
<mat-panel-title>
|
||||
<div class="adf-panel-heading" [ngClass]="{'adf-panel-heading-selected': isSelected}">
|
||||
<div class="adf-panel-heading" data-automation-id="adf-panel-heading" [ngClass]="{'adf-panel-heading-selected': isSelected}">
|
||||
<div id="heading-icon" *ngIf="hasHeadingIcon()" class="adf-panel-heading-icon">
|
||||
<mat-icon class="material-icons"
|
||||
[matTooltip]="headingIconTooltip"
|
||||
|
@ -1,4 +1,4 @@
|
||||
<div *ngIf="!taskDetails">
|
||||
<div *ngIf="!taskDetails" data-automation-id="adf-tasks-details--empty">
|
||||
<ng-template *ngIf="noTaskDetailsTemplateComponent" ngFor [ngForOf]="[data]"
|
||||
[ngForTemplate]="noTaskDetailsTemplateComponent">
|
||||
{{ 'ADF_TASK_LIST.DETAILS.MESSAGES.NONE' | translate }}
|
||||
|
Loading…
x
Reference in New Issue
Block a user