Eugenio Romano 3d86044594 Add e2e test in ADF main repo (#3534)
* move e2e to ADF main repo

* lint e2e test

* enable first set of tests

* enable test

* firs test js-api integrated

* try change name protractor demo shell file

* remove fdescribe

* Update .travis.yml

* exclude failing test and rewrite analytics component with JS-API

* remove fdescribe

* move first part of tests to js-api

* refactor test alfresco-js-api

* replace js-api step 3

* remove adf prefix

* remove unused code

* remove unused part 2

* add option in e2e test for single test and browser

* exclude temp failing test

* refactoring test step 1

* refactoring test step 2

* refactoring test step 3

* refactoring test step 4

* refactoring test step 5

* run against localhost and proxy options

* fix command

* improve configuration

* improve configuration

* use dev configuratio

* fix defering

* comment out not working remotely test

* fix promise login page e2e

* remove console log

* change test

* revert

* improve utils

* improve task list test
util add also numbers in generation of the email

* remove part of the multi selector

* reinsert trashcan test

* uncomment document list test

* try increase delay in search sorting

* improve document list selector

* execute different util methods

* Upload error screenshot

* make oncomplete async

* add z-finish screenshot workaround

* option save

* remove fit
2018-08-14 15:42:14 +01:00

132 lines
4.5 KiB
JavaScript

/*!
* @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 TestConfig = require('../../test.config');
var Util = require('../../util/util');
var SettingsPage = function () {
var settingsURL = TestConfig.adf.url + TestConfig.adf.port + "/settings";
var providerDropdown = element(by.css("mat-select[aria-label='Provider'] div[class='mat-select-arrow-wrapper']"));
var ecmAndBpm = {
option: element(by.xpath("//SPAN[@class='mat-option-text'][contains(text(),'ALL')]")),
text: "ALL"
};
var bpm = {
option: element(by.xpath("//SPAN[@class='mat-option-text'][contains(text(),'BPM') and not (contains(text(),'and'))]")),
text: "BPM"
};
var ecm = {
option: element(by.xpath("//SPAN[@class='mat-option-text'][contains(text(),'ECM') and not (contains(text(),'and'))]")),
text: "ECM"
};
var oauth = {
option: element(by.xpath("//SPAN[@class='mat-option-text'][contains(text(),'OAUTH')]")),
text: "OAUTH"
};
var selectedOption = element.all(by.css("span[class*='ng-star-inserted']")).first();
var ecmText = element(by.css("input[data-automation-id*='ecmHost']"));
var bpmText = element(by.css("input[data-automation-id*='bpmHost']"));
var authHostText = element(by.css("input[id='oauthHost']"));
var silentLoginToggle = element(by.css("mat-slide-toggle[name='silentLogin'] div[class='mat-slide-toggle-thumb']"));
var silentLoginEnabled = element(by.css("mat-slide-toggle[class*='mat-checked'][name='silentLogin'] div[class='mat-slide-toggle-thumb']"));
var backButton = element(by.cssContainingText("span[class='mat-button-wrapper']", "Back"));
var applyButton = element(by.css("button[data-automation-id*='host-button']"));
this.goToSettingsPage = function () {
browser.driver.get(settingsURL);
Util.waitUntilElementIsVisible(providerDropdown);
return this;
};
/**
* Selects provider
* @method setProvider
* @param {String} option, {String} selected
*/
this.setProvider = function (option, selected) {
Util.waitUntilElementIsVisible(providerDropdown);
providerDropdown.click();
Util.waitUntilElementIsVisible(option);
option.click();
return expect(selectedOption.getText()).toEqual(selected);
};
/**
* Sets provider as ECM and BPM
* @method setProviderEcmBpm
*/
this.setProviderEcmBpm = function () {
this.goToSettingsPage();
this.setProvider(ecmAndBpm.option, ecmAndBpm.text);
Util.waitUntilElementIsVisible(bpmText);
Util.waitUntilElementIsVisible(ecmText);
this.clickApply();
return this;
};
/**
* Sets provider as BPM
* @method setProviderBpm
*/
this.setProviderBpm = function () {
this.goToSettingsPage();
this.setProvider(bpm.option, bpm.text);
Util.waitUntilElementIsVisible(bpmText);
expect(ecmText.isPresent()).toBe(false);
this.clickApply();
return this;
};
/**
* Sets provider as ECM
* @method setProviderEcm
*/
this.setProviderEcm = function () {
this.goToSettingsPage();
this.setProvider(ecm.option, ecm.text);
Util.waitUntilElementIsVisible(ecmText);
expect(bpmText.isPresent()).toBe(false);
this.clickApply();
return this;
};
/**
* Sets provider as OAUTH
* @method setProviderOauth
*/
this.setProviderOauth = function () {
this.goToSettingsPage();
this.setProvider(oauth.option, oauth.text);
Util.waitUntilElementIsVisible(bpmText);
Util.waitUntilElementIsVisible(ecmText);
expect(authHostText.isPresent()).toBe(true);
this.clickApply();
return this;
};
/**
* Clicks Apply button
* @method clickApply
*/
this.clickApply = function () {
Util.waitUntilElementIsVisible(applyButton);
applyButton.click();
};
};
module.exports = SettingsPage;