UNPKG

protractor

Version:

Webdriver E2E test wrapper for Angular.

1,196 lines (825 loc) 185 kB
# 7.0.0 - ([9d2e18e](https://github.com/angular/protractor/commit/9d2e18e10d82a97bee58193968f22be6cd1f04e9)) refactor: use console.log instead of util.puts utils.puts is no longer available in Node.JS 12 - ([c281157](https://github.com/angular/protractor/commit/c28115755d4de5c2ad4c43fc11feab26a928982f)) refactor: remove debugger and explore methods BREAKING CHANGE: Debugger and explore methods are not compatable with Node 8+. Use `debugger` keyword instead. See: https://goo.gl/MvWqFh - ([7cdb978](https://github.com/angular/protractor/commit/7cdb978fca5ae3f5ed95a535ea39b9ee91fb6d2d)) build: update several dev packages that have security issues - ([8e82835](https://github.com/angular/protractor/commit/8e82835024463cdb17813d19589be0e66bac7992)) build: update webdriver-manager - ([a1fe5f2](https://github.com/angular/protractor/commit/a1fe5f2ad05ab55b1dafd429f0c31fea27ec3e5b)) ci: update tests to run on Node 10 and 12 - ([3fc9220](https://github.com/angular/protractor/commit/3fc9220189a59750226328a837b42802d18e503a)) fix: prototype Pollution vulnerability through outdated yargs package BREAKING CHANGE: Node.Js version 6 and 8 are no longer supported. Please update to Node.Js 10+ Closes #5431 # 5.4.4 ## Fixes - fix: security prototype pollution # 5.4.3 ## Fixes fix(index.ts): Fix exports to unbreak TypeScript 3.7 build # 5.4.2 ## Features - ([db1b638](https://github.com/angular/protractor/commit/db1b6381d463c7cecf11dece2bf9412fecbd6f4d)) feat(saucelabs): add sauceRegion support for eu datacenters (#5083) This change allows user to define the backend region from sauce via the `sauceRegion` property, e.g. ```js sauceUser: process.env.SAUCE_USERNAME, sauceKey: process.env.SAUCE_ACCESS_KEY, sauceRegion: 'eu', ``` Will run the test against `https://ondemand.eu-central-1.saucelabs.com:443/wd/hub/.` ```js sauceUser: process.env.SAUCE_USERNAME, sauceKey: process.env.SAUCE_ACCESS_KEY, sauceRegion: 'us', // the default sauceUser: process.env.SAUCE_USERNAME, sauceKey: process.env.SAUCE_ACCESS_KEY, ``` Will run the test against https://ondemand.saucelabs.com:443/wd/hub/ ## Fixes - ([f5dbe13](https://github.com/angular/protractor/commit/f5dbe13ad6755ae812627d8056527e351db8b34c)) fix(deps): @types/node is now a dev dependency # 5.4.1 ## Features - ([7b08083](https://github.com/angular/protractor/commit/7b0808396458fbc2bd46c7e929f4effecb2a3f1e)) feat(driverProvider): Add useExistingWebDriver driver provider (#4756) - ([249e657](https://github.com/angular/protractor/commit/249e657baa605257c268f09078d56219776db9b1)) feat(example): add examples of usage protractor framework with angular-material components; (#4891) ## Fixes - ([39485ca](https://github.com/angular/protractor/commit/39485ca49ad751814ae112b224ae054e697e102f)) fix(typo): fixed typo in EC expectation alias (#4952) - ([07fefeb](https://github.com/angular/protractor/commit/07fefeb9636f8b3506df2eacbdb4ada29f50fbbd)) fix(browser): browser.navigate() return type. (#4932) Changing return type of browser.navigate() to be Navigation instead of any. - ([0b1820c](https://github.com/angular/protractor/commit/0b1820c6c1d8b13e8fb2e64f27e4fe1d3cbcdd73)) fix(package-lock.json): update package-lock.json to match package.json. (#4931) ## Dependencies - ([2632bb6](https://github.com/angular/protractor/commit/2632bb67c3ac7773e8b769cd5c5ee5c6d7b69f3d)) deps(webdriver_js_extender): update webdriver_js_extender to 2.1 (#4934) # 5.4.0 ## Features - ([03e2209](https://github.com/angular/protractor/commit/03e22092557240217bbbcf641476db08cc35df77)) feat(driverProvider) Adding browserstackProxy param in BrowserStack driverProvider (#4852) ## Fixes - ([492230a](https://github.com/angular/protractor/commit/492230ab3445ca3aea3e60f55d27cb9825018ef9)) fix(generate_doc.sh): Use ES6 lib to compile down to ES5 (#4884) - ([ed955e5](https://github.com/angular/protractor/commit/ed955e56a839d7f69da43acb6755763220d3681d)) fix(travisCI): Update Node versions (#4847) - ([3702a70](https://github.com/angular/protractor/commit/3702a709fe251fed1de9ee1eab38593c2c371e94)) fix(local): Ensure webdriver.gecko.driver path is passed to Selenium (#4502) - ([1c6a1a8](https://github.com/angular/protractor/commit/1c6a1a82f03f2bd5911dfc37f365329d6f5acb60)) fix(circleci): Switch to using circleci v2 syntax and fix build errors (#4837) ## Dependencies - ([056eec2](https://github.com/angular/protractor/commit/056eec23a7d1534d5e8624d42a6c9d1f3106cf5d)) deps(webdriver_js_extender): update webdriver_js_extender to 2.0 (#4882) 1. update webdriver_js_extender to 2.0 2. update selenium typing to 3.0.10 # 5.3.2 ## Fixes - ([4e0a57c](https://github.com/angular/protractor/commit/4e0a57cff88b470dc5d05698a1341040f65dceb4)) fix(test): fix async tests Increase the scripts timeout - ([c6703a5](https://github.com/angular/protractor/commit/c6703a5ea8ce7a837193ecf478c2096d8c6e99e9)) fix(doc): Spelling updates to comments in plugin.ts(#4797) Updated some of the spelling errors/ punctuation mistakes for clearer understanding. - ([76324b8](https://github.com/angular/protractor/commit/76324b80063152ce67c164b6f048682e71771bb6)) fix(cli): add more verbose warning if '_debugger' module cannot be found. (#4800) - ([f8f490a](https://github.com/angular/protractor/commit/f8f490a82d0ed6965248e1f78bd2ac7ca91548d9)) updated CHANGELOG based on sauceSeleniumAddress and sauceSeleniumUseHttp (#4793) - ([6290f27](https://github.com/angular/protractor/commit/6290f27720816dd574ff7a1eccfec6ade1539b71)) fix(generate-docs): fix generate-docs.sh. (#4765) Ignore generated unstaged files before checking out to new branch; otherwise, the git checkout will fail. ## Dependencies - ([948c7f2](https://github.com/angular/protractor/commit/948c7f267feebfd4c6997d8bc02485b573100197)) fix(deps): Update saucelabs for security issue. (#4805) # 5.3.1 ## Features - ([cc2234c](https://github.com/angular/protractor/commit/cc2234c762268acab85b6e5d1c13b6480738651b)) feat(logger): Add log level configuration (#1451) (#4068) ## Fixes - ([c63b99e](https://github.com/angular/protractor/commit/c63b99ee029b6730e4b0702ac7c22b4076049e2a)) fix(grep): change excluded tests to disabled instead of pending (#4673) - ([9348ccf](https://github.com/angular/protractor/commit/9348ccfe65a0488d2929f624e70aef585f72e3ab)) docs(page_objects): Remove unnecessary "await" and "async" (#4732) - ([4898db0](https://github.com/angular/protractor/commit/4898db0940e0c0084e7c538a40986f94dc21e7ec)) docs(plugins) add protractor-cucumber-steps plugin to plugins.md (#4721) - ([a7411b6](https://github.com/angular/protractor/commit/a7411b6a156d45ec2e61f1b6ec951a19d854f5b2)) docs(page_objects): Add async / await example (#4675) # 5.3.0 ## Features - ([9d87982](https://github.com/angular/protractor/commit/9d8798243d23dd9d338c2eabd11d5a43ab3c31d9)) feat(config): allow to use newer versions of CoffeeScript (#4567) CoffeeScript lost the hyphen in the module name about 9 months ago, all the new versions are going to be released as coffeescript not the coffee-script - ([6ba30e0](https://github.com/angular/protractor/commit/6ba30e0b356fdb980cf1f2870ef0b5c6bb22ec4e)) feat(driverProviders): Add TestObject and Kobiton as driverProviders Add TestObject and Kobiton as driverProviders 1. Add testObject and kobiton to driverProviders 2. Add testObject and kobiton items to cli, config and index 3. Add instructions for using testObject and kobiton to server-setup ## Fixes - ([a62a154](https://github.com/angular/protractor/commit/a62a15417d559346a75fb6e208359ffa5b6b65f1)) fix(script): fix compile-to-es5 script (#4676) make compile-to-es5 script rely on native es6-promise typing - ([964baba](https://github.com/angular/protractor/commit/964baba5eac52452350bf1d29a191558595c5f1b)) fix(clientsidescript): avoid returning the value of test callback in waitForAngular (#4667) The return value could be interpreted as an error by mistake in some situation Also fix a wrong if-condition in error reporting - ([83e2ba8](https://github.com/angular/protractor/commit/83e2ba878257e9c85775cd52bf70960f0c45917b)) fix(website): Locator by.name('field_name') (#4653) - ([02746dd](https://github.com/angular/protractor/commit/02746dd37726b2647f8f8dbeb1152cd7f902acb0)) fix(browser): Add space after full stop in error message. (#4594) Linkifiers interpret the ".If" at the end of the URL as part of the URL. - ([7f968e0](https://github.com/angular/protractor/commit/7f968e022a7f7ebcda8955651f2907c1a25ecc22)) fix(direct): Use config's geckoDriver when specified (#4554) This change makes the `firefox` capability more closely match `chrome`'s. The `firefox` capability was not looking for `config_.geckoDriver` like `chrome` was. - ([f9df456](https://github.com/angular/protractor/commit/f9df45619b1744e6615e183965fe093f0e4526e6)) docs(element): fix minor typo in element.ts (#4471) - ([65f206e](https://github.com/angular/protractor/commit/65f206e70a2d13762c841da247557b0ebb7fde7d)) docs(website): updated reference from ignoreSynchronization to waitForAngularEnabled(false). (#4632) ## Dependencies - ([335680f](https://github.com/angular/protractor/commit/335680f10ab3c5d1de1eab92868c7b30fb7e3d23)) fix(circleCI): lock the currect version of all dependencies (#4669) CircleCI was broken by the new release of gulp-clang-format and jasmine 1. pin the version of gulp-clang-format to 1.0.23 2. pin jasmine version to 2.8.0 3. add lock file # 5.2.2 ## Fixes - ([b3c7404](https://github.com/angular/protractor/commit/b3c7404258db55a71e7bc4520973c0665cb0ff06)) Revert "fix(jasmine): Update Jasmine to support Node8 async/await (#4608)" This reverts commit 5d13b00bca651227eb55616363f7d7eb8a91f8e8. This commit is unnecessary now, revert this commit to avoid breaking changes in 5.2.1 - ([8e5ad1f](https://github.com/angular/protractor/commit/8e5ad1f9b01ec4629fa079609aa8bedee52f0722)) fix(doc): remove unnecessary config in debugging doc/example (#4622) # 5.2.1 ## Features - ([a62efc6](https://github.com/angular/protractor/commit/a62efc6e401bc1aa7408e3008ccdaa219b528636)) feat(locators): Add support for regex in cssContainingText (#4532) ## Fixes - ([e51f0ec](https://github.com/angular/protractor/commit/e51f0ecb31b7eb361dbf8feaa201ad2fccf9cf14)) fix(doc): update doc for testing with node 8 async/await and chrome inspector. (#4613) - ([b204a83](https://github.com/angular/protractor/commit/b204a835976088131f209a5f873f9f786fa05a2e)) doc(browser-support) improved Firefox documentation (#4553) - ([8d71a1b](https://github.com/angular/protractor/commit/8d71a1b1b1d314bf0a4ef8c7ecefdd1c7688032e)) docs(page-objects.md): Refactor the existing Page Object example (#4576) - ([95dd3ca](https://github.com/angular/protractor/commit/95dd3caf4b90b2d42aa1d5b35b0fd48504f802c3)) doc(tutorial): added example for element.getAttribute('value') to read text from an input (#4566) ## Dependencies - ([bb63ab0](https://github.com/angular/protractor/commit/bb63ab00046fc300d898a39c03fb6d974fe20b57)) Update to the latest blocking proxy (#4546) ## Breaking Changes - ([5d13b00](https://github.com/angular/protractor/commit/5d13b00bca651227eb55616363f7d7eb8a91f8e8)) fix(jasmine): Update Jasmine to support Node8 async/await (#4608) Breaking change for TypeScript: JasmineWD doesn't know anything about async/await, turns off JasmineWD if control flow was disabled. It will affect TypeScript tests that are using async/await and a. miss some await keyword in the test.(Previously, this might cause the test failed silently and be reported as pass), or b. use Promise in jasmine expect function **Before** ```ts await expect(getPromise()).toEqual(42); ``` **After** ```ts expect(await getPromise()).toEqual(42); ``` # 5.2.0 ## Fixes - ([f7e17f3](https://github.com/angular/protractor/commit/f7e17f348e738e1a594870d7ff735f2b7ea1853f)) fix(clientSideScripts): change protractor to support waiting for hybrid app (#4512) - ([4b7cada](https://github.com/angular/protractor/commit/4b7cada1317079c20ddf1bb105303e21adba6e32)) fix(sauce): bring back sauceProxy as a configuration option (#4419) - ([b87159b](https://github.com/angular/protractor/commit/b87159b3fcb379b85727a1beb6fd41a914235cf8)) fix(website): fix all locator examples to use `element` over `browser.findElement` (#4413) - ([768fd39](https://github.com/angular/protractor/commit/768fd393d1084a8da0ec6eeaa57508bf17519a3f)) fix(local): allow local driver provider to use gecko driver from config (#4412) - ([c0b8770](https://github.com/angular/protractor/commit/c0b8770ff1a508205b5cf38b5611918e20028fe3)) docs(website): fix issue 4246 - ([f79938e](https://github.com/angular/protractor/commit/f79938e3d138c7bedc66f8c6748704402ea721c4)) docs(plugins): add ng-apimock plugin to plugins.md - ([ab1afb0](https://github.com/angular/protractor/commit/ab1afb093107f3a63f6e15f8f315e33576bb414d)) fix(blockingproxy): Start bpRunner strictly after setupDriverEnv - ([b85e7ee](https://github.com/angular/protractor/commit/b85e7ee1c53cdc4cfb23dc3d06d40317a27e50e7)) fix(npmignore): .map files in built directory cause stacktrace lines to nowhere Fixes #4371 - ([299fc8d](https://github.com/angular/protractor/commit/299fc8d96b3e5daf632a1c584728214ababcebf8)) docs(browser-support): Fixed incorrect example - ([e5a5d59](https://github.com/angular/protractor/commit/e5a5d59fcabe15860b30944e714bbd8e81ceaeae)) docs(frameworks) align cucumberOpts comments - ([fe8c480](https://github.com/angular/protractor/commit/fe8c480bd860209cc68768de884d050cbf1a5b27)) docs(frameworks) update cucumber dry run option - ([2e9acf5](https://github.com/angular/protractor/commit/2e9acf58b76b553c558f56b6a38c161ad50324de)) docs(plugins) add protractor-numerator plugin to plugins.md - ([3f861ae](https://github.com/angular/protractor/commit/3f861ae069df98a06cfa1ede89f56a8d0ec9d5d2)) By.js locator should accept functions ## Dependencies - ([0fbc2c0](https://github.com/angular/protractor/commit/0fbc2c0ac12992bd61712188a96aef6684bef0c1)) chore(release): update selenium-webdriverjs # 5.1.2 ## Features - ([dd2ccbb](https://github.com/angular/protractor/commit/dd2ccbb1b73b7c90647837cd1c4f6b16b3f6b0ac)) feat(saucelabs): Add Sauce Labs protocol customization support New option `sauceSeleniumUseHttp` available in `protractor.conf.js` If true, uses 'http' instead of 'https' to connect to Sauce Labs defined by `sauceSeleniumAddress` ## Fixes - ([1a47076](https://github.com/angular/protractor/commit/1a47076875395648038a39fcd258a77bfcabe05c)) fix(ci): Use latest pip on CircleCI - ([fd59c78](https://github.com/angular/protractor/commit/fd59c78407ced4f17e1b4ed4451ce463439aa3c9)) fix(elementexplorer): Set script breakpoints with cross-platform safe paths. Fixes #4011 - ([1250278](https://github.com/angular/protractor/commit/12502784b306cbedca8684486c31eeb361da5897)) fix(cli): Correctly parse list chromeOptions Chromedriver requires that certain options always be passed as an array. Optimist passes --single-option as a string instead of an array which is invalid. This ensures that we always pass an array, even if a single option is passed via the cli. Fixes #4050 - ([183cd80](https://github.com/angular/protractor/commit/183cd803254f7a3ccb3a8650e8ef06b4fff03446)) fix(browser): Fix browser.angularAppRoot() By default, it wasn't returning anything. Now it returns a promise that resolves to internalAngularAppRoot. Fixes #4233 - ([bd534fb](https://github.com/angular/protractor/commit/bd534fb8b2dfaca9072914dc84ad662891a8c7b2)) fix: Add "stackTrace" option to allowedNames in cli.ts This fixes a problem I encountered similar to #4196 - where `stackTrace` is listed as an option but an error is given saying it's an "unknown extra flag" - ([8249167](https://github.com/angular/protractor/commit/82491678de71b43311ea68d496ff807e1c72ee5e)) fix: export Runner, not just its type. (#4227) - ([0eb5b76](https://github.com/angular/protractor/commit/0eb5b7608e4bfb770878fe443d97ed9aa426c070)) fix(navigation): ignore unknown JS errors in IE (#4149) The `err` object doesn't have the `code` property any more (Selenium Server Standalone 3.3.1 + IEDriver win32 3.3.0), so we need a new way to detect those errors. See #841 - ([4752ad1](https://github.com/angular/protractor/commit/4752ad1287af536c6dd442dd8c74546f978627d9)) chore(examples): Fix TSC issues with exampleTypescript (#4132) ## Dependencies - ([a0a1fac](https://github.com/angular/protractor/commit/a0a1fac8568f2bfbd6d5721db438aed390e30d23)) chore(deps): Updating webdriver-manager and jasminewd2 # 5.1.1 ## Features - ([3edd62e](https://github.com/angular/protractor/commit/3edd62eccccb67ec7cb71b8c3d8b2c2921a6f7ca)) feat(saucelabs): Add Sauce Labs HTTPS Support (#4071) - ([29f975a](https://github.com/angular/protractor/commit/29f975a34f5885a21525c3746bd3e82d5ae0c51e)) feat(plugins): allow plugins to know which browser instance to run against (#4066) Closes https://github.com/angular/protractor/issues/4054 ## Dependencies - ([9d69a81](https://github.com/angular/protractor/commit/9d69a819c96e408df2b59589d49811a89af1bc74)) deps(typescript): use typescript@~2.0.0 (#4062) - move noCF tests to install and fix reference to protractor - changed element.ts to not use keyof - remove gulp task tsc:spec ## Breaking Changes - The protocol for a Sauce Labs selenium relay (sauceSeleniumAddress in protractor.conf.js) is 'https' (previously used 'http'). The protocol is not configurable in this version. # 5.1.0 #### Blocking proxy Blocking Proxy is a new experimental feature in Protractor 5 and is behind the `--useBlockingProxy` or `blockingProxyUrl`. See the [lib/config.ts#L100](https://github.com/angular/protractor/blob/master/lib/config.ts#L100). Other ways to start blocking proxy include using the `--highlightDelay` and `--webDriverLogDir` flags See [lib/config.ts#L501](https://github.com/angular/protractor/blob/master/lib/config.ts#L501). This adds two options, both of which are implemented with Blocking Proxy. `--webDriverLogDir` will create a readable log with timing information of webdriver commands in the specified directory. `--highlightDelay` will pause before clicking on elements or sending keys. While paused, the element that's about to be affected will be highlighted. #### Webdriver-manager Webdriver-manager will now by default grab the latest versions of all binaries (standalone, chromedriver, iedriver, gecko driver). Use the `--versions.(binary name)` to pin to a specific version. Selenium standalone 3.0.1 has a bug which prevents it from working with any version of FireFox. We have tested version 3.0.0-beta4 and know that it works with FireFox 51, and we expect that the 3.0.2 release will also work. #### TypeScript support For jasmine users, in order to get all the type declarations that are used in jasminewd2, you'll need to install `@types/jasminewd2` in addition to `@types/jasmine` as dev dependencies. ## Features - ([0cd156d](https://github.com/angular/protractor/commit/0cd156d6829f23f93403d865b7fdb7eab4f45446)) feat(debugging): Add webdriver logging and highlight delay. (#4039) This adds two options, both of which are implemented with Blocking Proxy. --webDriverLogDir will create a readable log with timing information of webdriver commands in the specified directory. --highlightDelay will pause before clicking on elements or sending keys. While paused, the element that's about to be affected will be highlighted. - ([3d98a16](https://github.com/angular/protractor/commit/3d98a1668138d36681bf305c9ea67dd1eea38899)) feat(config): Support setting `SELENIUM_PROMISE_MANAGER` flag via the config (#4023) Closes https://github.com/angular/protractor/issues/3691 - ([4e40fb1](https://github.com/angular/protractor/commit/4e40fb175e64820bbab24efb376dac80fa6ba2b0)) feat(browser): chain promises in `browser.get` (#4017) Closes https://github.com/angular/protractor/issues/3904 - ([33393ca](https://github.com/angular/protractor/commit/33393cad633e6cb5ce64b3fc8fa5e8a9cae64edd)) feat(browser): chain some promises in `lib/browser.ts` + return promise from `waitForAngularEnabled` (#4021) Minor breaking change since `waitForAngularEnabled` no longer returns a boolean Part of angular#3904 Chaining `browser.get` has proved surprisingly complex, so I'll do that in a different PR Also fixed a minor bug in `lib/clientsidescripts.js` while debuging - ([7cb9739](https://github.com/angular/protractor/commit/7cb9739954bc26f0667d671cdb0083f5bd43f2f6)) feat(browser.ready): make `browser.ready` wait for all async setup work (#4015) Closes https://github.com/angular/protractor/issues/3900 - ([b77cb92](https://github.com/angular/protractor/commit/b77cb928301fbe4f77ffcdcace424a490581416e)) feat(restart): `browser.restart` should return a promise (#4008) Also allows `browser.restart` to work when the control flow is disabled, and fixes it for forked browsers. Closes #3899 and #3896 https://github.com/angular/protractor/issues/3896 - ([4a59412](https://github.com/angular/protractor/commit/4a59412357eb5df592b06dd282d88d6dbc5e4771)) feat(angularAppRoot): Replace rootEl with browser.angularAppRoot() (#3996) Replace browser.rootEl with browser.angularAppRoot(), which changes the root element in a promise on the control flow. Note that browser.rootEl will immediately return the current value, but browser.angularAppRoot() will return a promise that resolves during the next step in the control flow. Also update to BlockingProxy 0.0.3, which allows changing rootSelector. - ([879aac6](https://github.com/angular/protractor/commit/879aac6ee6c1c36d005b538472e2754b987b3368)) chore(blockingproxy): Allow using a pre-existing Blocking Proxy instance (#3970) - ([bf123ad](https://github.com/angular/protractor/commit/bf123adafc442440b2ca10725113b47342ebb24f)) feat(elements): Add isPresent() to ElementArrayFinder. (#3974) ## Bug Fixes - ([f9bee84](https://github.com/angular/protractor/commit/f9bee84bc03b6cd6872522b8780327423b789e19)) fix(restart): preserve waitForAngularEnabled on restart and add promise chaining I noticed I missed `waitForAngularEnabled` in #4037. This commit fixed that. While I was at it I fixed a minor error where the promises implicitly created by setting `rootEl` and `ignoreSynchronization` weren't getting chained properly. Also fixed minor (so minor I think it was impossible to trigger) where browser.plugins_ could be undefined. - ([0b0c224](https://github.com/angular/protractor/commit/0b0c224e4056368c2c0030064b4ca4235163276b)) fix(plugins): do not force ManagedPromise in plugins.ts (#4036) - ([9c2274d](https://github.com/angular/protractor/commit/9c2274d8f218cabc946dbc6a11d725458c1b4e3a)) fix(restart): preserve properties like `browser.baseUrl` upon restart (#4037) I also fixed a minor issue where `internalRootEl` wasn't being set when blocking proxy was being used. I also just cleaned up our internal uses of `this.rootEl`. Closes #4032 - ([a20c7a7](https://github.com/angular/protractor/commit/a20c7a7cc1df04f96cb1a9dd971df39883ac173b)) fix(element chaining): make element chaining work when the control flow is disabled (#4029) Also added some tests to `spec/ts/noCF/smoke_spec.ts` double checking that the control flow is off - ([7481dee](https://github.com/angular/protractor/commit/7481dee75cab1da9d207909e928eee55a9f5a682)) fix(cli): Make unknown flag check a warning instead of an error. (#4028) - ([40bbeca](https://github.com/angular/protractor/commit/40bbeca003017901760e10831c66d383cf5accf8)) fix(expectedConditions): Add tests and fix race conditions around visibility (#4006) Add test cases to reproduce the missing element race conditions possible in expected condition methods `visibilityOf`, `textToBePresentInElement`, `textToBePresentInValue` and `elementToBeClickable`. Add error handler `falseIfMissing` to all expected conditions that depend on the presence of an element. Expected conditions check the presence of an element before other checks, but when an element is removed exactly in the moment after the `isPresent` and before `isDisplayed` in `visibilityOf` the condition used to fail. This solution does not handle missing elements in (`isEnable`, `isDisplayed`, `isSelected`) and focused only on expected conditions (see #3972) This problem was also referenced in #3578 and #3777 - ([5856037](https://github.com/angular/protractor/commit/5856037368ee8d8a21f11eadbfe93d5f46507f60)) fix(cli): Allow frameworks to specify flags they recognize. (#3994) Fix for #3978. Our initial plan to allow setting --disableChecks with an environment variable is insufficient, since the custom framework isn't even require()'d until after the config is parsed. This moves the unknown flag check into the runner, and gives frameworks a way to specify extra flags they accept. - ([e68dcf1](https://github.com/angular/protractor/commit/e68dcf1bfd7f32c59ebd23fa16ca53e1a53f8ddf)) fix(driverProviders): Check config in the right place. (#3991) - ([eb89920](https://github.com/angular/protractor/commit/eb899208457f83853f043edea5e56b07e87803bc)) fix(driverProviders): Handle promise rejection when starting selenium (#3989) Fixes #3986. Also error if jvmArgs isn't an array. - ([8d2fc07](https://github.com/angular/protractor/commit/8d2fc07ed28a1b19c03a9869442f76f2963e40a1)) chore(browser): deprecate `browser.getLocationAbsUrl()`. (#3969) Closes #3185 - ([15a1872](https://github.com/angular/protractor/commit/15a187204bb8b87255d5f4622094eabc71206315)) fix(firefox): Fix directConnect for Firefox 51+ (#3953) - ([81f56a4](https://github.com/angular/protractor/commit/81f56a449f8988feba21617ef7533cfa2f06c6f8)) fix(cli): display disableChecks option in extra flags error message (#3964) - ([6a4dc7a](https://github.com/angular/protractor/commit/6a4dc7a6a5b796e0215e5b9abf99494ac13cb647)) fix: no longer use es6 let statement (#3963) * Currently in Protractor v5 the Angular detection script uses ES6 features like the `let` modifier. This can break Protractor on browsers, which doesn't support those statements. > See https://saucelabs.com/beta/tests/275f75091dac40a0a3374d29d912caee/commands#11 - ([528338c](https://github.com/angular/protractor/commit/528338c6722219fdcfc51153b0031a02f0fce046)) fix(expectedCondition): fix NoSuchElementError in visibilityOf due to a race condition (#3777) Handle NoSuchElementError in the expected condition visibilityOf, which occurred when an element disappears between the isPresent() and isDisplayed() check. ## Dependencies - ([5899b67](https://github.com/angular/protractor/commit/5899b676bc2db0005506ae2306350e6ffea3c808)) deps(update): update webdriver-manager to ^12.0.1 (#4042) Running `webdriver-manager update` will now by default grab the latest versions of all binaries (standalone, chromedriver, iedriver, gecko driver). You can continue to pin to a specific versions using the command line option. Example `webdriver-manager update --versions.chrome 2.20`. As of this release the latest versions are: - gecko v0.14.0 - selenium-standalone 3.0.1 is the latest jar file; however, we recommend 3.0.0-beta4. See note below on Firefox support. - chromedriver 2.27 - iedriver 3.0.0 A note on FireFox support: Selenium standalone 3.0.1 has a bug which prevents it from working with any version of FireFox. We have tested version 3.0.0-beta4 and know that it works with FireFox 51, and we expect that the 3.0.2 release will also work. closes #4033 - ([cd084a0](https://github.com/angular/protractor/commit/cd084a0ca29cd73aa3ce1650188adf7ddfdb7962)) deps(jasmine): update jasmine to ^2.5.3 (#3960) # 5.0.0 This version includes big changes around upgrading to selenium-webdriver 3.0.x. See the [selenium-webdriver changelog](https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md). For the 5.0.0 release, we are still using the selenium standalone server 2.53.1 and recommend using Firefox 47. Firefox 48+ currently is not supported. ## Breaking Changes - Minimum node version is now 6.9.x. - When testing with Firefox 47, use the capability option `marionette: false` to use the legacy Firefox driver. Before: ``` capabilities: { browserName: 'firefox' } ``` After: ``` capabilities: { browserName: 'firefox', marionette: false } ``` - We moved `@types/jasmine` to a devDependency. This means that Jasmine TypeScript users will need to include the `@types/jasmine` as a project dependency. This is to avoid conflicts for users that prefer mocha typings. After: ``` "dependencies": { "@types/jasmine": "^2.5.38" } ``` - Selenium-webdriver methods removed: `WebDriver.prototype.isElementPresent`, `WebElement.prototype.getRawId`, `WebElement.prototype.getInnerHtml`, and `WebElement.prototype.getOuterHtml`. Before: ``` let isPresent = browser.driver.isElementPresent(By.tagName('a')); let i = element(locator).getInnerHtml(); let o = element(locator).getOuterHtml(); ``` After: ``` let isPresent = element(By.tagName('a')).isPresent(); let i = browser.executeScript("return arguments[0].innerHTML;", element(locator)); let o = browser.executeScript("return arguments[0].outerHTML;", element(locator)); ``` - Selenium-webdriver `ErrorCodes` have been removed. - Adding cookies have been changed: Before: ``` browser.manage().addCookie('testcookie', 'Jane-1234'); ``` After: ``` browser.manage().addCookie({name:'testcookie', value: 'Jane-1234'}); ``` - Removed `protractor.wrapDriver()`. - You can no longer use `repl` command from within `browser.pause()`. Instead, use `browser.explore()` to directly enter the `repl`. - Sending flags that are not recognized by the CLI throws an error. Since flags are a subset of all configuration options, these errors can be silenced with `--disableChecks`. - Auto-detection of the root element. This is a breaking change because it changes the default root element behavior and removes the `config.useAllAngular2AppRoots` flag. Modern angular apps now default to using all app hooks, and ng1 apps now check several places, notably the element the app bootstraps to. - `sauceProxy` configuration field has been removed. Use `webDriverProxy` instead. Before: ``` sauceProxy: 'http://sauceProxy' ``` After: ``` webDriverProxy: 'http://sauceProxy' ``` ## Features - ([ec93c4a](https://github.com/angular/protractor/commit/ec93c4ab882991410ad9d3f52d87c0f5ec947641)) chore(cli): **breaking change** throw errors on unknown flags (#3921) Unknown flags are options sent that is unrecognized by the CLI. For users that encounter this error but would like to silence it, use: `--disableChecks`. closes #3216 - ([bc58332](https://github.com/angular/protractor/commit/bc583321a233453fc2b89472013b2ec3e1d6b6f9)) feat(rootEl): ***breaking change*** auto-detect the root element better (#3928) This is a breaking change because it changes the default root element behavior and removes the `config.useAllAngular2AppRoots` flag. Modern angular apps now default to using all app hooks, and ng1 apps now check several places, notably the element the app bootstraps to. closes #1742 - ([604fdbf](https://github.com/angular/protractor/commit/604fdbf064cc2785a2e745747beeaeb45d27f8ed)) cleanup(config): **breaking change** Remove redundant sauceProxy config (#3868) Removes the `sauceProxy` config field, and uses `webDriverProxy` when creating the SauceLabs client. - ([9465b9f](https://github.com/angular/protractor/commit/9465b9f1e667c9590e05d9ddac16fe5143aa93af)) feat(mobile): add extended wd commands for appium (#3860) Also had to make some minor changes to the website to handle longer inheritance chains Closes https://github.com/angular/protractor/issues/1940 - ([0e26b21](https://github.com/angular/protractor/commit/0e26b218d5f385dd9871a40553acc174cfdfe26d)) feat(blockingproxy): Add synchronization with BlockingProxy. (#3813) This adds support for BlockingProxy behind the flag --useBlockingProxy. If set, the driver providers will start a proxy during their setup phase, passing the selenium address to the proxy and starting a webdriver client that talks to the proxy. Starting a proxy for each driver provider isn't strictly necessary. However, when we run with multiple capabilities it's easier to handle the logging if each Protractor instance has it's own proxy. Known issues: - Doesn't work with directConnect. You can get the address of chromedriver by mucking around in Selenium internals, but this probably changed for Selenium 3.0 and I doubt it's worth figuring out until we upgrade. - Doesn't yet work with webDriverProxy (but it's an easy fix) - ([ca4f1ac](https://github.com/angular/protractor/commit/ca4f1acda3672942307d0f102d586c8889dd3d68)) chore(driverProviders): add warnings to extra driver provider parameters (#3873) - builds the driver provider in lib/driverProviders/index instead of lib/runner closes #1945 - ([681b54a](https://github.com/angular/protractor/commit/681b54a21ee1467d5a95c3693cde148759767d62)) refactor(browser): Remove protractor.wrapDriver() **breaking change** (#3827) Before: Users could create their own selenium driver instance and enable Protractor on it like so: ```js let capabilities = webdriver.Capabilities.chrome(); let driver = new webdriver.Builder().usingServer(seleniumAddress) .withCapabilities(capabilities).build(); let browser = protractor.wrapDriver(driver); ``` Over the years, wrapDriver() has become increasingly broken as Protractor needs extra configuration options that wrapDriver() doesn't set. After: This method is removed. If users need a new browser instance, they can use `browser.forkNewDriverInstance()`. - ([86fd569](https://github.com/angular/protractor/commit/86fd56917f039efbff8e6f323f4d91fa8bc821a4)) feat(ngUpgrade): Auto detect ngUpgrade apps and make the ng12Hybrid flag unnecessary for most users (#3847) ## Bug fixes - ([de153e7](https://github.com/angular/protractor/commit/de153e769292f6b9a99b2d5152bd2929ab1c48af)) fix(launcher): running getMultiCapabilities should reject on errors (#3876) closes #3875 - ([1345137](https://github.com/angular/protractor/commit/1345137dc5173e868de4b9da6ed16b7928e4c50e)) fix(isElementPresent): for un-wrapped `WebElement`s, `browser.isElementPresent` was broken (#3871) Closes #3864 - ([4af3b2e](https://github.com/angular/protractor/commit/4af3b2e30e925ea9d8e47537ea0a7fe8f04b579d)) fix(element): Fix typing of ElementFinder.then (#3835) Type `then` as optional on ElementFinder. ## Dependencies - ([4d87c9c](https://github.com/angular/protractor/commit/4d87c9c20d6905189c0e7ea7214cf3e87c8efe91)) deps(update): update tslint and @types/selenium-webdriver (#3941) - use @types/selenium-webdriver ~2.53.39 - fix for tslint closes #3939 - ([7376708](https://github.com/angular/protractor/commit/7376708c723976ef8a0a3ad7c245606bef1221db)) deps(tslint): set tslint to ~4.2 (#3938) - ([cb38ed0](https://github.com/angular/protractor/commit/cb38ed0a8aae2cb862001e0b6f076aa9972f4489)) Refactor element explorer to work with selenium-webdriver 3 (#3828) This implementation now relies mostly on promises explicitly, so the control flow is only used to add one large task to the queue. This should pave the way for the eventual removal of the control flow, as well as getting element explorer to work immediately. BREAKING CHANGE You can no longer use the `repl` command from within `browser.pause()`. Instead, use `browser.explore()` to directly enter the repl. - ([8196059](https://github.com/angular/protractor/commit/819605933d2dfef70b4332a727b3b3830e306817)) chore(dependency): switch to webdriver-manager 11.1.0 and remove `--versions.chrome 2.26` from circle.yml (#3865) - ([397bf65](https://github.com/angular/protractor/commit/397bf65e088b640cf3612f9da678180f49939b84)) deps(update): move @types/jasmine to devDependencies (#3795) - update outdated dependencies - move @types/jasmine to devDependencies closes #3792 - ([a3e8b43](https://github.com/angular/protractor/commit/a3e8b4319d3e8b049e55e5c3c64a7fdb5a132ddf)) deps(selenium-webdriver): upgrade to selenium 3 (#3781) Please see the [selenium-webdriver changelog](https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md) - Removed method `WebDriver.prototype.isElementPresent` - Removed method `WebElement.prototype.getRawId` - Removed `getInnerHtml` and `getOutterHtml` - Dependency required for upgrade: use `jasminewd2@0.1.0`. - Selenium-webdriver requires node version 6+, updating travis and circle yml to use node 6 and 7. - Use `instanceof` selenium-webdriver error instead of error code. Selenium-webdriver error codes have been deprecated. - Use executor with selenium-webdriver from `lib/http`. Deferred executor has been deprecated. - Fix quitting `driverProviders`. When calling `webdriver.quit`, the control flow is shutdown and will throw an error. - Driver provider for direct connect has been modified to use `ServiceBuilder` and to call the `Service` to `createSession` - Note: Since this upgrade is still using FF 47, direct connect for Firefox is required to pass "marionette: false" in the capabilities. If you do not pass marionette to false, it will look for gecko driver in the PATH. - Added a TODO to support FF after 48+ with direct connect and gecko driver. - Updated `browser.manage().addCookie('testcookie', 'Jane-1234');` to use `browser.manage().addCookie({name:'testcookie', value: 'Jane-1234'});` - Updated debug commons for breakpoint updated to selenium-webdriver `lib/http` line 432. - For mocha tests, `selenium-webdriver/testing` uses the global `it` and cannot be reassigned as Protractor's global `it`. Some code has been copied / modified to `lib/frameworks/mocha` to make this work. - Capabilities for Firefox 47 requires setting marionette to false. - Setup still requires selenium standalone server 2.53.1 for Firefox tests. Firefox version used is 47. - Using selenium standalone server 3, with Firefox 48+ tests fail with gecko driver still do not work. - Selenium standalone 3 + FF 49 + gecko driver 0.11.1 does not work - Selenium standalone 3 + FF 48 + gecko driver 0.11.1 appears to work for a single test but after it quits, selenium standalone no longer works with firefox. When firefox 48 exists, logs show the following: ``` 20:01:14.814 INFO - Executing: [delete session: e353fa1b-e266-4ec3-afb3-88f11a82473a]) [GFX1-]: Receive IPC close with reason=AbnormalShutdown [Child 30665] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-rel-m64-00000000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 2052 [Child 30665] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-rel-m64-00000000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 2052 ``` - ([eb31c9c](https://github.com/angular/protractor/commit/eb31c9c7755399bcd01630158d900e0b940e9c31)) deps(types): update @types/selenium-webdriver dependency (#3886) Fixes issue #3879 and adds the protractor.Key.chord method # 4.0.14 ## Bug Fixes - ([83694f5](https://github.com/angular/protractor/commit/83694f5e66592c5e229db98af3733ff73dac8392)) fix(types): update for selenium-webdriver types creating transpile errors (#3848) - pin package.json to a specific version of @types/selenium-webdriver - ([ea09be4](https://github.com/angular/protractor/commit/ea09be4ff0750d1d0873677fac9055a9acb630b3)) fix(jasmine): Return the full test name in Jasmine test results. (#3842) Fixes #3510 - ([76cb4b4](https://github.com/angular/protractor/commit/76cb4b4c2ac892f9785dc1506cbc0b490eea91fe)) fix(element): Fix typing of then function (#3785) - ([5a12d69](https://github.com/angular/protractor/commit/5a12d69f34fd80234455bbe6457e125a27a07e54)) fix(config): cucumberOpts.require should be an optional Array of strings (#3817) - Both cucumber options require and format now support `string` or `string[]` see #3822 #3817 - Remove no longer available options and fix `dryRun` type - Update comment for `dryRun` ## Features - ([b337a8e](https://github.com/angular/protractor/commit/b337a8e8547af0b90663a35b07fd30b55ff61dd0)) feat(config): add seleniumServerStartTimeout (#3791) ## Dependencies - ([688f5d6](https://github.com/angular/protractor/commit/688f5d6a089275ac99688196cd66f345c64adfec)) deps(update): update vrsource-tslint-rules and webdriver-manager (#3856) - ([c437fd3](https://github.com/angular/protractor/commit/c437fd3315278e7536a8385a9769e4fbd954d0a6)) deps(selenium-webdriver): clean up types selenium-webdriver (#3854) # 4.0.13 ## Bug Fix - ([c3978ec](https://github.com/angular/protractor/commit/c3978ec166760ac07db01e700c4aaaa19d9b5c38)) fix(revert): element(locator).then should not appear in the docs and change reverted. (#3808) - change comments to not be in JSDoc format - reverts change `element(locator).then` # 4.0.12 ## Bug Fixes - ([742f264](https://github.com/angular/protractor/commit/742f26465ca926c39bf28f03390a45030c15acf3)) fix(driverProviders): quit forked instances w/ local driver provider (#3787) - fix driver provider quit session to not throw error and quit - should fix sauce labs test, enabling expected conditions test with forked instance - checked that chromedriver does not persist in the background - add local driver test with forked instance to test suite - organize attach session and local specs to driverProviders directory closes #3780, closes #3779, closes #3772 - ([7d481d6](https://github.com/angular/protractor/commit/7d481d6886b39cb476b889de5d14186bda6dc066)) fix(ExpectedConditions): non-static ExpectedConditions for browser (#3766) - Update sauce lab binary to run on travis. - Disable expected conditions test that forks the browser. This issue appears to not be specific to sauce labs. Also can reproduce this with a local driver provider. Additional work is required around driver providers and the runner. - Add TODO to enable test in the future when this is resolved. closes #3761 # 4.0.11 ## Features - ([6ebee72](https://github.com/angular/protractor/commit/6ebee72088016085e93d268effabcbe0b3d0a70f)) feat(config): Add 'random' and 'seed' jasmine config options (#3467) ## Bug Fixes - ([2048182](https://github.com/angular/protractor/commit/2048182206e88dd4cde0e92cfac3ed97cbe38f15)) docs(timeout): Update timeout error message and docs (#3723) - ([f3938f9](https://github.com/angular/protractor/commit/f3938f9fcd1b91272f2f11d4d39e458576fb75b0)) fix(jvmArgs): fixes jvmArgs launching selenium from config (#3698) closes #3697 - ([21d534f](https://github.com/angular/protractor/commit/21d534fad28f84e8cef166348119387e49661227)) fix(types): Make element.then()'s signature more broad. (#3719) - ([e9061b3](https://github.com/angular/protractor/commit/e9061b30c3673344d776187682d1c735aaad69f7)) chore(types): make plugins.ts more strongly-typed (#3685) - ([f42e0b3](https://github.com/angular/protractor/commit/f42e0b3dc824404ac0c86364bf5de4b657cf30ea)) fix(globals): Resolve exported globals dynamically. (#3716) fixes #3677 - ([d7fa744](https://github.com/angular/protractor/commit/d7fa74464709c532d451fdead78bc57b21956784)) fix(util): Fix adding stack traces to Errors thrown as strings (#3687) ## Dependencies - ([a1c8a23](https://github.com/angular/protractor/commit/a1c8a23fea3542eabeae6e7bc59f3c2ffa0fda94)) chore(deps): Downgrade jasmine to 2.4.1 (#3715) Upgrading to 2.5.2 causes #3606. We'll need to wait on a fix for jasmine/jasmine-npm#95 before upgrading. # 4.0.10 ## Features - ([7083426](https://github.com/angular/protractor/commit/70834269ac375f2be5a6cadf8ec9169cf19abff6)) feat(hybrid): set ng12hybrid flag in the config (#3452) ## Bug Fixes - ([b67d8eb](https://github.com/angular/protractor/commit/b67d8eb4101ee80c53476d1640865ca612793436)) fix(restart): typescript fix for browser.restart (#3658) closes #3648 - ([6626ce7](https://github.com/angular/protractor/commit/6626ce7690e1120c3b246eff7793a26cb038b091)) fix(launcher) Ignore uncaught exceptions from webdriver. (#3608) - ([5cef1bf](https://github.com/angular/protractor/commit/5cef1bf20f88a2c3bb8944afbc6a328fc273aedd)) Explicitly remove newlines from getText() (#3618) MSEdge does not properly remove newlines, which causes false negatives when using `textToBePresentInElement()` ## Dependencies - ([c11945a](https://github.com/angular/protractor/commit/c11945a1b67bdc774b267f101887dc3f575ad00b)) deps(outdated): webdriver-manager and @types updated - webdriver-manager 10.2.6 uses the latest chromedriver, version 2.25 # 4.0.9 This version includes a breaking change to the TypeScript import statement. Please see the feature below. ## Features - ([5034c89](https://github.com/angular/protractor/commit/5034c89242794dd14aba294ba3468937e06a7b69)) feat(typescript): move typescript variable instances from protractor/… (#3565) Breaking change for TypeScript: Instead of importing globals like `browser` from `protractor/globals`, import from `protractor`. Before: ```ts import {browser, element} from 'protractor/globals'; import {ElementFinder} from 'protractor'; describe('my app', () => { myElement: ElementFinder; beforeEach(() => { browser.get('example.com'); myElement = element(by.css('foo')); }); }); ``` After ```ts import {browser, element, ElementFinder} from 'protractor'; describe('my app', () => { myElement: ElementFinder; beforeEach(() => { browser.get('example.com'); myElement = element(by.css('foo')); }); }); ``` Closes #3564 # 4.0.8 ## Bug Fixes - ([58459a9](https://github.com/angular/protractor/commit/58459a94b9e7a54f4b48614b93c0614177a8a522)) fix(types): do not publish built/globals.d.ts (#3546) - do not publish built/globals.d.ts - remove type interface for HttpProxyAgent and set to to any # 4.0.7 ## Dependencies - ([a68dd3f](https://github.com/angular/protractor/commit/a68dd3f0c6e33f93a5b7e9674197154b0e68cedd)) deps(jasmine): lower jasmine version down to 2.4.1 (#3540) - upgrading to 2.5.x no longer logs jasmine output # 4.0.6 ## Bug Fixes - ([d18bba3](https://github.com/angular/protractor/commit/d18bba3e288610dd606aac4b656581da0dc65491)) fix(types): remove relative path used for @types/node and @types/jasmine (#3535) ## Dependencies closes #3533 - ([4e7e8ec](https://github.com/angular/protractor/commit/4e7e8ec2c0a018e6159b557decee6b2df53958b5)) deps(outdated): update types/q and jasmine (#3525) ## Other - ([9d5edbe](https://github.com/angular/protractor/commit/9d5edbe315ea70aad1fd0a2eaeff3328a2f8ee93)) chore(node): require the minimum node version 4.2.x required by selenium-webdriver (#3534) # 4.0.5 In this version, there are several small changes that affect TypeScript users from the previous version 4.0.4. Here are some of the steps to resolve any transpiling errors: - In your package.json, use TypeScript 2.0.0. This will allow Protractor to use the `@types/node` and `@types/jasmine` installed in node\_modules. - Remove `jasmine` and `node` from your `typings.json` since these types are already included via `@types`. If these were the only ambient typings installed, remove the `typings.json` file. - If you still have a `typings.json` file, remove `typings` directory and install a fresh set of ambient typings with: `typings install`. ## Features - ([30102fb](https://github.com/angular/protractor/commit/30102fbdaa6354e8ba1a067c6731799aa0f0ff42)) feat(util): Allow more verbose logging with multiple sessions (#2985). (#3499) ## Bug fixes - ([c5cc75b](https://github.com/angular/protractor/commit/c5cc75b41bc1a860061a5da1c23b718d440815ed)) fix(logger): Set the log level based on the config at startup. (#3523) Fixes #3522. Also fix the mocha spec to stop yelling at us about ES6 arrow functions. - ([c7fff5e](https://github.com/angular/protractor/commit/c7fff5e9182c5a2a96b57f4f23889b5a5a13f44e)) fix(jasmine): Pass control flow to Jasminewd (#3519) Fixes #3505 and #2790, which is caused by JasmineWd and Protractor using different controlflow instances - ([64b4910](https://github.com/angular/protractor/commit/64b491034c0373755a2f34db5db1810b8d90187a)) fix(debugger): Fix issues when calling pause() multiple times (#3501) (#3504) - ([143c710](https://github.com/angular/protractor/commit/143c710b5612667c183eacc7e080b1e172d9f97e)) chore(types): webdriver typings for elements and browser (#3513) - include node and jasmine dependency to built/index.d.ts - update example and spec/install to not need @types/jasmine and @types/node to install - add more selenium-webdriver to gulp task - added an interface in globals for Error to include a code and stack - improve webdriver typings to elements and browser - ([8ca9833](https://github.com/angular/protractor/commit/8ca98339341434fcff500accd34acfe97b5840e1)) fix(mocha): Wrap it.only with the selenium adapter. (#3512) Fixes #3045. Since mocha 2.4.1, we should be wrapping global.it.only. - ([f23d027](https://github.com/angular/pro