UNPKG

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