From af1119063c315803cb268703f5301c3f6a8f6495 Mon Sep 17 00:00:00 2001 From: Julie Ralph Date: Tue, 6 Oct 2015 21:00:26 -0700 Subject: [PATCH] chore(ci): update Protractor version, remove custom waits The latest Protractor version supports waiting for Angular2 applications, so remove custom waiting logic. Closes #3829 --- modules/angular2/src/test_lib/perf_util.ts | 5 +- .../webdriver/selenium_webdriver_adapter.ts | 2 +- modules/examples/e2e_test/async/async_spec.ts | 45 +- modules/examples/e2e_test/http/http_spec.ts | 1 - modules/examples/e2e_test/jsonp/jsonp_spec.ts | 1 - .../examples/e2e_test/material/dialog_spec.ts | 1 - .../kitchen_sink/kitchen_sink_spec.ts | 17 +- .../message_broker/message_broker_spec.ts | 13 +- .../e2e_test/web_workers/todo/todo_spec.ts | 10 +- npm-shrinkwrap.clean.json | 268 +++++++-- npm-shrinkwrap.json | 532 ++++++++++++++---- package.json | 4 +- protractor-shared.js | 34 +- 13 files changed, 697 insertions(+), 236 deletions(-) diff --git a/modules/angular2/src/test_lib/perf_util.ts b/modules/angular2/src/test_lib/perf_util.ts index 9344172165..2d4f919c8f 100644 --- a/modules/angular2/src/test_lib/perf_util.ts +++ b/modules/angular2/src/test_lib/perf_util.ts @@ -5,6 +5,7 @@ var bind = benchpress.bind; var Options = benchpress.Options; export function runClickBenchmark(config) { + browser.ignoreSynchronization = !config.waitForAngular2; var buttons = config.buttons.map(function(selector) { return $(selector); }); config.work = function() { buttons.forEach(function(button) { button.click(); }); }; return runBenchmark(config); @@ -24,9 +25,7 @@ export function runBenchmark(config) { }); } var url = encodeURI(config.url + '?' + urlParams.join('&')); - var getter = config.waitForAngular2 !== false ? browser.get(url) : - browser.driver.get(browser.baseUrl + url); - return getter.then(function() { + return browser.get(url).then(function() { return global['benchpressRunner'].sample({ id: config.id, execute: config.work, diff --git a/modules/benchpress/src/webdriver/selenium_webdriver_adapter.ts b/modules/benchpress/src/webdriver/selenium_webdriver_adapter.ts index 30c9268f99..36841448da 100644 --- a/modules/benchpress/src/webdriver/selenium_webdriver_adapter.ts +++ b/modules/benchpress/src/webdriver/selenium_webdriver_adapter.ts @@ -36,7 +36,7 @@ export class SeleniumWebDriverAdapter extends WebDriverAdapter { capabilities(): Promise { return this._convertPromise( - this._driver.getCapabilities().then((capsObject) => capsObject.toJSON())); + this._driver.getCapabilities().then((capsObject) => capsObject.serialize())); } logs(type: string): Promise { diff --git a/modules/examples/e2e_test/async/async_spec.ts b/modules/examples/e2e_test/async/async_spec.ts index 27d8379d85..81b532ad9e 100644 --- a/modules/examples/e2e_test/async/async_spec.ts +++ b/modules/examples/e2e_test/async/async_spec.ts @@ -1,11 +1,5 @@ import {verifyNoBrowserErrors} from 'angular2/src/test_lib/e2e_util'; -function whenStable(rootSelector) { - // TODO(hankduan): remove this call once Protractor implements it - return browser.executeAsyncScript('var el = document.querySelector("' + rootSelector + '");' + - 'window.getAngularTestability(el).whenStable(arguments[0]);'); -}; - describe('async', () => { var URL = 'examples/src/async/index.html'; @@ -20,51 +14,48 @@ describe('async', () => { it('should wait for asynchronous actions', () => { var timeout = $('#delayedIncrement'); - timeout.$('.action').click(); // At this point, the async action is still pending, so the count should // still be 0. expect(timeout.$('.val').getText()).toEqual('0'); - whenStable('async-app') - .then(() => { - // whenStable should only be called when the async action finished, - // so the count should be 1 at this point. - expect(timeout.$('.val').getText()).toEqual('1'); - }); + timeout.$('.action').click(); + + // whenStable should only be called when the async action finished, + // so the count should be 1 at this point. + expect(timeout.$('.val').getText()).toEqual('1'); }); it('should notice when asynchronous actions are cancelled', () => { var timeout = $('#delayedIncrement'); - timeout.$('.action').click(); // At this point, the async action is still pending, so the count should // still be 0. expect(timeout.$('.val').getText()).toEqual('0'); + browser.ignoreSynchronization = true; + timeout.$('.action').click(); + timeout.$('.cancel').click(); - whenStable('async-app') - .then(() => { - // whenStable should be called since the async action is cancelled. The - // count should still be 0; - expect(timeout.$('.val').getText()).toEqual('0'); - }); + browser.ignoreSynchronization = false; + + // whenStable should be called since the async action is cancelled. The + // count should still be 0; + expect(timeout.$('.val').getText()).toEqual('0'); }); it('should wait for a series of asynchronous actions', () => { var timeout = $('#multiDelayedIncrements'); - timeout.$('.action').click(); // At this point, the async action is still pending, so the count should // still be 0. expect(timeout.$('.val').getText()).toEqual('0'); - whenStable('async-app') - .then(() => { - // whenStable should only be called when all the async actions - // finished, so the count should be 10 at this point. - expect(timeout.$('.val').getText()).toEqual('10'); - }); + timeout.$('.action').click(); + + // whenStable should only be called when all the async actions + // finished, so the count should be 10 at this point. + expect(timeout.$('.val').getText()).toEqual('10'); }); afterEach(verifyNoBrowserErrors); diff --git a/modules/examples/e2e_test/http/http_spec.ts b/modules/examples/e2e_test/http/http_spec.ts index cbb2c3a217..0188bc9c1c 100644 --- a/modules/examples/e2e_test/http/http_spec.ts +++ b/modules/examples/e2e_test/http/http_spec.ts @@ -11,7 +11,6 @@ describe('http', function() { it('should fetch and display people', function() { browser.get(URL); - browser.sleep(200); expect(getComponentText('http-app', '.people')).toEqual('hello, Jeff'); }); }); diff --git a/modules/examples/e2e_test/jsonp/jsonp_spec.ts b/modules/examples/e2e_test/jsonp/jsonp_spec.ts index 851374fba1..06945a0d00 100644 --- a/modules/examples/e2e_test/jsonp/jsonp_spec.ts +++ b/modules/examples/e2e_test/jsonp/jsonp_spec.ts @@ -11,7 +11,6 @@ describe('jsonp', function() { it('should fetch and display people', function() { browser.get(URL); - browser.sleep(200); expect(getComponentText('jsonp-app', '.people')).toEqual('hello, caitp'); }); }); diff --git a/modules/examples/e2e_test/material/dialog_spec.ts b/modules/examples/e2e_test/material/dialog_spec.ts index a2ed945b8a..d90ac7c263 100644 --- a/modules/examples/e2e_test/material/dialog_spec.ts +++ b/modules/examples/e2e_test/material/dialog_spec.ts @@ -11,7 +11,6 @@ describe('md-dialog', function() { openButton.click(); var dialog = element(by.css('.md-dialog')); - browser.sleep(500); expect(dialog.isPresent()).toEqual(true); diff --git a/modules/examples/e2e_test/web_workers/kitchen_sink/kitchen_sink_spec.ts b/modules/examples/e2e_test/web_workers/kitchen_sink/kitchen_sink_spec.ts index 26e1c99349..4587891676 100644 --- a/modules/examples/e2e_test/web_workers/kitchen_sink/kitchen_sink_spec.ts +++ b/modules/examples/e2e_test/web_workers/kitchen_sink/kitchen_sink_spec.ts @@ -2,21 +2,27 @@ import {verifyNoBrowserErrors} from 'angular2/src/test_lib/e2e_util'; import {Promise} from 'angular2/src/core/facade/async'; describe('WebWorkers Kitchen Sink', function() { - afterEach(verifyNoBrowserErrors); + afterEach(() => { + verifyNoBrowserErrors(); + browser.ignoreSynchronization = false; + }); var selector = "hello-app .greeting"; - var URL = browser.baseUrl + "examples/src/web_workers/kitchen_sink/index.html"; + var URL = "examples/src/web_workers/kitchen_sink/index.html"; it('should greet', () => { // This test can't wait for Angular 2 as Testability is not available when using WebWorker - browser.driver.get(URL); + browser.ignoreSynchronization = true; + browser.get(URL); browser.wait(protractor.until.elementLocated(by.css(selector)), 15000); expect(element.all(by.css(selector)).first().getText()).toEqual("hello world!"); + }); it('should change greeting', () => { // This test can't wait for Angular 2 as Testability is not available when using WebWorker - browser.driver.get(URL); + browser.ignoreSynchronization = true; + browser.get(URL); browser.wait(protractor.until.elementLocated(by.css(selector)), 15000); element(by.css("hello-app .changeButton")).click(); @@ -27,7 +33,8 @@ describe('WebWorkers Kitchen Sink', function() { it("should display correct key names", () => { // This test can't wait for Angular 2 as Testability is not available when using WebWorker - browser.driver.get(URL); + browser.ignoreSynchronization = true; + browser.get(URL); browser.wait(protractor.until.elementLocated(by.css(".sample-area")), 15000); var area = element.all(by.css(".sample-area")).first(); diff --git a/modules/examples/e2e_test/web_workers/message_broker/message_broker_spec.ts b/modules/examples/e2e_test/web_workers/message_broker/message_broker_spec.ts index 82b5694698..5d23443c1c 100644 --- a/modules/examples/e2e_test/web_workers/message_broker/message_broker_spec.ts +++ b/modules/examples/e2e_test/web_workers/message_broker/message_broker_spec.ts @@ -1,15 +1,19 @@ import {verifyNoBrowserErrors} from "angular2/src/test_lib/e2e_util"; import {PromiseWrapper} from "angular2/src/core/facade/async"; -var URL = browser.baseUrl + 'examples/src/web_workers/message_broker/index.html'; +var URL = 'examples/src/web_workers/message_broker/index.html'; describe("MessageBroker", function() { - afterEach(verifyNoBrowserErrors); + afterEach(() => { + verifyNoBrowserErrors(); + browser.ignoreSynchronization = false; + }); it("should bootstrap", () => { // This test can't wait for Angular 2 as Testability is not available when using WebWorker - browser.driver.get(URL); + browser.ignoreSynchronization = true; + browser.get(URL); waitForBootstrap(); expect(element(by.css("app h1")).getText()).toEqual("WebWorker MessageBroker Test"); }); @@ -17,7 +21,8 @@ describe("MessageBroker", function() { it("should echo messages", () => { const VALUE = "Hi There"; // This test can't wait for Angular 2 as Testability is not available when using WebWorker - browser.driver.get(URL); + browser.ignoreSynchronization = true; + browser.get(URL); waitForBootstrap(); var input = element.all(by.css("#echo_input")).first(); diff --git a/modules/examples/e2e_test/web_workers/todo/todo_spec.ts b/modules/examples/e2e_test/web_workers/todo/todo_spec.ts index 9a8706f576..3518599fb9 100644 --- a/modules/examples/e2e_test/web_workers/todo/todo_spec.ts +++ b/modules/examples/e2e_test/web_workers/todo/todo_spec.ts @@ -2,13 +2,17 @@ import {verifyNoBrowserErrors} from 'angular2/src/test_lib/e2e_util'; import {Promise} from 'angular2/src/core/facade/async'; describe('WebWorkers Todo', function() { - afterEach(verifyNoBrowserErrors); + afterEach(() => { + verifyNoBrowserErrors(); + browser.ignoreSynchronization = false; + }); - var URL = browser.baseUrl + "examples/src/web_workers/todo/index.html"; + var URL = "examples/src/web_workers/todo/index.html"; it('should bootstrap', () => { // This test can't wait for Angular 2 as Testability is not available when using WebWorker - browser.driver.get(URL); + browser.ignoreSynchronization = true; + browser.get(URL); waitForBootstrap(); expect(element(by.css("#todoapp header")).getText()).toEqual("todos"); diff --git a/npm-shrinkwrap.clean.json b/npm-shrinkwrap.clean.json index d73f19792c..5ccbbb55dc 100644 --- a/npm-shrinkwrap.clean.json +++ b/npm-shrinkwrap.clean.json @@ -10235,29 +10235,45 @@ "version": "1.3.2" }, "protractor": { - "version": "2.1.0", + "version": "2.5.0", "dependencies": { "request": { - "version": "2.36.0", + "version": "2.57.0", "dependencies": { - "qs": { - "version": "0.6.6" + "bl": { + "version": "0.9.4", + "dependencies": { + "readable-stream": { + "version": "1.0.33", + "dependencies": { + "core-util-is": { + "version": "1.0.1" + }, + "isarray": { + "version": "0.0.1" + }, + "string_decoder": { + "version": "0.10.31" + }, + "inherits": { + "version": "2.0.1" + } + } + } + } }, - "json-stringify-safe": { - "version": "5.0.1" - }, - "mime": { - "version": "1.2.11" + "caseless": { + "version": "0.10.0" }, "forever-agent": { - "version": "0.5.2" - }, - "tough-cookie": { - "version": "1.1.0" + "version": "0.6.1" }, "form-data": { - "version": "0.1.4", + "version": "0.2.0", "dependencies": { + "async": { + "version": "0.9.2" + }, "combined-stream": { "version": "0.0.7", "dependencies": { @@ -10265,17 +10281,31 @@ "version": "0.0.5" } } - }, - "async": { - "version": "0.9.2" } } }, + "json-stringify-safe": { + "version": "5.0.1" + }, + "mime-types": { + "version": "2.0.14", + "dependencies": { + "mime-db": { + "version": "1.12.0" + } + } + }, + "qs": { + "version": "3.1.0" + }, "tunnel-agent": { - "version": "0.4.0" + "version": "0.4.1" + }, + "tough-cookie": { + "version": "2.2.0" }, "http-signature": { - "version": "0.10.1", + "version": "0.11.0", "dependencies": { "assert-plus": { "version": "0.1.5" @@ -10289,27 +10319,106 @@ } }, "oauth-sign": { - "version": "0.3.0" + "version": "0.8.0" }, "hawk": { - "version": "1.0.0", + "version": "2.3.1", "dependencies": { "hoek": { - "version": "0.9.1" + "version": "2.16.3" }, "boom": { - "version": "0.4.2" + "version": "2.9.0" }, "cryptiles": { - "version": "0.2.2" + "version": "2.0.5" }, "sntp": { - "version": "0.2.4" + "version": "1.0.9" } } }, "aws-sign2": { "version": "0.5.0" + }, + "stringstream": { + "version": "0.0.4" + }, + "combined-stream": { + "version": "1.0.5", + "dependencies": { + "delayed-stream": { + "version": "1.0.0" + } + } + }, + "isstream": { + "version": "0.1.2" + }, + "har-validator": { + "version": "1.8.0", + "dependencies": { + "bluebird": { + "version": "2.10.2" + }, + "chalk": { + "version": "1.1.1", + "dependencies": { + "ansi-styles": { + "version": "2.1.0" + }, + "escape-string-regexp": { + "version": "1.0.3" + }, + "has-ansi": { + "version": "2.0.0", + "dependencies": { + "ansi-regex": { + "version": "2.0.0" + } + } + }, + "strip-ansi": { + "version": "3.0.0", + "dependencies": { + "ansi-regex": { + "version": "2.0.0" + } + } + }, + "supports-color": { + "version": "2.0.0" + } + } + }, + "commander": { + "version": "2.8.1", + "dependencies": { + "graceful-readlink": { + "version": "1.0.1" + } + } + }, + "is-my-json-valid": { + "version": "2.12.2", + "dependencies": { + "generate-function": { + "version": "2.0.0" + }, + "generate-object-property": { + "version": "1.2.0", + "dependencies": { + "is-property": { + "version": "1.0.2" + } + } + }, + "jsonpointer": { + "version": "2.0.0" + } + } + } + } } } }, @@ -10320,10 +10429,44 @@ "version": "1.1.0" }, "jasminewd2": { - "version": "0.0.5" + "version": "0.0.6" + }, + "jasmine": { + "version": "2.3.2", + "dependencies": { + "exit": { + "version": "0.1.2" + } + } }, "saucelabs": { - "version": "0.1.1" + "version": "1.0.1", + "dependencies": { + "https-proxy-agent": { + "version": "1.0.0", + "dependencies": { + "agent-base": { + "version": "2.0.1", + "dependencies": { + "semver": { + "version": "5.0.3" + } + } + }, + "debug": { + "version": "2.2.0", + "dependencies": { + "ms": { + "version": "0.7.1" + } + } + }, + "extend": { + "version": "3.0.0" + } + } + } + } }, "glob": { "version": "3.2.11", @@ -10335,7 +10478,7 @@ "version": "0.3.0", "dependencies": { "lru-cache": { - "version": "2.6.4" + "version": "2.7.0" }, "sigmund": { "version": "1.0.1" @@ -10368,14 +10511,14 @@ "version": "0.1.32", "dependencies": { "amdefine": { - "version": "0.1.0" + "version": "1.0.0" } } } } }, "html-entities": { - "version": "1.1.2" + "version": "1.1.3" }, "accessibility-developer-tools": { "version": "2.6.0" @@ -10460,25 +10603,76 @@ "version": "2.5.1" }, "selenium-webdriver": { - "version": "2.45.1", + "version": "2.47.0", "dependencies": { "adm-zip": { "version": "0.4.4" }, "rimraf": { - "version": "2.3.3" + "version": "2.4.3", + "dependencies": { + "glob": { + "version": "5.0.15", + "dependencies": { + "inflight": { + "version": "1.0.4", + "dependencies": { + "wrappy": { + "version": "1.0.1" + } + } + }, + "inherits": { + "version": "2.0.1" + }, + "once": { + "version": "1.3.2", + "dependencies": { + "wrappy": { + "version": "1.0.1" + } + } + }, + "path-is-absolute": { + "version": "1.0.0" + } + } + } + } }, "tmp": { "version": "0.0.24" }, "ws": { - "version": "0.7.1", + "version": "0.8.0", "dependencies": { "options": { "version": "0.0.6" }, "ultron": { - "version": "1.0.1" + "version": "1.0.2" + }, + "bufferutil": { + "version": "1.2.1", + "dependencies": { + "bindings": { + "version": "1.2.1" + }, + "nan": { + "version": "2.0.9" + } + } + }, + "utf-8-validate": { + "version": "1.2.1", + "dependencies": { + "bindings": { + "version": "1.2.1" + }, + "nan": { + "version": "2.0.9" + } + } } } }, @@ -10489,10 +10683,10 @@ "version": "0.6.1" }, "xmlbuilder": { - "version": "2.6.2", + "version": "3.1.0", "dependencies": { "lodash": { - "version": "3.5.0" + "version": "3.10.1" } } } @@ -11491,5 +11685,5 @@ } }, "name": "angular", - "version": "2.0.0-alpha.38" + "version": "2.0.0-alpha.39" } diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index f9de408171..721bb7aa70 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "angular", - "version": "2.0.0-alpha.38", + "version": "2.0.0-alpha.39", "dependencies": { "@reactivex/rxjs": { "version": "0.0.0-prealpha.3", @@ -15807,173 +15807,388 @@ "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.3.2.tgz" }, "protractor": { - "version": "2.1.0", - "from": "https://registry.npmjs.org/protractor/-/protractor-2.1.0.tgz", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-2.1.0.tgz", + "version": "2.5.0", + "from": "protractor@2.5.0", "dependencies": { "request": { - "version": "2.36.0", - "from": "https://registry.npmjs.org/request/-/request-2.36.0.tgz", - "resolved": "https://registry.npmjs.org/request/-/request-2.36.0.tgz", + "version": "2.57.0", + "from": "request@>=2.57.0 <2.58.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.57.0.tgz", "dependencies": { - "qs": { - "version": "0.6.6", - "from": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz", - "resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz" + "bl": { + "version": "0.9.4", + "from": "bl@>=0.9.0 <0.10.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.9.4.tgz", + "dependencies": { + "readable-stream": { + "version": "1.0.33", + "from": "readable-stream@>=1.0.26 <1.1.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz", + "dependencies": { + "core-util-is": { + "version": "1.0.1", + "from": "core-util-is@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz" + }, + "isarray": { + "version": "0.0.1", + "from": "isarray@0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz" + }, + "string_decoder": { + "version": "0.10.31", + "from": "string_decoder@>=0.10.0 <0.11.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz" + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + } + } + } + } }, - "json-stringify-safe": { - "version": "5.0.1", - "from": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" - }, - "mime": { - "version": "1.2.11", - "from": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz" + "caseless": { + "version": "0.10.0", + "from": "caseless@>=0.10.0 <0.11.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.10.0.tgz" }, "forever-agent": { - "version": "0.5.2", - "from": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz" - }, - "tough-cookie": { - "version": "1.1.0", - "from": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-1.1.0.tgz", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-1.1.0.tgz" + "version": "0.6.1", + "from": "forever-agent@>=0.6.0 <0.7.0", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz" }, "form-data": { - "version": "0.1.4", - "from": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz", + "version": "0.2.0", + "from": "form-data@>=0.2.0 <0.3.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz", "dependencies": { + "async": { + "version": "0.9.2", + "from": "async@>=0.9.0 <0.10.0", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" + }, "combined-stream": { "version": "0.0.7", - "from": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", + "from": "combined-stream@>=0.0.4 <0.1.0", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz", "dependencies": { "delayed-stream": { "version": "0.0.5", - "from": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz", + "from": "delayed-stream@0.0.5", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz" } } - }, - "async": { - "version": "0.9.2", - "from": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", - "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz" } } }, + "json-stringify-safe": { + "version": "5.0.1", + "from": "json-stringify-safe@>=5.0.0 <5.1.0", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz" + }, + "mime-types": { + "version": "2.0.14", + "from": "mime-types@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.14.tgz", + "dependencies": { + "mime-db": { + "version": "1.12.0", + "from": "mime-db@>=1.12.0 <1.13.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.12.0.tgz" + } + } + }, + "qs": { + "version": "3.1.0", + "from": "qs@>=3.1.0 <3.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-3.1.0.tgz" + }, "tunnel-agent": { - "version": "0.4.0", - "from": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz" + "version": "0.4.1", + "from": "tunnel-agent@>=0.4.0 <0.5.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.1.tgz" + }, + "tough-cookie": { + "version": "2.2.0", + "from": "tough-cookie@>=0.12.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.2.0.tgz" }, "http-signature": { - "version": "0.10.1", - "from": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz", + "version": "0.11.0", + "from": "http-signature@>=0.11.0 <0.12.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.11.0.tgz", "dependencies": { "assert-plus": { "version": "0.1.5", - "from": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "from": "assert-plus@>=0.1.5 <0.2.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz" }, "asn1": { "version": "0.1.11", - "from": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz", + "from": "asn1@0.1.11", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz" }, "ctype": { "version": "0.5.3", - "from": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz", + "from": "ctype@0.5.3", "resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz" } } }, "oauth-sign": { - "version": "0.3.0", - "from": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz" + "version": "0.8.0", + "from": "oauth-sign@>=0.8.0 <0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.0.tgz" }, "hawk": { - "version": "1.0.0", - "from": "https://registry.npmjs.org/hawk/-/hawk-1.0.0.tgz", - "resolved": "https://registry.npmjs.org/hawk/-/hawk-1.0.0.tgz", + "version": "2.3.1", + "from": "hawk@>=2.3.0 <2.4.0", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz", "dependencies": { "hoek": { - "version": "0.9.1", - "from": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz", - "resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz" + "version": "2.16.3", + "from": "hoek@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz" }, "boom": { - "version": "0.4.2", - "from": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz", - "resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz" + "version": "2.9.0", + "from": "boom@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.9.0.tgz" }, "cryptiles": { - "version": "0.2.2", - "from": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz", - "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz" + "version": "2.0.5", + "from": "cryptiles@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz" }, "sntp": { - "version": "0.2.4", - "from": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz", - "resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz" + "version": "1.0.9", + "from": "sntp@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz" } } }, "aws-sign2": { "version": "0.5.0", - "from": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz", + "from": "aws-sign2@>=0.5.0 <0.6.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz" + }, + "stringstream": { + "version": "0.0.4", + "from": "stringstream@>=0.0.4 <0.1.0", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz" + }, + "combined-stream": { + "version": "1.0.5", + "from": "combined-stream@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "dependencies": { + "delayed-stream": { + "version": "1.0.0", + "from": "delayed-stream@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" + } + } + }, + "isstream": { + "version": "0.1.2", + "from": "isstream@>=0.1.1 <0.2.0", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz" + }, + "har-validator": { + "version": "1.8.0", + "from": "har-validator@>=1.6.1 <2.0.0", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-1.8.0.tgz", + "dependencies": { + "bluebird": { + "version": "2.10.2", + "from": "bluebird@>=2.9.30 <3.0.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-2.10.2.tgz" + }, + "chalk": { + "version": "1.1.1", + "from": "chalk@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz", + "dependencies": { + "ansi-styles": { + "version": "2.1.0", + "from": "ansi-styles@>=2.1.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.1.0.tgz" + }, + "escape-string-regexp": { + "version": "1.0.3", + "from": "escape-string-regexp@>=1.0.2 <2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz" + }, + "has-ansi": { + "version": "2.0.0", + "from": "has-ansi@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "strip-ansi": { + "version": "3.0.0", + "from": "strip-ansi@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.0.tgz", + "dependencies": { + "ansi-regex": { + "version": "2.0.0", + "from": "ansi-regex@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz" + } + } + }, + "supports-color": { + "version": "2.0.0", + "from": "supports-color@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz" + } + } + }, + "commander": { + "version": "2.8.1", + "from": "commander@>=2.8.1 <3.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "dependencies": { + "graceful-readlink": { + "version": "1.0.1", + "from": "graceful-readlink@>=1.0.0", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz" + } + } + }, + "is-my-json-valid": { + "version": "2.12.2", + "from": "is-my-json-valid@>=2.12.0 <3.0.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.12.2.tgz", + "dependencies": { + "generate-function": { + "version": "2.0.0", + "from": "generate-function@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz" + }, + "generate-object-property": { + "version": "1.2.0", + "from": "generate-object-property@>=1.1.0 <2.0.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "dependencies": { + "is-property": { + "version": "1.0.2", + "from": "is-property@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz" + } + } + }, + "jsonpointer": { + "version": "2.0.0", + "from": "jsonpointer@2.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-2.0.0.tgz" + } + } + } + } } } }, "minijasminenode": { "version": "1.1.1", - "from": "https://registry.npmjs.org/minijasminenode/-/minijasminenode-1.1.1.tgz", + "from": "minijasminenode@1.1.1", "resolved": "https://registry.npmjs.org/minijasminenode/-/minijasminenode-1.1.1.tgz" }, "jasminewd": { "version": "1.1.0", - "from": "https://registry.npmjs.org/jasminewd/-/jasminewd-1.1.0.tgz", + "from": "jasminewd@1.1.0", "resolved": "https://registry.npmjs.org/jasminewd/-/jasminewd-1.1.0.tgz" }, "jasminewd2": { - "version": "0.0.5", - "from": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-0.0.5.tgz", - "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-0.0.5.tgz" + "version": "0.0.6", + "from": "jasminewd2@0.0.6" + }, + "jasmine": { + "version": "2.3.2", + "from": "jasmine@2.3.2", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.3.2.tgz", + "dependencies": { + "exit": { + "version": "0.1.2", + "from": "exit@>=0.1.2 <0.2.0", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz" + } + } }, "saucelabs": { - "version": "0.1.1", - "from": "https://registry.npmjs.org/saucelabs/-/saucelabs-0.1.1.tgz", - "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-0.1.1.tgz" + "version": "1.0.1", + "from": "saucelabs@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.0.1.tgz", + "dependencies": { + "https-proxy-agent": { + "version": "1.0.0", + "from": "https-proxy-agent@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-1.0.0.tgz", + "dependencies": { + "agent-base": { + "version": "2.0.1", + "from": "agent-base@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-2.0.1.tgz", + "dependencies": { + "semver": { + "version": "5.0.3", + "from": "semver@>=5.0.1 <5.1.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.0.3.tgz" + } + } + }, + "debug": { + "version": "2.2.0", + "from": "debug@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "ms@0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz" + } + } + }, + "extend": { + "version": "3.0.0", + "from": "extend@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.0.tgz" + } + } + } + } }, "glob": { "version": "3.2.11", - "from": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", + "from": "glob@>=3.2.0 <3.3.0", "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz", "dependencies": { "inherits": { "version": "2.0.1", - "from": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "from": "inherits@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" }, "minimatch": { "version": "0.3.0", - "from": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", + "from": "minimatch@>=0.3.0 <0.4.0", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz", "dependencies": { "lru-cache": { - "version": "2.6.4", - "from": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.6.4.tgz" + "version": "2.7.0", + "from": "lru-cache@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.0.tgz" }, "sigmund": { "version": "1.0.1", - "from": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "from": "sigmund@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz" } } @@ -15982,58 +16197,58 @@ }, "adm-zip": { "version": "0.4.4", - "from": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", + "from": "adm-zip@0.4.4", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz" }, "optimist": { "version": "0.6.1", - "from": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", + "from": "optimist@>=0.6.0 <0.7.0", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "dependencies": { "wordwrap": { "version": "0.0.3", - "from": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "from": "wordwrap@>=0.0.2 <0.1.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz" }, "minimist": { "version": "0.0.10", - "from": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", + "from": "minimist@>=0.0.1 <0.1.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz" } } }, "q": { "version": "1.0.0", - "from": "https://registry.npmjs.org/q/-/q-1.0.0.tgz", + "from": "q@1.0.0", "resolved": "https://registry.npmjs.org/q/-/q-1.0.0.tgz" }, "source-map-support": { "version": "0.2.10", - "from": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", + "from": "source-map-support@>=0.2.6 <0.3.0", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.2.10.tgz", "dependencies": { "source-map": { "version": "0.1.32", - "from": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", + "from": "source-map@0.1.32", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.32.tgz", "dependencies": { "amdefine": { - "version": "0.1.0", - "from": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz" + "version": "1.0.0", + "from": "amdefine@>=0.0.4", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.0.tgz" } } } } }, "html-entities": { - "version": "1.1.2", - "from": "https://registry.npmjs.org/html-entities/-/html-entities-1.1.2.tgz", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.1.2.tgz" + "version": "1.1.3", + "from": "html-entities@>=1.1.1 <1.2.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.1.3.tgz" }, "accessibility-developer-tools": { "version": "2.6.0", - "from": "https://registry.npmjs.org/accessibility-developer-tools/-/accessibility-developer-tools-2.6.0.tgz", + "from": "accessibility-developer-tools@>=2.6.0 <2.7.0", "resolved": "https://registry.npmjs.org/accessibility-developer-tools/-/accessibility-developer-tools-2.6.0.tgz" } } @@ -16158,61 +16373,138 @@ "resolved": "https://registry.npmjs.org/rx/-/rx-2.5.1.tgz" }, "selenium-webdriver": { - "version": "2.45.1", - "from": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.45.1.tgz", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.45.1.tgz", + "version": "2.47.0", + "from": "selenium-webdriver@2.47.0", + "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-2.47.0.tgz", "dependencies": { "adm-zip": { "version": "0.4.4", - "from": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz", + "from": "adm-zip@0.4.4", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.4.tgz" }, "rimraf": { - "version": "2.3.3", - "from": "https://registry.npmjs.org/rimraf/-/rimraf-2.3.3.tgz", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.3.3.tgz" + "version": "2.4.3", + "from": "rimraf@>=2.2.8 <3.0.0", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.3.tgz", + "dependencies": { + "glob": { + "version": "5.0.15", + "from": "glob@>=5.0.14 <6.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "dependencies": { + "inflight": { + "version": "1.0.4", + "from": "inflight@>=1.0.4 <2.0.0", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.1", + "from": "wrappy@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + } + } + }, + "inherits": { + "version": "2.0.1", + "from": "inherits@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz" + }, + "once": { + "version": "1.3.2", + "from": "once@>=1.3.0 <2.0.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.2.tgz", + "dependencies": { + "wrappy": { + "version": "1.0.1", + "from": "wrappy@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz" + } + } + }, + "path-is-absolute": { + "version": "1.0.0", + "from": "path-is-absolute@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz" + } + } + } + } }, "tmp": { "version": "0.0.24", - "from": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz", + "from": "tmp@0.0.24", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.24.tgz" }, "ws": { - "version": "0.7.1", - "from": "https://registry.npmjs.org/ws/-/ws-0.7.1.tgz", - "resolved": "https://registry.npmjs.org/ws/-/ws-0.7.1.tgz", + "version": "0.8.0", + "from": "ws@>=0.8.0 <0.9.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-0.8.0.tgz", "dependencies": { "options": { "version": "0.0.6", - "from": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "from": "options@>=0.0.5", "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz" }, "ultron": { - "version": "1.0.1", - "from": "https://registry.npmjs.org/ultron/-/ultron-1.0.1.tgz", - "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.1.tgz" + "version": "1.0.2", + "from": "ultron@>=1.0.0 <1.1.0", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz" + }, + "bufferutil": { + "version": "1.2.1", + "from": "bufferutil@>=1.2.0 <1.3.0", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-1.2.1.tgz", + "dependencies": { + "bindings": { + "version": "1.2.1", + "from": "bindings@>=1.2.0 <1.3.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + }, + "nan": { + "version": "2.0.9", + "from": "nan@>=2.0.5 <3.0.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" + } + } + }, + "utf-8-validate": { + "version": "1.2.1", + "from": "utf-8-validate@>=1.2.0 <1.3.0", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-1.2.1.tgz", + "dependencies": { + "bindings": { + "version": "1.2.1", + "from": "bindings@>=1.2.0 <1.3.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.2.1.tgz" + }, + "nan": { + "version": "2.0.9", + "from": "nan@>=2.0.5 <3.0.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.0.9.tgz" + } + } } } }, "xml2js": { "version": "0.4.4", - "from": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz", + "from": "xml2js@0.4.4", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.4.tgz", "dependencies": { "sax": { "version": "0.6.1", - "from": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz", + "from": "sax@>=0.6.0 <0.7.0", "resolved": "https://registry.npmjs.org/sax/-/sax-0.6.1.tgz" }, "xmlbuilder": { - "version": "2.6.2", - "from": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.6.2.tgz", + "version": "3.1.0", + "from": "xmlbuilder@>=1.0.0", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-3.1.0.tgz", "dependencies": { "lodash": { - "version": "3.5.0", - "from": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.5.0.tgz" + "version": "3.10.1", + "from": "lodash@>=3.5.0 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz" } } } @@ -17737,12 +18029,12 @@ }, "zone.js": { "version": "0.5.8", - "from": "zone.js@0.5.8", + "from": "https://registry.npmjs.org/zone.js/-/zone.js-0.5.8.tgz", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.5.8.tgz", "dependencies": { "es6-promise": { "version": "3.0.2", - "from": "es6-promise@>=3.0.2 <4.0.0", + "from": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.0.2.tgz" } } diff --git a/package.json b/package.json index 144c64f30e..5daaed11a3 100644 --- a/package.json +++ b/package.json @@ -108,13 +108,13 @@ "node-uuid": "1.4.x", "on-headers": "^1.0.0", "parse5": "1.3.2", - "protractor": "2.1.0", + "protractor": "^2.5.0", "proxy-middleware": "^0.13.0", "q": "^1.0.1", "react": "^0.13.2", "rewire": "^2.3.3", "run-sequence": "^1.1.0", - "selenium-webdriver": "2.45.1", + "selenium-webdriver": "^2.47.0", "semver": "^4.3.4", "shelljs": "^0.5.0", "sorted-object": "^1.0.0", diff --git a/protractor-shared.js b/protractor-shared.js index 65bd73ced8..6686cc4d49 100644 --- a/protractor-shared.js +++ b/protractor-shared.js @@ -132,7 +132,7 @@ var config = exports.config = { // TODO(juliemr): remove this hack and use the config option // restartBrowserBetweenTests once that is not hanging. // See https://github.com/angular/protractor/issues/1983 - patchProtractorWait(browser); + // // During benchmarking, we need to open a new browser // for every benchmark, otherwise the numbers can get skewed // from other benchmarks (e.g. Chrome keeps JIT caches, ...) @@ -141,7 +141,6 @@ var config = exports.config = { var _tmpBrowser; beforeEach(function() { global.browser = originalBrowser.forkNewDriverInstance(); - patchProtractorWait(global.browser); global.element = global.browser.element; global.$ = global.browser.$; global.$$ = global.browser.$$; @@ -170,6 +169,8 @@ var config = exports.config = { framework: 'jasmine2', + useAllAngular2AppRoots: true, + jasmineNodeOpts: { showColors: true, defaultTimeoutInterval: argv['benchmark'] ? 1200000 : 60000 @@ -183,35 +184,6 @@ var config = exports.config = { } }; -// Disable waiting for Angular as we don't have an integration layer yet... -// TODO(tbosch): Implement a proper debugging API for Ng2.0, remove this here -// and the sleeps in all tests. -function patchProtractorWait(browser) { - browser.ignoreSynchronization = true; - // Benchmarks never need to wait for Angular 2 to be ready - var _get = browser.get; - var sleepInterval = process.env.TRAVIS || process.env.JENKINS_URL ? 14000 : 8000; - browser.get = function() { - var result = _get.apply(this, arguments); - browser.driver.wait(protractor.until.elementLocated(By.js(function() { - var isLoading = true; - if (window.getAllAngularTestabilities) { - var testabilities = window.getAllAngularTestabilities(); - if (testabilities && testabilities.length > 0) { - isLoading = false; - testabilities.forEach(function(testability) { - if (!testability.isStable()) { - isLoading = true; - } - }); - } - } - return !isLoading ? document.body.children : null; - })), sleepInterval); - return result; - } -} - exports.createBenchpressRunner = function(options) { // benchpress will also load traceur runtime as our tests are written in es6 var benchpress = require('./dist/build/benchpress_bundle');