build(examples): upgrade to protractor 4.0.9 (#12803)

closes #12798
This commit is contained in:
Victor Berchet 2016-11-10 18:13:11 -08:00 committed by GitHub
parent fcb4e66493
commit 1bd858fb43
53 changed files with 254 additions and 279 deletions

View File

@ -6,6 +6,8 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {$, browser} from 'protractor';
var benchpress = require('../../index.js'); var benchpress = require('../../index.js');
var runner = new benchpress.Runner([ var runner = new benchpress.Runner([
// use protractor as Webdriver client // use protractor as Webdriver client

View File

@ -6,6 +6,8 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {browser} from 'protractor';
var assertEventsContainsName = function(events: any[], eventName: string) { var assertEventsContainsName = function(events: any[], eventName: string) {
var found = false; var found = false;
for (var i = 0; i < events.length; ++i) { for (var i = 0; i < events.length; ++i) {

View File

@ -6,10 +6,11 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {$, ExpectedConditions, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../_common/e2e_util';
function waitForElement(selector: string) { function waitForElement(selector: string) {
var EC = (<any>protractor).ExpectedConditions; var EC = ExpectedConditions;
// Waits for the element with id 'abc' to be present on the dom. // Waits for the element with id 'abc' to be present on the dom.
browser.wait(EC.presenceOf($(selector)), 20000); browser.wait(EC.presenceOf($(selector)), 20000);
} }

View File

@ -6,10 +6,11 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {$, ExpectedConditions, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../../_common/e2e_util';
function waitForElement(selector: string) { function waitForElement(selector: string) {
var EC = (<any>protractor).ExpectedConditions; var EC = ExpectedConditions;
// Waits for the element with id 'abc' to be present on the dom. // Waits for the element with id 'abc' to be present on the dom.
browser.wait(EC.presenceOf($(selector)), 20000); browser.wait(EC.presenceOf($(selector)), 20000);
} }

View File

@ -6,12 +6,13 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../../_common/e2e_util';
describe('contentChild example', () => { describe('contentChild example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let button: protractor.ElementFinder; let button: ElementFinder;
let result: protractor.ElementFinder; let result: ElementFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/core/di/ts/contentChild/index.html'); browser.get('/core/di/ts/contentChild/index.html');

View File

@ -6,12 +6,13 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../../_common/e2e_util';
describe('contentChildren example', () => { describe('contentChildren example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let button: protractor.ElementFinder; let button: ElementFinder;
let result: protractor.ElementFinder; let result: ElementFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/core/di/ts/contentChildren/index.html'); browser.get('/core/di/ts/contentChildren/index.html');

View File

@ -6,12 +6,13 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../../_common/e2e_util';
describe('viewChild example', () => { describe('viewChild example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let button: protractor.ElementFinder; let button: ElementFinder;
let result: protractor.ElementFinder; let result: ElementFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/core/di/ts/viewChild/index.html'); browser.get('/core/di/ts/viewChild/index.html');

View File

@ -6,12 +6,14 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../../_common/e2e_util';
describe('viewChildren example', () => { describe('viewChildren example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let button: protractor.ElementFinder; let button: ElementFinder;
let result: protractor.ElementFinder; let result: ElementFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/core/di/ts/viewChildren/index.html'); browser.get('/core/di/ts/viewChildren/index.html');

View File

@ -6,12 +6,13 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementArrayFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../_common/e2e_util';
describe('formBuilder example', () => { describe('formBuilder example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let inputs: protractor.ElementArrayFinder; let inputs: ElementArrayFinder;
let paragraphs: protractor.ElementArrayFinder; let paragraphs: ElementArrayFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/forms/ts/formBuilder/index.html'); browser.get('/forms/ts/formBuilder/index.html');

View File

@ -6,12 +6,13 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementArrayFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../_common/e2e_util';
describe('nestedFormArray example', () => { describe('nestedFormArray example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let inputs: protractor.ElementArrayFinder; let inputs: ElementArrayFinder;
let buttons: protractor.ElementArrayFinder; let buttons: ElementArrayFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/forms/ts/nestedFormArray/index.html'); browser.get('/forms/ts/nestedFormArray/index.html');

View File

@ -6,13 +6,14 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../_common/e2e_util';
describe('nestedFormGroup example', () => { describe('nestedFormGroup example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let firstInput: protractor.ElementFinder; let firstInput: ElementFinder;
let lastInput: protractor.ElementFinder; let lastInput: ElementFinder;
let button: protractor.ElementFinder; let button: ElementFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/forms/ts/nestedFormGroup/index.html'); browser.get('/forms/ts/nestedFormGroup/index.html');

View File

@ -6,12 +6,13 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementArrayFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../_common/e2e_util';
describe('ngModelGroup example', () => { describe('ngModelGroup example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let inputs: protractor.ElementArrayFinder; let inputs: ElementArrayFinder;
let buttons: protractor.ElementArrayFinder; let buttons: ElementArrayFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/forms/ts/ngModelGroup/index.html'); browser.get('/forms/ts/ngModelGroup/index.html');

View File

@ -6,12 +6,13 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementArrayFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../_common/e2e_util';
describe('radioButtons example', () => { describe('radioButtons example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let inputs: protractor.ElementArrayFinder; let inputs: ElementArrayFinder;
let paragraphs: protractor.ElementArrayFinder; let paragraphs: ElementArrayFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/forms/ts/radioButtons/index.html'); browser.get('/forms/ts/radioButtons/index.html');

View File

@ -6,11 +6,12 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementArrayFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../_common/e2e_util';
describe('radioButtons example', () => { describe('radioButtons example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let inputs: protractor.ElementArrayFinder; let inputs: ElementArrayFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/forms/ts/reactiveRadioButtons/index.html'); browser.get('/forms/ts/reactiveRadioButtons/index.html');

View File

@ -6,13 +6,14 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementArrayFinder, ElementFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../_common/e2e_util';
describe('reactiveSelectControl example', () => { describe('reactiveSelectControl example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let select: protractor.ElementFinder; let select: ElementFinder;
let options: protractor.ElementArrayFinder; let options: ElementArrayFinder;
let p: protractor.ElementFinder; let p: ElementFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/forms/ts/reactiveSelectControl/index.html'); browser.get('/forms/ts/reactiveSelectControl/index.html');

View File

@ -6,13 +6,14 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementArrayFinder, ElementFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../_common/e2e_util';
describe('selectControl example', () => { describe('selectControl example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let select: protractor.ElementFinder; let select: ElementFinder;
let options: protractor.ElementArrayFinder; let options: ElementArrayFinder;
let p: protractor.ElementFinder; let p: ElementFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/forms/ts/selectControl/index.html'); browser.get('/forms/ts/selectControl/index.html');

View File

@ -6,12 +6,13 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementArrayFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../_common/e2e_util';
describe('simpleForm example', () => { describe('simpleForm example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let inputs: protractor.ElementArrayFinder; let inputs: ElementArrayFinder;
let paragraphs: protractor.ElementArrayFinder; let paragraphs: ElementArrayFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/forms/ts/simpleForm/index.html'); browser.get('/forms/ts/simpleForm/index.html');

View File

@ -6,15 +6,16 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../_common/e2e_util';
describe('simpleFormControl example', () => { describe('simpleFormControl example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
describe('index view', () => { describe('index view', () => {
let input: protractor.ElementFinder; let input: ElementFinder;
let valueP: protractor.ElementFinder; let valueP: ElementFinder;
let statusP: protractor.ElementFinder; let statusP: ElementFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/forms/ts/simpleFormControl/index.html'); browser.get('/forms/ts/simpleFormControl/index.html');

View File

@ -6,14 +6,15 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../_common/e2e_util';
describe('formControlName example', () => { describe('formControlName example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
describe('index view', () => { describe('index view', () => {
let firstInput: protractor.ElementFinder; let firstInput: ElementFinder;
let lastInput: protractor.ElementFinder; let lastInput: ElementFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/forms/ts/simpleFormGroup/index.html'); browser.get('/forms/ts/simpleFormGroup/index.html');

View File

@ -6,13 +6,14 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import {ElementArrayFinder, ElementFinder, browser, by, element} from 'protractor';
import {verifyNoBrowserErrors} from '../../../../_common/e2e_util'; import {verifyNoBrowserErrors} from '../../../../_common/e2e_util';
describe('simpleNgModel example', () => { describe('simpleNgModel example', () => {
afterEach(verifyNoBrowserErrors); afterEach(verifyNoBrowserErrors);
let input: protractor.ElementFinder; let input: ElementFinder;
let paragraphs: protractor.ElementArrayFinder; let paragraphs: ElementArrayFinder;
let button: protractor.ElementFinder; let button: ElementFinder;
beforeEach(() => { beforeEach(() => {
browser.get('/forms/ts/simpleNgModel/index.html'); browser.get('/forms/ts/simpleNgModel/index.html');

View File

@ -25,7 +25,6 @@
"testing/index.ts", "testing/index.ts",
"../../../node_modules/@types/hammerjs/index.d.ts", "../../../node_modules/@types/hammerjs/index.d.ts",
"../../../node_modules/@types/jasmine/index.d.ts", "../../../node_modules/@types/jasmine/index.d.ts",
"../../../node_modules/@types/protractor/index.d.ts",
"../../../node_modules/zone.js/dist/zone.js.d.ts" "../../../node_modules/zone.js/dist/zone.js.d.ts"
], ],
"angularCompilerOptions": { "angularCompilerOptions": {

View File

@ -7,6 +7,7 @@
*/ */
import {runBenchmark, verifyNoBrowserErrors} from 'e2e_util/perf_util'; import {runBenchmark, verifyNoBrowserErrors} from 'e2e_util/perf_util';
import {$} from 'protractor';
interface Worker { interface Worker {
id: string; id: string;

View File

@ -7,6 +7,7 @@
*/ */
import {openBrowser, verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {openBrowser, verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {$, By, element} from 'protractor';
describe('largeform benchmark spec', () => { describe('largeform benchmark spec', () => {

View File

@ -7,6 +7,7 @@
*/ */
import {runBenchmark, verifyNoBrowserErrors} from 'e2e_util/perf_util'; import {runBenchmark, verifyNoBrowserErrors} from 'e2e_util/perf_util';
import {$} from 'protractor';
interface Worker { interface Worker {
id: string; id: string;

View File

@ -7,6 +7,7 @@
*/ */
import {openBrowser, verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {openBrowser, verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {$} from 'protractor';
describe('largetable benchmark spec', () => { describe('largetable benchmark spec', () => {

View File

@ -7,6 +7,7 @@
*/ */
import {runBenchmark, verifyNoBrowserErrors} from 'e2e_util/perf_util'; import {runBenchmark, verifyNoBrowserErrors} from 'e2e_util/perf_util';
import {$} from 'protractor';
interface Worker { interface Worker {
id: string; id: string;

View File

@ -7,6 +7,7 @@
*/ */
import {openBrowser, verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {openBrowser, verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {$} from 'protractor';
describe('tree benchmark spec', () => { describe('tree benchmark spec', () => {

View File

@ -5,12 +5,14 @@
* Use of this source code is governed by an MIT-style license that can be * 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 * found in the LICENSE file at https://angular.io/license
*/ */
import {browser} from 'protractor';
const yargs = require('yargs'); const yargs = require('yargs');
import * as webdriver from 'selenium-webdriver'; import * as webdriver from 'selenium-webdriver';
let cmdArgs: {'bundles': boolean}; let cmdArgs: {'bundles': boolean};
declare var browser: any;
declare var expect: any; declare var expect: any;
export function readCommandLine(extraOptions?: {[key: string]: any}) { export function readCommandLine(extraOptions?: {[key: string]: any}) {

View File

@ -7,6 +7,8 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {$, browser} from 'protractor';
import {promise} from 'selenium-webdriver';
describe('async', () => { describe('async', () => {
var URL = 'all/playground/src/async/index.html'; var URL = 'all/playground/src/async/index.html';
@ -67,7 +69,7 @@ describe('async', () => {
}); });
it('should wait via frameworkStabilizer', () => { it('should wait via frameworkStabilizer', () => {
var whenAllStable = function() { var whenAllStable = (): promise.Promise<any> => {
return browser.executeAsyncScript('window.frameworkStabilizers[0](arguments[0]);'); return browser.executeAsyncScript('window.frameworkStabilizers[0](arguments[0]);');
}; };
@ -82,14 +84,14 @@ describe('async', () => {
timeout.$('.action').click(); timeout.$('.action').click();
whenAllStable().then((didWork) => { whenAllStable().then((didWork: any) => {
// whenAllStable should only be called when all the async actions // whenAllStable should only be called when all the async actions
// finished, so the count should be 10 at this point. // finished, so the count should be 10 at this point.
expect(timeout.$('.val').getText()).toEqual('10'); expect(timeout.$('.val').getText()).toEqual('10');
expect(didWork).toBeTruthy(); // Work was done. expect(didWork).toBeTruthy(); // Work was done.
}); });
whenAllStable().then((didWork) => { whenAllStable().then((didWork: any) => {
// whenAllStable should be called immediately since nothing is pending. // whenAllStable should be called immediately since nothing is pending.
expect(didWork).toBeFalsy(); // No work was done. expect(didWork).toBeFalsy(); // No work was done.
browser.ignoreSynchronization = false; browser.ignoreSynchronization = false;

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser} from 'protractor';
describe('hello world', function() { describe('hello world', function() {

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser} from 'protractor';
describe('http', function() { describe('http', function() {

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser} from 'protractor';
describe('jsonp', function() { describe('jsonp', function() {

View File

@ -7,6 +7,9 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser, by, element, protractor} from 'protractor';
const Key = protractor.Key;
describe('key_events', function() { describe('key_events', function() {
@ -20,13 +23,13 @@ describe('key_events', function() {
expect(firstArea.getText()).toEqual('(none)'); expect(firstArea.getText()).toEqual('(none)');
// testing different key categories: // testing different key categories:
firstArea.sendKeys(protractor.Key.ENTER); firstArea.sendKeys(Key.ENTER);
expect(firstArea.getText()).toEqual('enter'); expect(firstArea.getText()).toEqual('enter');
firstArea.sendKeys(protractor.Key.SHIFT, protractor.Key.ENTER); firstArea.sendKeys(Key.SHIFT, Key.ENTER);
expect(firstArea.getText()).toEqual('shift.enter'); expect(firstArea.getText()).toEqual('shift.enter');
firstArea.sendKeys(protractor.Key.CONTROL, protractor.Key.SHIFT, protractor.Key.ENTER); firstArea.sendKeys(Key.CONTROL, Key.SHIFT, Key.ENTER);
expect(firstArea.getText()).toEqual('control.shift.enter'); expect(firstArea.getText()).toEqual('control.shift.enter');
firstArea.sendKeys(' '); firstArea.sendKeys(' ');
@ -37,41 +40,41 @@ describe('key_events', function() {
firstArea.sendKeys('u'); firstArea.sendKeys('u');
expect(firstArea.getText()).toEqual('u'); expect(firstArea.getText()).toEqual('u');
firstArea.sendKeys(protractor.Key.CONTROL, 'b'); firstArea.sendKeys(Key.CONTROL, 'b');
expect(firstArea.getText()).toEqual('control.b'); expect(firstArea.getText()).toEqual('control.b');
firstArea.sendKeys(protractor.Key.F1); firstArea.sendKeys(Key.F1);
expect(firstArea.getText()).toEqual('f1'); expect(firstArea.getText()).toEqual('f1');
firstArea.sendKeys(protractor.Key.ALT, protractor.Key.F1); firstArea.sendKeys(Key.ALT, Key.F1);
expect(firstArea.getText()).toEqual('alt.f1'); expect(firstArea.getText()).toEqual('alt.f1');
firstArea.sendKeys(protractor.Key.CONTROL, protractor.Key.F1); firstArea.sendKeys(Key.CONTROL, Key.F1);
expect(firstArea.getText()).toEqual('control.f1'); expect(firstArea.getText()).toEqual('control.f1');
// There is an issue with protractor.Key.NUMPAD0 (and other NUMPADx): // There is an issue with Key.NUMPAD0 (and other NUMPADx):
// chromedriver does not correctly set the location property on the event to // chromedriver does not correctly set the location property on the event to
// specify that the key is on the numeric keypad (event.location = 3) // specify that the key is on the numeric keypad (event.location = 3)
// so the following test fails: // so the following test fails:
// firstArea.sendKeys(protractor.Key.NUMPAD0); // firstArea.sendKeys(Key.NUMPAD0);
// expect(firstArea.getText()).toEqual('0'); // expect(firstArea.getText()).toEqual('0');
}); });
it('should correctly react to the specified key', function() { it('should correctly react to the specified key', function() {
var secondArea = element.all(by.css('.sample-area')).get(1); var secondArea = element.all(by.css('.sample-area')).get(1);
secondArea.sendKeys(protractor.Key.SHIFT, protractor.Key.ENTER); secondArea.sendKeys(Key.SHIFT, Key.ENTER);
expect(secondArea.getText()).toEqual('You pressed shift.enter!'); expect(secondArea.getText()).toEqual('You pressed shift.enter!');
}); });
it('should not react to incomplete keys', function() { it('should not react to incomplete keys', function() {
var secondArea = element.all(by.css('.sample-area')).get(1); var secondArea = element.all(by.css('.sample-area')).get(1);
secondArea.sendKeys(protractor.Key.ENTER); secondArea.sendKeys(Key.ENTER);
expect(secondArea.getText()).toEqual(''); expect(secondArea.getText()).toEqual('');
}); });
it('should not react to keys with more modifiers', function() { it('should not react to keys with more modifiers', function() {
var secondArea = element.all(by.css('.sample-area')).get(1); var secondArea = element.all(by.css('.sample-area')).get(1);
secondArea.sendKeys(protractor.Key.CONTROL, protractor.Key.SHIFT, protractor.Key.ENTER); secondArea.sendKeys(Key.CONTROL, Key.SHIFT, Key.ENTER);
expect(secondArea.getText()).toEqual(''); expect(secondArea.getText()).toEqual('');
}); });

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser, by, element} from 'protractor';
describe('Model-Driven Forms', function() { describe('Model-Driven Forms', function() {
@ -24,6 +25,9 @@ describe('Model-Driven Forms', function() {
input.sendKeys('invalid'); input.sendKeys('invalid');
firstName.click(); firstName.click();
expect(form.getInnerHtml()).toContain('is invalid credit card number'); // TODO: getInnerHtml has been deprecated by selenium-webdriver in the
// upcoming release of 3.0.0. Protractor has removed this method from
// ElementFinder but can still be accessed via WebElement.
expect(form.getWebElement().getInnerHtml()).toContain('is invalid credit card number');
}); });
}); });

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser} from 'protractor';
describe('Order Management CRUD', function() { describe('Order Management CRUD', function() {
var URL = 'all/playground/src/order_management/index.html'; var URL = 'all/playground/src/order_management/index.html';

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser} from 'protractor';
describe('Person Management CRUD', function() { describe('Person Management CRUD', function() {
var URL = 'all/playground/src/person_management/index.html'; var URL = 'all/playground/src/person_management/index.html';

View File

@ -7,11 +7,11 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {$, ExpectedConditions, browser, by, element} from 'protractor';
function waitForElement(selector: string) { function waitForElement(selector: string) {
const EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be present on the dom. // Waits for the element with id 'abc' to be present on the dom.
browser.wait(EC.presenceOf($(selector)), 20000); browser.wait(ExpectedConditions.presenceOf($(selector)), 20000);
} }
describe('relative assets relative-app', () => { describe('relative assets relative-app', () => {

View File

@ -7,11 +7,11 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {$, ExpectedConditions, browser, by, element} from 'protractor';
function waitForElement(selector: string) { function waitForElement(selector: string) {
const EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be present on the dom. // Waits for the element with id 'abc' to be present on the dom.
browser.wait(EC.presenceOf($(selector)), 20000); browser.wait(ExpectedConditions.presenceOf($(selector)), 20000);
} }
describe('routing inbox-app', () => { describe('routing inbox-app', () => {

View File

@ -6,7 +6,9 @@
* found in the LICENSE file at https://angular.io/license * found in the LICENSE file at https://angular.io/license
*/ */
import * as testUtil from 'e2e_util/e2e_util';
import {$, browser} from 'protractor';
import {logging} from 'selenium-webdriver';
var fs = require('fs'); var fs = require('fs');
var sourceMap = require('source-map'); var sourceMap = require('source-map');
@ -22,10 +24,10 @@ describe('sourcemaps', function() {
// TODO(tbosch): Bug in ChromeDriver: Need to execute at least one command // TODO(tbosch): Bug in ChromeDriver: Need to execute at least one command
// so that the browser logs can be read out! // so that the browser logs can be read out!
browser.executeScript('1+1'); browser.executeScript('1+1');
browser.manage().logs().get('browser').then(function(logs) { browser.manage().logs().get(logging.Type.BROWSER).then(function(logs: any) {
var errorLine: number = null; var errorLine: number = null;
var errorColumn: number = null; var errorColumn: number = null;
logs.forEach(function(log) { logs.forEach(function(log: any) {
const match = log.message.match(/\.createError\s+\(.+:(\d+):(\d+)/m); const match = log.message.match(/\.createError\s+\(.+:(\d+):(\d+)/m);
if (match) { if (match) {
errorLine = parseInt(match[1]); errorLine = parseInt(match[1]);

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser, by, element} from 'protractor';
describe('SVG', function() { describe('SVG', function() {

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser, by, element} from 'protractor';
describe('Template-Driven Forms', function() { describe('Template-Driven Forms', function() {
@ -24,6 +25,9 @@ describe('Template-Driven Forms', function() {
input.sendKeys('invalid'); input.sendKeys('invalid');
firstName.click(); firstName.click();
expect(form.getInnerHtml()).toContain('is invalid credit card number'); // TODO: getInnerHtml has been deprecated by selenium-webdriver in the
// upcoming release of 3.0.0. Protractor has removed this method from
// ElementFinder but can still be accessed via WebElement.
expect(form.getWebElement().getInnerHtml()).toContain('is invalid credit card number');
}); });
}); });

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser, by, element} from 'protractor';
// TODO(i): reenable once we are using a version of protractor containing the // TODO(i): reenable once we are using a version of protractor containing the
// change in https://github.com/angular/protractor/pull/3403 // change in https://github.com/angular/protractor/pull/3403

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser, by, element, protractor} from 'protractor';
describe('WebWorkers Animations', function() { describe('WebWorkers Animations', function() {
afterEach(() => { afterEach(() => {

View File

@ -7,6 +7,8 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {ExpectedConditions, browser, by, element, protractor} from 'protractor';
describe('WebWorkers Input', function() { describe('WebWorkers Input', function() {
afterEach(() => { afterEach(() => {
@ -37,8 +39,7 @@ describe('WebWorkers Input', function() {
input.sendKeys(VALUE); input.sendKeys(VALUE);
let displayElem = element(by.css(selector + ' .input-val')); let displayElem = element(by.css(selector + ' .input-val'));
const expectedVal = `Input val is ${VALUE}.`; const expectedVal = `Input val is ${VALUE}.`;
browser.wait( browser.wait(ExpectedConditions.textToBePresentInElement(displayElem, expectedVal), 5000);
protractor.ExpectedConditions.textToBePresentInElement(displayElem, expectedVal), 5000);
expect(displayElem.getText()).toEqual(expectedVal); expect(displayElem.getText()).toEqual(expectedVal);
}); });
@ -52,20 +53,19 @@ describe('WebWorkers Input', function() {
input.sendKeys(VALUE); input.sendKeys(VALUE);
let displayElem = element(by.css(selector + ' .textarea-val')); let displayElem = element(by.css(selector + ' .textarea-val'));
const expectedVal = `Textarea val is ${VALUE}.`; const expectedVal = `Textarea val is ${VALUE}.`;
browser.wait( browser.wait(ExpectedConditions.textToBePresentInElement(displayElem, expectedVal), 5000);
protractor.ExpectedConditions.textToBePresentInElement(displayElem, expectedVal), 5000);
expect(displayElem.getText()).toEqual(expectedVal); expect(displayElem.getText()).toEqual(expectedVal);
}); });
function waitForBootstrap() { function waitForBootstrap() {
browser.wait(protractor.until.elementLocated(by.css(selector + ' h2')), 5000) browser.wait(protractor.until.elementLocated(by.css(selector + ' h2')), 5000)
.then( .then(
_ => { () => {
let elem = element(by.css(selector + ' h2')); let elem = element(by.css(selector + ' h2'));
browser.wait( browser.wait(
protractor.ExpectedConditions.textToBePresentInElement(elem, 'Input App'), 5000); protractor.ExpectedConditions.textToBePresentInElement(elem, 'Input App'), 5000);
}, },
_ => { () => {
// jasmine will timeout if this gets called too many times // jasmine will timeout if this gets called too many times
console.log('>> unexpected timeout -> browser.refresh()'); console.log('>> unexpected timeout -> browser.refresh()');
browser.refresh(); browser.refresh();

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {ExpectedConditions, browser, by, element, protractor} from 'protractor';
describe('WebWorkers Kitchen Sink', function() { describe('WebWorkers Kitchen Sink', function() {
afterEach(() => { afterEach(() => {
@ -23,8 +24,7 @@ describe('WebWorkers Kitchen Sink', function() {
browser.wait(protractor.until.elementLocated(by.css(selector)), 15000); browser.wait(protractor.until.elementLocated(by.css(selector)), 15000);
var elem = element(by.css(selector)); var elem = element(by.css(selector));
browser.wait( browser.wait(ExpectedConditions.textToBePresentInElement(elem, 'hello world!'), 5000);
protractor.ExpectedConditions.textToBePresentInElement(elem, 'hello world!'), 5000);
expect(elem.getText()).toEqual('hello world!'); expect(elem.getText()).toEqual('hello world!');
}); });
@ -38,8 +38,7 @@ describe('WebWorkers Kitchen Sink', function() {
browser.wait(protractor.until.elementLocated(by.css(changeButtonSelector)), 15000); browser.wait(protractor.until.elementLocated(by.css(changeButtonSelector)), 15000);
element(by.css(changeButtonSelector)).click(); element(by.css(changeButtonSelector)).click();
var elem = element(by.css(selector)); var elem = element(by.css(selector));
browser.wait( browser.wait(ExpectedConditions.textToBePresentInElement(elem, 'howdy world!'), 5000);
protractor.ExpectedConditions.textToBePresentInElement(elem, 'howdy world!'), 5000);
expect(elem.getText()).toEqual('howdy world!'); expect(elem.getText()).toEqual('howdy world!');
}); });
@ -53,7 +52,7 @@ describe('WebWorkers Kitchen Sink', function() {
expect(area.getText()).toEqual('(none)'); expect(area.getText()).toEqual('(none)');
area.sendKeys('u'); area.sendKeys('u');
browser.wait(protractor.ExpectedConditions.textToBePresentInElement(area, 'U'), 5000); browser.wait(ExpectedConditions.textToBePresentInElement(area, 'U'), 5000);
expect(area.getText()).toEqual('U'); expect(area.getText()).toEqual('U');
}); });
}); });

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {ExpectedConditions, browser, by, element, protractor} from 'protractor';
var URL = 'all/playground/src/web_workers/message_broker/index.html'; var URL = 'all/playground/src/web_workers/message_broker/index.html';
@ -36,7 +37,7 @@ describe('MessageBroker', function() {
input.sendKeys(VALUE); input.sendKeys(VALUE);
element(by.css('#send_echo')).click(); element(by.css('#send_echo')).click();
var area = element(by.css('#echo_result')); var area = element(by.css('#echo_result'));
browser.wait(protractor.ExpectedConditions.textToBePresentInElement(area, VALUE), 5000); browser.wait(ExpectedConditions.textToBePresentInElement(area, VALUE), 5000);
expect(area.getText()).toEqual(VALUE); expect(area.getText()).toEqual(VALUE);
}); });
}); });

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser, by, element, protractor} from 'protractor';
describe('WebWorker Router', () => { describe('WebWorker Router', () => {
beforeEach(() => { beforeEach(() => {
@ -67,7 +68,7 @@ describe('WebWorker Router', () => {
browser.wait(() => { browser.wait(() => {
let deferred = protractor.promise.defer(); let deferred = protractor.promise.defer();
const elem = element(by.css(contentSelector)); const elem = element(by.css(contentSelector));
elem.getText().then((text) => deferred.fulfill(text === expected)); elem.getText().then((text: string) => { return deferred.fulfill(text === expected); });
return deferred.promise; return deferred.promise;
}, 5000); }, 5000);
} }
@ -75,7 +76,8 @@ describe('WebWorker Router', () => {
function waitForUrl(regex: RegExp): void { function waitForUrl(regex: RegExp): void {
browser.wait(() => { browser.wait(() => {
let deferred = protractor.promise.defer(); let deferred = protractor.promise.defer();
browser.getCurrentUrl().then((url) => deferred.fulfill(url.match(regex) !== null)); browser.getCurrentUrl().then(
(url: string) => { return deferred.fulfill(url.match(regex) !== null); });
return deferred.promise; return deferred.promise;
}, 5000); }, 5000);
} }

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser, by, element, protractor} from 'protractor';
describe('WebWorkers Todo', function() { describe('WebWorkers Todo', function() {
afterEach(() => { afterEach(() => {

View File

@ -7,6 +7,7 @@
*/ */
import {verifyNoBrowserErrors} from 'e2e_util/e2e_util'; import {verifyNoBrowserErrors} from 'e2e_util/e2e_util';
import {browser, by, element} from 'protractor';
describe('Zippy Component', function() { describe('Zippy Component', function() {

1
modules/types.d.ts vendored
View File

@ -12,7 +12,6 @@
/// <reference path="../node_modules/@types/hammerjs/index.d.ts" /> /// <reference path="../node_modules/@types/hammerjs/index.d.ts" />
/// <reference path="../node_modules/@types/jasmine/index.d.ts" /> /// <reference path="../node_modules/@types/jasmine/index.d.ts" />
/// <reference path="../node_modules/@types/node/index.d.ts" /> /// <reference path="../node_modules/@types/node/index.d.ts" />
/// <reference path="../node_modules/@types/protractor/index.d.ts" />
/// <reference path="../node_modules/@types/selenium-webdriver/index.d.ts" /> /// <reference path="../node_modules/@types/selenium-webdriver/index.d.ts" />
/// <reference path="./es6-subset.d.ts" /> /// <reference path="./es6-subset.d.ts" />
/// <reference path="./system.d.ts" /> /// <reference path="./system.d.ts" />

View File

@ -30,12 +30,12 @@
"version": "4.0.22-alpha", "version": "4.0.22-alpha",
"dev": true "dev": true
}, },
"@types/protractor": { "@types/q": {
"version": "1.5.11-alpha", "version": "0.0.32",
"dev": true "dev": true
}, },
"@types/selenium-webdriver": { "@types/selenium-webdriver": {
"version": "2.44.20-alpha", "version": "2.53.35",
"dev": true "dev": true
}, },
"accepts": { "accepts": {
@ -224,12 +224,16 @@
"version": "0.1.6", "version": "0.1.6",
"dev": true "dev": true
}, },
"asynckit": {
"version": "0.4.0",
"dev": true
},
"aws-sign2": { "aws-sign2": {
"version": "0.6.0", "version": "0.6.0",
"dev": true "dev": true
}, },
"aws4": { "aws4": {
"version": "1.4.1", "version": "1.5.0",
"dev": true "dev": true
}, },
"backo2": { "backo2": {
@ -279,14 +283,7 @@
"bcrypt-pbkdf": { "bcrypt-pbkdf": {
"version": "1.0.0", "version": "1.0.0",
"dev": true, "dev": true,
"optional": true,
"dependencies": {
"tweetnacl": {
"version": "0.14.3",
"dev": true,
"optional": true "optional": true
}
}
}, },
"beeper": { "beeper": {
"version": "1.1.0", "version": "1.1.0",
@ -2579,23 +2576,15 @@
"dev": true "dev": true
}, },
"form-data": { "form-data": {
"version": "1.0.1", "version": "2.1.2",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"async": {
"version": "2.0.1",
"dev": true
},
"lodash": {
"version": "4.15.0",
"dev": true
},
"mime-db": { "mime-db": {
"version": "1.23.0", "version": "1.24.0",
"dev": true "dev": true
}, },
"mime-types": { "mime-types": {
"version": "2.1.11", "version": "2.1.12",
"dev": true "dev": true
} }
} }
@ -3259,7 +3248,7 @@
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"glob": { "glob": {
"version": "7.0.6", "version": "7.1.1",
"dev": true "dev": true
} }
} }
@ -3501,7 +3490,11 @@
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"is-my-json-valid": { "is-my-json-valid": {
"version": "2.13.1", "version": "2.15.0",
"dev": true
},
"jsonpointer": {
"version": "4.0.0",
"dev": true "dev": true
} }
} }
@ -3831,7 +3824,7 @@
"optional": true "optional": true
}, },
"json-schema": { "json-schema": {
"version": "0.2.2", "version": "0.2.3",
"dev": true "dev": true
}, },
"json-stringify-safe": { "json-stringify-safe": {
@ -3867,7 +3860,7 @@
"dev": true "dev": true
}, },
"jsprim": { "jsprim": {
"version": "1.3.0", "version": "1.3.1",
"dev": true "dev": true
}, },
"jstransform": { "jstransform": {
@ -4591,7 +4584,7 @@
"dev": true "dev": true
}, },
"path-is-inside": { "path-is-inside": {
"version": "1.0.1", "version": "1.0.2",
"dev": true "dev": true
}, },
"path-type": { "path-type": {
@ -4661,65 +4654,35 @@
"dev": true "dev": true
}, },
"protractor": { "protractor": {
"version": "4.0.5", "version": "4.0.11",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/jasmine": { "@types/jasmine": {
"version": "2.2.33", "version": "2.5.37",
"dev": true "dev": true
}, },
"@types/node": { "@types/node": {
"version": "6.0.38", "version": "6.0.46",
"dev": true
},
"bl": {
"version": "1.1.2",
"dev": true "dev": true
}, },
"glob": { "glob": {
"version": "7.0.6", "version": "7.1.1",
"dev": true
},
"isarray": {
"version": "1.0.0",
"dev": true
},
"jasmine": {
"version": "2.4.1",
"dev": true,
"dependencies": {
"glob": {
"version": "3.2.11",
"dev": true
},
"minimatch": {
"version": "0.3.0",
"dev": true
}
}
},
"jasmine-core": {
"version": "2.4.1",
"dev": true "dev": true
}, },
"mime-db": { "mime-db": {
"version": "1.23.0", "version": "1.24.0",
"dev": true "dev": true
}, },
"mime-types": { "mime-types": {
"version": "2.1.11", "version": "2.1.12",
"dev": true "dev": true
}, },
"qs": { "qs": {
"version": "6.2.1", "version": "6.3.0",
"dev": true
},
"readable-stream": {
"version": "2.0.6",
"dev": true "dev": true
}, },
"request": { "request": {
"version": "2.74.0", "version": "2.78.0",
"dev": true "dev": true
}, },
"rimraf": { "rimraf": {
@ -4730,12 +4693,16 @@
"version": "1.3.0", "version": "1.3.0",
"dev": true "dev": true
}, },
"semver": {
"version": "5.3.0",
"dev": true
},
"tough-cookie": { "tough-cookie": {
"version": "2.3.1", "version": "2.3.2",
"dev": true "dev": true
}, },
"webdriver-manager": { "webdriver-manager": {
"version": "10.2.3", "version": "10.2.8",
"dev": true "dev": true
} }
} }
@ -5263,7 +5230,7 @@
"dev": true "dev": true
}, },
"sshpk": { "sshpk": {
"version": "1.10.0", "version": "1.10.1",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"assert-plus": { "assert-plus": {
@ -5526,7 +5493,7 @@
"dev": true "dev": true
}, },
"tweetnacl": { "tweetnacl": {
"version": "0.13.3", "version": "0.14.3",
"dev": true, "dev": true,
"optional": true "optional": true
}, },

205
npm-shrinkwrap.json generated
View File

@ -44,16 +44,16 @@
"resolved": "https://registry.npmjs.org/@types/node/-/node-4.0.22-alpha.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-4.0.22-alpha.tgz",
"dev": true "dev": true
}, },
"@types/protractor": { "@types/q": {
"version": "1.5.11-alpha", "version": "0.0.32",
"from": "@types/protractor@latest", "from": "@types/q@>=0.0.32 <0.0.33",
"resolved": "https://registry.npmjs.org/@types/protractor/-/protractor-1.5.11-alpha.tgz", "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz",
"dev": true "dev": true
}, },
"@types/selenium-webdriver": { "@types/selenium-webdriver": {
"version": "2.44.20-alpha", "version": "2.53.35",
"from": "@types/selenium-webdriver@latest", "from": "@types/selenium-webdriver@latest",
"resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.44.20-alpha.tgz", "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-2.53.35.tgz",
"dev": true "dev": true
}, },
"accepts": { "accepts": {
@ -330,6 +330,12 @@
"resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz", "resolved": "https://registry.npmjs.org/async-each/-/async-each-0.1.6.tgz",
"dev": true "dev": true
}, },
"asynckit": {
"version": "0.4.0",
"from": "asynckit@>=0.4.0 <0.5.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"dev": true
},
"aws-sign2": { "aws-sign2": {
"version": "0.6.0", "version": "0.6.0",
"from": "aws-sign2@>=0.6.0 <0.7.0", "from": "aws-sign2@>=0.6.0 <0.7.0",
@ -337,9 +343,9 @@
"dev": true "dev": true
}, },
"aws4": { "aws4": {
"version": "1.4.1", "version": "1.5.0",
"from": "aws4@>=1.2.1 <2.0.0", "from": "aws4@>=1.2.1 <2.0.0",
"resolved": "https://registry.npmjs.org/aws4/-/aws4-1.4.1.tgz", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.5.0.tgz",
"dev": true "dev": true
}, },
"backo2": { "backo2": {
@ -413,16 +419,7 @@
"from": "bcrypt-pbkdf@>=1.0.0 <2.0.0", "from": "bcrypt-pbkdf@>=1.0.0 <2.0.0",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.0.tgz",
"dev": true, "dev": true,
"optional": true,
"dependencies": {
"tweetnacl": {
"version": "0.14.3",
"from": "tweetnacl@>=0.14.3 <0.15.0",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz",
"dev": true,
"optional": true "optional": true
}
}
}, },
"beeper": { "beeper": {
"version": "1.1.0", "version": "1.1.0",
@ -3725,33 +3722,21 @@
"dev": true "dev": true
}, },
"form-data": { "form-data": {
"version": "1.0.1", "version": "2.1.2",
"from": "form-data@>=1.0.0-rc4 <1.1.0", "from": "form-data@>=2.1.1 <2.2.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-1.0.1.tgz", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.2.tgz",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"async": {
"version": "2.0.1",
"from": "async@>=2.0.1 <3.0.0",
"resolved": "https://registry.npmjs.org/async/-/async-2.0.1.tgz",
"dev": true
},
"lodash": {
"version": "4.15.0",
"from": "lodash@>=4.8.0 <5.0.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.15.0.tgz",
"dev": true
},
"mime-db": { "mime-db": {
"version": "1.23.0", "version": "1.24.0",
"from": "mime-db@>=1.23.0 <1.24.0", "from": "mime-db@>=1.24.0 <1.25.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz",
"dev": true "dev": true
}, },
"mime-types": { "mime-types": {
"version": "2.1.11", "version": "2.1.12",
"from": "mime-types@2.1.11", "from": "mime-types@^2.1.12",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz",
"dev": true "dev": true
} }
} }
@ -4729,9 +4714,9 @@
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"glob": { "glob": {
"version": "7.0.6", "version": "7.1.1",
"from": "glob@7.0.6", "from": "glob@^7.0.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
"dev": true "dev": true
} }
} }
@ -5081,9 +5066,15 @@
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"is-my-json-valid": { "is-my-json-valid": {
"version": "2.13.1", "version": "2.15.0",
"from": "is-my-json-valid@>=2.12.4 <3.0.0", "from": "is-my-json-valid@>=2.12.4 <3.0.0",
"resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.13.1.tgz", "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz",
"dev": true
},
"jsonpointer": {
"version": "4.0.0",
"from": "jsonpointer@>=4.0.0 <5.0.0",
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.0.tgz",
"dev": true "dev": true
} }
} }
@ -5569,9 +5560,9 @@
"optional": true "optional": true
}, },
"json-schema": { "json-schema": {
"version": "0.2.2", "version": "0.2.3",
"from": "json-schema@0.2.2", "from": "json-schema@0.2.3",
"resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.2.tgz", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
"dev": true "dev": true
}, },
"json-stringify-safe": { "json-stringify-safe": {
@ -5623,9 +5614,9 @@
"dev": true "dev": true
}, },
"jsprim": { "jsprim": {
"version": "1.3.0", "version": "1.3.1",
"from": "jsprim@>=1.2.2 <2.0.0", "from": "jsprim@>=1.2.2 <2.0.0",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.0.tgz", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.3.1.tgz",
"dev": true "dev": true
}, },
"jstransform": { "jstransform": {
@ -6683,9 +6674,9 @@
"dev": true "dev": true
}, },
"path-is-inside": { "path-is-inside": {
"version": "1.0.1", "version": "1.0.2",
"from": "path-is-inside@>=1.0.1 <2.0.0", "from": "path-is-inside@>=1.0.1 <2.0.0",
"resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.1.tgz", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz",
"dev": true "dev": true
}, },
"path-type": { "path-type": {
@ -6787,95 +6778,51 @@
"dev": true "dev": true
}, },
"protractor": { "protractor": {
"version": "4.0.5", "version": "4.0.11",
"from": "protractor@4.0.5", "from": "protractor@4.0.11",
"resolved": "https://registry.npmjs.org/protractor/-/protractor-4.0.5.tgz", "resolved": "https://registry.npmjs.org/protractor/-/protractor-4.0.11.tgz",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/jasmine": { "@types/jasmine": {
"version": "2.2.33", "version": "2.5.37",
"from": "@types/jasmine@>=2.2.31 <3.0.0", "from": "@types/jasmine@>=2.5.36 <3.0.0",
"resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.2.33.tgz", "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.37.tgz",
"dev": true "dev": true
}, },
"@types/node": { "@types/node": {
"version": "6.0.38", "version": "6.0.46",
"from": "@types/node@>=6.0.35 <7.0.0", "from": "@types/node@>=6.0.46 <7.0.0",
"resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.38.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.46.tgz",
"dev": true
},
"bl": {
"version": "1.1.2",
"from": "bl@>=1.1.2 <1.2.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz",
"dev": true "dev": true
}, },
"glob": { "glob": {
"version": "7.0.6", "version": "7.1.1",
"from": "glob@>=7.0.3 <8.0.0", "from": "glob@>=7.0.3 <8.0.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.0.6.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.1.tgz",
"dev": true
},
"isarray": {
"version": "1.0.0",
"from": "isarray@>=1.0.0 <1.1.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"dev": true
},
"jasmine": {
"version": "2.4.1",
"from": "jasmine@2.4.1",
"resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.4.1.tgz",
"dev": true,
"dependencies": {
"glob": {
"version": "3.2.11",
"from": "glob@>=3.2.11 <4.0.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
"dev": true
},
"minimatch": {
"version": "0.3.0",
"from": "minimatch@>=0.3.0 <0.4.0",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
"dev": true
}
}
},
"jasmine-core": {
"version": "2.4.1",
"from": "jasmine-core@>=2.4.0 <2.5.0",
"resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.4.1.tgz",
"dev": true "dev": true
}, },
"mime-db": { "mime-db": {
"version": "1.23.0", "version": "1.24.0",
"from": "mime-db@1.23.0", "from": "mime-db@~1.24.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.23.0.tgz", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.24.0.tgz",
"dev": true "dev": true
}, },
"mime-types": { "mime-types": {
"version": "2.1.11", "version": "2.1.12",
"from": "mime-types@>=2.1.7 <2.2.0", "from": "mime-types@>=2.1.7 <2.2.0",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.11.tgz", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.12.tgz",
"dev": true "dev": true
}, },
"qs": { "qs": {
"version": "6.2.1", "version": "6.3.0",
"from": "qs@>=6.2.0 <6.3.0", "from": "qs@>=6.3.0 <6.4.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.2.1.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.3.0.tgz",
"dev": true
},
"readable-stream": {
"version": "2.0.6",
"from": "readable-stream@>=2.0.5 <2.1.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
"dev": true "dev": true
}, },
"request": { "request": {
"version": "2.74.0", "version": "2.78.0",
"from": "request@>=2.69.0 <3.0.0", "from": "request@>=2.78.0 <3.0.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.74.0.tgz", "resolved": "https://registry.npmjs.org/request/-/request-2.78.0.tgz",
"dev": true "dev": true
}, },
"rimraf": { "rimraf": {
@ -6890,16 +6837,22 @@
"resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.3.0.tgz", "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.3.0.tgz",
"dev": true "dev": true
}, },
"semver": {
"version": "5.3.0",
"from": "semver@>=5.3.0 <6.0.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
"dev": true
},
"tough-cookie": { "tough-cookie": {
"version": "2.3.1", "version": "2.3.2",
"from": "tough-cookie@>=2.3.0 <2.4.0", "from": "tough-cookie@>=2.3.0 <2.4.0",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.1.tgz", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz",
"dev": true "dev": true
}, },
"webdriver-manager": { "webdriver-manager": {
"version": "10.2.3", "version": "10.2.8",
"from": "webdriver-manager@>=10.2.2 <11.0.0", "from": "webdriver-manager@>=10.2.8 <11.0.0",
"resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-10.2.3.tgz", "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-10.2.8.tgz",
"dev": true "dev": true
} }
} }
@ -7671,9 +7624,9 @@
"dev": true "dev": true
}, },
"sshpk": { "sshpk": {
"version": "1.10.0", "version": "1.10.1",
"from": "sshpk@>=1.7.0 <2.0.0", "from": "sshpk@>=1.7.0 <2.0.0",
"resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.0.tgz", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.10.1.tgz",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"assert-plus": { "assert-plus": {
@ -8056,9 +8009,9 @@
"dev": true "dev": true
}, },
"tweetnacl": { "tweetnacl": {
"version": "0.13.3", "version": "0.14.3",
"from": "tweetnacl@>=0.13.0 <0.14.0", "from": "tweetnacl@>=0.14.0 <0.15.0",
"resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.13.3.tgz", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.3.tgz",
"dev": true, "dev": true,
"optional": true "optional": true
}, },

View File

@ -30,8 +30,7 @@
"@types/hammerjs": "^2.0.33", "@types/hammerjs": "^2.0.33",
"@types/jasmine": "^2.2.22-alpha", "@types/jasmine": "^2.2.22-alpha",
"@types/node": "^4.0.22-alpha", "@types/node": "^4.0.22-alpha",
"@types/protractor": "^1.5.11-alpha", "@types/selenium-webdriver": "^2.53.35",
"@types/selenium-webdriver": "^2.44.20-alpha",
"angular": "^1.5.0", "angular": "^1.5.0",
"angular-animate": "^1.5.0", "angular-animate": "^1.5.0",
"angular-mocks": "^1.5.0", "angular-mocks": "^1.5.0",
@ -68,7 +67,7 @@
"nan": "^2.4.0", "nan": "^2.4.0",
"node-uuid": "1.4.x", "node-uuid": "1.4.x",
"parse5": "^2.2.1", "parse5": "^2.2.1",
"protractor": "^4.0.5", "protractor": "^4.0.11",
"react": "^0.14.0", "react": "^0.14.0",
"rewire": "^2.3.3", "rewire": "^2.3.3",
"rollup": "^0.26.3", "rollup": "^0.26.3",