UNPKG

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