UNPKG

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