UNPKG

172 kBMarkdownView Raw
1# 5.2.0
2
3## Fixes
4- ([f7e17f3](https://github.com/angular/protractor/commit/f7e17f348e738e1a594870d7ff735f2b7ea1853f))
5 fix(clientSideScripts): change protractor to support waiting for hybrid app (#4512)
6
7- ([4b7cada](https://github.com/angular/protractor/commit/4b7cada1317079c20ddf1bb105303e21adba6e32))
8 fix(sauce): bring back sauceProxy as a configuration option (#4419)
9
10- ([b87159b](https://github.com/angular/protractor/commit/b87159b3fcb379b85727a1beb6fd41a914235cf8))
11 fix(website): fix all locator examples to use `element` over `browser.findElement` (#4413)
12
13- ([768fd39](https://github.com/angular/protractor/commit/768fd393d1084a8da0ec6eeaa57508bf17519a3f))
14 fix(local): allow local driver provider to use gecko driver from config (#4412)
15
16- ([c0b8770](https://github.com/angular/protractor/commit/c0b8770ff1a508205b5cf38b5611918e20028fe3))
17 docs(website): fix issue 4246
18
19- ([f79938e](https://github.com/angular/protractor/commit/f79938e3d138c7bedc66f8c6748704402ea721c4))
20 docs(plugins): add ng-apimock plugin to plugins.md
21
22- ([ab1afb0](https://github.com/angular/protractor/commit/ab1afb093107f3a63f6e15f8f315e33576bb414d))
23 fix(blockingproxy): Start bpRunner strictly after setupDriverEnv
24
25- ([b85e7ee](https://github.com/angular/protractor/commit/b85e7ee1c53cdc4cfb23dc3d06d40317a27e50e7))
26 fix(npmignore): .map files in built directory cause stacktrace lines to nowhere Fixes #4371
27
28- ([299fc8d](https://github.com/angular/protractor/commit/299fc8d96b3e5daf632a1c584728214ababcebf8))
29 docs(browser-support): Fixed incorrect example
30
31- ([e5a5d59](https://github.com/angular/protractor/commit/e5a5d59fcabe15860b30944e714bbd8e81ceaeae))
32 docs(frameworks) align cucumberOpts comments
33
34- ([fe8c480](https://github.com/angular/protractor/commit/fe8c480bd860209cc68768de884d050cbf1a5b27))
35 docs(frameworks) update cucumber dry run option
36
37- ([2e9acf5](https://github.com/angular/protractor/commit/2e9acf58b76b553c558f56b6a38c161ad50324de))
38 docs(plugins) add protractor-numerator plugin to plugins.md
39
40- ([3f861ae](https://github.com/angular/protractor/commit/3f861ae069df98a06cfa1ede89f56a8d0ec9d5d2))
41 By.js locator should accept functions
42
43## Dependencies
44
45- ([0fbc2c0](https://github.com/angular/protractor/commit/0fbc2c0ac12992bd61712188a96aef6684bef0c1))
46 chore(release): update selenium-webdriverjs
47
48
49# 5.1.2
50
51## Features
52
53- ([dd2ccbb](https://github.com/angular/protractor/commit/dd2ccbb1b73b7c90647837cd1c4f6b16b3f6b0ac))
54 feat(saucelabs): Add Sauce Labs protocol customization support
55
56## Fixes
57
58- ([1a47076](https://github.com/angular/protractor/commit/1a47076875395648038a39fcd258a77bfcabe05c))
59 fix(ci): Use latest pip on CircleCI
60
61- ([fd59c78](https://github.com/angular/protractor/commit/fd59c78407ced4f17e1b4ed4451ce463439aa3c9))
62 fix(elementexplorer): Set script breakpoints with cross-platform safe paths.
63
64 Fixes #4011
65
66- ([1250278](https://github.com/angular/protractor/commit/12502784b306cbedca8684486c31eeb361da5897))
67 fix(cli): Correctly parse list chromeOptions
68
69 Chromedriver requires that certain options always be passed as an array. Optimist passes
70 --single-option as a string instead of an array which is invalid. This ensures that we always pass
71 an array, even if a single option is passed via the cli.
72
73 Fixes #4050
74
75- ([183cd80](https://github.com/angular/protractor/commit/183cd803254f7a3ccb3a8650e8ef06b4fff03446))
76 fix(browser): Fix browser.angularAppRoot()
77
78 By default, it wasn't returning anything. Now it returns a promise that resolves to
79 internalAngularAppRoot. Fixes #4233
80
81- ([bd534fb](https://github.com/angular/protractor/commit/bd534fb8b2dfaca9072914dc84ad662891a8c7b2))
82 fix: Add "stackTrace" option to allowedNames in cli.ts
83
84 This fixes a problem I encountered similar to #4196 - where `stackTrace` is listed as an option
85 but an error is given saying it's an "unknown extra flag"
86
87- ([8249167](https://github.com/angular/protractor/commit/82491678de71b43311ea68d496ff807e1c72ee5e))
88 fix: export Runner, not just its type. (#4227)
89
90- ([0eb5b76](https://github.com/angular/protractor/commit/0eb5b7608e4bfb770878fe443d97ed9aa426c070))
91 fix(navigation): ignore unknown JS errors in IE (#4149)
92
93 The `err` object doesn't have the `code` property any more (Selenium Server Standalone 3.3.1 +
94 IEDriver win32 3.3.0), so we need a new way to detect those errors. See #841
95- ([4752ad1](https://github.com/angular/protractor/commit/4752ad1287af536c6dd442dd8c74546f978627d9))
96 chore(examples): Fix TSC issues with exampleTypescript (#4132)
97
98
99## Dependencies
100
101- ([a0a1fac](https://github.com/angular/protractor/commit/a0a1fac8568f2bfbd6d5721db438aed390e30d23))
102 chore(deps): Updating webdriver-manager and jasminewd2
103
104
105# 5.1.1
106
107## Features
108
109- ([3edd62e](https://github.com/angular/protractor/commit/3edd62eccccb67ec7cb71b8c3d8b2c2921a6f7ca))
110 feat(saucelabs): Add Sauce Labs HTTPS Support (#4071)
111
112- ([29f975a](https://github.com/angular/protractor/commit/29f975a34f5885a21525c3746bd3e82d5ae0c51e))
113 feat(plugins): allow plugins to know which browser instance to run against (#4066)
114
115 Closes https://github.com/angular/protractor/issues/4054
116
117## Dependencies
118
119- ([9d69a81](https://github.com/angular/protractor/commit/9d69a819c96e408df2b59589d49811a89af1bc74))
120 deps(typescript): use typescript@~2.0.0 (#4062)
121
122 - move noCF tests to install and fix reference to protractor
123 - changed element.ts to not use keyof
124 - remove gulp task tsc:spec
125
126# 5.1.0
127
128#### Blocking proxy
129
130Blocking Proxy is a new experimental feature in Protractor 5 and is behind the
131`--useBlockingProxy` or `blockingProxyUrl`. See the
132[lib/config.ts#L100](https://github.com/angular/protractor/blob/master/lib/config.ts#L100).
133Other ways to start blocking proxy include using the
134`--highlightDelay` and `--webDriverLogDir` flags See [lib/config.ts#L501](https://github.com/angular/protractor/blob/master/lib/config.ts#L501).
135
136This adds two options, both of which are implemented with Blocking
137Proxy. `--webDriverLogDir` will create a readable log with timing
138information of webdriver commands in the specified directory.
139
140`--highlightDelay` will pause before clicking on elements or sending keys.
141While paused, the element that's about to be affected will be
142highlighted.
143
144#### Webdriver-manager
145
146Webdriver-manager will now by default grab the latest versions of all binaries
147(standalone, chromedriver, iedriver, gecko driver). Use the
148`--versions.(binary name)` to pin to a specific version. Selenium standalone
1493.0.1 has a bug which prevents it from working with any version of FireFox.
150We have tested version 3.0.0-beta4 and know that it works with
151FireFox 51, and we expect that the 3.0.2 release will also work.
152
153#### TypeScript support
154
155For jasmine users, in order to get all the type declarations that are used in
156jasminewd2, you'll need to install `@types/jasminewd2` in addition to
157`@types/jasmine` as dev dependencies.
158
159## Features
160
161- ([0cd156d](https://github.com/angular/protractor/commit/0cd156d6829f23f93403d865b7fdb7eab4f45446))
162 feat(debugging): Add webdriver logging and highlight delay. (#4039)
163
164 This adds two options, both of which are implemented with Blocking
165 Proxy. --webDriverLogDir will create a readable log with timing
166 information of webdriver commands in the specified directory.
167
168 --highlightDelay will pause before clicking on elements or sending keys.
169 While paused, the element that's about to be affected will be
170 highlighted.
171
172- ([3d98a16](https://github.com/angular/protractor/commit/3d98a1668138d36681bf305c9ea67dd1eea38899))
173 feat(config): Support setting `SELENIUM_PROMISE_MANAGER` flag via the config (#4023)
174
175 Closes https://github.com/angular/protractor/issues/3691
176- ([4e40fb1](https://github.com/angular/protractor/commit/4e40fb175e64820bbab24efb376dac80fa6ba2b0))
177 feat(browser): chain promises in `browser.get` (#4017)
178
179 Closes https://github.com/angular/protractor/issues/3904
180- ([33393ca](https://github.com/angular/protractor/commit/33393cad633e6cb5ce64b3fc8fa5e8a9cae64edd))
181 feat(browser): chain some promises in `lib/browser.ts` + return promise from
182 `waitForAngularEnabled` (#4021)
183
184 Minor breaking change since `waitForAngularEnabled` no longer returns a boolean
185 Part of angular#3904
186 Chaining `browser.get` has proved surprisingly complex, so I'll do that in a different PR
187 Also fixed a minor bug in `lib/clientsidescripts.js` while debuging
188- ([7cb9739](https://github.com/angular/protractor/commit/7cb9739954bc26f0667d671cdb0083f5bd43f2f6))
189 feat(browser.ready): make `browser.ready` wait for all async setup work (#4015)
190
191 Closes https://github.com/angular/protractor/issues/3900
192- ([b77cb92](https://github.com/angular/protractor/commit/b77cb928301fbe4f77ffcdcace424a490581416e))
193 feat(restart): `browser.restart` should return a promise (#4008)
194
195 Also allows `browser.restart` to work when the control flow is disabled, and
196 fixes it for forked browsers.
197
198 Closes #3899 and #3896
199 https://github.com/angular/protractor/issues/3896
200
201- ([4a59412](https://github.com/angular/protractor/commit/4a59412357eb5df592b06dd282d88d6dbc5e4771))
202 feat(angularAppRoot): Replace rootEl with browser.angularAppRoot() (#3996)
203
204 Replace browser.rootEl with browser.angularAppRoot(), which changes the root element in a promise
205 on the control flow. Note that browser.rootEl will immediately return the current value, but
206 browser.angularAppRoot() will return a promise that resolves during the next step in the control
207 flow.
208
209 Also update to BlockingProxy 0.0.3, which allows changing rootSelector.
210
211- ([879aac6](https://github.com/angular/protractor/commit/879aac6ee6c1c36d005b538472e2754b987b3368))
212 chore(blockingproxy): Allow using a pre-existing Blocking Proxy instance (#3970)
213
214- ([bf123ad](https://github.com/angular/protractor/commit/bf123adafc442440b2ca10725113b47342ebb24f))
215 feat(elements): Add isPresent() to ElementArrayFinder. (#3974)
216
217## Bug Fixes
218
219- ([f9bee84](https://github.com/angular/protractor/commit/f9bee84bc03b6cd6872522b8780327423b789e19)) fix(restart): preserve waitForAngularEnabled on restart and add promise chaining
220
221 I noticed I missed `waitForAngularEnabled` in #4037. This commit fixed that.
222
223 While I was at it I fixed a minor error where the promises implicitly created by
224 setting `rootEl` and `ignoreSynchronization` weren't getting chained properly.
225
226 Also fixed minor (so minor I think it was impossible to trigger) where
227 browser.plugins_ could be undefined.
228
229- ([0b0c224](https://github.com/angular/protractor/commit/0b0c224e4056368c2c0030064b4ca4235163276b))
230 fix(plugins): do not force ManagedPromise in plugins.ts (#4036)
231
232- ([9c2274d](https://github.com/angular/protractor/commit/9c2274d8f218cabc946dbc6a11d725458c1b4e3a))
233 fix(restart): preserve properties like `browser.baseUrl` upon restart (#4037)
234
235 I also fixed a minor issue where `internalRootEl` wasn't being set when blocking proxy was being
236 used. I also just cleaned up our internal uses of `this.rootEl`.
237
238 Closes #4032
239
240- ([a20c7a7](https://github.com/angular/protractor/commit/a20c7a7cc1df04f96cb1a9dd971df39883ac173b))
241 fix(element chaining): make element chaining work when the control flow is disabled (#4029)
242
243 Also added some tests to `spec/ts/noCF/smoke_spec.ts` double checking that the control flow is off
244
245- ([7481dee](https://github.com/angular/protractor/commit/7481dee75cab1da9d207909e928eee55a9f5a682))
246 fix(cli): Make unknown flag check a warning instead of an error. (#4028)
247
248- ([40bbeca](https://github.com/angular/protractor/commit/40bbeca003017901760e10831c66d383cf5accf8))
249 fix(expectedConditions): Add tests and fix race conditions around visibility (#4006)
250
251 Add test cases to reproduce the missing element race conditions possible in
252 expected condition methods `visibilityOf`, `textToBePresentInElement`,
253 `textToBePresentInValue` and `elementToBeClickable`.
254
255 Add error handler `falseIfMissing` to all expected conditions that depend
256 on the presence of an element.
257
258 Expected conditions check the presence of an element before other checks,
259 but when an element is removed exactly in the moment after the `isPresent`
260 and before `isDisplayed` in `visibilityOf` the condition used to fail.
261
262 This solution does not handle missing elements in (`isEnable`, `isDisplayed`,
263 `isSelected`) and focused only on expected conditions (see #3972)
264
265 This problem was also referenced in #3578 and #3777
266
267- ([5856037](https://github.com/angular/protractor/commit/5856037368ee8d8a21f11eadbfe93d5f46507f60))
268 fix(cli): Allow frameworks to specify flags they recognize. (#3994)
269
270 Fix for #3978.
271 Our initial plan to allow setting --disableChecks with an environment variable is insufficient,
272 since the custom framework isn't even require()'d until after the config is parsed. This moves the
273 unknown flag check into the runner, and gives frameworks a way to specify extra flags they accept.
274- ([e68dcf1](https://github.com/angular/protractor/commit/e68dcf1bfd7f32c59ebd23fa16ca53e1a53f8ddf))
275 fix(driverProviders): Check config in the right place. (#3991)
276
277- ([eb89920](https://github.com/angular/protractor/commit/eb899208457f83853f043edea5e56b07e87803bc))
278 fix(driverProviders): Handle promise rejection when starting selenium (#3989)
279
280 Fixes #3986. Also error if jvmArgs isn't an array.
281
282- ([8d2fc07](https://github.com/angular/protractor/commit/8d2fc07ed28a1b19c03a9869442f76f2963e40a1))
283 chore(browser): deprecate `browser.getLocationAbsUrl()`. (#3969)
284
285 Closes #3185
286- ([15a1872](https://github.com/angular/protractor/commit/15a187204bb8b87255d5f4622094eabc71206315))
287 fix(firefox): Fix directConnect for Firefox 51+ (#3953)
288
289- ([81f56a4](https://github.com/angular/protractor/commit/81f56a449f8988feba21617ef7533cfa2f06c6f8))
290 fix(cli): display disableChecks option in extra flags error message (#3964)
291
292- ([6a4dc7a](https://github.com/angular/protractor/commit/6a4dc7a6a5b796e0215e5b9abf99494ac13cb647))
293 fix: no longer use es6 let statement (#3963)
294
295 * Currently in Protractor v5 the Angular detection script uses ES6 features like the `let` modifier.
296
297 This can break Protractor on browsers, which doesn't support those statements.
298 > See https://saucelabs.com/beta/tests/275f75091dac40a0a3374d29d912caee/commands#11
299
300- ([528338c](https://github.com/angular/protractor/commit/528338c6722219fdcfc51153b0031a02f0fce046))
301 fix(expectedCondition): fix NoSuchElementError in visibilityOf due to a race condition (#3777)
302
303 Handle NoSuchElementError in the expected condition visibilityOf, which occurred when
304 an element disappears between the isPresent() and isDisplayed() check.
305
306## Dependencies
307
308- ([5899b67](https://github.com/angular/protractor/commit/5899b676bc2db0005506ae2306350e6ffea3c808))
309 deps(update): update webdriver-manager to ^12.0.1 (#4042)
310
311 Running `webdriver-manager update` will now by default grab the latest
312 versions of all binaries (standalone, chromedriver, iedriver, gecko
313 driver). You can continue to pin to a specific versions using the
314 command line option. Example `webdriver-manager update --versions.chrome 2.20`.
315 As of this release the latest versions are:
316
317 - gecko v0.14.0
318 - selenium-standalone 3.0.1 is the latest jar file; however, we recommend 3.0.0-beta4. See note
319 below on Firefox support.
320 - chromedriver 2.27
321 - iedriver 3.0.0
322
323 A note on FireFox support: Selenium standalone 3.0.1 has a bug which prevents it from working
324 with any version of FireFox. We have tested version 3.0.0-beta4 and know that it works with
325 FireFox 51, and we expect that the 3.0.2 release will also work.
326
327 closes #4033
328
329- ([cd084a0](https://github.com/angular/protractor/commit/cd084a0ca29cd73aa3ce1650188adf7ddfdb7962))
330 deps(jasmine): update jasmine to ^2.5.3 (#3960)
331
332# 5.0.0
333
334This version includes big changes around upgrading to selenium-webdriver 3.0.x.
335See the [selenium-webdriver changelog](https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md).
336
337For the 5.0.0 release, we are still using the selenium standalone server 2.53.1
338and recommend using Firefox 47. Firefox 48+ currently is not supported.
339
340## Breaking Changes
341
342- Minimum node version is now 6.9.x.
343- When testing with Firefox 47, use the capability option `marionette: false`
344 to use the legacy Firefox driver.
345
346 Before:
347 ```
348 capabilities: {
349 browserName: 'firefox'
350 }
351 ```
352
353 After:
354 ```
355 capabilities: {
356 browserName: 'firefox',
357 marionette: false
358 }
359 ```
360
361- We moved `@types/jasmine` to a devDependency. This means that Jasmine
362 TypeScript users will need to include the `@types/jasmine` as a project
363 dependency. This is to avoid conflicts for users that prefer mocha typings.
364
365 After:
366 ```
367 "dependencies": {
368 "@types/jasmine": "^2.5.38"
369 }
370 ```
371
372- Selenium-webdriver methods removed: `WebDriver.prototype.isElementPresent`,
373 `WebElement.prototype.getRawId`, `WebElement.prototype.getInnerHtml`, and
374 `WebElement.prototype.getOuterHtml`.
375
376 Before:
377 ```
378 let isPresent = browser.driver.isElementPresent(By.tagName('a'));
379 let i = element(locator).getInnerHtml();
380 let o = element(locator).getOuterHtml();
381 ```
382
383 After:
384 ```
385 let isPresent = element(By.tagName('a')).isPresent();
386 let i = browser.executeScript("return arguments[0].innerHTML;", element(locator));
387 let o = browser.executeScript("return arguments[0].outerHTML;", element(locator));
388 ```
389
390- Selenium-webdriver `ErrorCodes` have been removed.
391- Adding cookies have been changed:
392
393 Before:
394 ```
395 browser.manage().addCookie('testcookie', 'Jane-1234');
396 ```
397
398 After:
399 ```
400 browser.manage().addCookie({name:'testcookie', value: 'Jane-1234'});
401 ```
402- Removed `protractor.wrapDriver()`.
403- You can no longer use `repl` command from within `browser.pause()`. Instead,
404 use `browser.explore()` to directly enter the `repl`.
405- Sending flags that are not recognized by the CLI throws an error. Since flags
406 are a subset of all configuration options, these errors can be silenced with
407 `--disableChecks`.
408- Auto-detection of the root element. This is a breaking change because it
409 changes the default root element behavior and removes the
410 `config.useAllAngular2AppRoots` flag. Modern angular apps now
411 default to using all app hooks, and ng1 apps now check several places, notably
412 the element the app bootstraps to.
413- `sauceProxy` configuration field has been removed. Use `webDriverProxy`
414 instead.
415
416 Before:
417 ```
418 sauceProxy: 'http://sauceProxy'
419 ```
420
421 After:
422 ```
423 webDriverProxy: 'http://sauceProxy'
424 ```
425
426## Features
427
428- ([ec93c4a](https://github.com/angular/protractor/commit/ec93c4ab882991410ad9d3f52d87c0f5ec947641))
429 chore(cli): **breaking change** throw errors on unknown flags (#3921)
430
431 Unknown flags are options sent that is unrecognized by the CLI. For users that
432 encounter this error but would like to silence it, use: `--disableChecks`.
433
434 closes #3216
435- ([bc58332](https://github.com/angular/protractor/commit/bc583321a233453fc2b89472013b2ec3e1d6b6f9))
436 feat(rootEl): ***breaking change*** auto-detect the root element better (#3928)
437
438 This is a breaking change because it changes the default root element behavior
439 and removes the `config.useAllAngular2AppRoots` flag. Modern angular apps now
440 default to using all app hooks, and ng1 apps now check several places, notably
441 the element the app bootstraps to.
442
443 closes #1742
444- ([604fdbf](https://github.com/angular/protractor/commit/604fdbf064cc2785a2e745747beeaeb45d27f8ed))
445 cleanup(config): **breaking change** Remove redundant sauceProxy config (#3868)
446
447 Removes the `sauceProxy` config field, and uses `webDriverProxy` when creating
448 the SauceLabs client.
449- ([9465b9f](https://github.com/angular/protractor/commit/9465b9f1e667c9590e05d9ddac16fe5143aa93af))
450 feat(mobile): add extended wd commands for appium (#3860)
451
452 Also had to make some minor changes to the website to handle longer inheritance
453 chains
454 Closes https://github.com/angular/protractor/issues/1940
455- ([0e26b21](https://github.com/angular/protractor/commit/0e26b218d5f385dd9871a40553acc174cfdfe26d))
456 feat(blockingproxy): Add synchronization with BlockingProxy. (#3813)
457
458 This adds support for BlockingProxy behind the flag --useBlockingProxy.
459
460 If set, the driver providers will start a proxy during their setup phase,
461 passing the selenium address to the proxy and starting a webdriver client
462 that talks to the proxy.
463
464 Starting a proxy for each driver provider isn't strictly necessary. However,
465 when we run with multiple capabilities it's easier to handle the logging if
466 each Protractor instance has it's own proxy.
467
468 Known issues:
469
470 - Doesn't work with directConnect. You can get the address of chromedriver by
471 mucking around in Selenium internals, but this probably changed for Selenium
472 3.0 and I doubt it's worth figuring out until we upgrade.
473 - Doesn't yet work with webDriverProxy (but it's an easy fix)
474
475- ([ca4f1ac](https://github.com/angular/protractor/commit/ca4f1acda3672942307d0f102d586c8889dd3d68))
476 chore(driverProviders): add warnings to extra driver provider parameters (#3873)
477
478 - builds the driver provider in lib/driverProviders/index instead of lib/runner
479 closes #1945
480
481- ([681b54a](https://github.com/angular/protractor/commit/681b54a21ee1467d5a95c3693cde148759767d62))
482 refactor(browser): Remove protractor.wrapDriver() **breaking change** (#3827)
483
484 Before:
485
486 Users could create their own selenium driver instance and enable Protractor on
487 it like so:
488
489 ```js
490 let capabilities = webdriver.Capabilities.chrome();
491 let driver = new webdriver.Builder().usingServer(seleniumAddress)
492 .withCapabilities(capabilities).build();
493 let browser = protractor.wrapDriver(driver);
494 ```
495
496 Over the years, wrapDriver() has become increasingly broken as Protractor
497 needs extra configuration options that wrapDriver() doesn't set.
498
499 After:
500
501 This method is removed. If users need a new browser instance, they can
502 use `browser.forkNewDriverInstance()`.
503
504- ([86fd569](https://github.com/angular/protractor/commit/86fd56917f039efbff8e6f323f4d91fa8bc821a4))
505 feat(ngUpgrade): Auto detect ngUpgrade apps and make the ng12Hybrid flag
506 unnecessary for most users (#3847)
507
508
509## Bug fixes
510
511- ([de153e7](https://github.com/angular/protractor/commit/de153e769292f6b9a99b2d5152bd2929ab1c48af))
512 fix(launcher): running getMultiCapabilities should reject on errors (#3876)
513
514 closes #3875
515- ([1345137](https://github.com/angular/protractor/commit/1345137dc5173e868de4b9da6ed16b7928e4c50e))
516 fix(isElementPresent): for un-wrapped `WebElement`s, `browser.isElementPresent`
517 was broken (#3871)
518
519 Closes #3864
520- ([4af3b2e](https://github.com/angular/protractor/commit/4af3b2e30e925ea9d8e47537ea0a7fe8f04b579d))
521 fix(element): Fix typing of ElementFinder.then (#3835)
522
523 Type `then` as optional on ElementFinder.
524
525
526## Dependencies
527- ([4d87c9c](https://github.com/angular/protractor/commit/4d87c9c20d6905189c0e7ea7214cf3e87c8efe91))
528 deps(update): update tslint and @types/selenium-webdriver (#3941)
529
530 - use @types/selenium-webdriver ~2.53.39
531 - fix for tslint
532
533 closes #3939
534- ([7376708](https://github.com/angular/protractor/commit/7376708c723976ef8a0a3ad7c245606bef1221db))
535 deps(tslint): set tslint to ~4.2 (#3938)
536- ([cb38ed0](https://github.com/angular/protractor/commit/cb38ed0a8aae2cb862001e0b6f076aa9972f4489))
537 Refactor element explorer to work with selenium-webdriver 3 (#3828)
538
539 This implementation now relies mostly on promises explicitly, so the control
540 flow is only used to add one large task to the queue. This should pave the way
541 for the eventual removal of the control flow, as well as getting element
542 explorer to work immediately.
543
544 BREAKING CHANGE
545
546 You can no longer use the `repl` command from within `browser.pause()`. Instead,
547 use `browser.explore()` to directly enter the repl.
548- ([8196059](https://github.com/angular/protractor/commit/819605933d2dfef70b4332a727b3b3830e306817))
549 chore(dependency): switch to webdriver-manager 11.1.0 and remove
550 `--versions.chrome 2.26` from circle.yml (#3865)
551- ([397bf65](https://github.com/angular/protractor/commit/397bf65e088b640cf3612f9da678180f49939b84))
552 deps(update): move @types/jasmine to devDependencies (#3795)
553
554 - update outdated dependencies
555 - move @types/jasmine to devDependencies
556 closes #3792
557- ([a3e8b43](https://github.com/angular/protractor/commit/a3e8b4319d3e8b049e55e5c3c64a7fdb5a132ddf))
558 deps(selenium-webdriver): upgrade to selenium 3 (#3781)
559
560 Please see the [selenium-webdriver changelog](https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md)
561
562 - Removed method `WebDriver.prototype.isElementPresent`
563 - Removed method `WebElement.prototype.getRawId`
564 - Removed `getInnerHtml` and `getOutterHtml`
565
566 - Dependency required for upgrade: use `jasminewd2@0.1.0`.
567 - Selenium-webdriver requires node version 6+, updating travis and circle yml
568 to use node 6 and 7.
569
570 - Use `instanceof` selenium-webdriver error instead of error code.
571 Selenium-webdriver error codes have been deprecated.
572
573 - Use executor with selenium-webdriver from `lib/http`. Deferred executor has
574 been deprecated.
575 - Fix quitting `driverProviders`. When calling `webdriver.quit`, the control
576 flow is shutdown and will throw an error.
577 - Driver provider for direct connect has been modified to use `ServiceBuilder`
578 and to call the `Service` to `createSession`
579 - Note: Since this upgrade is still using FF 47, direct connect for Firefox is
580 required to pass "marionette: false" in the capabilities. If you do not pass
581 marionette to false, it will look for gecko driver in the PATH.
582 - Added a TODO to support FF after 48+ with direct connect and gecko driver.
583
584 - Updated `browser.manage().addCookie('testcookie', 'Jane-1234');` to use
585 `browser.manage().addCookie({name:'testcookie', value: 'Jane-1234'});`
586
587 - Updated debug commons for breakpoint updated to selenium-webdriver
588 `lib/http` line 432.
589
590 - For mocha tests, `selenium-webdriver/testing` uses the global `it` and
591 cannot be reassigned as Protractor's global `it`. Some code has been
592 copied / modified to `lib/frameworks/mocha` to make this work.
593
594 - Capabilities for Firefox 47 requires setting marionette to false.
595 - Setup still requires selenium standalone server 2.53.1 for Firefox tests.
596 Firefox version used is 47.
597 - Using selenium standalone server 3, with Firefox 48+ tests fail with gecko
598 driver still do not work.
599 - Selenium standalone 3 + FF 49 + gecko driver 0.11.1 does not work
600 - Selenium standalone 3 + FF 48 + gecko driver 0.11.1 appears to work for a
601 single test but after it quits, selenium standalone no longer works with
602 firefox. When firefox 48 exists, logs show the following:
603
604 ```
605 20:01:14.814 INFO - Executing: [delete session: e353fa1b-e266-4ec3-afb3-88f11a82473a])
606 [GFX1-]: Receive IPC close with reason=AbnormalShutdown
607 [Child 30665] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-rel-m64-00000000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 2052
608 [Child 30665] ###!!! ABORT: Aborting on channel error.: file /builds/slave/m-rel-m64-00000000000000000000/build/src/ipc/glue/MessageChannel.cpp, line 2052
609 ```
610- ([eb31c9c](https://github.com/angular/protractor/commit/eb31c9c7755399bcd01630158d900e0b940e9c31))
611 deps(types): update @types/selenium-webdriver dependency (#3886)
612
613 Fixes issue #3879 and adds the protractor.Key.chord method
614
615# 4.0.14
616
617## Bug Fixes
618
619- ([83694f5](https://github.com/angular/protractor/commit/83694f5e66592c5e229db98af3733ff73dac8392))
620 fix(types): update for selenium-webdriver types creating transpile errors (#3848)
621
622 - pin package.json to a specific version of @types/selenium-webdriver
623
624- ([ea09be4](https://github.com/angular/protractor/commit/ea09be4ff0750d1d0873677fac9055a9acb630b3))
625 fix(jasmine): Return the full test name in Jasmine test results. (#3842)
626
627 Fixes #3510
628
629- ([76cb4b4](https://github.com/angular/protractor/commit/76cb4b4c2ac892f9785dc1506cbc0b490eea91fe))
630 fix(element): Fix typing of then function (#3785)
631
632- ([5a12d69](https://github.com/angular/protractor/commit/5a12d69f34fd80234455bbe6457e125a27a07e54))
633 fix(config): cucumberOpts.require should be an optional Array of strings (#3817)
634
635 - Both cucumber options require and format now support `string` or `string[]` see #3822 #3817
636 - Remove no longer available options and fix `dryRun` type
637 - Update comment for `dryRun`
638
639## Features
640
641- ([b337a8e](https://github.com/angular/protractor/commit/b337a8e8547af0b90663a35b07fd30b55ff61dd0))
642 feat(config): add seleniumServerStartTimeout (#3791)
643
644## Dependencies
645
646- ([688f5d6](https://github.com/angular/protractor/commit/688f5d6a089275ac99688196cd66f345c64adfec))
647 deps(update): update vrsource-tslint-rules and webdriver-manager (#3856)
648
649- ([c437fd3](https://github.com/angular/protractor/commit/c437fd3315278e7536a8385a9769e4fbd954d0a6))
650 deps(selenium-webdriver): clean up types selenium-webdriver (#3854)
651
652
653# 4.0.13
654
655## Bug Fix
656
657- ([c3978ec](https://github.com/angular/protractor/commit/c3978ec166760ac07db01e700c4aaaa19d9b5c38))
658 fix(revert): element(locator).then should not appear in the docs and change reverted. (#3808)
659
660 - change comments to not be in JSDoc format
661 - reverts change `element(locator).then`
662
663# 4.0.12
664
665## Bug Fixes
666
667- ([742f264](https://github.com/angular/protractor/commit/742f26465ca926c39bf28f03390a45030c15acf3))
668 fix(driverProviders): quit forked instances w/ local driver provider (#3787)
669
670 - fix driver provider quit session to not throw error and quit
671 - should fix sauce labs test, enabling expected conditions test with forked instance
672 - checked that chromedriver does not persist in the background
673 - add local driver test with forked instance to test suite
674 - organize attach session and local specs to driverProviders directory
675 closes #3780, closes #3779, closes #3772
676- ([7d481d6](https://github.com/angular/protractor/commit/7d481d6886b39cb476b889de5d14186bda6dc066))
677 fix(ExpectedConditions): non-static ExpectedConditions for browser (#3766)
678
679 - Update sauce lab binary to run on travis.
680 - Disable expected conditions test that forks the browser. This issue appears to
681 not be specific to sauce labs. Also can reproduce this with a local driver
682 provider. Additional work is required around driver providers and the runner.
683 - Add TODO to enable test in the future when this is resolved.
684 closes #3761
685
686# 4.0.11
687
688## Features
689
690- ([6ebee72](https://github.com/angular/protractor/commit/6ebee72088016085e93d268effabcbe0b3d0a70f))
691 feat(config): Add 'random' and 'seed' jasmine config options (#3467)
692
693## Bug Fixes
694
695- ([2048182](https://github.com/angular/protractor/commit/2048182206e88dd4cde0e92cfac3ed97cbe38f15))
696 docs(timeout): Update timeout error message and docs (#3723)
697
698- ([f3938f9](https://github.com/angular/protractor/commit/f3938f9fcd1b91272f2f11d4d39e458576fb75b0))
699 fix(jvmArgs): fixes jvmArgs launching selenium from config (#3698)
700
701 closes #3697
702
703- ([21d534f](https://github.com/angular/protractor/commit/21d534fad28f84e8cef166348119387e49661227))
704 fix(types): Make element.then()'s signature more broad. (#3719)
705
706- ([e9061b3](https://github.com/angular/protractor/commit/e9061b30c3673344d776187682d1c735aaad69f7))
707 chore(types): make plugins.ts more strongly-typed (#3685)
708
709- ([f42e0b3](https://github.com/angular/protractor/commit/f42e0b3dc824404ac0c86364bf5de4b657cf30ea))
710 fix(globals): Resolve exported globals dynamically. (#3716)
711
712 fixes #3677
713
714- ([d7fa744](https://github.com/angular/protractor/commit/d7fa74464709c532d451fdead78bc57b21956784))
715 fix(util): Fix adding stack traces to Errors thrown as strings (#3687)
716
717## Dependencies
718
719- ([a1c8a23](https://github.com/angular/protractor/commit/a1c8a23fea3542eabeae6e7bc59f3c2ffa0fda94))
720 chore(deps): Downgrade jasmine to 2.4.1 (#3715)
721
722 Upgrading to 2.5.2 causes #3606. We'll need to wait on a fix for jasmine/jasmine-npm#95 before
723 upgrading.
724
725# 4.0.10
726
727## Features
728
729- ([7083426](https://github.com/angular/protractor/commit/70834269ac375f2be5a6cadf8ec9169cf19abff6))
730 feat(hybrid): set ng12hybrid flag in the config (#3452)
731
732## Bug Fixes
733
734- ([b67d8eb](https://github.com/angular/protractor/commit/b67d8eb4101ee80c53476d1640865ca612793436))
735 fix(restart): typescript fix for browser.restart (#3658)
736
737 closes #3648
738
739- ([6626ce7](https://github.com/angular/protractor/commit/6626ce7690e1120c3b246eff7793a26cb038b091))
740 fix(launcher) Ignore uncaught exceptions from webdriver. (#3608)
741
742
743- ([5cef1bf](https://github.com/angular/protractor/commit/5cef1bf20f88a2c3bb8944afbc6a328fc273aedd))
744 Explicitly remove newlines from getText() (#3618)
745
746 MSEdge does not properly remove newlines, which causes false negatives when using
747 `textToBePresentInElement()`
748
749## Dependencies
750
751- ([c11945a](https://github.com/angular/protractor/commit/c11945a1b67bdc774b267f101887dc3f575ad00b))
752 deps(outdated): webdriver-manager and @types updated
753
754 - webdriver-manager 10.2.6 uses the latest chromedriver, version 2.25
755
756# 4.0.9
757
758This version includes a breaking change to the TypeScript import statement.
759Please see the feature below.
760
761## Features
762
763- ([5034c89](https://github.com/angular/protractor/commit/5034c89242794dd14aba294ba3468937e06a7b69))
764 feat(typescript): move typescript variable instances from protractor/… (#3565)
765
766 Breaking change for TypeScript:
767 Instead of importing globals like `browser` from `protractor/globals`,
768 import from `protractor`.
769
770 Before:
771
772 ```ts
773 import {browser, element} from 'protractor/globals';
774 import {ElementFinder} from 'protractor';
775
776 describe('my app', () => {
777 myElement: ElementFinder;
778
779 beforeEach(() => {
780 browser.get('example.com');
781 myElement = element(by.css('foo'));
782 });
783 });
784 ```
785
786 After
787
788 ```ts
789 import {browser, element, ElementFinder} from 'protractor';
790
791 describe('my app', () => {
792 myElement: ElementFinder;
793
794 beforeEach(() => {
795 browser.get('example.com');
796 myElement = element(by.css('foo'));
797 });
798 });
799 ```
800
801 Closes #3564
802
803# 4.0.8
804
805## Bug Fixes
806
807- ([58459a9](https://github.com/angular/protractor/commit/58459a94b9e7a54f4b48614b93c0614177a8a522))
808 fix(types): do not publish built/globals.d.ts (#3546)
809
810 - do not publish built/globals.d.ts
811 - remove type interface for HttpProxyAgent and set to to any
812
813# 4.0.7
814
815## Dependencies
816
817- ([a68dd3f](https://github.com/angular/protractor/commit/a68dd3f0c6e33f93a5b7e9674197154b0e68cedd))
818 deps(jasmine): lower jasmine version down to 2.4.1 (#3540)
819
820 - upgrading to 2.5.x no longer logs jasmine output
821
822# 4.0.6
823
824## Bug Fixes
825
826- ([d18bba3](https://github.com/angular/protractor/commit/d18bba3e288610dd606aac4b656581da0dc65491))
827 fix(types): remove relative path used for @types/node and @types/jasmine (#3535)
828
829
830## Dependencies
831
832 closes #3533
833- ([4e7e8ec](https://github.com/angular/protractor/commit/4e7e8ec2c0a018e6159b557decee6b2df53958b5))
834 deps(outdated): update types/q and jasmine (#3525)
835
836## Other
837
838- ([9d5edbe](https://github.com/angular/protractor/commit/9d5edbe315ea70aad1fd0a2eaeff3328a2f8ee93))
839 chore(node): require the minimum node version 4.2.x required by selenium-webdriver (#3534)
840
841# 4.0.5
842
843In this version, there are several small changes that affect TypeScript users
844from the previous version 4.0.4. Here are some of the steps to resolve any
845transpiling errors:
846
847- In your package.json, use TypeScript 2.0.0. This will allow Protractor to use
848 the `@types/node` and `@types/jasmine` installed in node\_modules.
849- Remove `jasmine` and `node` from your `typings.json` since these types are
850 already included via `@types`. If these were the only ambient typings
851 installed, remove the `typings.json` file.
852- If you still have a `typings.json` file, remove `typings` directory and
853 install a fresh set of ambient typings with: `typings install`.
854
855## Features
856
857- ([30102fb](https://github.com/angular/protractor/commit/30102fbdaa6354e8ba1a067c6731799aa0f0ff42))
858 feat(util): Allow more verbose logging with multiple sessions (#2985). (#3499)
859
860## Bug fixes
861
862- ([c5cc75b](https://github.com/angular/protractor/commit/c5cc75b41bc1a860061a5da1c23b718d440815ed))
863 fix(logger): Set the log level based on the config at startup. (#3523)
864
865 Fixes #3522. Also fix the mocha spec to stop yelling at us about ES6 arrow functions.
866
867- ([c7fff5e](https://github.com/angular/protractor/commit/c7fff5e9182c5a2a96b57f4f23889b5a5a13f44e))
868 fix(jasmine): Pass control flow to Jasminewd (#3519)
869
870 Fixes #3505 and #2790, which is caused by JasmineWd and Protractor using different controlflow
871 instances
872
873- ([64b4910](https://github.com/angular/protractor/commit/64b491034c0373755a2f34db5db1810b8d90187a))
874 fix(debugger): Fix issues when calling pause() multiple times (#3501) (#3504)
875
876- ([143c710](https://github.com/angular/protractor/commit/143c710b5612667c183eacc7e080b1e172d9f97e))
877 chore(types): webdriver typings for elements and browser (#3513)
878
879 - include node and jasmine dependency to built/index.d.ts
880 - update example and spec/install to not need @types/jasmine and @types/node to install
881 - add more selenium-webdriver to gulp task
882 - added an interface in globals for Error to include a code and stack
883 - improve webdriver typings to elements and browser
884
885- ([8ca9833](https://github.com/angular/protractor/commit/8ca98339341434fcff500accd34acfe97b5840e1))
886 fix(mocha): Wrap it.only with the selenium adapter. (#3512)
887
888 Fixes #3045. Since mocha 2.4.1, we should be wrapping global.it.only.
889
890- ([f23d027](https://github.com/angular/protractor/commit/f23d0277e8796fef4b4679043d52009149e22ce9))
891 chore(types): webdriver typings for locators (#3507)
892
893 - temporarily add typings for selenium-webdriver.d.ts
894 - include selenium-webdriver dependency to built/index.d.ts
895 - add webdriver typings to locators
896 - update example and spec/install to not use typings.json
897 - spec test updated to get the tsc test to pass
898 - includes clang formatting fixes
899
900- ([e0b151a](https://github.com/angular/protractor/commit/e0b151a8b4e40364d4b7ac369faf7c5702dcf0a0))
901 fix(launcher): Handle uncaught exceptions that are strings. (#3506)
902
903 Also clean up instances where we were throwing strings instead of Errors.
904
905# 4.0.4
906
907## Features
908
909- ([c5faf08](https://github.com/angular/protractor/commit/c5faf084b1ad16bda731140d91644487984e4600))
910 feat(browser): auto-unwrap ElementFinder into WebElement for selenium funtions (#3471)
911
912- ([a379b33](https://github.com/angular/protractor/commit/a379b33a6a472ff1a2a1d2da935e11ecb11573d1))
913 feat(plugins): support onPrepare in plugins (#3483)
914
915
916## Dependencies
917
918- ([d10bc99](https://github.com/angular/protractor/commit/d10bc99198fa1163356ff5937bd5cbed89d58f8b))
919 deps(outdated): update types/q and saucelab
920
921
922- ([4252000](https://github.com/angular/protractor/commit/4252000dd847399c5c05c561aaf71a5467f94846))
923 deps(types): typescript and typings dependencies (#3485)
924
925 - remove typings dependency, scripts, and gulp task
926 - add @types dependencies
927 - clean up globals.ts from npm publishing
928 - add declaration flag for tsc globals gulp task
929 - ignore globals.d.ts from tsconfig and .gitignore
930 closes #3484
931
932# 4.0.3
933
934## Bug fixes
935
936- ([5f690fe](https://github.com/angular/protractor/commit/5f690fe0d0526d5ed4cc482fb5915d28eedbe11e))
937 fix(export): export selenium-webdriver (#3433)
938
939 - rename to ProtractorBrowser to be able to export selenium-webdriver Browser as Browser
940 - export all selenium-webdriver items and subfolders in ptor
941 - update dependency tests for selenium
942 - add tests when protractor is installed
943 closes #209227
944- ([27f7981](https://github.com/angular/protractor/commit/27f798117fc599ce369026ebbbf28b818bbbaac6))
945 fix(config): fix interface for functions such as onPrepare (#3434)
946
947 closes #3431
948
949# 4.0.2
950
951## Bug fixes
952
953- ([767d552](https://github.com/angular/protractor/commit/767d552c4ba7972085406b8b9f40fc57da1d214f))
954 fix(types): typescript global reference and type declaration fixes (#3424)
955
956# 4.0.1
957
958## Bug fixes
959
960- ([ee8ec91](https://github.com/angular/protractor/commit/ee8ec9124477ed20702d6a09a51274864867da1a))
961 fix(element): set variables to public in constructor (#3417)
962
963 closes #3414
964- ([7266902](https://github.com/angular/protractor/commit/72669029636e56911de59ec90f0d893e7406dc1d))
965 fix(sauce): sauceAgent passed incorrectly to sauce node module (#3415)
966
967 closes #3410
968- ([828e80c](https://github.com/angular/protractor/commit/828e80c2f14f3d1a4ac9b1b3b0ae0c5cd322e118))
969 fix(browserstack): mark test suite as failed/passed on BrowserStack (#3409)
970
971 closes #3256
972- ([71532f0](https://github.com/angular/protractor/commit/71532f055c720b533fbf9dab2b3100b657966da6))
973 fix(hybrid): add flag specifying that an app is an ng1/ng2 hybrid (#3403)
974
975 Needed for angular2 after rc2
976- ([2a3a0dc](https://github.com/angular/protractor/commit/2a3a0dc80edccbb72e6b2ca8c487b1eaacf15a20))
977 fix(exports): fix type exports and require('protractor') exports (#3404)
978
979 * fix(package): set main to ptor instead of browser
980 * fix(exports): fix type exports and require('protractor') exports
981- ([b2eaa29](https://github.com/angular/protractor/commit/b2eaa290bbd1d069fdaf8f25eee5eb3da611b589))
982 fix(types): output plugin typings (#3389)
983
984 * output plugin typings
985 * change ProtractorPlugin to an interface
986 * doc clean up
987 closes #3365
988- ([d2145b1](https://github.com/angular/protractor/commit/d2145b129af3e220abf656731c2491cdf29030d1))
989 fix(launcher): output uncaught exception error (#3390)
990
991 * split out message and stack to hopefully provide more information to the error
992 closes #3384
993- ([d7cf42e](https://github.com/angular/protractor/commit/d7cf42e85f0a3c9288722ee47c15d08f8b8ab115))
994 fix(protractor): export class definitions under the protractor namespace (#3393)
995
996 closes #3377
997- ([2e83dcd](https://github.com/angular/protractor/commit/2e83dcd95d11e1fd10f011ac2a058bb33a1607ff))
998 fix(types): add webdriver.promise and webdriver.WebElement to namespace (#3392)
999
1000 * fix(types): add webdriver.promise and webdriver.WebElement to namespace
1001 closes #3391
1002
1003 * fix(protractor): export class definitions under the protractor namespace
1004 closes #3377
1005
1006- ([dcbc832](https://github.com/angular/protractor/commit/dcbc832b6abdbdeb408c1741198bb20b5b9042a2))
1007 fix(types): use protractor from global namespace (#3388)
1008
1009
1010- ([ee038f9](https://github.com/angular/protractor/commit/ee038f945844490e7e57c78a57ee2a049d5a823d))
1011 fix(error message): do not crash of thrown error has made `stack` readonly (#3372)
1012
1013# 4.0.0
1014This version includes some big changes, so we've decided to make it version 4.0!
1015
1016- webdriver-manager is now it's [own NPM](https://www.npmjs.com/package/webdriver-manager), so you
1017can use it in your own projects. Protractor depends on it, though, so you shouldn't need to change
1018anything. However, because it is a new dependency you'll need to rerun `webdriver-manager update`.
1019
1020- Protractor has TypeScript typings! See the [example](https://github.com/angular/protractor/tree/master/exampleTypescript)
1021for details on how to use TypeScript in your tests.
1022
1023## Breaking changes
1024- ([d932ad7](https://github.com/angular/protractor/commit/d932ad7e853c0bda5d45b478a5c0271d072b6794))
1025 chore(browser): rename protractor to browser and add a protractor namespace (#3214)
1026
1027 * added wrapDriver method from the browser.ts and ExpectedConditions to the protractor namespace
1028 * imported selenium webdriver ActionSequence, Key, promise, Command, and CommandName to the
1029 protractor namespace
1030
1031- Selenium Webdriver has deprecated getInnerHtml and getOuterHtml. You'll need to update your tests to
1032not use these methods.
1033
1034- Protractor node module no longer has a config.json file. This is now handled in the webdriver-manager
1035node module and the files are also downloaded to the webdriver-manager/selenium folder.
1036
1037## Bug fixes
1038- ([d6910c1](https://github.com/angular/protractor/commit/d6910c168550da590b3d4db42f5c853e81cf83b6))
1039 fix(edge): Use resetUrl about:blank for MicrosoftEdge (#3267)
1040
1041- ([f205518](https://github.com/angular/protractor/commit/f2055181e60fd358c1764fe716af3d64fc64810b))
1042 fix(launcher): resolve promise for getMultiCapabilities (#3195)
1043
1044 closes #3191
1045
1046- ([f149bd1](https://github.com/angular/protractor/commit/f149bd1e91e749a77e8ee147fdb3881584ae6851))
1047 fix(docs): Change extension for docs links to .ts (#3187)
1048
1049 closes #3170
1050
1051- ([67474e0](https://github.com/angular/protractor/commit/67474e05e73d3facead7c60150c18a2d866185c7))
1052 chore(configParser): allow non-glob file pattern (#2754)
1053
1054 Cucumber allows line numbers to be passed in the filename in the form of
1055 `features/some.feature:42`. Glob expanding that results in an empty array and nothing being passed
1056 to the framework runner. This change checks for glob magic characters and only tries expanding it
1057 if found. Otherwise it just passes the filename verbatim. This was previously handled in [#2445]
1058 by stripping the line number first, but this is a more generic (non-cucumber) way to do it.
1059 Glob needed to be upgraded for this which resulted in a weird [npm 3 bug]
1060 (https://github.com/npm/npm/issues/10637). Removing the rimraf package resolved this. It was only
1061 used to generate documentation which itself was removed a while ago.
1062
1063- ([f311320](https://github.com/angular/protractor/commit/f311320a1aed09b07d926d0c2aa586202f591b5b))
1064 fix(website): edit getText JSDoc for shortDescription (#3310)
1065
1066 closes #3233
1067- ([ba63a92](https://github.com/angular/protractor/commit/ba63a92de021193c90794c54fefae39d806fba4a))
1068 fix(util): check stack exists before filtering the stack trace (#3309)
1069
1070 closes #3224
1071
1072- ([c86acd4](https://github.com/angular/protractor/commit/c86acd44bca821491558506964fe1ba8ed5b702a))
1073 chore(website): fix website for items to appear properly (#3314)
1074
1075 - Fix order for website (see #3163. Does not include $ / $$)
1076 - Replace @return with @returns so descriptions will appear
1077
1078- ([e9b49f2](https://github.com/angular/protractor/commit/e9b49f24f34730e0648d262be1c410a7f585703a))
1079 fix(config): do not flatten capabilities (#3291)
1080
1081 This is no longer necessary in the latest version of selenium-webdriver. Without this change,
1082 `--capabilities.chromeOptions.binary` will do nothing, for example.
1083 Closes #3290
1084
1085## Features
1086- ([78f3c64](https://github.com/angular/protractor/commit/78f3c64e6d466b44174417d4d6fbc382dbad34b1))
1087 chore(exitCodes): adding exit code for browser connect errors (#3133)
1088
1089 * add exit code for browser connect errors
1090 * add exit code for browserstack error
1091 * add browser error for debug with multiple capabilities
1092 * use thrown stack traces for errors (instead of creating new ones) with captureStackTrace
1093 * allow for errors to suppress exit code for config parser thrown error
1094
1095- ([85209f4](https://github.com/angular/protractor/commit/85209f42621b8992c777263458e9fc4772968777))
1096 feat(webdriver): extract webdriver-manager into a separate node module (#3068)
1097
1098 closes #607, #2402
1099
1100 * Removed the config.json. This will be managed now by webdriver-manager.
1101 * Wedriver-manager downloads the file to the node_modules/webdriver-manager/selenium folder. This
1102 will no longer appear in the protractor directory.
1103
1104- ([8316917](https://github.com/angular/protractor/commit/83169174243c7ef9767a52d86e649838aa4759f9))
1105 feat(expectedConditions): adding urlIs and urlContains (#3237)
1106
1107 * adding urlIs and urlContains
1108 * tests for UrlIs and UrlContains
1109
1110## Dependency Upgrades
1111- ([4353069](https://github.com/angular/protractor/commit/43530693f6cafd1d3cd3407bd5d1088b51ab8101))
1112 deps(outdated): Update outdated dependencies (#3251)
1113
1114 Updated the following outdated packages: body-parser, chai, chai-as-promised, glob, jshint, mocha,
1115 request, saucelabs, typescript, typings
1116
1117- ([a6cae73](https://github.com/angular/protractor/commit/a6cae73e2266a20751548047f0d3721a5bd73807))
1118 deps(selenium): upgrade to selenium-webdriver 2.53.2 (#3223)
1119
1120 closes #3173, closes #3167, closes #3058
1121
1122- ([128f8e1](https://github.com/angular/protractor/commit/128f8e197e28601cc93228d917a0e37d4ab29a15))
1123 dep(webdrivermanager): upgrade to 10.1.0 (#3312)
1124
1125## Other
1126- ([2a391bc](https://github.com/angular/protractor/commit/2a391bc1264bac2f9906b3cba58b944a42c692e3))
1127 chore(es7): async/await example
1128
1129- ([bb65e5a](https://github.com/angular/protractor/commit/bb65e5aff2719eaf247d0821bdf48c512cf18602))
1130 chore(website): clean up documentation (#3334)
1131
1132 - Remove getInnerHtml and getOuterHtml from inherited WebElement docs.
1133 - Remove some of the goog.provide. Only one is required to build the website.
1134
1135- ([f5dc4f9](https://github.com/angular/protractor/commit/f5dc4f9f9a26699b847ed8a89ce64f332ee78d6d))
1136 chore(example): add a protractor typescript example (#3323)
1137
1138# 3.3.0
1139_The [Protractor Website](http://www.protractortest.org) API docs have been streamlined. We've also, internally, moved to using TypeScript and building down to JS! Also, the logger has been improved._
1140
1141## Bug Fixes
1142- ([6f22d5a](https://github.com/angular/protractor/commit/6f22d5ade48f0d97990cbe69d956da122f2f8358))
1143 fix(bootstrap): fix bootstrap for older versions of angular
1144
1145 Trying to use the debug label for window.name fails for versions of angular older than 1.2.24. See [#3115](https://github.com/angular/protractor/issues/3115)
1146
1147- ([bd78dfc](https://github.com/angular/protractor/commit/bd78dfc79b1435d124c994482df6879066079a4d))
1148 fix(protractor): isPresent() should work with out of bounds errors (#3108)
1149
1150- ([88dd568](https://github.com/angular/protractor/commit/88dd568c5295234a5211a23e12666e199606e437))
1151 fix(NoSuchElementError): add 'new' keyword to instantiate class
1152
1153 The class NoSuchElementError is called without the new keyword in the
1154 `ElementArrayFinder.prototype.count` causing a `Class constructors cannot be invoked without
1155 'new'`
1156
1157 closes #3079
1158
1159## Features
1160- ([afdd9d7](https://github.com/angular/protractor/commit/afdd9d730c198dc97e91bb275c036a754c15140e))
1161 feat(logger): improve logging methods (#3131)
1162
1163- ([5fa94db](https://github.com/angular/protractor/commit/5fa94db5a9a4787f480389d382eef7e636b45f81))
1164 feat(exitCodes): adding exit codes for configuration file errors (#3128)
1165
1166- ([76861fd](https://github.com/angular/protractor/commit/76861fdc4c57c2aaa984e05e46ff9789ce750260))
1167 feat(element): equals
1168
1169 Easier to use version of webdriver.WebElement.equals
1170
1171- ([582411b](https://github.com/angular/protractor/commit/582411b7ad6c0f9176b231dc51dc328b98affbdf))
1172 feat(driverProvider/sauce) Add build id as a configurable option
1173
1174## Dependency Upgrades
1175- ([b4d1664](https://github.com/angular/protractor/commit/b4d1664141b609c5e5790108e3003fe777c248ca))
1176 deps(jasminewd2): bump jasminewd2 to 0.0.9
1177
1178- ([b6f1a63](https://github.com/angular/protractor/commit/b6f1a63da77ec88a3f487e5a099df8febe3742aa))
1179 feat(protractor): Shows locator used when a timeout occurs
1180
1181- ([de4b33e](https://github.com/angular/protractor/commit/de4b33eaab1546d0ef3a746cfd222e80f0ec28a1))
1182 feat(webdriver): Added NO_PROXY environment variable support to webdriver-manager
1183
1184 closes #3046
1185
1186# 3.2.2
1187_This release is a hotfix for webdriver-manager iedriver_
1188
1189## Bug Fix
1190- ([c6a3b5e](https://github.com/angular/protractor/commit/c6a3b5eab09d95f9d2170e4aface5559cd6b0132))
1191 fix(webdriver) - fix file type for internet explorer driver file
1192
1193- ([d3bd170](https://github.com/angular/protractor/commit/d3bd1702040cde5b9d0a3c1578d0d8e16597224c))
1194 fix(bootstrap): enable debug info before setting defer label
1195
1196 Note that in most cases, this should not have surfaced as an issue because the base test mock
1197 modules will also try to turn on debug info.
1198
1199 Closes #3009
1200
1201# 3.2.1
1202_This release is a hotfix for modules that require protractor_
1203
1204## Bug Fix
1205- ([6e02934](https://github.com/angular/protractor/commit/6e029341a67cd985bf727285dec2ef10aafe7b6a))
1206 fix(package): Update module main in package.json to use built.
1207
1208# 3.2.0
1209
1210## Features
1211- ([cae175c](https://github.com/angular/protractor/commit/cae175cbe632828172e9a7065aacfe67dd51d8dd))
1212 feat(plugins) Calculate skipAngularStability dynamically.
1213
1214 This allows plugins to turn Protractor's default synchronization on and off as needed.
1215
1216- ([7372267](https://github.com/angular/protractor/commit/7372267f23cc8586409f9ef914ab801c78992ccd))
1217 feat(webdriver): add support for custom versions for selenium, chrome driver, and ie driver
1218
1219- ([1cbbe4f](https://github.com/angular/protractor/commit/1cbbe4fef5c5f2bc0923fd54c53afad71a44af6c))
1220 feat(config): no globals option
1221
1222- ([9608201](https://github.com/angular/protractor/commit/960820120cf7df08cff8cfe15a5a9f08612c9773))
1223 feat(typescript): adding typescript to protractor
1224
1225 Converting a 3 files over to typescript.
1226
1227 Adding an `npm prepublish` step that will use gulp to download the typings, transpile the files
1228 with tscto the built/ directory and copy the rest of the javascript files from lib/ to the built/
1229 folder.
1230
1231 Also adding scripts to package.json for `npm run tsc` and `npm run tsc:w` for transpiling help.
1232
1233- ([a4a7209](https://github.com/angular/protractor/commit/a4a72095d2f95227f1ba293ae047beab28eb761d))
1234 feat(plugins): skipAngularStability
1235
1236## Dependency Upgrades
1237- ([29627f4](https://github.com/angular/protractor/commit/29627f42bb7404f66e3a76ba3cbd85256b408fb6))
1238 chore(selenium) - upgrade to selenium webdriver v 2.52.0
1239
1240 See the full changelog at https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md#v2520
1241
1242## Bug Fixes
1243- ([a2c7a4b](https://github.com/angular/protractor/commit/a2c7a4bf1fb2a3a509040ae8ec7737cc002b764e))
1244 fix(config): Do not sort spec keys
1245
1246 Fixes #2928
1247
1248# 3.1.1
1249
1250## Bug Fixes
1251
1252- ([4db52f2](https://github.com/angular/protractor/commit/4db52f2a21171ebbc6fed0ca3df760553afc264a))
1253 test(config): add test for config files using only per-capability specs
1254
1255 To prevent bugs like #2925 in the future.
1256
1257- ([edfb52f](https://github.com/angular/protractor/commit/edfb52fadccf10c34d885c37e990dea0efbb0081))
1258 fix(configParser): use all the suites if no other spec sources are provided
1259
1260# 3.1.0
1261
1262## Dependency Version Upgrades
1263
1264- ([f699718](https://github.com/angular/protractor/commit/f699718e951c07f18c2e3e5414f92b9a33f7b19c))
1265 updates(selenium): update chromedriver and selenium-standalone
1266
1267 Selenium-standalone update to 2.51.0. Update chromedriver to 2.21.
1268
1269 Chromedriver changelog: http://chromedriver.storage.googleapis.com/2.21/notes.txt Selenium
1270 changelog: https://github.com/SeleniumHQ/selenium/blob/master/dotnet/CHANGELOG
1271
1272- ([5930d14](https://github.com/angular/protractor/commit/5930d1444aef2f053c132eb437d07f9b000d7803))
1273 chore(deps): update various npm dependencies to latest stable releases
1274
1275## Features
1276
1277- ([3f3805f](https://github.com/angular/protractor/commit/3f3805f9496fb130ae01b3e3278ee1ea7684d8e7))
1278 feat(attachSession): attach protractor to existing webdriver session
1279
1280 Attaching an existing selenium browser session to protractor rather than always creating new one.
1281 The session can be passed into the config file as a string via the sessionId.
1282
1283- ([b693256](https://github.com/angular/protractor/commit/b6932560d66730203e0e7b0c65c80a44ad4747de))
1284 feat(webdriver): allow configuration of all SeleniumServer arguments
1285
1286 You can now pass a complete object of configuration for the SeleniumServer class. This allows
1287 enabling loopback on the selenium server.
1288
1289- ([148f020](https://github.com/angular/protractor/commit/148f020bf4bbd71e17326581a2f7ed6f4ff55832))
1290 feat(protractor): Add support to allow Protractor to test an Angular application which has
1291 debugging info disabled
1292
1293 Currently Angular application which for performance reasons, have debug information turn off
1294 cannot be tested. This PR allows users to add the Angular debug logging flag to the Protractor
1295 run.
1296
1297- ([aa5ceb5](https://github.com/angular/protractor/commit/aa5ceb576f0283b6591faaa95e342ef3c603c717))
1298 feat(webdriver): add support for selenium webdriver proxy
1299
1300- ([b110ed9](https://github.com/angular/protractor/commit/b110ed92442eb8b14768c512a890bb3ceb0e4973))
1301 feat(debugger): allow multiple browser.pause()
1302
1303 After this change, you can put multiple browser.pause() in the code. Each browser.pause() is like
1304 a traditional breakpoint.
1305
1306 To detach from the debugger, press ^D (CTRL+D). This will continue code execution until it hits
1307 the next browser.pause() or code finishes running.
1308
1309 This PR also fixes a number of small formatting issues.
1310
1311- ([fb10c5c](https://github.com/angular/protractor/commit/fb10c5caffb895e909ad91d629e2192c74c8e064))
1312 feat(webdriver): Allow users to use webdriver's disableEnvironmentOverrides
1313
1314 Fixes #2300
1315
1316- ([fa0c692](https://github.com/angular/protractor/commit/fa0c692414fa98721dff80202ef95e9b3ccadebb))
1317 feat(config): allow onComplete to return a promise
1318
1319 Closes #1944
1320
1321## Bug Fixes
1322
1323- ([f533341](https://github.com/angular/protractor/commit/f533341085921409d16d577e38ba1745c37a17b7))
1324 bug(driverProvider): fix driver path generation for *nix platforms
1325
1326 Makes error messages better
1327
1328# 3.0.0
1329
1330_We're releasing version 3.0 with some breaking changes. In summary - Jasmine 1.3 is removed, only Jasmine 2 is now supported, old Node.JS support is dropped, and plugins now need to be explicitly required. Full details below._
1331
1332## Dependency Version Upgrades
1333
1334- ([18e1f71](https://github.com/angular/protractor/commit/18e1f71a4dd868709f4e259e05a8a196921e22be))
1335 chore(webdriver): upgrade Protractor to webdriver 2.48.2
1336
1337- ([1f44a6e](https://github.com/angular/protractor/commit/1f44a6ef3f7ae8680a03a3cc7a7c06f75a8c7d4c))
1338 chore(deps): bump chromedriver and iedriver versions IEDriver from 2.47.0 to 2.48.0
1339
1340 ChromeDriver from 2.19 to 2.20. Changelog:
1341 http://chromedriver.storage.googleapis.com/2.20/notes.txt
1342
1343## Features
1344
1345- ([97e6703](https://github.com/angular/protractor/commit/97e6703eb0e7a5dffc1017d0a44f0dfeeb91f327))
1346 feat(protractor): Add protractor.prototype.restart
1347
1348- ([2007f06](https://github.com/angular/protractor/commit/2007f06078b6569a2cfd9f361f17d765c07bc7f8))
1349 feat(protractor): add flag to stop protractor from tracking $timeout
1350
1351- ([a40a4ba](https://github.com/angular/protractor/commit/a40a4ba2a509bc762f1f5937454fdbf074405f07))
1352 feat(ElementArrayFinder#get): Implemented ability to pass promise as index to
1353 ElementArrayFinder#get
1354
1355- ([a54c0e0](https://github.com/angular/protractor/commit/a54c0e0d72b9d7d1d8364ade5046e5007ff53906))
1356 feat(plugins): Add config option to disable logging of warnings in console plugin
1357
1358 Running tests in multiple browsers ends up printing out a lot of useless warnings I'm already
1359 aware of. To make skimming through logs in the case of an actual failure easier, I want to be able
1360 to disable the logging of warnings in the console plugin.
1361
1362- ([7015010](https://github.com/angular/protractor/commit/7015010188dfb70c1e49e4f2eae19d5ba1126b34))
1363 feat(driver providers): Add BrowserStack support.
1364
1365 Also added BrowserStack to CI
1366
1367## Bug Fixes
1368
1369- ([7cba4ec](https://github.com/angular/protractor/commit/7cba4ecf0f3915dfec33dbc04decd42857744b37))
1370 fix(ng-repeat): properly detect the end of an ng-repeat-start block
1371
1372 Discovered while investigating issue #2365
1373
1374## Breaking Changes
1375
1376- ([2bde92b](https://github.com/angular/protractor/commit/2bde92b3e745e09ad3876932b2d187365e9aaa31))
1377 chore(jasmine): remove jasmine 1.3
1378
1379 and update docs. Also, use jasmine 2 for running all Protractor's unit tests.
1380
1381 BREAKING CHANGE: Now, both jasmine and jasmine2 frameworks use jasmine 2.3. Users still using
1382 jasmine version <2 will have to upgrade.
1383
1384- ([18e1f71](https://github.com/angular/protractor/commit/18e1f71a4dd868709f4e259e05a8a196921e22be))
1385 chore(webdriver): upgrade Protractor to webdriver 2.48.2
1386
1387 BREAKING CHANGE: 1) Users will no longer be able to use node versions <4. 2) There is significant
1388 changes to the control flow, and tests may need to be
1389 modified to be compliant with the new control flow. See
1390 https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md
1391
1392- ([ac1e21e](https://github.com/angular/protractor/commit/ac1e21e7e09a773de981bf9e70b0fcd489d17a83))
1393 chore(plugins): Split first party plugins into seperate repos
1394
1395 BREAKING CHANGE:
1396
1397 The Accessibility, NgHint, Timeline, and Console plugins are now located in their own separate
1398 node modules. You will need to explicitly require each module you use. See https://github.com/angular/protractor/blob/master/docs/plugins.md#first-party-plugins for info for each module.
1399
1400- ([ddb8584](https://github.com/angular/protractor/commit/ddb8584a59343284904676ef6d8db5c1c996b900))
1401 chore(cucumber): Remove cucumber from internal implementation
1402
1403 BREAKING CHANGE:
1404
1405 Cucumber has been community maintained for a while, and in order to allow it to move faster, it is no longer part of the core Protractor library. It is now published on npm under `protractor-cucumber-framework` and will require setting `frameworkPath` in your configuration file. See https://github.com/angular/protractor/blob/master/docs/frameworks.md#using-cucumber for full instructions on use now.
1406
1407
1408# 2.5.1
1409_This release is a hotfix for node 0.10 support_
1410
1411- ([039ffa7](https://github.com/angular/protractor/commit/039ffa7bfa291084263ae3fa944bbf21394ce9a3))
1412 fix(configParser): Remove path.parse so protractor works with node < v0.12
1413
1414 Closes #2588
1415
1416# 2.5.0
1417_This release contains a hotfix for windows path issues and early support for Angular2 apps_
1418
1419
1420## Features
1421- ([c5d37c2](https://github.com/angular/protractor/commit/c5d37c2abebf9aa9dd3324df93ac447529eea53b))
1422 feat(lib): add useAllAngularAppRoots option
1423
1424 This allows waiting for all angular applications on the page, for angular2 apps only.
1425
1426- ([f246880](https://github.com/angular/protractor/commit/f24688030a63c9de4ce759ac9c6fab79ef773ed5))
1427 feat(lib): add support for waiting for angular2
1428
1429 Use Angular2's testability API, if present, when waiting for stability or loading a page.
1430
1431 Closes #2396
1432
1433## Bug Fixes
1434
1435- ([d6aebba](https://github.com/angular/protractor/commit/d6aebbad6e9b191fef141472887637ee4318438e))
1436 fix(config): Fixes absolute path parsing in windows
1437
1438 This allows absolute paths absolute paths in to be properly parsed in windows. This should
1439 maintain the line-number feature introduced in ff88e without breakage.
1440
1441- ([04e5bfb](https://github.com/angular/protractor/commit/04e5bfbfcade0cbbef58213bc7b227b5db753d57))
1442 chore(runner): make plugins optional param for createBrowser
1443
1444
1445# 2.4.0
1446
1447_This release contains only a version update to `selenium-webdriver`, webdriver javascript bindings, and associated bug fixes._
1448
1449## Dependency Version Upgrades
1450- ([9a202ab](https://github.com/angular/protractor/commit/9a202ab5573f24c9919639f1b75fd9cd2b383383))
1451 chore(dependencies): update selenium-webdriver to 2.47.0
1452
1453 Along with it, update `jasminewd2` to avoid situations where the control flow gets locked up and
1454 hangs.
1455
1456 *Potential Breaking Change*:
1457
1458 This is passing all existing Protractor tests, but there is a possibility that the changes to the
1459 control flow will cause some test flows to hang. If this causes issues, such as tests hanging or commands executing out of order, please revisit your use of functions affecting the control flow, such as `flow.execute`.
1460
1461 See the selenium-webdriver changelog at https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md
1462
1463
1464## Bug Fixes
1465- ([f034e01](https://github.com/angular/protractor/commit/f034e010156a85cf1826b95eb7f41f50ef5a1791))
1466 fix(synchronizing): use the same control flow when ignoring sync
1467
1468 Previously, the order of frames and tasks on the control flow was different depending on
1469 `browser.ignoreSynchronization`. This fixes the inconsistency by creating an empty task when
1470 ignoreSynchronization is true.
1471
1472 Practically, this fixes the polling spec failing after the update to selenium-webdriver@2.47.0.
1473
1474
1475# 2.3.0
1476
1477_This release contains updates which fix some issues with dependencies that had gotten stale. However, it does not yet contain an update to the selenium-webdriver dependency, because of potential breaking changes. That update will be done in a separate Protractor@2.4.0 release. See [issue 2245](https://github.com/angular/protractor/issues/2245)._
1478
1479## Dependency Version Upgrades
1480
1481- ([cfd8d00](https://github.com/angular/protractor/commit/cfd8d000c2aa1686c4a90164baf4e04976ee0587))
1482 feat(webdriver): update webdriver and chromedriver to latest version
1483
1484 Updating Selenium standalone from 2.45.0 to 2.47.0 Updating ChromeDriver from 2.15 to 2.19
1485 Selenium Changelog:
1486 https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md
1487 ChromeDriver Changelog: http://chromedriver.storage.googleapis.com/2.19/notes.txt
1488
1489- ([802b20f](https://github.com/angular/protractor/commit/802b20f153f2c201d8b37378bf8feb93f649a95f))
1490 chore(selenium): update selenium from 2.47.0 to 2.47.1
1491
1492- ([7a7aca8](https://github.com/angular/protractor/commit/7a7aca8a264ae07cbbb90e7e7469533a52276488))
1493 chore(jasmine): bump jasmine version from 2.3.1 to 2.3.2
1494
1495- ([eab828e](https://github.com/angular/protractor/commit/eab828e12c671cbf5cdf9b09df050cc59f0dd862))
1496 chore(travis): test against node 4
1497
1498 Test against node 4 on Travis, and remove support for node 0.10.
1499
1500- ([96def81](https://github.com/angular/protractor/commit/96def81dc7d364e789fc290e97aee0f898648a10))
1501 chore(saucelabs): updated saucelabs dependency to 1.0.1 to support proxy
1502
1503## Features
1504
1505- ([c989a7e](https://github.com/angular/protractor/commit/c989a7eeed5a0a55d2fbd37dc7278a7967889852))
1506 feat(webdriver-manager): add --ie32 commandline option
1507
1508 The new option allows to download the 32-bit version of the IE driver on a 64-bit system, as the
1509 64-bit version has been broken for over a year now (the sendKeys() function works very slowly on
1510 it).
1511
1512- ([ff88e96](https://github.com/angular/protractor/commit/ff88e969d55585cc4267d75c12c0cafc78a01895))
1513 feat(cucumber): Allow cucumber tests containing line numbers
1514
1515 example:
1516 ```js
1517 specs: [
1518 'cucumber/lib.feature:7'
1519 ]
1520 ```
1521
1522## Bug Fixes
1523
1524- ([1487e5a](https://github.com/angular/protractor/commit/1487e5abf69bc1540226502aacadc8b3b42b0092))
1525 fix(protractor.wrapDriver): allow browser instances to work even if they were not set up through
1526 the runner
1527
1528 Fixes #2456
1529
1530- ([2ff7a07](https://github.com/angular/protractor/commit/2ff7a0771b6695dc49566ed81548b3fe2cebf11c))
1531 fix(Chrome Accessibility Plugin): resolving the location of AUDIT_FILE
1532
1533- ([f9b0a92](https://github.com/angular/protractor/commit/f9b0a92079b55384d4560fef9400bb473672ce9c))
1534 fix(debugger): Fix potential debugger lockups
1535
1536# 2.2.0
1537
1538## Breaking Changes
1539
1540- If you use the plugin API, it has changed a lot. See
1541 [`docs/plugins.md`](docs/plugins.md) for details. The good news is that it
1542 is being taken out of beta, so it should be more stable in the future.
1543
1544## Dependency Version Upgrades
1545
1546- ([786ab05](https://github.com/angular/protractor/commit/786ab0541bff9b561b35dbbf0ffc1e9d4a788d10))
1547 chore(dependencies): update request to 2.57
1548
1549 Closes #2205
1550
1551## Features
1552
1553- ([f2a11a7](https://github.com/angular/protractor/commit/f2a11a7369319edac0f1221a1c6ab0f9a2cc73eb))
1554 feat(plugins): Changed and expanded the plugin API
1555
1556 * Changed the plugin API so that it is more uniform (see docs/plugins.md)
1557 * Updated existing plugins to the new API
1558 * Added the `onPageLoad` and `onPageSync` entry points for plugins for modifying `browser.get`
1559 * Added the `waitForPromise` and `waitForCondition` entry points for plugins for modifying
1560 `waitForAngular`
1561 * Added tests
1562
1563 This closes #2126 and helps out @andresdominguez
1564
1565- ([aded26b](https://github.com/angular/protractor/commit/aded26bc9ee6172d6f64361207f6a8b04da09b0d))
1566 feat(webdriver-manager): update download logic with streaming
1567
1568 Also adds a content length check to make sure the downloaded binaries are the correct size. This
1569 seems to fix up some unreliable download issues that we were previously having.
1570
1571- ([7aeebd6](https://github.com/angular/protractor/commit/7aeebd6543d89b7d8b9474bc45651b88c5c2d396))
1572 feat(plugins): reporting loaded plugins
1573
1574- ([6c10378](https://github.com/angular/protractor/commit/6c10378b9a4e7cae9ba491a63ae11f942c833100))
1575 feat(protractor): expose pending $http and $timeout on a timeout
1576
1577 Now when a test times out while waiting for Angular to be stable, pending
1578 $timeout and $http tasks will be reported to the console.
1579
1580## Bug Fixes
1581
1582- ([c30afdd](https://github.com/angular/protractor/commit/c30afddb80b6138fc5f648f70f2891067d8eeef4))
1583 fix(test): fixed tests under npm test
1584
1585- ([3508335](https://github.com/angular/protractor/commit/3508335199fee5dad74c66d9ee19b8bf448c2e62))
1586 fix(element): ElementArrayFinder.count was slow
1587
1588 The bug fix for #1903
1589 (https://github.com/angular/protractor/commit/2a765c76e121de13ff86a279fe3f21cb15c17783) was
1590 causing ElementArrayFinder.prototype.count to be slow because of the extranous checks that must be
1591 performed. However, the checks could be delayed into the isPresent check, which will mitigate this
1592 issue
1593
1594 fixes(#2359)
1595
1596- ([b147033](https://github.com/angular/protractor/commit/b14703319c0d6bb6a69b76d0fd3732e2ea1fbebc))
1597 fix(by.exactRepeater): should split by "="
1598
1599 Closes #2335
1600
1601- ([4c9886b](https://github.com/angular/protractor/commit/4c9886b410ea4d82098af322044a37908a112138))
1602 fix(Chrome Accessibility Plugin) No error context
1603
1604 If your tests fail because of StaleElementReferenceError then there is no context about where this
1605 is coming from. By having the failure be handled inside of the plugin then grunt can fail
1606 gracefully. Additionally, this provides context about where the error originated from.
1607
1608 Fixes #2331
1609
1610- ([d15ccdc](https://github.com/angular/protractor/commit/d15ccdcf82bda29c803c3a5642896f16d7e4f938))
1611 fix(phantomJS): Reset URL cannot be a data url for PhantomJS
1612
1613 When trying to use the lates version of Angular with PhantomJS we get a message complaining about
1614 "Detected a page unload event". This was fixed in earlier versions of Angular, see issue #85, but
1615 reappeared now. The problem is that using data urls to reset the page causes this issue, so we
1616 have to do as we do with Safari and use "about:blank" instead
1617
1618- ([e6369ac](https://github.com/angular/protractor/commit/e6369ac973d58a17415ab1211050af26236c6105))
1619 docs(tutorial): use Jasmine v2 in the tutorial
1620
1621- ([e60dc0f](https://github.com/angular/protractor/commit/e60dc0ff4fc4a6d22e877d4182605913fae5d5cb))
1622 fix(browser.refresh): use timeout in milliseconds
1623
1624 When invoked without arguments browser.refresh used a 10-millisecond timeout, wrongly documented
1625 as seconds. It now delegates timeout handling to browser.get, which defaults to
1626 DEFAULT_GET_PAGE_TIMEOUT (10 seconds).
1627
1628- ([0262268](https://github.com/angular/protractor/commit/0262268fa43b9eefac815d986740efa07bb15818))
1629 fix(cucumber): fix beforeFeature event handler call guard
1630
1631 Fixes the run failures reported in https://github.com/cucumber/cucumber-js/issues/342.
1632
1633# 2.1.0
1634
1635## Dependency Version Upgrades
1636
1637- ([25b1fa0](https://github.com/angular/protractor/commit/25b1fa052c195f6f56adcd3f5a116cb5eac238b0))
1638 feat(jasmine): update jasmine dependency to 2.3.1
1639
1640 Updated from 2.1.1. See Jasmine's changelog at
1641 https://github.com/jasmine/jasmine/tree/master/release_notes
1642
1643 Closes #1795. Closes #2094. Closes #1768.
1644
1645- ([25e3b86](https://github.com/angular/protractor/commit/25e3b8611f7333f0829aa3c315a0397891bbada7))
1646 chore(chromedrivier): Update chromedriver to 2.15
1647
1648## Features
1649
1650- ([45341c9](https://github.com/angular/protractor/commit/45341c944bf60537849776c7f362ee0442b219e6))
1651 feat(explorer): allow element explorer to start as a server
1652
1653 If element explorer is run with a port (i.e. --debuggerServerPort 1234), it will start up a server
1654 that listens to command from the port instead of a repl that listens to process.stdin.
1655
1656- ([cf9a26f](https://github.com/angular/protractor/commit/cf9a26f1b4bdca7d928794d24738786be074619a))
1657 feat(plugins): allow plugins.postTest to know what test just ran
1658
1659- ([0f80696](https://github.com/angular/protractor/commit/0f806964324cbeb4bceb54c5bd82c639b9f99a49))
1660 feat(plugins): inline plugins
1661
1662- ([de49969](https://github.com/angular/protractor/commit/de499696eb88721cb073a195025ae48f59cbc905))
1663 feat(debugger): make element explorer work with node 0.12.0
1664
1665 Node has changed its debugger significantly in 0.12.0, and these changes are necessary to get it
1666 to work now.
1667
1668 Specifically here are the key points to take note:
1669
1670 * Before, the process continues running after `process._debugProcess(pid);` is called, but now,
1671 the process stops.
1672 > To over come this, the call to `process._debugProcess(pid)` is moved from protractor into the
1673 debugger client. Secondly, because the process stops after the call, we call `reqContinue` once
1674 the debugger connection is established, so that protractor continues into the first break point
1675 (for backwards compatibility, we added an extra empty webdriver command so that in earlier
1676 versions of node, protractor doesn't go past the first break point from the reqContinue).
1677
1678 * Before repl provides '(foobar\n)' when an user inputs 'foobar'. Now it is just 'foobar\n'.
1679 > We will parse and strip away both the parenthesis and '\n' to support all versions of node.
1680
1681 * Additionally (non-related to node 0.12.0), this change makes debugger processes fail fast if the
1682 port is taken.
1683
1684- ([7b96db0](https://github.com/angular/protractor/commit/7b96db0ffb06608b12aa14765133cce42a0cad7f))
1685 feat(browser.get): Return a promise that handles errors in browser.get
1686
1687## Bug Fixes
1688
1689- ([815ff5d](https://github.com/angular/protractor/commit/815ff5d092c8dda88e2a1d4c5c80f66bf20892fa))
1690 fix(jasmine2): be consistent about passing assertions in output JSON
1691
1692 See #2051
1693
1694- ([e6e668c](https://github.com/angular/protractor/commit/e6e668c8d7353c8e797f730b30b996c6a6eb770f))
1695 chore(jasmine): update jasminewd2 to 0.0.4
1696
1697 This improves the control flow schedule messages for debugging and fixes an issue with the `this`
1698 variable inside tests. See https://github.com/angular/jasminewd/issues/22
1699
1700- ([e599cf3](https://github.com/angular/protractor/commit/e599cf301d1ff0fe705b2362fa6b4b17859ab8da))
1701 fix(taskscheduler): label sharded tasks with numbers instead of letters
1702
1703 Letters run into a problem with a maximum of 26. See #2042
1704
1705- ([fda3236](https://github.com/angular/protractor/commit/fda323664db65a5c8f1590b9841fcfa53d4ab8fd))
1706 fix(config): add sauceAgent property to protractor config
1707
1708 Closes #2040
1709
1710- ([fa699b8](https://github.com/angular/protractor/commit/fa699b8f1a6b807f2405d6829609797a9a3f8768))
1711 fix(debugger): fix 'getControlFlowText()' broken in webdriver 2.45
1712
1713- ([b783dd8](https://github.com/angular/protractor/commit/b783dd865dfd16e5099a863d36d497499026b208))
1714 fix(browser): remove subsequent duplicate module
1715
1716 browser.removeMockModule() misses next duplicate module because of iteration over an array it's
1717 modifying.
1718
1719- ([e3d4ad1](https://github.com/angular/protractor/commit/e3d4ad164a04451fce3a57f06121355343c97f48))
1720 fix(stacktrace): remove jasmine2 specific stacktraces
1721
1722- ([3cded9b](https://github.com/angular/protractor/commit/3cded9b8da247dc69c78a6fa0e25fe70f6c0f801))
1723 fix(locators): escape query in byExactBinding
1724
1725 See http://stackoverflow.com/q/3561711
1726
1727 Closes #1918
1728
1729- ([e18d499](https://github.com/angular/protractor/commit/e18d4990878d70f77b29e8678eecbaab7c8cefb5))
1730 fix(cucumber): process no-snippets param for cucumber framework
1731
1732# 2.0.0
1733
1734_Why is this change version 2.0? Protractor is following semver, and there's some breaking changes here._
1735
1736## Dependency Version Upgrades
1737
1738- ([34f0eeb](https://github.com/angular/protractor/commit/34f0eebd7e73b10e9b990caa06b63b6fd22b2589))
1739 fix(element): update to selenium-webdriver@2.45.1 and remove element.then
1740
1741 This change updates the version of WebDriverJS (selenium-webdriver node module) from 2.44 to
1742 2.45.1. See the full changelog at
1743 https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md
1744
1745- ([8976e75](https://github.com/angular/protractor/commit/8976e75dc1817817e6bd2dbb0b6cbc78d72035e9))
1746 chore(jasmine): bump version of jasminewd2
1747
1748## Features
1749
1750- ([997937d](https://github.com/angular/protractor/commit/997937d189fb3a9fb51f1b2e4756981c8958ceba))
1751 feat(console plugin): Added new console plugin
1752
1753- ([ef6a09d](https://github.com/angular/protractor/commit/ef6a09d798fd04124224f6ca48eb64d13eb01eff))
1754 feat(webdriver-manager): allow a custom cdn for binaries
1755
1756 Added a cdn value for each binary to be overrided by the cli argument
1757 `alternate_cdn`.
1758
1759## Bug Fixes
1760
1761- ([fb92be6](https://github.com/angular/protractor/commit/fb92be6d588e7302989bd171a064739359bb3c74))
1762 fix(accessibility): improve output for long elements
1763
1764 Instead of just printing the first N characters of the element's template, print the first and
1765 last N/2.
1766
1767 See #1854
1768
1769- ([2a765c7](https://github.com/angular/protractor/commit/2a765c76e121de13ff86a279fe3f21cb15c17783))
1770 fix(element): return not present when an element disappears
1771
1772- ([8a3412e](https://github.com/angular/protractor/commit/8a3412e98614bb69978869b34b5b7243619f015d))
1773 fix(bug): by.buttonText() should not be effected by CSS style
1774
1775 Closes issue #1904
1776
1777- ([5d23280](https://github.com/angular/protractor/commit/5d232807f1e32a9a3ba5a5e4f07ace5d535fc3cd))
1778 fix(debugger): fix issue where output does not display circular dep and functions
1779
1780- ([ef0fbc0](https://github.com/angular/protractor/commit/ef0fbc096035bb01d136897ca463892ceca56b73))
1781 fix(debugger): expose require into debugger
1782
1783## Breaking Changes
1784
1785- ([34f0eeb](https://github.com/angular/protractor/commit/34f0eebd7e73b10e9b990caa06b63b6fd22b2589))
1786 fix(element): update to selenium-webdriver@2.45.1 and remove element.then
1787
1788 This change updates the version of WebDriverJS (selenium-webdriver node module) from 2.44 to
1789 2.45.1. See the full changelog at
1790 https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md
1791
1792 To enable the update and remove confusion, this removes the `element().then` function unless there
1793 is an action result. This function is completely unnecessary, because it would always resolve to
1794 itself, but the removal may cause breaking changes.
1795
1796 Before:
1797 ```js
1798 element(by.css('foo')).then(function(el) {
1799 return el.getText().then(...);
1800 });
1801 ```
1802
1803 After:
1804 ```js
1805 element(by.css('foo')).getText().then(...);
1806 ```
1807
1808 In other words, an ElementFinder is now no longer a promise until an action has been called.
1809
1810 Before:
1811 ```js
1812 var el = element(by.css('foo'));
1813
1814 protractor.promise.isPromise(el); // true
1815 protractor.promise.isPromise(el.click()); // true
1816 ```
1817
1818 After:
1819 ```js
1820 var el = element(by.css('foo'));
1821
1822 protractor.promise.isPromise(el); // false
1823 protractor.promise.isPromise(el.click()); // true
1824 ```
1825
1826 Also, fixes `filter` and `map` to work with the new WebDriverJS.
1827
1828- ([3c04858](https://github.com/angular/protractor/commit/3c048585ac811726d6c6d493ed6d43f6a3570bee))
1829 chore(config): remove deprecated `chromeOnly`
1830
1831 This has been replaced with `directConnect`.
1832
1833- Due to ([1159612](https://github.com/angular/protractor/commit/1159612ed76bb65612dbb2cc648e45928a251b10))
1834
1835 Due to changes in how scheduling works on the control flow, specs
1836 in Jasmine1 will no longer wait for multiple commands scheduled in `onPrepare`
1837 or in the global space of the test file.
1838
1839 Before:
1840 ```js
1841 onPrepare: function() {
1842 browser.driver.manage().window().maximize();
1843
1844 // This second command will not finish before the specs start.
1845 browser.get('http://juliemr.github.io/protractor-demo');
1846 }
1847 ```
1848
1849 To fix, return the last promise from onPrepare:
1850
1851 After:
1852 ```js
1853 onPrepare: function() {
1854 browser.driver.manage().window().maximize();
1855 return browser.get('http://juliemr.github.io/protractor-demo');
1856 }
1857 ```
1858
1859- Due to ([1159612](https://github.com/angular/protractor/commit/1159612ed76bb65612dbb2cc648e45928a251b10))
1860
1861 Due to changes in WebDriverJS, `wait` without a timeout will now default
1862 to waiting for 0 ms instead of waiting indefinitely.
1863
1864 Before:
1865 ```js
1866 browser.wait(fn); // would wait indefinitely
1867 ```
1868
1869 After
1870 ```js
1871 browser.wait(fn, 8000) // to fix, add an explicit timeout
1872 ```
1873
1874 This will be reverted in the [next version of WebDriverJS](https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md#v2460-dev).
1875
1876
1877# 1.8.0
1878
1879## Dependency Version Upgrades
1880
1881- ([1159612](https://github.com/angular/protractor/commit/1159612ed76bb65612dbb2cc648e45928a251b10))
1882 fix(webdriver): bump selenium to 2.45.0
1883
1884 Bump the selenium standalone binary to 2.45.0.
1885
1886 See https://code.google.com/p/selenium/source/browse/java/CHANGELOG for a full list of changes to
1887 the selenium server.
1888
1889 Closes #1734
1890
1891## Features
1892
1893- ([54163dc](https://github.com/angular/protractor/commit/54163dcd22cee27cf16685fbb4d53a2712233d26))
1894 feat(a11yPlugin): plugin for integrating with Chrome Accessibility Developer Tools
1895
1896 Also includes missing Angular map files. See plugins/accessibility/index.js for usage.
1897
1898- ([658902b](https://github.com/angular/protractor/commit/658902bd04bf809bde2751db79e93ae00de2f810))
1899 feat(plugins): add postTest hook for plugins
1900
1901 Additionally, add some tests to make sure that plugins can fail properly.
1902
1903 Closes #1842
1904
1905- ([13d34c9](https://github.com/angular/protractor/commit/13d34c9192a06634827d89bf356bea33fea75747))
1906 feat(a11yPlugin): add support for Tenon.io
1907
1908- ([5f8cffd](https://github.com/angular/protractor/commit/5f8cffd95c50ab4e7949376425f10e13747eb922))
1909 feat(plugins): allow plugins to export a name for use in reporting
1910
1911## Bug Fixes
1912
1913- ([aabdd56](https://github.com/angular/protractor/commit/aabdd567ee62d0d48fad499ee5decbb5d7d6b939))
1914 fix(debugger): breakpoint isn't set properly for windows
1915
1916- ([361ae21](https://github.com/angular/protractor/commit/361ae21ee761eb78d1e2c9b2b7d270873a28ef81))
1917 fix(plugins): add a 'test' or 'fail' string to plugins
1918
1919 Closes #1843
1920
1921- ([847e739](https://github.com/angular/protractor/commit/847e73961e52caa1537df269589d9cfe6373b986))
1922 fix(webdriver-manager): unzipping ie driver should overwrite old version
1923
1924# 1.7.0
1925
1926## Dependency Version Upgrades
1927
1928- ([2658865](https://github.com/angular/protractor/commit/2658865640d82617e69208cdb2263a2073a20156))
1929 feat(webdriver): bump chromedriver to 2.14
1930
1931 Chromedriver 2.14 contains support for accessing elements inside the shadow DOM.
1932
1933## Features
1934
1935- ([d220ecf](https://github.com/angular/protractor/commit/d220ecf5ebc7ba023eab728d4a684e978ff77c83))
1936 feat(locators): add by.deepCss selector for finding elements in the shadow dom
1937
1938 Usage:
1939
1940 ```
1941 element(by.deepCss('.foo'))
1942 equivalent to 'element(by.css('* /deep/ .foo'))
1943 ```
1944
1945- ([324f69d](https://github.com/angular/protractor/commit/324f69d6aa7c23ad77f1d50e26e0a56bade40132))
1946 feat(locators): add by.exactRepeater
1947
1948- ([eb9d567](https://github.com/angular/protractor/commit/eb9d56755fa93401502e7608c7c3d0f16927c082))
1949 feat(frameworks): add support for custom frameworks
1950
1951 Usage:
1952
1953 ```js
1954 exports.config = {
1955 framework: 'custom',
1956 frameworkPath: '/path/to/your/framework/index.js'
1957 }
1958 ```
1959
1960- ([9bc1c53](https://github.com/angular/protractor/commit/9bc1c53e40161521b0c125a810f86235c974f100))
1961 feat(expectedConditions): add helper library for syncing with non-angular apps
1962
1963 Usage:
1964
1965 ```javascript
1966 var EC = protractor.ExpectedConditions;
1967 var button = $('#xyz');
1968 var isClickable = EC.elementToBeClickable(button);
1969
1970 browser.get(URL); browser.wait(isClickable, 5000); //wait for an element to become clickable
1971 button.click();
1972 ```
1973
1974 You can also customize the conditions:
1975
1976 ```javascript
1977 var urlChanged = function() {
1978 return browser.getCurrentUrl().then(function(url) {
1979 return url != 'http://www.angularjs.org';
1980 });
1981 };
1982
1983 // condition to wait for url to change, title to contain 'foo', and $('abc') element to contain text 'bar'
1984 var condition = EC.and(urlChanged, EC.titleContains('foo'),
1985 EC.textToBePresentInElement($('abc'), 'bar'));
1986 $('navButton').click(); browser.wait(condition, 5000); //wait for condition to be true.
1987 // do other things
1988 ```
1989
1990- ([fb099de](https://github.com/angular/protractor/commit/fb099dedf92a64732d88401dd1b0d4d30b22650d))
1991 feat(elementExplorer): Combine browser.pause with elementExplorer
1992
1993 * reuse logic for browser.pause for elementExplorer
1994 * introduce browser.enterRepl
1995 * allow customization of driver for elementExplorer
1996 * fix bug where repl cannot return an ElementFinder (related #1600)
1997
1998 Closes #1314, #1315
1999
2000- ([9def5e0](https://github.com/angular/protractor/commit/9def5e0e67e031949010fed4ed47178a534c99e8))
2001 feat(runner): add browser.getProcessedConfig method
2002
2003 Now, instances of the `browser` object have a `getProcessedConfig` method which returns a promise
2004 that resolves to the current Protractor configuration object for the current runner instance. This
2005 means that if multiCapabilities are being used or tests are sharded, `getProcessedConfig` will
2006 return an object with the `capabilities` and `specs` property specific to the current instance.
2007
2008 Closes #1724
2009
2010## Bug Fixes
2011
2012- ([ccb165d](https://github.com/angular/protractor/commit/ccb165d99b69e1ae66e4c1badd2f4e04f1481e75))
2013 fix(webdriver-manager): unzipping chromedriver should override old version
2014
2015 See #1813
2016
2017# 1.6.1
2018
2019## Bug Fixes
2020
2021- ([92c5d17](https://github.com/angular/protractor/commit/92c5d17844a2b4dc56c483ab4a65e2bf631175f9))
2022 fix(element): test crashes when using certain locators with `fromWebElement_`
2023
2024 Protractor crashes when one uses locators with findElementsOverride (i.e. any custom protractor
2025 locator like by.binding/repeater/etc) in map/filter/then/each/reduce
2026
2027# 1.6.0
2028
2029## Features
2030
2031- ([1e60a95](https://github.com/angular/protractor/commit/1e60a9504c883a95f3500eafa38e1fc11dc28c9b))
2032 feat(frameworks): add jasmine2 framework
2033
2034 Jasmine2.x may now be used by setting `framework: jasmine2` in your config.
2035 See https://github.com/angular/protractor/blob/master/docs/jasmine-upgrade.md
2036
2037- ([0b93003](https://github.com/angular/protractor/commit/0b930035905d1868225667de358222e51394f3ac))
2038 feat(jasmine2): add 'grep' option to jasmine2
2039
2040 Allow users to filter the specs that they want to run using simple string match. To use this
2041 feature, either: 1) specify jasmineNodeOpts.grep in your conf.js file
2042 or 2) via commandline like "protractor conf.js --grep='pattern to match'"
2043
2044- ([4368842](https://github.com/angular/protractor/commit/4368842da73d4ed501df21b61daf71951e59524b))
2045 feat(wddebugger): enable repl (with autocomplete) for browser.pause
2046
2047 See https://github.com/angular/protractor/blob/master/docs/debugging.md for
2048 usage.
2049
2050- ([9c9ed31](https://github.com/angular/protractor/commit/9c9ed31591f5a3c552222ad7feb1ecd650973902))
2051 feat(launcher): allow multicapabilities to take array of promises
2052
2053 Enables adding `getMultiCapabilities: function(){}` to your configuration file. The function
2054 returns either multiCapabilities or a promise of a multiCapabilities that is resolved after
2055 `beforeLaunch` and before driver set up. If this is specified, both capabilities and
2056 multiCapabilities will be ignored.
2057
2058 Also allows specifying `seleniumAddress` in the capabilities/multiCapabilities object, which will
2059 override the global `seleniumAddress`. This allows you to use a different `seleniumAddress` per
2060 capabilities.
2061
2062 Breaking Changes:
2063 `capabilities` can no longer be a promise. Use getMultiCapabilities if you need to return a
2064 promise.
2065 `seleniumAddress` can no longer be a promise. Likewise, use getMultiCapabilities.
2066
2067- ([1670384](https://github.com/angular/protractor/commit/167038499aacfd5def03472f9f548529b273e1e0))
2068 feat(runner): allow protractor to restart browser between tests
2069
2070 Enables adding `restartBrowserBetweenTests: true` to your configuration file. Note that this will
2071 slow down test suites considerably. Closes #1435
2072
2073- ([56beb24](https://github.com/angular/protractor/commit/56beb24b9473ceedc491f3ca00fbce1bb9a18f29))
2074 feat(protractor): add browser.getRegisteredMockModules()
2075
2076 Now `browser.getRegisteredMockModules()` returns a list of the functions or strings that have
2077 been registered as mock modules. For troubleshooting.
2078
2079 Closes #1434.
2080
2081- ([5a404c2](https://github.com/angular/protractor/commit/5a404c27326fdb130e5d4ac5c4704b4013c78853))
2082 feat(timeline): add timeline plugin
2083
2084 This plugin gathers test timeline information from the protractor test process, the selenium
2085 client logs (if available), and sauce labs (if available), and presents the output visually. This
2086 improves understanding of where latency issues are in tests. See #674
2087
2088 Usage:
2089
2090 Add the plugin to your configuration file:
2091
2092 ```js
2093 exports.config = {
2094 plugins: [{
2095 path: 'node_modules/protractor/plugins/timeline/index.js',
2096
2097 // Output json and html will go in this folder.
2098 outdir: 'timelines',
2099
2100 // Optional - if sauceUser and sauceKey are specified, logs from
2101 // SauceLabs will also be parsed after test invocation.
2102 sauceUser: 'Jane',
2103 sauceKey: 'abcdefg'
2104 }],
2105 // other configuration settings
2106 };
2107 ```
2108
2109- ([a9d83f7](https://github.com/angular/protractor/commit/a9d83f7ebbce1be7f7f8c2986d1bfebccff1d6f3))
2110 feat(plugins): add postResults hook for plugins
2111
2112 Allows plugins to include a postResults function, which will be called after webdriver has been
2113 quit and the environment has been torn down. This step may not modify the contents of the test
2114 results object.
2115
2116## Dependency Version Upgrades
2117
2118- ([2b4ac07](https://github.com/angular/protractor/commit/2b4ac07eaccafec2ad88c05747a75268a3529759))
2119 feat(webdriver): version bumps for chromedriver and supported browsers
2120
2121 Chromedriver to 2.13. CI browser version bumps for Chrome 39 and Firefox 34.
2122
2123
2124## Bug Fixes
2125
2126- ([adf30ba](https://github.com/angular/protractor/commit/adf30ba701d2a1ec992912001723de19366bea57))
2127 fix(test): use a platform agnostic way to run minijasminenode
2128
2129- ([50ee0b4](https://github.com/angular/protractor/commit/50ee0b4d1a1b93cedf3d099d349b937b25ee9e79))
2130 fix(test): allow to run 'npm start' or 'npm test' from windows too
2131
2132- ([b28355d](https://github.com/angular/protractor/commit/b28355dabde4c507ac620b973104e98e96279f2a))
2133 fix(cucumber): emit on cucumber scenario instead of step
2134
2135- ([33dcd77](https://github.com/angular/protractor/commit/33dcd777fe34c6682b64bda0adc4f3595b03394b))
2136 fix(util): webdriver could deadlock
2137
2138 when prepare scripts containing promises are wrapped in a flow.execute
2139
2140- ([a877268](https://github.com/angular/protractor/commit/a877268f35cb0df8f34f60b71ad7201fef58d189))
2141 fix(locators): ng-repeat-start should not return extra null element
2142
2143- ([d505249](https://github.com/angular/protractor/commit/d505249fff773d0eaee8b17435ab751be8fbefa6))
2144 fix(waitforangular): improve error messages when waitForAngular fails
2145
2146 Previously, caught errors were being interpreted as an empty object, causing lots of errors such
2147 as
2148 'Uncaught exception: Error while waiting for Protractor to sync with the page: {}' Now the error
2149 message will be displayed, and a more useful custom message will be thrown if the variable
2150 'angular' is not present or the root element is not part of the ng-app.
2151
2152 See #1474
2153
2154## Breaking Changes
2155
2156- Due to ([9c9ed31](https://github.com/angular/protractor/commit/9c9ed31591f5a3c552222ad7feb1ecd650973902))
2157 feat(launcher): allow multicapabilities to take array of promises
2158
2159 Breaking Changes:
2160 `capabilities` can no longer be a promise. Use getMultiCapabilities if you need to return a
2161 promise.
2162 `seleniumAddress` can no longer be a promise. Likewise, use getMultiCapabilities.
2163
2164 Why is this breaking change not causing a major version bump? This feature was
2165 not fully supported previously and we worked with all known users when making
2166 the change.
2167
2168
2169# 1.5.0
2170
2171## Features
2172
2173- ([55a91ea](https://github.com/angular/protractor/commit/55a91ea137395891248db148df75dd6408c3b3a2))
2174 feat(launcher): reorganize launcher + add option to store test results as JSON
2175
2176 You may now use `config.resultJsonOutputFile` to specify a location for
2177 output. See docs/referenceConf.js for more usage.
2178
2179- ([6a88642](https://github.com/angular/protractor/commit/6a886425a11b28fce83b6eec1f52296c4f78b7f0))
2180 feat(plugins): basic tools for adding plugins
2181
2182- ([2572feb](https://github.com/angular/protractor/commit/2572febe2c607d459a21e2ba99a1dcece2083d2d))
2183 feat(plugin): ngHint plugin
2184
2185 For information on usage, see `plugins/ngHintPlugin.js`. More documentation
2186 on plugins will be added soon.
2187
2188- ([0bbfd2b](https://github.com/angular/protractor/commit/0bbfd2b6d38392938781d846ad37b5a0fd964004))
2189 feat(protractor/runner): allow multiple browser in test
2190
2191 Closes https://github.com/angular/protractor/issues/381
2192 Usage: `browser.forkNewDriverInstance`.
2193
2194- ([8b5ae8b](https://github.com/angular/protractor/commit/8b5ae8ba3d2b3f1de75c0add91694e39e9c591a8))
2195 feat(troubleshoot): Add more information when the --troubleshoot flag is used
2196
2197 Improve error messages and add debug info when
2198 - the configuration file cannot be parsed
2199 - a webdriver session cannot be started
2200 - more than one element is found using `element`
2201
2202 Unify format used for warnings and errors.
2203
2204## Bug Fixes
2205
2206- ([30023f2](https://github.com/angular/protractor/commit/30023f2689171bc4f51a173d9cfd62a18fe276c5))
2207 fix(runner): setTestPreparer does not work
2208
2209 setTestPreparer would always set the testPrepare to config.onprepare during
2210 `runner.run()`. This is breaking for code that relies on setTestPreparer directly.
2211
2212- ([47f12ba](https://github.com/angular/protractor/commit/47f12ba31754346062a1e1d20380346a1c7a0659))
2213 fix(clientsidescripts): make findByCssContainingText tolerate elements with no
2214 textContent/innerText
2215
2216- ([6a9b87c](https://github.com/angular/protractor/commit/6a9b87cac9b85cde6ae464eafe4abbba27e4fe4f))
2217 fix(elementexplorer): eval always treat result as promise
2218
2219- ([289dbb9](https://github.com/angular/protractor/commit/289dbb91a0676add40c12bb85d134904c57dcefd))
2220 fix(util): properly handle exceptions from onPrepare and onExit
2221
2222- ([a132fac](https://github.com/angular/protractor/commit/a132fac0afed5dc5fe8e2663e5aa1c1a90586920))
2223 fix(jasmine): fix errors when iit was used
2224
2225 Errors were due to Jasmine not calling reportSpecStarting when iit was used, but calling
2226 reportSpecResults.
2227
2228 Closes #1602
2229
2230## Breaking Changes
2231
2232- ([0bbfd2b](https://github.com/angular/protractor/commit/0bbfd2b6d38392938781d846ad37b5a0fd964004))
2233 feat(protractor/runner): allow multiple browser in test
2234
2235 `protractor.getInstance()` had been unused (replaced by global `browser` in v0.12.0)
2236 and is now removed.
2237
2238 Before:
2239 ```js
2240 var myBrowser2 = protractor.getInstance();
2241 ```
2242
2243 After:
2244 ```js
2245 // In normal tests, just use the exported global browser
2246 var myBrowser2 = browser;
2247 ```
2248
2249 If you are creating your own instance of the Protractor class, you may still
2250 use `protractor.wrapDriver` as before.
2251
2252
2253# 1.4.0
2254
2255## Features
2256
2257- ([adef9b2](https://github.com/angular/protractor/commit/adef9b208fcba2a9d60347bda38a3fe3fac6bf50))
2258 feat(runner): add a new method of getting browser drivers - directConnect
2259
2260 directConnect as an option on the configuration will replace chromeOnly. Now, WebDriverJS allows
2261 Firefox to be used directly as well, so directConnect will work for Chrome and Firefox, and throw
2262 an error if another browser is used.
2263
2264 This change deprecates but does not remove the chromeOnly option.
2265
2266- ([0626963](https://github.com/angular/protractor/commit/06269636f52f9b3a9c73beb6191ae89a7a376cfb))
2267 feat(config): Option to exclude test for specific capability
2268
2269 Add the option to exclude spec files for a specific capability. This way you can ignore spec
2270 files for one capability only. For example if the test is known to fail in the capability.
2271
2272 Closes #1230
2273
2274- ([710cad7](https://github.com/angular/protractor/commit/710cad7c5a2d838a0c4184defa1b7d4240f577f6))
2275 feat(runner/frameworks): Change interface contract of the protractor runner instance so that it
2276 returns a promise instead of calling a callback function
2277
2278- ([50f44f4](https://github.com/angular/protractor/commit/50f44f430851cbd76dbb3a41d6071198f6f479a4))
2279 feat(protractor): add clone methods for ElementFinder and ElementArrayFinder
2280
2281- ([eedf50b](https://github.com/angular/protractor/commit/eedf50b48ca55f18e8555ce5aa64ad92b03887c8))
2282 feat(launcher): add beforeLaunch and afterLaunch
2283
2284- ([8dd60b7](https://github.com/angular/protractor/commit/8dd60b73a3013bd29213c8d281819da6e545c7ff))
2285 feat(protractor): wrap negative indices for ElementArrayFinder.get(i)
2286
2287 Closes #1213
2288
2289- ([be236e7](https://github.com/angular/protractor/commit/be236e7f44c5306df36b62bb21bb3ba940c86944))
2290 feat(debugging): use custom messages when executing scripts to improve stack traces
2291
2292 Now, instead of asynchronous events during executeScript all being described as
2293 `WebDriver.executeScript`, they have their own custom messages. The schedule shown when debugging
2294 will be more informative.
2295
2296## Dependency Version Upgrades
2297
2298- ([889a5a7](https://github.com/angular/protractor/commit/889a5a70c1f980d09a615cf1e8ceaea33272ba8e))
2299 feat(webdriver): version bumps for webdriver, chromedriver, webdriverJS
2300
2301 Upgrade to WebDriver 2.44.0 and ChromeDriver 2.12.
2302
2303## Bug Fixes
2304
2305- ([2fbaf52](https://github.com/angular/protractor/commit/2fbaf52fd59f03929e173ebf760a97de34bf91d4))
2306 fix(element): use the root element only to find the testability API, not scope searches
2307
2308 In 9a8f45a a change was introduced which made Protractor's custom locators (by.binding, by.model,
2309 etc) use config.rootElement as the root for all their searches. This meant that
2310 config.rootElement was used both to specify how to get hold of Angular's injector as well as
2311 where to begin searching for elements. This does not work for all cases, for example if a dialog
2312 should be searched for elements but is a sibling, not a child, of ng-app.
2313
2314 This reverts that change, and uses document as the parent for all searches. This is consistent
2315 with the behavior of the native locators by.id, by.css, and friends, which do not scope their
2316 search based on config.rootElement.
2317
2318- ([9db5327](https://github.com/angular/protractor/commit/9db5327e4ada7eb3caa271b394bcda0ba5e8fd62))
2319 fix(ElementFinder): ElementFinder should allow null as success handler. Passes the value to the
2320 next in the chain.
2321
2322- ([0858280](https://github.com/angular/protractor/commit/0858280db156f924ef126c3aaeae6973b8d44067))
2323 fix(locators): by.cssContainingText now operates on pre-transformed text
2324
2325 Previously, the implementation depended on the browser. Now, it will always operate on the text
2326 before text-transform is applied. Closes #1217
2327
2328- ([1a4eea4](https://github.com/angular/protractor/commit/1a4eea4eb89362822dc86be6904c1ddfba95661e))
2329 fix(elementexplorer): elementexplorer hangs when returning ElementFinder
2330
2331- ([f4e6b40](https://github.com/angular/protractor/commit/f4e6b40c597dc1c59dc7eccfe236abcc336a46a9))
2332 fix(runner): webdriver could get into lock when there is async promise
2333
2334- ([cf284b9](https://github.com/angular/protractor/commit/cf284b994fb6766c8ab34d0af9b4ccf8fd866bd1))
2335 fix(clientsidescripts): by.exactBinding not working because of regex typo
2336
2337 Closes #1441
2338
2339- ([9cc0f63](https://github.com/angular/protractor/commit/9cc0f6398146ed9bfc757c1efc05d1806bab1e16))
2340 fix(runner): gracefully shutdown browsers after test
2341
2342- ([86ead2c](https://github.com/angular/protractor/commit/86ead2c5a20d474e59c3b9796b5438dc2090a6ed))
2343 fix(webdriver-manager): Avoid incompatibility between request with callback and pipe.
2344
2345- ([7283fdf](https://github.com/angular/protractor/commit/7283fdfa1e4c69bcab6af8f28f8f1b77634a50fd))
2346 fix(launcher): exit code is always 100 for sharded and 1 for nonsharded tests
2347
2348# 1.3.1
2349
2350## Bug Fixes
2351
2352- ([714e4e2](https://github.com/angular/protractor/commit/714e4e28ab90fb5dfeca4375a68469ef609e2722))
2353 fix(locators): fix regression passing root element to locator scripts
2354
2355 Closes #1378
2356
2357# 1.3.0
2358
2359## Features
2360
2361- ([4f1fe68](https://github.com/angular/protractor/commit/4f1fe68882dedba662752e722b9e7b76bfed19b6))
2362 feat(runner): Allow onCleanup to accept a file
2363
2364- ([548f0c0](https://github.com/angular/protractor/commit/548f0c09748502cb6ae87e602db09e6df78df348))
2365 feat(webdriver): bump WebDriver to version 2.43
2366
2367- ([466b383](https://github.com/angular/protractor/commit/466b3831569dc28c5fc2be31fbdf96574e57c3f0))
2368 feat(protractor): allow advanced features for ElementArrayFinder
2369
2370 changed ElementFinder as a subset of an ElementArrayFinder.
2371
2372 This enables actions on ElementArrayFinders, such as:
2373 `element.all(by.css('.foo')).click()`
2374
2375 The function `filter` now returns an ElementArrayFinder, so you may also do:
2376 `element.all(by.css('.foo')).filter(filterFn).click()`
2377
2378 or
2379
2380 `element.all(by.css('.foo')).filter(filterFn).last().click()`
2381
2382- ([7bd2dde](https://github.com/angular/protractor/commit/7bd2dde0a6fca8c8481ad68d0683b4f411d611b9))
2383 chore(angular): upgrade angular to version 1.3.
2384
2385 This change updates Protractor's test application from 1.2.9 to 1.3.0-r0.
2386
2387 There is a significant behind-the-scenes change in the implementation of locating elements and
2388 waiting for the page to be stable. If you are updating your application to Angular 1.3, you may
2389 run into some changes you will need to make in your tests:
2390
2391 - `by.binding` no longer allows using the surrounding `{{}}`. Previously, these
2392 were optional.
2393 Before: `var el = element(by.binding('{{foo}}'))`
2394 After: `var el = element(by.binding('foo'))`
2395
2396 - Prefixes `ng_` and `x-ng-` are no longer allowed for models. Use `ng-model`.
2397
2398 - `by.repeater` cannot find elements by row and column which are not children
2399 of the row. For example, if your template is
2400 `<div ng-repeat="foo in foos">{{foo.name}}</div>`
2401 Before: `var el = element(by.repeater('foo in foos').row(2).column('foo.name'))`
2402 After: You may either enclose `{{foo.name}}` in a child element or simply use:
2403 `var el = element(by.repeater('foo in foos').row(2))`
2404
2405- ([ee82f9e](https://github.com/angular/protractor/commit/ee82f9e3d0656b3c88f041f0115743352bc08941))
2406 feat(webdriver-manager): ignore ssl checks with --ignore_ssl option
2407
2408 Allow ability to ignore SSL checks when downloading webdriver binaries. Usage: `webdriver-manager
2409 update --ignore_ssl`
2410
2411## Bug Fixes
2412
2413- ([838f5a2](https://github.com/angular/protractor/commit/838f5a2b248b1539b7ece13a8ccb921eda08ee45))
2414 fix(element): isPresent should not throw on chained finders
2415
2416 Now, `$('nonexistant').$('foo').isPresent()` will return false instead of throwing an error. This
2417 change also adds tests that ensure that catching errors from promises works as expected.
2418
2419## Breaking Changes
2420
2421- ([f7c3c37](https://github.com/angular/protractor/commit/f7c3c370a239218f6143a4992b1fc4763f4cdd3d))
2422 feat(webdriver): update to WebDriverJS 2.43.5
2423
2424 Breaking Changes WebDriverJS has introduced changes in the way that Promises are handled in
2425 version 2.43. See
2426 https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/CHANGES.md
2427 - `webdriver.WebElement` has now been split into `webdriver.WebElementPromise`
2428 and `webdriver.WebElement` so that it does not resolve to itself. This change
2429 should be largely transparent to users.
2430 - `WebElement.toWireValue` has been removed.
2431
2432
2433# 1.2.0
2434
2435## Features
2436
2437- ([830f511](https://github.com/angular/protractor/commit/830f51128d1ca6c8858c99617b2752172044a752))
2438 feat(protractor): allow file:// baseUrls
2439
2440 Modified protractor to support testing node-webkit by using string concatenation vs url.resolve()
2441 when the baseUrl begins with file://
2442
2443 Closes #1266.
2444
2445- ([71b9c97](https://github.com/angular/protractor/commit/71b9c97432316a8409c7c83e28a3b1eba2d83f25))
2446 feat(cucumber): process the Cucumber 'coffee' param
2447
2448## Bug Fixes
2449
2450- ([ade9a92](https://github.com/angular/protractor/commit/ade9a9277558a564e15e46266a82aeb43261d958))
2451 fix(webdriver-manager): always use https for downloading webdriver binaries
2452
2453 This fixes issues with unzipping - see #1259
2454
2455- ([9a8f45a](https://github.com/angular/protractor/commit/9a8f45af49633f1637c88960ba079d7d425ca72c))
2456 fix(locators): locators should use the root element provided in config
2457
2458 Previously, locators used 'document' as the root for their search. After this change, they will
2459 use the root element provided in the config file -
2460 `config.rootElement`. This will make sure behavior is correct if there are multiple angular apps
2461 on one page, and also enables the getTestability path, because that requires a root element under
2462 an ng-app.
2463
2464# 1.1.1
2465This is a minor release with no functional changes. It contains a couple
2466implementation switches that new versions of Angular will use.
2467
2468# 1.1.0
2469
2470## Features
2471
2472- ([316961c](https://github.com/angular/protractor/commit/316961c6a5d7410d73a2784a9622b106008b0930))
2473 feat(runner/hosted): add support for promises for seleniumAddress and capabilities
2474
2475 Change driverProviders/hosted to resolve promise values in configuration to allow async jobs in
2476 setup. Specifically, seleniumAddress, capabilities, and multiCapabilities may be promises.
2477 Primarily, this would be for a network call to acquire a selenium host or to start a proxy
2478 server.
2479
2480- ([953faf7](https://github.com/angular/protractor/commit/953faf7ebee345f686bfedff61ebcb29c5170083))
2481 feat(runner): allow onPrepare functions to return a promise
2482
2483 If onPrepare is a function which returns a promise (or a file which exports a promise), the test
2484 runner will now wait for that promise to be fulfilled before starting tests.
2485
2486- ([6de2e32](https://github.com/angular/protractor/commit/6de2e32328fc30b43428973457db08f34b7c1839))
2487 feat(runner): Add support for async onCleanUp functions
2488
2489 If the onCleanUp function returns a promise, the process will allow it to resolve before exiting.
2490 This is useful for performing async operations like writing to a file or calling an API at the
2491 end of a test run.
2492
2493- ([cd575ee](https://github.com/angular/protractor/commit/cd575ee3a4d8c0930db23ad66649bf0d665ce2d6))
2494 feat(sauce provider): allow for custom server addresses when running against SauceLabs.
2495
2496 Use `config.sauceSeleniumAddress` to connect to a custom URL for Sauce Labs.
2497
2498- ([1b16c26](https://github.com/angular/protractor/commit/1b16c26ac143910d3f3e92a3db4ac6ab168a8544))
2499 feat(suites): allow more than one suite from the command line
2500
2501 Allow a comma-separated list of suites be provided on the command line, like
2502 `--suite=suite1,suite2`
2503
2504- ([25cf88c](https://github.com/angular/protractor/commit/25cf88c29449cef6b925d19ec9cd17671f1befc9))
2505 feat(ElementArrayFinder): keep a reference to the original locator
2506
2507## Bug Fixes
2508
2509- ([d15d35a](https://github.com/angular/protractor/commit/d15d35a82a5a267bb7ae9c675017f091901c019f))
2510 fix issue where ElementFinder.then does not return a promise
2511
2512 See https://github.com/angular/protractor/issues/1152
2513
2514- ([9e36584](https://github.com/angular/protractor/commit/9e365848820a9a56547e884592e5ea13ef8460ea))
2515 fix(webdriver-manager): removed ssl on chromedriver url for consistency
2516
2517 Other URLs use http, make chromedriver use this as well.
2518
2519- ([0da1e0c](https://github.com/angular/protractor/commit/0da1e0c65ba7a2b55ad2f5a4582e229dd876f940))
2520 fix(protractor): add dummy isPending function
2521
2522 See https://github.com/angular/protractor/issues/1021
2523
2524- ([9814af1](https://github.com/angular/protractor/commit/9814af11f35973f0b4a3325fcd0d9e0d91233e61))
2525 fix issue where color formatting text is leaking
2526
2527 See https://github.com/angular/protractor/issues/1131
2528
2529- ([8f1b447](https://github.com/angular/protractor/commit/8f1b4472430ec2d24f102d284e807b073d17ad81))
2530 fix(launcher): fix issue where test passes on unexpected failures
2531
2532
2533# 1.0.0
2534
2535No changes from rc6.
2536
2537# 1.0.0-rc6
2538
2539## Dependency Version Upgrades
2540
2541- ([b6ab644](https://github.com/angular/protractor/commit/b6ab644dd8105d3f64e347342a0ae2ad2f0100fc))
2542 chore(jasminewd): update to version 1.0.4
2543
2544 This version contains a fix for too many timeout messages.
2545
2546## Bug Fixes
2547
2548- ([0c4a70e](https://github.com/angular/protractor/commit/0c4a70e0ffbbf4373dbd9f1ab29daabe9338d57b))
2549 fix(protractor) fix stack traces for WebElement errors
2550
2551 When angular/protractor@3c0e727136ab3d397c1a9a2bb02692d0aeb9be40 refactored `element()` into the
2552 ElementFinder object, the function lost some of its error handling. This removed references to
2553 frames inside tests (`it()` blocks), making it hard to tell where the error was actually
2554 occurring.
2555
2556 This commit fixes these problems, showing full stack traces for WebElement errors.
2557
2558# 1.0.0-rc5
2559
2560## Features
2561
2562- ([51a5e89](https://github.com/angular/protractor/commit/51a5e89f7dace45e61d8eab70e1ea6e9354d4de6))
2563 feat(config): allow setting the get page timeout globally from the config
2564
2565 To change the timeout for how long a page is allowed to stall on `browser.get`, change
2566 `getPageTimeout: timeout_in_millis` in the configuration. As before, you may also change the
2567 timeout for one particular `get` call by using a second parameter:
2568 `browser.get(url, timeout_in_sec)`
2569
2570## Bug Fixes
2571
2572- ([985ff27](https://github.com/angular/protractor/commit/985ff27c9a94cca83af8db5bf7e570d826b23838))
2573 fix(configParser): load new functions from configs
2574
2575 Closes #1043
2576
2577## Breaking Changes
2578
2579- ([51a5e89](https://github.com/angular/protractor/commit/51a5e89f7dace45e61d8eab70e1ea6e9354d4de6))
2580 feat(config): allow setting the get page timeout globally from the config
2581
2582 This change contains a small breaking change for consistency. Previously, the second parameter to
2583 `get` changed the timeout in seconds. Now, the units are milliseconds. This is consistent with
2584 all the other timeouts, as well as base JavaScript functions like setTimeout.
2585
2586 - before: `browser.get(url, 4)`
2587 - after: `browser.get(url, 4000)`
2588
2589# 1.0.0-rc4
2590
2591## Bug Fixes
2592
2593- ([ab1d0be](https://github.com/angular/protractor/commit/ab1d0be8cd83b37906b9b8750dd9d85d72))
2594 fix(navigation): fix using browser.get with safari driver
2595
2596 SafariDriver fails with data urls - see #1049. Reverting to use about:blank for now.
2597
2598# 1.0.0-rc3
2599
2600## Features
2601
2602- ([f0e7984](https://github.com/angular/protractor/commit/f0e7984cdd169df947142c1cff0bd1bc33ac995b))
2603 feat(launcher): append capability tag for all output
2604
2605## Bug Fixes
2606
2607- ([1198dde](https://github.com/angular/protractor/commit/1198ddef9e353383819fca3a40bdaba0db22f96f))
2608 fix(navigation): use empty html data urls for page resets instead of about:blank
2609
2610 Except on internet explorer, which does not allow data urls.
2611
2612 Closes #1023.
2613
2614# 1.0.0-rc2
2615
2616## Dependency Version Updates
2617
2618- ([e10e1a4](https://github.com/angular/protractor/commit/e10e1a4a8ae5013982f00d209e6fab1ff2b1d2a1))
2619 chore(minijasminenode): update minijasminenode dependency to v1.1.0
2620
2621 This adds several options for the reporter, which can be included in protractor's
2622 `config.jasmineNodeOpts`
2623 ```js
2624 // If true, output nothing to the terminal. Overrides other printing options.
2625 silent: false,
2626 // If true, print timestamps for failures
2627 showTiming: true,
2628 // Print failures in real time.
2629 realtimeFailure: false
2630 ```
2631
2632- ([be0bb00](https://github.com/angular/protractor/commit/be0bb00db6f51e381e31e80c6808a202270ecb20))
2633 chore(jasminewd): update jasminewd to v1.0.3
2634
2635 This fixes extra logging when a timeout occurs.
2636
2637## Features
2638
2639- ([82c1d47](https://github.com/angular/protractor/commit/82c1d47462779688bb8c9ac74ba3a6ecfefb7775))
2640 feat(protractor): add iteration index to ElementArrayFinder.each
2641
2642- ([62bcf7e](https://github.com/angular/protractor/commit/62bcf7e1c84ed720bc17435c40e1f78c50ba194c))
2643 feat(webdriver-manager): minor proxy enhancements
2644
2645 Added error handling for request - previously, any errors coming from the request module were
2646 silently swallowed.
2647
2648 Fixed error handling to remove empty files when a download fails for some reason.
2649
2650 Also evaluating both uppercase and lowercase proxy variables. Many tools use proxy variables in
2651 the form https_proxy, others use HTTPS_PROXY.
2652
2653## Bug Fixes
2654
2655- ([dbf7ab5](https://github.com/angular/protractor/commit/dbf7ab5fdf7832676f37328e2ad96b9097db3f62))
2656 fix(mocha): mocha globals should be re-wrapped for every new suite
2657
2658 Closes #523, closes #962
2659
2660
2661# 1.0.0-rc1
2662
2663## Dependency Version Updates
2664
2665- ([0dc0421](https://github.com/angular/protractor/commit/0dc04217a6a5b772d42b1463c91d89beca7df258))
2666 chore(selenium): version bumps to selenium 2.42.2
2667
2668## Features
2669
2670- ([6906c93](https://github.com/angular/protractor/commit/6906c9326a4a83d81a0d09bdc1446cccb579d699))
2671 feat(webdriver-manager): use proxy for webdriver-manager
2672
2673- ([7d90880](https://github.com/angular/protractor/commit/7d9088025c5a1c37428ea3f1cee3dc8d3793f79e))
2674 feat(locators): implement by.options
2675
2676- ([4e1cfe5](https://github.com/angular/protractor/commit/4e1cfe5ad0f22947d21b4ebecd7cd05e0319af1a))
2677 feature(launcher): aggregate failures at the end and output message from the launcher
2678
2679- ([ff3d5eb](https://github.com/angular/protractor/commit/ff3d5ebc071a8806259f5da20018f2d937409455))
2680 feat(locators): add toString() wrapper for this.message
2681
2682- ([c892c2a](https://github.com/angular/protractor/commit/c892c2a1a773cc24cc6565efe2db892776143104))
2683 feat(protractor): implement reduce and filter for ElementArrayFinder
2684
2685 See https://github.com/angular/protractor/issues/877
2686
2687- ([8920028](https://github.com/angular/protractor/commit/8920028f42e683dc45e18a6dd9386bd862548010))
2688 feat(pause): allow the user to specify a port to be used for debugging
2689
2690 Using browser.pause(portNumber) will now start the debugger on the specified port number.
2691
2692 Closes #956
2693
2694## Bug Fixes
2695
2696- ([f9082d0](https://github.com/angular/protractor/commit/f9082d0460c7b6465d53c37f326a0f66412c21ce))
2697 fix(clientsidescripts): make exactBinding more exact
2698
2699 See https://github.com/angular/protractor/issues/925
2700
2701- ([6641c81](https://github.com/angular/protractor/commit/6641c8168d74914d4826c5968771a2aec8299833))
2702 fix(launcher): report summary when specs fail
2703
2704- ([36e0e0a](https://github.com/angular/protractor/commit/36e0e0aaf090b0c9b5450fa59ba2da4c4237442a))
2705 fix(protractor): allow exceptions from actions to be catchable
2706
2707 See https://github.com/angular/protractor/issues/959
2708
2709- ([e86eb72](https://github.com/angular/protractor/commit/e86eb726ad20737d463341afdb4c56b4d19ef414))
2710 fix(protractor): removing a mock module that was never added now is a noop
2711
2712 It used to remove the last module - now is a noop.
2713
2714 Closes #764
2715
2716- ([bf26f76](https://github.com/angular/protractor/commit/bf26f76ba5dc99d02ea4cd7fc198dce410a9f58c))
2717 fix(locators): findind elements by text should trim whitespace
2718
2719 WebDriver always trims whitespace from around the text of an element, so to be consistent we
2720 should trim the text from button elements before doing a by.buttonText.
2721
2722 Closes #903, Closes #904.
2723
2724- ([48798b0](https://github.com/angular/protractor/commit/48798b0a8ac1fc56d0cdd80e177d67fdf592069c))
2725 fix(elementexplorer): element.all hangs in interactive mode
2726
2727# 0.24.2
2728_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
2729
2730## Bug Fixes
2731
2732- ([a43f983](https://github.com/angular/protractor/commit/a43f98391d36cead7378d1dd26f54248f39300b7))
2733 fix(protractor): make ElementFinder.then resolve to itself instead of null
2734
2735- ([31d42a3](https://github.com/angular/protractor/commit/31d42a3875c5b95893d8a20d00dc5365c289ff98))
2736 fix(protractor): throw index-out-of-bounds
2737
2738 See https://github.com/angular/protractor/issues/915
2739 - to make error more specific instead of propagate later
2740
2741# 0.24.1
2742_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
2743
2744## Bug Fixes
2745
2746- ([59af936](https://github.com/angular/protractor/commit/59af936e1ef6e21432f7876144554db145083d46))
2747 fix(locators): Missing information in warning/error messages
2748
2749 Webdriver's built-in locators (such as `by.css()`) appeared as
2750 'undefined' in protractor's messages.
2751
2752 For instance, if a locator matched multiple elements, protractor would print the following
2753 message: 'warning: more than one element found for locator undefined- you may need to be more
2754 specific'.
2755
2756- ([13373f5](https://github.com/angular/protractor/commit/13373f5de18690e1994b32e092105cfe3ad1753d))
2757 fix(launcher): output error messages when child processes exit with error
2758
2759 Version 0.24.0 introduced a bug where child processes would error without outputting the error
2760 message. Fix. See #902.
2761
2762- ([72668fe](https://github.com/angular/protractor/commit/72668fe5ebbdc8126ff16887814f763198128ab5))
2763 fix(cssShortcut): fix $$ global throwing error
2764
2765# 0.24.0
2766_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
2767
2768## Features
2769
2770- ([7299155](https://github.com/angular/protractor/commit/729915554cfa440bda0eec8a1c4bf423f4089481))
2771 feat(sauceprovider): append spec filename to capabilities.name
2772
2773- ([f22456d](https://github.com/angular/protractor/commit/f22456d3cf0768a577371776d716b8888a74397d))
2774 refactor(jasminewd): use jasminewd from its own node module
2775
2776 The Jasmine Webdriver Adapter is now its own npm module. The code has been moved to
2777 http://www.github.com/angular/jasminewd.
2778
2779 Remove the code from Protractor, and add a dependency on jasminewd@1.0.0.
2780
2781- ([f23565d](https://github.com/angular/protractor/commit/f23565d5db4fbb102cfec8311ce9dfaee52e9113))
2782 feat(protractor): new API allowAnimations(bool) on protractor elements.
2783
2784- ([876a3c0](https://github.com/angular/protractor/commit/876a3c04c07a9f8d97e1edca3ec1f76e51e1a310))
2785 feat(runner): support running dart2js spec files
2786
2787 This commit supports running Dart2JS output in NodeJS. Officially, Dart2JS in supposed to only
2788 generate code for running in a real webbrowser. With this patch, the dart2js code can also be
2789 executed in NodeJS.
2790
2791 Ref:
2792 https://code.google.com/p/dart/source/browse/branches/bleeding_edge/dart/sdk/lib/js/dart2js/js_dart2js.dart?spec=svn32943&r=32943#487
2793
2794- ([8d46e21](https://github.com/angular/protractor/commit/8d46e210b91ed1521f6692a2cf35f60740c0ace6))
2795 feat(runner): support sourcemaps in spec files
2796
2797 This feature allows folks who are generating their spec files from a different language to see
2798 stack traces that use the line numbers from their sources before translation.
2799
2800 This commit introduces a dependency on the `source-map-support` library.
2801
2802 For general information about sourcemaps, refer:
2803 - http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/
2804 - https://github.com/evanw/node-source-map-support
2805 - https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/view
2806
2807## Bug Fixes
2808
2809- ([56daa54](https://github.com/angular/protractor/commit/56daa54e2e269064bd44bc05ed0bbf2c44657ca8))
2810 fix(clientsidescripts): convert non-Error exceptions to Errors
2811
2812 If any functions called by clientSideScripts throws a an exception that doesn't inherit from
2813 `Error`, the stack trace is completely unhelpful and the message is just "unknown error."  This
2814 commit wraps such errors into
2815 `Error` instances so that we have meaningful stack traces and the correct exception message. 
2816 (e.g. This is the common case when running dart2js code.  This commit gives us the Dart stack
2817 trace and exception message.)
2818
2819 In addition, I've pushed the construction of the string to install into the browser into
2820 clientsidescripts.js.
2821
2822- ([00c6abe](https://github.com/angular/protractor/commit/00c6abef16c47868974eed8ad1a4c38494b2a504))
2823 fix(element): fix WebElement.$ using the incorrect By object
2824
2825 Closes #852
2826
2827- ([0500b2c](https://github.com/angular/protractor/commit/0500b2c3b2698fe41bedf694b92aad884f3b0d0e))
2828 fix(navigation): ignore unknown JS errors when looking for the URL
2829
2830 This should address #841
2831
2832 Ignoring the error and trying again has worked for all of my test cases, and the error has never
2833 occurred more than once in a row.
2834
2835- ([c8c85e0](https://github.com/angular/protractor/commit/c8c85e0d94d7a7211b000650f01af714663611ad))
2836 fix(locators): fix by.repeater finding all rows for IE
2837
2838 Previously, element.all(by.repeater('foo in foos')) would find non-element nodes for
2839 ng-repeat-start elements, which could cause IEDriver to fall over if the test tried to get text
2840 from those nodes.
2841
2842## Breaking Changes
2843
2844- ([3c0e727](https://github.com/angular/protractor/commit/3c0e727136ab3d397c1a9a2bb02692d0aeb9be40))
2845 refactor(protractor): reorganize internal structure of elementFinder/webelement
2846
2847 - Allow chaining of actions (i.e. `element(By.x).clear().sendKeys('abc')`)
2848 - first(), last(), and get(index) are not executed immediately, allowing
2849 them to be placed in page objects
2850 - Rework the way that elementFinder and wrappedWebElement is represented
2851 - Breaking changes:
2852 - element.all is chained differently
2853 ```
2854 Before: element(By.x).element.all(By.y)
2855 Now: element(By.x).all(By.y)
2856
2857 However, using element.all without chaining did not change,
2858 i.e. `element.all(By.x)`
2859 ```
2860
2861 - Changed the way for retrieving underlying webElements
2862 ```
2863 Before: element(By.x).find(), element(By.x).findElement(By.y),
2864 and element(By.x).findElements(By.y)
2865 Now: element(By.x).getWebElement(),
2866 element(By.x).element(By.y).getWebElement(),
2867 and element(By.x).element(By.y).getWebElements(),
2868 respectively
2869 ```
2870 - browser.findElement returns a raw WebElement so $, $$, and
2871 evaluate will no longer be available
2872
2873- ([fbfc72b](https://github.com/angular/protractor/commit/fbfc72bad15667990232bb9ff1da503e03d16230))
2874 feat(launcher): Add support for maxSession
2875
2876 - add support for maxSession and capability-specific specs
2877 - cleaned up launcher (refactored out taskScheduler.js)
2878 - Breaking change:
2879 - changed the config to shard test files; also sharding is specific to
2880 capabilities now
2881 ```
2882 Before: config.splitTestsBetweenCapabilities
2883 Now: config.capabilities.shardTestFiles or config.multiCapabilities[index].shardTestFiles
2884 ```
2885
2886- ([9e5d9e4](https://github.com/angular/protractor/commit/9e5d9e4abb7d0928e6092a711fda527554994be7))
2887 feat(locators): remove deprecated locator APIs
2888
2889 This is a **breaking change**. The following deprecated Locator APIs have been removed.
2890
2891 - `by.input`
2892 - `by.select`
2893 - `by.selectedOption`
2894 - `by.textarea`
2895
2896 `input`, `select`, and `textarea` can be replaced by `by.model`.
2897
2898 `element(by.selectedOption('foo'))` can be replaced by
2899 `element(by.model('foo')).$('option:checked')`
2900
2901# 0.23.1
2902_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
2903
2904## Bug Fixes
2905
2906- ([59533d9](https://github.com/angular/protractor/commit/59533d95219796ce18f796434f8c3396ada7402c))
2907 fix(navigation): revert changes to the page reset
2908
2909 Navigating to an empty data URL won't work for internet explorer, sadly.
2910
2911 Reverting to about:blank. Will watch for flakes and explore other options.
2912
2913
2914# 0.23.0
2915_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
2916
2917## Features
2918
2919- ([b7afa87](https://github.com/angular/protractor/commit/b7afa8791ba91b83fd6613cdd9ad4c4c26d04f7e))
2920 feat(addMockModule): allow additional parameters
2921
2922 Allow Protractor’s 'addMockModule' method to pass context to its mocks, providing an argument to
2923 the script which overrides a module. Rely on the WebDriver’s 'executeScript' method.
2924
2925 Closes #695
2926
2927- ([546d41f](https://github.com/angular/protractor/commit/546d41faeb75342c875e0f9bb7702309c1aa186d))
2928 feat(sauceprovider): runner now prints a link to saucelabs test URL
2929
2930- ([fd7fe4a](https://github.com/angular/protractor/commit/fd7fe4a8c2c6fab6678d0c1f4d5619f7a2376990))
2931 feat(launcher): Add support for splitTestsBetweenCapabilities.
2932
2933- ([b93bf18](https://github.com/angular/protractor/commit/b93bf18feaf3c44b406a41bf87d70c95e7a900e0))
2934 feat(elementFinder): keep a reference to the original locator
2935
2936- ([98f4ba5](https://github.com/angular/protractor/commit/98f4ba590207e3f468b3cb2a30ff6ab6ae10fea1))
2937 feat(locators): add by.exactBinding
2938
2939## Bug Fixes
2940
2941- ([43ff9e5](https://github.com/angular/protractor/commit/43ff9e5e2a05b4e51d04133122d763ef4ed3f2d1))
2942 fix(jasminewd): allow asynchronous callbacks for jasmine tests
2943
2944 Closes #728, Closes #704
2945
2946- ([6249efe](https://github.com/angular/protractor/commit/6249efe57109d238044394636d623e0bd93dd4ad))
2947 fix(webdriver-manager): use request module instead of http
2948
2949 Google changed selenium-server-standalone.jar's location and is returning 302 http module does
2950 not follow redirects
2951
2952 Closes #826
2953
2954- ([95093c3](https://github.com/angular/protractor/commit/95093c3011431d1a1bdd6ec4d6139a6ff1c3e491))
2955 fix(configParser): don't run suite if specs are supplied
2956
2957- ([27a5706](https://github.com/angular/protractor/commit/27a5706a23e33bc898a5a9c7b301e79f962e3a7b))
2958 fix(loading): fix timeouts with about:blank removal
2959
2960 As documented at https://github.com/jnicklas/capybara/pull/1215 there are sometimes issues with
2961 webdriver and about:blank pages.
2962
2963 Switching instead to try a data url.
2964
2965- ([cbcdb48](https://github.com/angular/protractor/commit/cbcdb483002e51bc3cc4061fd5162627bbac7699))
2966 fix(runner): add -r for each cucumber require
2967
2968- ([e36c32a](https://github.com/angular/protractor/commit/e36c32a975739a99f6d434e1c9844d37382bda3a))
2969 fix(jasminewd): Use promise.all to combine promises and done
2970
2971 - Make the flow promise explicit and use promise.all to wait for both
2972 promises to be fulfilled before calling the done callback
2973
2974- ([b5c18db](https://github.com/angular/protractor/commit/b5c18dbb746e63496809460d6ed6e2100909659e))
2975 fix(drivers): prevent Sauce Labs login credentials from showing up in logs
2976
2977 Closes #754
2978
2979- ([b85af50](https://github.com/angular/protractor/commit/b85af5031241d424e2952db0eb8d7d0c8ce4475b))
2980 fix(protractor): change angular-bootstrap wrapper for navigation
2981
2982- ([8abea3c](https://github.com/angular/protractor/commit/8abea3cbb6f054c20e4f5abcbf61813d5b671239))
2983 fix(jasminewd): fix timeout for beforeEach and afterEach
2984
2985# 0.22.0
2986_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
2987
2988## Features
2989
2990- ([8b088fd](https://github.com/angular/protractor/commit/8b088fd6bf83696fd2ad294d8818e20894332693))
2991 feat(locators): Added a By.cssContainingText locator.
2992
2993 This new locator find elements by css selector and inner text in response to the lack of
2994 ':contains' selector.
2995
2996 Example: By.cssContainingText('ul .pet', 'Dog') will find all ul children with class 'pet'
2997 containing the text 'Dog'.
2998
2999 Closes #488, Closes #709
3000
3001- ([54060b7](https://github.com/angular/protractor/commit/54060b7cef4eb2f4c184c360cef7c2eb25c0ff6a))
3002 feat(protractor): add the browser.setLocation method to perform in-page navigation
3003
3004 Allow a faster way to navigate within the app. The current browser.get method forces the entire
3005 app to load every time you navigate to a new page. The proposed browser.setLocation method uses
3006 the same format as $location.url().
3007
3008 Closes #368
3009
3010- ([74761e8](https://github.com/angular/protractor/commit/74761e8b25395dd78e1c301ee23a7730fef36db9))
3011 feat(cli): use protractor.conf.js as a default config file if none is passed
3012
3013 Closes #615
3014
3015## Chores and updates
3016
3017- ([b81cf5a](https://github.com/angular/protractor/commit/b81cf5a949dee25c9070491edd1eb9e9feee556f))
3018 chore(webdriver): update WebDriverJS version to 2.41.0
3019
3020- ([a96df4d](https://github.com/angular/protractor/commit/a96df4d60a1f2e09de865bf7ca9c5c780f945239))
3021 chore(minijasminenode): update to version 0.4.0.
3022
3023 This allows the use of `because('message')` before expectations, to give additional information
3024 when a failure occurs.
3025
3026 It also removes warnings for Node 0.11.* users about util.print being deprecated.
3027
3028 Closes #377
3029
3030- ([6f31b56](https://github.com/angular/protractor/commit/6f31b5619de4fdb9b1b6e9a29a62dac09b781c6b))
3031 chore(package): npm start now brings up the testapp
3032
3033 Closes #712
3034
3035## Bug Fixes
3036
3037- ([1137d12](https://github.com/angular/protractor/commit/1137d12b95435438d2b84448796f9fe32d2f87b2))
3038 fix(mocha): fix it.only so that it does not double-wrap
3039
3040 Closes #469
3041
3042- ([bde56a0](https://github.com/angular/protractor/commit/bde56a0d92a79570f377490929dd1d05107f4e25))
3043 fix(cli): fix --exclude command line flag
3044
3045 Accidentally got changed to 'excludes'. As discussed earlier, should be single to be consistent
3046 with Karma.
3047
3048 Closes #637
3049
3050- ([9e426df](https://github.com/angular/protractor/commit/9e426dfd300a11f513c5d7202bbb632f4b1c41d8))
3051 fix(locators): using $().$$() should return an ElementArrayFinder
3052
3053 Prior, $(foo).$$(bar) would return a promise which resolved to an array of WebElements. This is
3054 unexpected, since $(foo).$(bar) returns an ElementFinder, and
3055 element(by.css(foo)).element.all(by.css(bar)) returns an ElementArrayFinder. Fixed so things are
3056 more consistent.
3057
3058 Closes #640
3059
3060- ([b67810a](https://github.com/angular/protractor/commit/b67810a08d19940cd144fea25f08af4478166231))
3061 fix(webdriver-manager): do not download files if HTTP response is not 200
3062
3063 Closes #656
3064
3065- ([28912f0](https://github.com/angular/protractor/commit/28912f0a77b44cce19ef5367c92b023388f7ff10))
3066 fix(webdriver-manager): fix download paths
3067
3068# 0.21.0
3069_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3070
3071## Features
3072
3073- ([0c4ef69](https://github.com/angular/protractor/commit/0c4ef69c1f61a2fb41829fa6d0afae3493148eee))
3074 feat(launcher): launcher outputs a final summary of how the browsers did
3075
3076- ([f1db8b4](https://github.com/angular/protractor/commit/f1db8b438fd154cef241895c01ed902b3f343315))
3077 feat(runner): make runner an event emitter and log passes or failures from the launcher
3078
3079 Now, for runs with multiple capabilities, the launcher will output '.' or 'F' for each pass or
3080 fail instead of just '.' for every chunk of data. TODO - complete the event emitter API for the
3081 Cucumber runner.
3082
3083- ([f9c4391](https://github.com/angular/protractor/commit/f9c43910021095e1bee1d1074e8788f4b0aee145))
3084 feat(cli+config): allow defining multiple test suites in the config and running them separately
3085 from the command line.
3086
3087- ([06bd573](https://github.com/angular/protractor/commit/06bd573cbc2471c719a8504f906468fb672d4097))
3088 feat(pause): add the browser.pause method to enter a webdriver-specific debugger
3089
3090 Warning: this is still beta, there may be issues. Usage: In test code, insert a `browser.pause()`
3091 statement. This will stop the test at that point in the webdriver control flow. No need to change
3092 the command line you use to start the test. Once paused, you can step forward, pausing before
3093 each webdriver command, and interact with the browser. Exit the debugger to continue the tests.
3094
3095## Bug Fixes
3096
3097- ([43aff83](https://github.com/angular/protractor/commit/43aff830bb74aa97fc4704f3aea9ef38feaee1b6))
3098 fix(pageload): Changing how `about:blank` unload waits Also changing `executeScript` script
3099 comment from `//` to `/**/` format. These two small changes should not affect functionality but
3100 make Protractor work with Selendroid.
3101
3102- ([1334662](https://github.com/angular/protractor/commit/1334662905d8d6b642a294fbf1e97ec3bc371084))
3103 fix(locators): Improve custom locators message
3104
3105 Increase readability of custom locator message by displaying each argument instead of the
3106 arguments object.
3107
3108- ([c9dbbaa](https://github.com/angular/protractor/commit/c9dbbaa94e2b4378bcc2db580dcad637b609a868))
3109 refactor(launcher): skip the child process if only one capability is requested
3110
3111 Closes #603
3112
3113- ([26d67a2](https://github.com/angular/protractor/commit/26d67a29a8a12aa52331a1ec4ae8013cf63257f2))
3114 fix(launcher): launcher should report a failure when only one capability is running
3115
3116- ([9530a0c](https://github.com/angular/protractor/commit/9530a0cab2791cb0350f81eae3f619d68fb620c3))
3117 (fix): Convert test.sh to test.js
3118
3119 This would enable the tests to be run on both Linux and Windows.
3120
3121- ([6d85ab4](https://github.com/angular/protractor/commit/6d85ab4b9f3b5824db3307df5aca77a0720dc2e6))
3122 fix(jasminewd): display stack traces in correct order and with WebElement method failure details
3123
3124- ([8964ac9](https://github.com/angular/protractor/commit/8964ac97cb994eb6cf7cf7ce77b7eb40882e852b))
3125 fix(test): Fixed path of configuration file to pass on windows
3126
3127- ([99bda1a](https://github.com/angular/protractor/commit/99bda1aa732288f74126c9a77c48dd7cff63531a))
3128 fix(waitForAngular): when timeout overflows, at least pass the negative to error messages
3129
3130 Closes #622
3131
3132- ([4fd060a](https://github.com/angular/protractor/commit/4fd060a38faa1f938f880fa52746e1a481a9122d))
3133 fix (element): Allow ElementFinder to be passed to actions directly.
3134
3135 Previously, do to an action such as drag and drop, one would have to use
3136 `element(by.foo).find()`. Now, just passing `element(by.foo)` works. For example:
3137
3138 ```javascript
3139 browser.actions().doubleClick(element(by.id('mybutton'))).perform();
3140 ```
3141
3142- ([b2a4ffc](https://github.com/angular/protractor/commit/b2a4ffced58964826125ea00705e6e257cdb588b))
3143 fix(configParser): always return "this" from addFileConfig
3144
3145# 0.20.1
3146_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3147
3148## Bug Fixes
3149- ([17de697](https://github.com/angular/protractor/commit/17de697fe9f64e238a8df0fbc6358b8e578e45f2
3150 fix(debug): make new debug work on windows too
3151
3152 Closes #580
3153
3154# 0.20.0
3155_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3156
3157## Features
3158
3159- ([220d793](https://github.com/angular/protractor/commit/220d79372fb93d3b58c5131188b24e48be8176ab)), ([6603a7e](https://github.com/angular/protractor/commit/6603a7e964c8f1632db4790081a71648360cf1f9))
3160 chore(webdriver): update selenium version to 2.40.0 and download location
3161
3162- ([ad5f3aa](https://github.com/angular/protractor/commit/ad5f3aa77fc3429fcf83f825a14fdb43fd7cc8a7))
3163 feat(jasminewd): allow custom matchers to return promises
3164
3165 Allow custom jasmine matchers to return a promise which resolves to a boolean and match against
3166 the resolution of the promise
3167
3168- ([41feaca](https://github.com/angular/protractor/commit/41feaca58c81fbd578c77424abf745acaf26f84f))
3169 feat(framework.cucumber): Allow multiple tags on cucumber tests.
3170
3171 Motivation: Support for multiple tags on the cucumber test execution, to be able to filter with
3172 more complex expressions the scenarios to run.
3173
3174 How to use:
3175 ```
3176 cucumberOpts: {
3177 tags: '@dev'
3178 }
3179 ```
3180
3181 or
3182
3183 ```
3184 cucumberOpts: {
3185 tags: ['@dev', '~@ignore']
3186 }
3187 ```
3188
3189 More information on tags: https://github.com/cucumber/cucumber/wiki/Tags
3190
3191## Bug Fixes
3192
3193- ([2ca6541](https://github.com/angular/protractor/commit/2ca654114a2bf937313ff027583308f87e909892))
3194 fix(debug): make protractor debug work in the new runner/launcher world
3195
3196 Closes #552
3197
3198- ([a68627b](https://github.com/angular/protractor/commit/a68627b3581c0551e04460682cfc13f8f91be366))
3199 fix(launcher): command line args should be passed as-is to the runner
3200
3201 This allows users to continue to use optimist (or other process.argv) processing within their
3202 tests and grab values from the command line.
3203
3204 Closes #571.
3205
3206- ([767c306](https://github.com/angular/protractor/commit/767c306102956ba6015cfe3998affb7e8430f259)), ([02defe3](https://github.com/angular/protractor/commit/02defe360dce41ee6841df9012166d249acfeca0))
3207 fix(jasminewd): include full pre-async-call stack trace in expectation failure message
3208
3209- ([b6df2cf](https://github.com/angular/protractor/commit/b6df2cfcfd35b31e2e473604b6df9add744c6c2d))
3210 fix(configParser): load coffee and LiveScript for child processes
3211
3212 Without loading coffee in configParser.js, child processes which try and load a coffeescript
3213 config file do not have coffee registered with node's required, and child tests fail.
3214
3215 Fixes an issue with using coffeescript config files.
3216
3217- ([64bee25](https://github.com/angular/protractor/commit/64bee252f6df52f9243c0f5d7e40f39bf5407134))
3218 fix(locators): add locator with multiple arguments
3219
3220 When using a custom locator with multiple arguments, only the first argument was used when
3221 calling `webdriver.findElements`.
3222
3223
3224- ([87b0c7f](https://github.com/angular/protractor/commit/87b0c7f2ecc8befa4fa1ebd5d8238c811a869aff))
3225 fix(debug): display error message when runner fails
3226
3227# 0.19.0
3228_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3229
3230## Features
3231- ([77393d0](https://github.com/angular/protractor/commit/77393d08343ef16ddc2b8042e187c9d68fe7bf2f)), ([6848180](https://github.com/angular/protractor/commit/68481801d506941ebf00fab71f87be510c7a87ba)), ([cca82ca](https://github.com/angular/protractor/commit/cca82caab6ae444b368eebe040a69967d774737e))
3232 feat(runner/launcher): major runner updates to allow multiple capabilities
3233
3234 Adding simultaneous runner capability (grid-style), refactoring launch/runner init system, and
3235 abstracting out configParser module.
3236
3237- ([642de06](https://github.com/angular/protractor/commit/642de06e8bbabf82c7b8e0a64a280df5c4daf01c))
3238 feat(protractor): add removeMockModule method
3239
3240- ([88c339f](https://github.com/angular/protractor/commit/88c339fc1d392717a0a5b8265806934b40158c5f))
3241 feat(runner): add adapter for cucumber.js
3242
3243 Conflicts:
3244 lib/runner.js
3245
3246## Bug Fixes
3247- ([8924bbc](https://github.com/angular/protractor/commit/8924bbca9e8f04073a29534bf16b0867a1ede7a0))
3248 fix(cli): convert capabilities arguments to dot-notation for WebDriver compatibility
3249
3250- ([a96d32f](https://github.com/angular/protractor/commit/a96d32f44a92ba9447fc843bc0aca7b91b777635))
3251 fix(webdriver-manager): upcase in IE download url
3252
3253 The url for the Win32 version of the IEDriverServer is apparently case sensitive: _win32_ vs
3254 _Win32_
3255
3256## Breaking Changes
3257- ([05eb42b](https://github.com/angular/protractor/commit/05eb42bb482c7cb36b48af1a86210afc442aa112))
3258 refactor(locators): moves scope in locators to last argument
3259
3260 scope defaults to document, and is an optional argument so now be moved to the end. Came up from
3261 debugging and trying to use window.clientSideScripts.findInputs('username'); which failed.
3262 Refactored to match original intent.
3263
3264 BREAKING CHANGE: anything relying on clientsidescripts should no longer pass
3265 element scope as first argument.
3266
3267 Before:
3268
3269 window.clientSideScripts.findInputs(document, 'username');
3270
3271 After:
3272
3273 window.clientSideScripts.findInputs('username', document);
3274 // or simply
3275 window.clientSideScripts.findInputs('username');
3276
3277 Also, any custom locators using addLocator will now break since the
3278 arguments order has changed. To migrate the code follow the example below:
3279
3280 Before:
3281
3282 var findMenuItem = function() {
3283 var domScope = arguments[0];
3284 var myArg = arguments[1];
3285 // balh blah blah
3286 };
3287 by.addLocator('menuItem', findMenuItem);
3288
3289 After:
3290
3291 var findMenuItem = function() {
3292 var myArg = arguments[0];
3293 var domScope = arguments[1];
3294 // balh blah blah
3295 };
3296 by.addLocator('menuItem', findMenuItem);
3297
3298 Closes #497
3299
3300
3301# 0.18.1
3302_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3303
3304## Bug Fixes
3305
3306- ([a79aa73](https://github.com/angular/protractor/commit/a79aa73df5df598ccad695af882d23ddaac2c2d9))
3307 fix(cli): specs was being processed as a string, not a list
3308
3309 Fixes #495
3310
3311# 0.18.0
3312_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3313
3314## Features
3315
3316- ([e3b1e7c](https://github.com/angular/protractor/commit/e3b1e7cec7af35f2e245ca64e4f94227ecaa1c57))
3317 feat(config): add option to exclude specs based on file patterns
3318
3319 The config now accepts `exclude`, an array of patterns to exclude.
3320
3321- ([88a1e58](https://github.com/angular/protractor/commit/88a1e587a40f0e6d978b20fe55160a18e2855493))
3322 Feat(clientSideScripts): Add by.buttonText, by.partialButtonText
3323
3324 Adds client side JS implementations of by.buttonText and by.partialButtonText, enabling element
3325 lookup based on innerText.
3326
3327 Closes #452
3328
3329- ([8d29c93](https://github.com/angular/protractor/commit/8d29c939766f044d910401e60834769cf8e5e44b))
3330 feat(config): allow LiveScript configuration files
3331
3332## Bug Fixes
3333
3334- ([d06d931](https://github.com/angular/protractor/commit/d06d931e1cb2c2bd38c2c50965a6f78690bdc336))
3335 fix(timeouts): fix an obscure cause of firefox timeouts
3336
3337 Fixes #493
3338
3339- ([de39e50](https://github.com/angular/protractor/commit/de39e5077d09daaeb885767e968a5cef78c9cac7))
3340 fix(jasminewd): support multi-argument matchers
3341
3342 Implement support for multi-argument matchers in promise wrapper.
3343
3344 Closes #477
3345
3346- ([11c4210](https://github.com/angular/protractor/commit/11c4210fe740771707d5421a4940bdce43d3d33e))
3347 fix(testForAngular): add a message when page load does not complete in time
3348
3349- ([6ae6261](https://github.com/angular/protractor/commit/6ae626158ee0610b70501af5d57ad4ff379c5ead))
3350 refactor(waitForAngular): improve error messages when timeouts occur
3351
3352- ([5dd93c2](https://github.com/angular/protractor/commit/5dd93c2397a401011e16271f6472c72037c871b6))
3353 fix(config): allow CoffeeScript 1.7 to be used
3354
3355 CoffeeScript now requires a register call to be made.
3356
3357- ([10aec0f](https://github.com/angular/protractor/commit/10aec0ff212987bfdb9ab4011e6cb2f9c646fca2))
3358 fix(pageload): increase wait timeout
3359
3360 The 300 ms wait caused problems when testing IE on Sauce Labs. It seems way too short.
3361 "browser.get()" invariably timed out. Increasing it solved our problem.
3362
3363
3364# 0.17.0
3365
3366_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3367
3368## Features
3369
3370- ([cc4f7b5](https://github.com/angular/protractor/commit/cc4f7b55e1fe46fcef1b8c3ca39d702a32ee6d82)), ([8348803](https://github.com/angular/protractor/commit/834880368115ecade154b3a090e06159667c0c2d))
3371 feat(element): allow chaining of element finders with element().element()...
3372
3373 Chaining calls to element will now build a scoped element finder. No webdriver functions will be
3374 called until a method (such as getText) is called on the final element. Example:
3375
3376 var elem = element(by.id('outer')).element(by.css('inner'));
3377 browser.get('myPage');
3378 elem.click();
3379
3380 Closes #340.
3381
3382- ([088a581](https://github.com/angular/protractor/commit/088a58150f992a6520da983fc461fec4eac1a0ed))
3383 feat(runner): add a callback for when the tests are done
3384
3385 Add an onCleanUp callback to be able to hook into when all the tests have been run.
3386
3387 Conflicts:
3388 referenceConf.js
3389
3390- ([66c4774](https://github.com/angular/protractor/commit/66c4774aa18d94d4da81c101b82db4a748cf69a4))
3391 feat(runner): add mocha options to config file
3392
3393 change lib/runner to allow setting mocha options from config.
3394
3395- ([092fe1f](https://github.com/angular/protractor/commit/092fe1fc1e7d1b58b786870ff1ce33f95e652d78)), ([3151ca7](https://github.com/angular/protractor/commit/3151ca7daaeeec9f537561b31c6dfd42c678f7bb))
3396 feat(locators): Add map() function to element.all
3397
3398 Added a map function to element.all to apply a function to each element and return the result of
3399 the transformation.
3400
3401 Resolve promises if there is an object that contains multiple promises. Added index as a second
3402 argument to the map function callback.
3403
3404 Closes #392
3405
3406- ([7259614](https://github.com/angular/protractor/commit/7259614a326802b8e7a906346bd9830b92e1514d)), ([0257b5f](https://github.com/angular/protractor/commit/0257b5f225052ab0a075d96811dd56961f9278ae))
3407 feat(config): allow CoffeeScript configuration files
3408
3409 Require CoffeeScript in the cli file to enable CS configuration and spec files.
3410
3411 Possibly fixes #38
3412
3413- ([e7d9e08](https://github.com/angular/protractor/commit/e7d9e081cdc7fcf100e0346b1dcf0f7fdad7d889))
3414 feat(global): export By (== by) on the global for use with coffeescript (or others who prefer it)
3415
3416## Bug Fixes
3417
3418- ([a0bd84b](https://github.com/angular/protractor/commit/a0bd84b9a28ec92eccd2784f8b849388985a4480))
3419 fix(pageload): add a wait during protractor.get() to solve unload issues
3420
3421 Some systems would not wait for the browser unload event to finish before beginning the
3422 asynchronous script execution.
3423
3424 Closes #406. Closes #85.
3425
3426- ([4b053eb](https://github.com/angular/protractor/commit/4b053ebe587d51562d77ca512848be28195ae0cc))
3427 fix(runner): only run selenium with spec files
3428
3429 Only setup Selenium if there are actual spec files passed in
3430
3431- ([8e096b9](https://github.com/angular/protractor/commit/8e096b9a91af9c37ab4bf84e100568544351efc8))
3432 fix(Protractor.prototype.get): resolve `baseUrl` before ignoring synchronization
3433
3434 Fixes issues where setting `ignoreSynchronization = true` ignores the value of `baseUrl`
3435 entirely.
3436
3437# 0.16.1
3438_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3439
3440_Note: 0.16.0 was released as a canary - no changelog for it._
3441
3442## Features
3443
3444- ([a75fa04](https://github.com/angular/protractor/commit/a75fa04a70f64e0da29b9a0a9100bd60d9ebf93f))
3445 docs(readme): add the travis status widget
3446
3447- ([478c00a](https://github.com/angular/protractor/commit/478c00a01dc9b93de68983b6ef2dfa55f0b42649))
3448 feat(runner): add beta support for using mocha as your test framework
3449
3450 This change adds limited support for using mocha as the test framework instead of jasmine. Make
3451 the switch by using `--framework=mocha` on the command line or adding `framework: 'mocha'` to the
3452 config. Tests will be run using the BDD interface. The interface is adapted so that tests run
3453 asynchronously without needing to call `done()`.
3454
3455 Note that there is currently no support for an assertion framework, so you will need to require
3456 whichever assertion framework you prefer. This means there is no adapter to make the assertions
3457 unwrap promises, so you will need to resolve promises yourself and run the assertions afterwards.
3458
3459- ([3731abf](https://github.com/angular/protractor/commit/3731abf901c4278b4470336c3a58765161b08bcc))
3460 feat(webdriver-manager): add seleniumPort command line option
3461
3462 Added seleniumPort command line option so that the standalone selenium server can be started with
3463 the supplied port number as opposed to the default port 4444.
3464 ```
3465 $ webdriver-manager start --seleniumPort 4443
3466 ```
3467
3468## Bug Fixes
3469
3470- ([bc18c42](https://github.com/angular/protractor/commit/bc18c42dab6207d111f88ea1f1deefb9bcc28f23))
3471 chore(config): saucelabs requires tunnel identifier to be a string
3472
3473## Breaking Changes
3474
3475 - ([478c00a](https://github.com/angular/protractor/commit/478c00a01dc9b93de68983b6ef2dfa55f0b42649))
3476 feat(runner): add beta support for using mocha as your test framework
3477
3478 To allow the user to customize their framework, the protractor runner will now wait
3479 until just before `onPrepare` to load the framework. This means that `jasmine` will
3480 not be available in global until `onPrepare`. For example, this means that requiring
3481 the jasmine-reporters module must be done inside onPrepare, since that module expects
3482 jasmine to be available at the time it is loaded.
3483
3484
3485# 0.15.0
3486
3487_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3488
3489## Features
3490
3491- ([f8d0291](https://github.com/angular/protractor/commit/f8d02910340f54af92a8ed5fdd067fa03ca2cef8)) chore(version): update the version of dependency minijasminenode
3492
3493 This is notable because in the newer 0.2.6 version of minijasminenode,
3494 ddescribe and iit are supported. These should be available after running
3495 an 'npm update'.
3496
3497- ([6165023](https://github.com/angular/protractor/commit/6165023a9593f4f69fe342761b8b2d75923baf7a)) feat(runner): return a promise from runner.runOnce
3498
3499 In some cases knowing when the runner has finished is a requirement (e.g. an async grunt task).
3500
3501- ([d44ef01](https://github.com/angular/protractor/commit/d44ef01c64023b4e3a24a9959740676b691f6074)) feat(debugging): remove webdriver lines from stacktraces by default to improve readability
3502
3503- ([33fa4a4](https://github.com/angular/protractor/commit/33fa4a43acfbe87f3a4d4c84fa93c5c20b3cca0c)) feat(locators): by model works for anything with a model, not just input
3504
3505 Notably, by.model will now find selects and textareas.
3506
3507 Closes #321.
3508
3509- ([238bb74](https://github.com/angular/protractor/commit/238bb7429572f9a9f6620bf1317690f1ac825960)) feat(ignoresync): ignoreSynchronization now affects the behavior of browser.get
3510
3511 Now, when ignoring synchronization, calls to browser.get are equivalent to calling
3512 browser.driver.get.
3513
3514 Closes #306
3515
3516- ([30c0ceb](https://github.com/angular/protractor/commit/30c0ceb3e2745d3bcc549f4d4963d9fade132e71)) feat(element) element.all exports an 'each' method
3517
3518 Usage:
3519 ```
3520 element.all(by.model('foo')).each(function(webElement) {
3521 // Do stuff with webElement.
3522 });
3523 ```
3524 Closes #298
3525
3526- ([6a73a25](https://github.com/angular/protractor/commit/6a73a25c61a72ef991a604eadae010c90a157266)) feat(by.repeat) by.repeat support for multi ng-repeat
3527
3528 Make by.repeat (and its column and row friends) work with ng-repeat-start
3529 and ng-repeat-end elements.
3530
3531 Closes #366. Closes #182.
3532
3533## Bug Fixes
3534
3535- ([50d6fde](https://github.com/angular/protractor/commit/50d6fde25148e24d7ef22be371b04333cdf61e50)) fix(clientSideScripts): bind-template directive shouldn't break bind locators
3536
3537 Fix "UnknownError: angular.element(...).data(...).$binding[0] is
3538 undefined" error raised when trying to use "by.binding" locator in any
3539 element of a page that contains at least one "bind-template" directive.
3540
3541- ([f8c606b](https://github.com/angular/protractor/commit/f8c606bae7b2f414a67b6349f841881132d9cc97)) fix(webdriver-manager): make sure selenium standalone shuts down nicely
3542
3543 This addresses selenium server shutdown in two ways
3544 - the node process will stay open until selenium has exited
3545 - if the user inputs to STDIN (e.g. press space) selenium will shut down gracefully
3546
3547- ([e98f71e](https://github.com/angular/protractor/commit/e98f71ebd7778d5c77c41bbecc73e31f1aeca177)) fix(webdriver-manager): fix IEDriver install and running via windows
3548
3549 Changed the binaries.ie.url function to return the correct URL for the IEDriverServer.
3550 Created the zip object in the win32 section to be able to decompress IEDriverServer.
3551 Added a function to normalize a command across OS and spawn it. It allows start the webdriver in win32.
3552
3553 Seen here:
3554 https://github.com/yeoman/generator/blob/master/lib/actions/spawn_command.js
3555
3556
3557# 0.14.0
3558
3559_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3560
3561## Features
3562
3563- ([c579a1a](https://github.com/angular/protractor/commit/c579a1a01bae6798a87a5ca8915417775e1b6fb2)), ([f54fd5d](https://github.com/angular/protractor/commit/f54fd5d7c3caa8df319a0115086bb4db8443d856)) feat(webdriver-manager): redo the script to run and install selenium/webdriver
3564
3565 Breaking Change.
3566 As outlined in Issue #296, redoing the way the selenium/webdriver
3567 install and run helper scripts work. Now, the 'webdriver-manager' script
3568 will be available either locally or globally (depending on how protractor
3569 was installed). It replaced install_selenium_standalone and the 'start' script
3570 that was provided after install. Run `webdriver-manager update` to download
3571 new versions of selected webdriver binaries. Run `webdriver-manager start`
3572 to start the standalone server. In addition, this fixes issues with running
3573 the server starter in Windows, and allows automated downloading of the IEDriver.
3574
3575 Thanks to kurthong and vipper for their PRs with windows fixes, which were
3576 very useful in preparing this.
3577
3578- ([a69ebc3](https://github.com/angular/protractor/commit/a69ebc3b783fb7bf42877a658498de90d3d196c3)) feat(runner): use selenium and chromedriver from the default location if nothing else is specified
3579
3580## Bug Fixes
3581
3582- ([1fa090c](https://github.com/angular/protractor/commit/1fa090c656cbab55bdbfb101b503b53811b50dff)) fix(runner): merge should override entire arrays, not just parts of them
3583
3584 Closes #304
3585
3586- ([a2afb4d](https://github.com/angular/protractor/commit/a2afb4d8399ba980674c79138dd98efb683e9ab9)) fix(element): element.all.get and element.all.first/last should wrap web elements
3587
3588 Closes #307
3589
3590- ([f3be172](https://github.com/angular/protractor/commit/f3be1727cf95dea50b597d20c6510e62a605dee2)) fix(runner): running with chromeOnly should try to find chromedriver with .exe extension
3591
3592 Closes #283
3593
3594## Breaking Changes
3595
3596- ([c579a1a](https://github.com/angular/protractor/commit/c579a1a01bae6798a87a5ca8915417775e1b6fb2)) feat(webdriver-manager): redo the script to run and install selenium/webdriver
3597
3598 Breaking Change.
3599 Your old selenium/start script will continue to work, but install_selenium_standalone no longer exists.
3600 To do a clean update, remove the selenium folder. Then run
3601 `webdriver-manager update`
3602
3603- ([a1c91a2](https://github.com/angular/protractor/commit/a1c91a29af5c1e1f35744462ca16ef4b33ad6c48)) fix(config): Make all file paths in config files relative to the config file itself
3604
3605 Breaking Change
3606 Previously, onPrepare and specs were relative to the location of the config,
3607 but seleniumServerJar and chromeDriver were relative to the cwd when the
3608 test was called. If you were calling the tests from somewhere other than
3609 the same directory as the config location, you will need to change the paths of
3610 seleniumServerJar and/or chromeDriver. Closes #222.
3611
3612
3613# 0.13.0
3614
3615_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3616
3617## Features
3618
3619- ([ce5f494](https://github.com/angular/protractor/commit/ce5f494289c3750b84c6783339a14342a1b74f3d)) feat(element): element.all now has 'first' and 'last' methods
3620
3621- ([ef61662](https://github.com/angular/protractor/commit/ef6166232186b3385769f63430819a722052cc44)) feat(runner): allow bypassing the selenium standalone server if running only chrome
3622
3623 Using the config option `chromeOnly` now enables running ChromeDriver directly,
3624 without going through the Selenium Standalone. The chromedriver binary should be
3625 available in your PATH, or should be specified with the config option
3626 `chromeDriver`.
3627
3628- ([76c094a](https://github.com/angular/protractor/commit/76c094a3fa69511b0311011b0ef2c7343b8e655b)) feat(getLocationAbsUrl) - allows current url to be obtained on IE (and Chrome/Firefox)
3629
3630- ([6a1c918](https://github.com/angular/protractor/commit/6a1c91848858453d0af712588b51c0bdaa0c9445)) feat(runner): add error message for bad jar path
3631
3632- ([98bce7e](https://github.com/angular/protractor/commit/98bce7e2ac1e659faf2d8727e1fda210b796525e)) feat(locators): add the ability to add custom element locators with by.addLocator
3633
3634 Custom locators can now be added using by.addLocator(name, script), where
3635 script is a self-contained snippet to be executed on the browser which returns
3636 an array of elements. Closes #236.
3637
3638- ([c7bcc20](https://github.com/angular/protractor/commit/c7bcc20c07416237f69f7934d257b5ba5bfe8c1f)) chore(angular): update to angular 1.2
3639
3640
3641## Bug Fixes
3642
3643- ([a24eeee](https://github.com/angular/protractor/commit/a24eeee4f08e973ffcecd107b6610ce1c2c5e3f6)) fix(runner): do not error out if only one spec pattern does not match any files
3644
3645 Previously, the runner would throw an error if any one of the spec patterns did not
3646 match any files. Now it logs a warning in that case, and errors out only if there
3647 are no found files in any spec patterns. Closes #260
3648
3649- ([f3b3fdb](https://github.com/angular/protractor/commit/f3b3fdbcbc8fe4f3c5915ef0f6eb7c89e339a62e)) fix(element): fix an error where all.then() wasn't calling callbacks.
3650
3651 Closes #267
3652
3653- ([137d804](https://github.com/angular/protractor/commit/137d8040778215fd841654d3ca465b71f8719ea5)) fix(jasminewd): patched matcher should understand 'not'
3654
3655 Closes #139.
3656
3657
3658# 0.12.1
3659
3660_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3661
3662## Minor features
3663
3664- ([201b59c](https://github.com/angular/protractor/commit/201b59c2e728c56d2a88a1167ed3007b22ab9034)) feat(jasminewd): better error messaging when expect is called with a WebElement
3665
3666- ([d383770](https://github.com/angular/protractor/commit/d383770499da4b08b74ad53c20ffa288147f94e9)) feat(clientsidescripts): better error reporting from testForAngular and waitForAngular
3667
3668## Bug fixes
3669
3670- ([8580c0c](https://github.com/angular/protractor/commit/8580c0c76c5ccd3c55d053e59d8df37b3c4cf35a)) fix(install-selenium): update to chromedriver 2.6
3671
3672 Update to the latest version of Chromedriver. This fixes the issue with
3673 OS X 10.9. Closes #181.
3674
3675- ([ebc528f](https://github.com/angular/protractor/commit/ebc528fec2c2e88b0f9e32cee0661ecd79da2252)) fix(debugging): switch debugging tests to the new test app urls.
3676
3677- ([8ff4787](https://github.com/angular/protractor/commit/8ff47875488647513f4199bab36e3b0023dd305d)) fix(runner): exit with proper code when tests fail
3678
3679 When errors with messages matching /timeout/ were created, Protractor
3680 clears the control flow so that the remainder of the tasks scheduled
3681 for that spec don't bleed over into the next spec. This was messing up
3682 the promises used in the runner, since they are also webdriver promises.
3683 Long term, the runner should _not_ use webdriver promises. For now, fix by
3684 having the runner resolve promises directly rather than through chaining,
3685 and add a TODO to use promises which aren't connected to WebDriver's
3686 control flow in the runner.
3687
3688 Closes #214.
3689
3690- ([81501c5](https://github.com/angular/protractor/commit/81501c5d941cd7edb15439cef7c7a64c0e773e27)) fix(clientsidescripts): workaround for IE 8 "async page reload" init problem
3691
3692- ([21264fd](https://github.com/angular/protractor/commit/21264fdc2f6cb3345c8f005936c74985ecd811dc)) fix(find): fix error when exposed to ng-options element with a default option
3693
3694 Protractor will now ignore elements with the ng-bind class that don't have
3695 a proper binding on their data, instead of blowing up when encoutering them.
3696
3697 Closes #165, may fix #170
3698
3699 - ([f672648](https://github.com/angular/protractor/commit/f6726482cd2ce9a7dda9ccdeeb93574d3b9293e3)) fix(findelements): fix isPresent for repeaters by row for real
3700
3701## Breaking Changes
3702
3703- ([bf5b076](https://github.com/angular/protractor/commit/bf5b076cb8897d844c25baa91c263a12c61e3ab3)) fix(cli): remove boolean verbose and stack trace options
3704
3705 Also add better description for what the command line options are.
3706
3707 Tiny breaking change:
3708 Rename the 'includeStackTrace' command line option to 'stackTrace' for brevity.
3709
3710# 0.12.0
3711
3712_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3713
3714This change introduces major syntax updates. Using the new syntax is recommended, but the old version is still supported for now. Note also that the test application, docs, and example tests have been updated.
3715
3716## Features
3717
3718- ([a2cd6c8](https://github.com/angular/protractor/commit/a2cd6c8baf242a81c4efea1f55249d597de95329)) feat(syntax): big syntax reboot, expose global $, $$, element, and by
3719
3720In an effort to make tests more readable and clear, a few more global variables
3721will now be exported.
3722
3723`browser` is an instance of protractor. This was previously accessed using
3724`protractor.getInstance`.
3725
3726`by` is a collection of element locators. Previously, this was `protractor.By`.
3727
3728`$` is a shortcut for getting elements by css. `$('.foo')` === `element(by.css('.foo'))`
3729
3730All changes should be backwards incompatible, as tested with the new 'backwardscompat'
3731tests.
3732
3733## Bug fixes
3734
3735- ([8c87ae6](https://github.com/angular/protractor/commit/8c87ae6b430479445744a2f5c8eaca7f5f03d61d)) fix(onPrepare): onPrepare with a string argument should resolve from the config directory
3736
3737onPrepare can take a string, which is a filename containing a script to load adn execute
3738before any tests run. This fixes the string to resolve the filename relative to the
3739config file, instead of relative to the current working directory where protractor
3740is called.
3741
3742
3743
3744# 0.11.0
3745
3746_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3747
3748## Features
3749
3750- ([02cb819](https://github.com/angular/protractor/commit/02cb8199d89c6645d0bc9dbb39e5cb27517bfaf3)) feat(cli): allow passing params directly to your test
3751
3752Adds a config object 'params' which is passed directly
3753to instances of protractor. 'params' may contain nested
3754objects, and can be changed via the command line as:
3755
3756 --params.login.user 'Joe' --params.login.password 'abc'
3757
3758This change also switches to using optimist to parse
3759command line flags for more flexibility and better usage
3760documentation. Closes #32.
3761
3762- ([c025ddb](https://github.com/angular/protractor/commit/c025ddbe617b977908db509f365cc882924b196f)) feat(findElements): $ & $$ shortcuts.
3763
3764Introducing the $ shortcut method for finding a single element by css
3765without having to call protractor.By.css. Additionally $$ for finding
3766all elements by css.
3767
3768Examples:
3769- ptor.$('.some .selector')
3770- ptor.$$('.some .selector')
3771
3772- ([7d74184](https://github.com/angular/protractor/commit/7d7418411ea4a9d696855f755899161ecb36818d)) feat(explorer): add an interactive element explorer
3773
3774When debugging or first writing test suites, you may find it helpful to
3775try out Protractor commands without starting up the entire test suite. You can
3776do this with the element explorer. This change introduces a first version
3777of the element explorer. Closes #107
3778
3779## Bug Fixes
3780
3781- ([e45ceaa](https://github.com/angular/protractor/commit/e45ceaae825cce0ec69580b8f6e93d102d4d61f1)) fix(repeaters): allow finding all rows of a repeater
3782
3783Now, finding an element with the strategy 'protractor.By.repeater()' returns
3784a promise which will resolve to an array of WebElements, where each WebElement
3785is a row in the repeater. Closes #149.
3786
3787- ([b501ceb](https://github.com/angular/protractor/commit/b501ceb7b776a5d9f1c2659326577601d0fbce5a)) fix(findElements): Consistently include evaluate.
3788
3789When using findElements with a css locator, wrap the returned list of
3790elements with protractor specific functionality.
3791
3792- ([c17ac12](https://github.com/angular/protractor/commit/c17ac12c2a213a7b6f8c236e81ba5cb2db542fd0)) fix(cli): allow running from command line without a config file
3793
3794If all necessary fields are specified (e.g. seleniumAddress and at least
3795one spec), a config file shouldn't be necessary.
3796
3797## Breaking Changes
3798
3799- ([421d623](https://github.com/angular/protractor/commit/421d6232fe0b45ca1758afd634997da644f2e1db)) fix(repeat): use 0-based indexing for repeater rows
3800
3801BREAKING CHANGE: Finding rows with protractor.By.repeater now
3802indexes from 0 instead of 1. This should be more familiar to most
3803modern programmers. You will need to edit existing tests. Closes #90.
3804
3805Before:
3806```
3807// The fourth foo
3808ptor.findElement(protractor.By.repeater('foo in foos').row(4));
3809```
3810After:
3811```
3812// The fourth foo
3813ptor.findElement(protractor.By.repeater('foo in foos').row(3));
3814```
3815
3816# 0.10.0
3817
3818_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3819
3820## Features
3821
3822- ([881759e](https://github.com/angular/protractor/commit/881759e77462dc8e1001eb77008668ae6dc552cd)) feat(timeouts): add a unique error message when waitForAngular times out
3823
3824To improve the readability of error messages, when waitForAngular times out
3825it now produces a custom message. This should help clarify confusion
3826for pages that continually poll using $interval. This change also adds more
3827documentation on timeouts. See issue #109.
3828
3829- ([37e0f1a](https://github.com/angular/protractor/commit/37e0f1af196c3c0bf54dcddf0088a8c16602e5f2)) feat(install selenium): better communication in the install script
3830
3831Adds better messages in the selenium server install script, and also
3832makes the script output a 'start' executable which can be used to quickly
3833start up the selenium standalone. *not yet windows friendly*. Closes #108.
3834
3835- ([b32f5a5](https://github.com/angular/protractor/commit/b32f5a59169f1324271bd5abc09c17fcd9c4f249)) feat(config): add examples for dealing with log-in
3836
3837Adds examples for how to log in when the login page is not written
3838in Angular. New examples are in spec/login.
3839
3840- ([1b7675a](https://github.com/angular/protractor/commit/1b7675aab7846bee54117876887bfec07ce31745)) feat(cli): add an onPrepare callback to the config
3841
3842This onPrepare callback is useful when you want to do something with
3843protractor before running the specs. For example, you might want
3844to monkey-patch protractor with custom functions used by all the
3845specs, or add the protractor instance to the globals.
3846An example usage is shown in the spec/onPrepareConf.js file and its
3847associated spec.
3848
3849## Bug fixes
3850
3851- ([256b21c](https://github.com/angular/protractor/commit/256b21cf8c744a200892e6b7f9172150b2f4fe8d)) fix(cli): allow passing the config file before the options
3852
3853The cli usage says:
3854> USAGE: protractor configFile [options]
3855However, the options passed as argument are merged into the default
3856configuration as soon as the configFile is met in the args parsing
3857loop.
3858This fix merges the options in the default configuration only after
3859the loop, allowing to pass the options to the cli before or after,
3860or around the config file.
3861
3862- ([6223825](https://github.com/angular/protractor/commit/62238252c7fc68c6a5941883f6a272e95997a8ff)) fix(jasminewd): allow use of custom matchers
3863
3864Using jasmine.Matchers.prototype to generate the chained methods for
3865expect() calls is flawed because it does not pick up custom matchers
3866defined using addMatcher. Instead, use either the matchersClass for
3867the current spec or from the environment.
3868
3869- ([c22fc38](https://github.com/angular/protractor/commit/c22fc387bc0ef7a07371e023d39a6ce58dfa56c9)) fix(sync): getCurrentUrl and friends should sync with Angular first
3870
3871getCurrentUrl, getPageSource, and getTitle should sync with Angular
3872before executing. Closes #92.
3873
3874- ([dd06756](https://github.com/angular/protractor/commit/dd067561cf9fe0a765e98605b9ebdd8fbfef04d3)) fix(clientsidescripts): findElements and isElementPresent for protractor.By.select
3875
3876- ([c607459](https://github.com/angular/protractor/commit/c60745945c6514e25403783eab3de5873e15758b)) fix (navigation): The defer label should appear before other window names,
3877not after.
3878
3879- ([806f381](https://github.com/angular/protractor/commit/806f38113c675a26171776a559a20bf3899aa2cc)) Fix: findElements() and isElementPresent() now work for protractor.By.input.
3880Closes #79.
3881
3882## Breaking changes
3883
3884- ([881759e](https://github.com/angular/protractor/commit/881759e77462dc8e1001eb77008668ae6dc552cd)) feat(timeouts): add a unique error message when waitForAngular times out
3885
3886This changes the default script timeout from 100 seconds down to 11. Tests
3887which relied on extremely long timeouts will need to change the default script
3888timeout with `driver.manage().timeouts().setScriptTimeout(<bigNumber>)`.
3889
3890# 0.9.0
3891
3892_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3893
3894## Features
3895
3896- ([0e8de99](https://github.com/angular/protractor/commit/0e8de99eb0d8a0db4f6d3538dd051c94f35775f5)) Wrap WebElements with Protractor specific features. This change allows
3897chained findElement calls to work with Protractor locators. It also
3898adds a function, evaluate, to evaluate an angular expression in the context
3899of a WebElement's scope.
3900
3901- ([9f53118](https://github.com/angular/protractor/commit/9f5311812cbae5122ce2c6ebe522132273b0ebcc)) Improving the command line interface (adding more options). This allows
3902the --spec option to be passed with test files that will be resolved
3903relative to the current directory. Smarter merging of default config
3904values. Closes #65.
3905
3906- ([73821fb](https://github.com/angular/protractor/commit/73821fb6b6d252a93cc15ce990b4ec4738b87b95)) Adding an 'ignoreSynchronization' property to turn off Protractor's attempt to
3907wait for Angular to be ready on a page. This can be used to test pages that
3908poll with $timeout or $http.
3909
3910## Bug fixes
3911
3912- ([cfc6438](https://github.com/angular/protractor/commit/cfc6438e80e77387afae776f289cd55813e9b2d9)) Adding support for isElementPresent with Protractor locators.
3913Closes #11.
3914
3915- ([8329b01](https://github.com/angular/protractor/commit/8329b01865074c32f7a261fe9bbf2c151b704a34)) Adding waitForAngular calls before WebElement functions. Closes #37.
3916
3917# 0.8.0
3918
3919_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3920
3921## Docs
3922- Added documentation to the [docs folder](https://github.com/angular/protractor/tree/master/docs).
3923
3924- ([08ef244](https://github.com/angular/protractor/commit/08ef244217fb83206c818c84cbe8f07999116ee3)) Adding debugging tests showing different types of timeouts, and fixing
3925a bug where scheduled tasks from a previous it block would run into
3926the next in case of a timeout.
3927
3928## Features
3929
3930- ([1c7eae0](https://github.com/angular/protractor/commit/1c7eae0c09f13b7068f81324f24967709e264241)) Updating the binary script to understand debug, so that
3931protractor debug conf.js works.
3932
3933- ([7a59479](https://github.com/angular/protractor/commit/7a594791b5ac6616de9c98dcd7d44ecaffb0e8a3)) Adding a 'debug' function to protractor. This schedules a debugger pause
3934within the webdriver control flow.
3935
3936- ([679c82d](https://github.com/angular/protractor/commit/679c82d510ea016690fba259db50b4afa36154cc)) Mixing in all webdriver exports to protractor. This means that webdriver
3937classes such as ActionSequence and Keys are accessible on the global
3938protractor.
3939
3940- ([3c76246](https://github.com/angular/protractor/commit/3c76246a01e584bc30da645a36e75920b5397251)) Added nested angular app (ng-app on an element other than `<html>` or `<body>`) capability via conf file.
3941
3942## Bug fixes
3943
3944- ([1c9b98d](https://github.com/angular/protractor/commit/1c9b98d0464bbe57194cf340c6e5942cbe7c8385)) Fixed Sauce issues: low timeouts, shutdown and init order.
3945
3946## Breaking Changes
3947
3948- Now running selenium 2.25. Requires updating WebDriverJS and the selenium standalone binary and chromedriver binary.
3949
3950- ([a54abfb](https://github.com/angular/protractor/commit/a54abfbbfd3b13be5144e64e52a267c73d409a81)) Spec paths in configuration files are now resolved from the location of the spec file instead of the current working directory when the command line is run.
3951
3952
3953
3954# 0.7.0
3955
3956_Note: Major version 0 releases are for initial development, and backwards incompatible changes may be introduced at any time._
3957
3958## Features
3959
3960- ([7966912](https://github.com/angular/protractor/commit/796691205795d93fe12c998d20a58c8220ac6fb7)) Updating to Selenium 2.24.
3961
3962- ([90f0a94](https://github.com/angular/protractor/commit/90f0a942b09faff5924674a20ce7705b6d685eba)) Instead of having tests run with the protractor runner need to require()
3963the protractor library, publish it to the global namespace. This insures
3964the instance of protractor used within the tests is the same as the
3965one used on the command line. Closes #36. Version bump for incompatible
3966API changes.
3967
3968- ([cb373c9](https://github.com/angular/protractor/commit/cb373c99a7e33c5514bf1d2728a64f631ec8784c)) Adding glob matching to the spec files from the config. Closes #29.
3969
3970
3971## Breaking changes
3972
3973- Now running on selenium 2.24. Requires updating WebDriverJS and the selenium standalone binary.
3974
3975- The protractor runner now publishes `protractor` to the global namespace and sets up the Jasmine-WebDriver adapter. Tests run with this should no longer include
3976
3977````javascript
3978// var protractor = require('protractor'); // No longer needed!
3979// require('protractor/jasminewd'); // No longer needed!
3980
3981var ptor = protractor.getInstance(); // This should just work now.
3982````
3983
\No newline at end of file