[ADF-3544] Automated test for Dynamic DataTable (#3811)

* [ADF-3544] Automated test for Dynamic DataTable

* Adding a new line

* Adding a line at the end of the file
This commit is contained in:
jdosti 2018-09-21 11:43:29 +01:00 committed by Eugenio Romano
parent 897a557afa
commit a57c41f528
3 changed files with 198 additions and 0 deletions

View File

@ -16,6 +16,8 @@
*/
var FormFields = require('../formFields');
var Util = require('../../../../util/util');
var DynamicTable = function () {
@ -23,6 +25,16 @@ var DynamicTable = function () {
var labelLocator = by.css("dynamic-table-widget div div");
var columnNameLocator = by.css("table[id*='dynamic-table'] th");
var addButton = element(by.id("label-add-row"));
var columnDateTime = element(by.id("columnDateTime"));
var columnDate = element(by.id("columnDate"));
var calendarHeader = element(by.css("div[class='mat-datetimepicker-calendar-header-date-time']"));
var calendarContent = element(by.css("div[class='mat-datetimepicker-calendar-content']"));
var saveButton = element(by.cssContainingText('button span', 'Save'));
var errorMessage = element(by.css('div[class="adf-error-text"]'));
var dateWidget = element(by.css('button[aria-label="Open calendar"]'));
var calendarNumber = element.all(by.css('td div'));
var tableRow = element.all(by.css('tbody tr'));
this.getFieldLabel = function (fieldId) {
return formFields.getFieldLabel(fieldId, labelLocator);
@ -32,6 +44,60 @@ var DynamicTable = function () {
return formFields.getFieldText(fieldId, columnNameLocator);
};
this.clickAddButton = function () {
Util.waitUntilElementIsVisible(addButton);
return addButton.click();
};
this.clickColumnDateTime = function () {
Util.waitUntilElementIsVisible(columnDateTime);
columnDateTime.click();
Util.waitUntilElementIsVisible(calendarHeader);
Util.waitUntilElementIsVisible(calendarContent);
browser.actions().sendKeys(protractor.Key.ESCAPE).perform();
};
this.addRandomStringOnDateTime = function (randomText) {
Util.waitUntilElementIsVisible(columnDateTime);
columnDateTime.click();
browser.actions().sendKeys(protractor.Key.ESCAPE).perform();
columnDateTime.sendKeys(randomText);
columnDateTime.sendKeys(protractor.Key.ENTER);
return columnDateTime.getAttribute('value');
};
this.addRandomStringOnDate = function(randomText) {
Util.waitUntilElementIsVisible(columnDate);
columnDate.click();
return columnDate.sendKeys(randomText);
};
this.clickSaveButton = function () {
Util.waitUntilElementIsVisible(saveButton);
return saveButton.click();
};
this.checkErrorMessage = function () {
Util.waitUntilElementIsVisible(errorMessage);
return errorMessage.getText();
};
this.clickDateWidget = function () {
Util.waitUntilElementIsVisible(dateWidget);
return dateWidget.click();
};
this.getDateCalendarNumber = function (date) {
return calendarNumber.get(date).click();
};
this.getTableRow = function (rowNumber) {
return Util.waitUntilElementIsVisible(tableRow.get(rowNumber));
};
this.waitForCalendarToDisappear = function () {
Util.waitUntilElementIsNotVisible(calendarNumber);
};
};
module.exports = DynamicTable;

View File

@ -0,0 +1,125 @@
/*!
* @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 LoginPage = require('../pages/adf/loginPage');
import ProcessServicesPage = require('../pages/adf/process_services/processServicesPage');
import ProcessFiltersPage = require('../pages/adf/process_services/processFiltersPage.js');
import AppNavigationBarPage = require('../pages/adf/process_services/appNavigationBarPage');
import DynamicTable = require('../pages/adf/process_services/widgets/DynamicTable');
import TestConfig = require('../test.config');
import resources = require('../util/resources');
import AlfrescoApi = require('alfresco-js-api-node');
import { AppsActions } from '../actions/APS/apps.actions';
import { UsersActions } from '../actions/users.actions';
describe('Dynamic Table - Date Picker', () => {
let loginPage = new LoginPage();
let processServicesPage = new ProcessServicesPage();
let processFiltersPage = new ProcessFiltersPage();
let appNavigationBarPage = new AppNavigationBarPage();
let dynamicTable = new DynamicTable();
let app = resources.Files.DYNAMIC_TABLE_APP;
let user, tenantId, appId;
let randomText = {
date: 'HELLO WORLD',
dateTime: 'Test',
error: `Field 'columnDate' is required.`
};
let datePosition = 15;
let rowPosition = 0;
beforeAll(async(done) => {
this.alfrescoJsApi = new AlfrescoApi({
provider: 'BPM',
hostBpm: TestConfig.adf.url
});
let apps = new AppsActions();
let users = new UsersActions();
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
user = await users.createTenantAndUser(this.alfrescoJsApi);
tenantId = user.tenantId;
await this.alfrescoJsApi.login(user.email, user.password);
let importedApp = await apps.importPublishDeployApp(this.alfrescoJsApi, app.file_location);
appId = importedApp.id;
await loginPage.loginToProcessServicesUsingUserModel(user);
done();
});
afterAll(async(done) => {
await this.alfrescoJsApi.login(user.email, user.password);
await this.alfrescoJsApi.activiti.modelsApi.deleteModel(appId);
await this.alfrescoJsApi.login(TestConfig.adf.adminEmail, TestConfig.adf.adminPassword);
await this.alfrescoJsApi.activiti.adminTenantsApi.deleteTenant(tenantId);
done();
});
it('[C286277] Should have a datepicker and a mask for DateTime field', () => {
processServicesPage.goToProcessServices().goToTaskApp().clickProcessButton();
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
dynamicTable.clickAddButton();
dynamicTable.clickColumnDateTime();
expect(dynamicTable.addRandomStringOnDateTime(randomText.dateTime)).toBe('');
});
it('[C286279] Should be able to save row with Date field', () => {
loginPage.loginToProcessServicesUsingUserModel(user);
processServicesPage.goToProcessServices().goToTaskApp().clickProcessButton();
appNavigationBarPage.clickProcessButton();
processFiltersPage.clickCreateProcessButton();
processFiltersPage.clickNewProcessDropdown();
dynamicTable.clickAddButton();
dynamicTable.addRandomStringOnDate(randomText.date);
dynamicTable.clickSaveButton();
expect(dynamicTable.checkErrorMessage()).toBe(randomText.error);
dynamicTable.clickDateWidget();
dynamicTable.getDateCalendarNumber(datePosition);
dynamicTable.waitForCalendarToDisappear();
dynamicTable.clickSaveButton();
dynamicTable.getTableRow(rowPosition);
});
});

View File

@ -95,6 +95,13 @@ exports.Files = {
}
},
DYNAMIC_TABLE_APP: {
file_location: "/resources/apps/Dynamic Table App.zip",
title: "Dynamic Table App",
formName: "Dynamic Table App",
process_se_name: "DynamicTableProcess"
},
ADF_DOCUMENTS: {
PDF: {
file_location: "/resources/adf/allFileTypes/a_file_supported.pdf",