2016-06-23 12:47:54 -04:00
|
|
|
/**
|
|
|
|
* @license
|
|
|
|
* Copyright Google Inc. All Rights Reserved.
|
|
|
|
*
|
|
|
|
* Use of this source code is governed by an MIT-style license that can be
|
|
|
|
* found in the LICENSE file at https://angular.io/license
|
|
|
|
*/
|
2016-11-10 21:13:11 -05:00
|
|
|
|
2016-11-23 16:49:57 -05:00
|
|
|
/* tslint:disable:no-console */
|
2016-11-10 21:13:11 -05:00
|
|
|
import {browser} from 'protractor';
|
|
|
|
|
2016-08-30 12:29:39 -04:00
|
|
|
const yargs = require('yargs');
|
2015-08-06 12:52:33 -04:00
|
|
|
import * as webdriver from 'selenium-webdriver';
|
2015-01-09 21:00:04 -05:00
|
|
|
|
2016-08-30 12:29:39 -04:00
|
|
|
let cmdArgs: {'bundles': boolean};
|
2015-05-20 20:19:46 -04:00
|
|
|
|
2016-06-23 19:14:31 -04:00
|
|
|
declare var expect: any;
|
2015-02-11 13:13:49 -05:00
|
|
|
|
2016-08-30 12:29:39 -04:00
|
|
|
export function readCommandLine(extraOptions?: {[key: string]: any}) {
|
|
|
|
const options: {[key: string]: any} = {
|
|
|
|
'bundles': {describe: 'Whether to use the angular bundles or not.', default: false}
|
|
|
|
};
|
2018-07-06 18:42:07 -04:00
|
|
|
if (extraOptions) {
|
|
|
|
for (const key in extraOptions) {
|
|
|
|
options[key] = extraOptions[key];
|
|
|
|
}
|
2016-08-30 12:29:39 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
cmdArgs = yargs.usage('Angular e2e test options.').options(options).help('ng-help').wrap(40).argv;
|
|
|
|
return cmdArgs;
|
|
|
|
}
|
|
|
|
|
|
|
|
export function openBrowser(config: {
|
|
|
|
url: string,
|
|
|
|
params?: {name: string, value: any}[],
|
|
|
|
ignoreBrowserSynchronization?: boolean
|
|
|
|
}) {
|
|
|
|
if (config.ignoreBrowserSynchronization) {
|
|
|
|
browser.ignoreSynchronization = true;
|
|
|
|
}
|
2016-11-12 08:08:58 -05:00
|
|
|
let params = config.params || [];
|
2016-09-30 12:09:31 -04:00
|
|
|
if (!params.some((param) => param.name === 'bundles')) {
|
|
|
|
params = params.concat([{name: 'bundles', value: cmdArgs.bundles}]);
|
|
|
|
}
|
2016-08-30 12:29:39 -04:00
|
|
|
|
2016-11-12 08:08:58 -05:00
|
|
|
const urlParams: string[] = [];
|
2016-08-30 12:29:39 -04:00
|
|
|
params.forEach((param) => { urlParams.push(param.name + '=' + param.value); });
|
2016-11-12 08:08:58 -05:00
|
|
|
const url = encodeURI(config.url + '?' + urlParams.join('&'));
|
2016-08-30 12:29:39 -04:00
|
|
|
browser.get(url);
|
2016-08-30 17:17:37 -04:00
|
|
|
if (config.ignoreBrowserSynchronization) {
|
2017-01-20 16:10:57 -05:00
|
|
|
browser.sleep(2000);
|
2016-08-30 17:17:37 -04:00
|
|
|
}
|
2016-08-30 12:29:39 -04:00
|
|
|
}
|
|
|
|
|
2016-06-27 15:27:23 -04:00
|
|
|
/**
|
|
|
|
* @experimental This API will be moved to Protractor.
|
|
|
|
*/
|
2015-05-20 20:19:46 -04:00
|
|
|
export function verifyNoBrowserErrors() {
|
2015-02-11 13:13:49 -05:00
|
|
|
// TODO(tbosch): Bug in ChromeDriver: Need to execute at least one command
|
|
|
|
// so that the browser logs can be read out!
|
|
|
|
browser.executeScript('1+1');
|
2016-06-23 19:14:31 -04:00
|
|
|
browser.manage().logs().get('browser').then(function(browserLog: any) {
|
2016-11-12 08:08:58 -05:00
|
|
|
const filteredLog = browserLog.filter(function(logEntry: any) {
|
2015-03-02 18:48:18 -05:00
|
|
|
if (logEntry.level.value >= webdriver.logging.Level.INFO.value) {
|
2016-11-23 16:49:57 -05:00
|
|
|
console.log('>> ' + logEntry.message);
|
2015-03-02 18:48:18 -05:00
|
|
|
}
|
2015-02-11 13:13:49 -05:00
|
|
|
return logEntry.level.value > webdriver.logging.Level.WARNING.value;
|
|
|
|
});
|
2016-02-19 14:49:31 -05:00
|
|
|
expect(filteredLog).toEqual([]);
|
2015-02-11 13:13:49 -05:00
|
|
|
});
|
|
|
|
}
|