selenium-webdriver 4.1.1 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGES.md CHANGED
@@ -1,3 +1,36 @@
1
+ ## v4.3.0
2
+
3
+ * Fix: using fulfillRequest when intercepting (#10764)
4
+ * Add support CDP 103 and remove CDP 100
5
+ * Remove unused param in input.js & minor code cleanup
6
+ * Fixes lint issues and updates npm packages
7
+ * feat: Added virtual authenticator (#10663)
8
+
9
+ ## v4.2.0
10
+
11
+ * Delete old android-driver
12
+ * Remove Opera support from JS bindings #10379
13
+ * Handle a breaking changes in os.networkInterfaces (#10611)
14
+ * Add support to switch frame by id
15
+ * Add support to switch frame by name (#10670)
16
+ * [cdp] add support Chrome 102 and remove for Chrome 98
17
+ * Update implementation for submitting forms
18
+
19
+ ## v4.1.2
20
+
21
+ * chore/connect to CDP based on ENV selenium address var (#10255)
22
+ * Add wheel support to actions
23
+ * add support for Chrome 98 and remove support for Chrome 95
24
+ * add deleteNetworkConditions for chromium (#10323)
25
+ * Add new pointer attributes to actions
26
+ * add support Chrome 99 and remove for Chrome 96
27
+ * sendKeys error message fixed
28
+ * add support Chrome 100 and remove for Chrome 97
29
+ * removing onQuit handler for chromedriver (#10499)
30
+ * Split String on grapheme pairs in sendKeys command (#10519)
31
+ * do not convert tag name to css selector
32
+ * docs: use Browser constants for browser name (#10567)
33
+
1
34
  ## v4.1.1
2
35
 
3
36
  * Add support for installing unpacked addons at runtime in Firefox webdriver (#10216)
@@ -12,7 +45,6 @@
12
45
  * Remove legacy JWP support and w3c<boolean> switch (#10095)
13
46
  * update map/filter clean up to common format (#10094)
14
47
 
15
-
16
48
  ## v4.1.0
17
49
 
18
50
  * add support for handling Shadow DOM elements
@@ -29,14 +61,12 @@
29
61
  * Fixes relative locator 'locateWith' export
30
62
  * update doc string for CDP Commands (#9929)
31
63
 
32
-
33
64
  ## v4.0.0
34
65
 
35
66
  * Fixes cdp for Chrome and Firefox (#9909)
36
67
  * Add cdp 95 to python and JS
37
68
  * Removing unused target for cdpConnection
38
69
 
39
-
40
70
  ## v4.0.0-rc-2
41
71
 
42
72
  * Fix builder test
@@ -58,15 +88,13 @@
58
88
  * Add default Opera capabilities. Fixes #9654
59
89
  * Add support for ChromeDriver `--enable-chrome-logs` (#9575) [Author: Mark Stacey]
60
90
 
61
- The `--enable-chrome-logs` ChromeDriver option can now be enabled using
62
- the Chromium (or Chrome) ServiceBuilder, similarly to the other options
63
- provided by ChromeDriver.
91
+ The `--enable-chrome-logs` ChromeDriver option can now be enabled using the Chromium (or Chrome)
92
+ ServiceBuilder, similarly to the other options provided by ChromeDriver.
64
93
 
65
94
  * Add the debuggerAddress option to chromium.js (#9561) [Author: Brandon Walderman]
66
95
  * Adds http client options (#9638)[Author: Dharin Shah]
67
96
  * Updating edge.js to extend chromium.driver (fixes #9626)
68
97
 
69
-
70
98
  ## v4.0.0-beta.4
71
99
 
72
100
  * Add windowTypes option support for ChromiumDriver (#7897)
@@ -74,14 +102,13 @@
74
102
 
75
103
  ## v4.0.0-beta.3
76
104
 
77
- * Removed support for legacy actions.
78
- This will also remove "Bride Mode" support, which was introduced to translate of action class to legacy API.
105
+ * Removed support for legacy actions. This will also remove "Bride Mode" support, which was
106
+ introduced to translate of action class to legacy API.
79
107
  * Remove devtools support for v86,v87 and adding support for v89, v90, v91
80
108
  * make isPromise() return boolean value for null and undefined cases (#6785)
81
109
  * code cleanup (#9158)
82
110
  * replacing asserts equal with strictEqual and deepEqual with deepStrictEqual
83
111
 
84
-
85
112
  ## v4.0.0-beta.2
86
113
 
87
114
  * Removed support for Edge legacy.
@@ -97,7 +124,7 @@
97
124
  ## v4.0.0-beta.1
98
125
 
99
126
  * JS Binding support for WebDriver Bidi in Firefox
100
- - This requires Firefox 87 and Geckodriver 0.29 to be able to work
127
+ - This requires Firefox 87 and Geckodriver 0.29 to be able to work
101
128
  * Update the supported CDP versions
102
129
  * Update tmp package version (#9155)
103
130
  * Adding support for /computedlabel (getAccessibleName) (#9073)
@@ -111,11 +138,11 @@
111
138
 
112
139
  * Rolling back native support for Opera Browser
113
140
  * Added new ieOptions capabilities:
114
- - fileUploadDialogTimeout
115
- - setEdgePath
116
- - setEdgeChromium
117
- - setScrollBehavior
118
- - For consistent naming, deprecating `addArguments(...args)` in favor of `addBrowserCommandSwitches(...args)`
141
+ - fileUploadDialogTimeout
142
+ - setEdgePath
143
+ - setEdgeChromium
144
+ - setScrollBehavior
145
+ - For consistent naming, deprecating `addArguments(...args)` in favor of `addBrowserCommandSwitches(...args)`
119
146
 
120
147
  * Added relative locators
121
148
  * Added Chrome DevTools Protocol (CDP) support
@@ -134,12 +161,11 @@
134
161
 
135
162
  * Removed BUILD.bazel files from the build artifact
136
163
 
137
-
138
164
  ## v4.0.0-alpha.3
139
165
 
140
166
  ### Notice
141
167
 
142
- * The minimum supported version of Node is now 10.15.0 LTS
168
+ * The minimum supported version of Node is now 10.15.0 LTS
143
169
 
144
170
  ### Changes
145
171
 
@@ -149,16 +175,15 @@
149
175
 
150
176
  ### API Changes
151
177
 
152
- * Export `lib/input.Origin` from the top level `selenium-webdriver` module.
153
- * HTTP requests from this library will now include a User-Agent of the form
154
- `selenium/${VERSION} (js ${PLATFORM})`.
155
-
178
+ * Export `lib/input.Origin` from the top level `selenium-webdriver` module.
179
+ * HTTP requests from this library will now include a User-Agent of the form
180
+ `selenium/${VERSION} (js ${PLATFORM})`.
156
181
 
157
182
  ## v4.0.0-alpha.1
158
183
 
159
184
  ### Notice
160
185
 
161
- * The minimum supported version of Node is now 8.9.0 LTS
186
+ * The minimum supported version of Node is now 8.9.0 LTS
162
187
 
163
188
  ### Changes to Supported Browsers
164
189
 
@@ -172,180 +197,165 @@ mode (see `example/headless.js`)
172
197
 
173
198
  ### Changes for W3C WebDriver Spec Compliance
174
199
 
175
- * Revamped the actions API to conform with the WebDriver Spec:
176
- <https://www.w3.org/TR/webdriver/#actions>. For details, refer to the JS doc
177
- on the `lib/input.Actions` class.
178
-
179
- As of January, 2018, only Firefox natively supports this new API. You can
180
- put the `Actions` class into "bridge mode" and it will attempt to translate
181
- mouse and keyboard actions to the legacy API (see class docs). Alternatively,
182
- you may continue to use the legacy API directly via the `lib/actions` module.
183
- __NOTE:__ The legacy API is considered strongly deprecated and will be
184
- removed in a minor release once Google's Chrome and Microsoft's Edge browsers
185
- support the new API.
186
-
187
- * All window manipulation commands are now supported.
188
- * Added `driver.switchTo().parentFrame()`
189
- * When a named cookie is requested, attempt to fetch it directly using the
190
- W3C endpoint, `GET /session/{session id}/cookie/{name}`. If this command is
191
- not recognized by the remote end, fallback to fetching all cookies and then
192
- searching for the desired name.
193
- * Replaced `WebElement.getSize()` and `WebElement.getLocation()` with a single
194
- method, `WebElement.getRect()`.
200
+ * Revamped the actions API to conform with the WebDriver Spec:
201
+ <https://www.w3.org/TR/webdriver/#actions>. For details, refer to the JS doc on the `lib/input.Actions` class.
195
202
 
196
- ### API Changes
203
+ As of January, 2018, only Firefox natively supports this new API. You can put the `Actions` class
204
+ into "bridge mode" and it will attempt to translate mouse and keyboard actions to the legacy API (
205
+ see class docs). Alternatively, you may continue to use the legacy API directly via the `lib/actions` module.
206
+ __NOTE:__ The legacy API is considered strongly deprecated and will be removed in a minor release
207
+ once Google's Chrome and Microsoft's Edge browsers support the new API.
197
208
 
198
- * The core WebDriver API no longer uses promise manager
199
- - Removed `index.Builder#setControlFlow()`
200
- - The following thenable types no longer have a `cancel()` method:
201
- - The dynamically generated thenable WebDrivers created by `index.Builder`
202
- - `lib/webdriver.AlertPromise`
203
- - `lib/webdriver.WebElementPromise`
204
- * Removed `remote/index.DriverService.prototype.stop()` (use `#kill()` instead)
205
- * Removed the `lib/actions` module
206
- * Removed the `lib/events` module
207
- * Removed the `phantomjs` module
208
- * Removed the 'opera' module
209
- * Removed the promise manager from `lib/promise`, which includes the removal
210
- of the following exported names (replacements, if any, in parentheses):
211
- - CancellableThenable
212
- - CancellationError
213
- - ControlFlow
214
- - Deferred
215
- - LONG_STACK_TRACES
216
- - MultipleUnhandledRejectionError
217
- - Promise (use native Promises)
218
- - Resolver
219
- - Scheduler
220
- - Thenable
221
- - USE_PROMISE_MANAGER
222
- - all (use Promise.all)
223
- - asap (use Promise.resolve)
224
- - captureStackTrace (use Error.captureStackTrace)
225
- - consume (use async functions)
226
- - controlFlow
227
- - createPromise (use new Promise)
228
- - defer
229
- - fulfilled (use Promise.resolve)
230
- - isGenerator
231
- - rejected (use Promise.reject)
232
- - setDefaultFlow
233
- - when (use Promise.resolve)
234
- * Changes to the `Builder` class:
235
- - Added setChromeService, setEdgeService, & setFirefoxService
236
- - Removed setEnableNativeEvents
237
- - Removed setScrollBehavior
238
- * Changes to `chrome.Driver`
239
- - Added sendDevToolsCommand
240
- - Added setDownloadPath
241
- * Changes to `chrome.Options`
242
- - Now extends the `Capabilities` class
243
- - Removed from/toCapabilities
244
- * Changes to `edge.Options`
245
- - Now extends the `Capabilities` class
246
- - Removed from/toCapabilities
247
- * Changes to `ie.Options`
248
- - Now extends the `Capabilities` class
249
- - Removed from/toCapabilities
250
- * Removed the `firefox.Binary` class. Custom binaries can still be selected
251
- using `firefox.Options#setBinary()`. Likewise, custom binary arguments can be
252
- specified with `firefox.Options#addArguments()`.
253
- * Changes to `firefox.Driver`
254
- - Added installAddon(path)
255
- - Added uninstallAddon(id)
256
- * Changes to `firefox.Options`
257
- - Now extends the `Capabilities` class
258
- - Removed from/toCapabilities
259
- - Removed setLoggingPreferences (was a no-op)
260
- - setProfile now only accepts a path to an existing profile
261
- - Added addExtensions
262
- - Added setPreference
263
- * Removed the `firefox.Profile` class. All of its functionality is now
264
- provided directly by `firefox.Options`
265
- * Removed the `firefox/binary` module
266
- * Removed the `firefox/profile` module
267
- * Changes to `safari.Options`
268
- - Now extends the `Capabilities` class
269
- - Removed from/toCapabilities
270
- - Removed setCleanSession (was a no-op)
271
- * Changes to `lib/capabilities.Browser`:
272
- - Removed several enum values.
273
- - ANDROID (use Chrome for Android; see docs on the chrome module)
274
- - IPAD (no support available)
275
- - IPHONE (no support available)
276
- - OPERA (use Chrome)
277
- - PHANTOM_JS (use Chrome or Firefox in headless mode)
278
- - HTMLUNIT (use Chrome or Firefox in headless mode)
279
- * Changes to `lib/capabilities.Capabilities`:
280
- - Removed static factory methods android(), ipad(), iphone(), opera(),
281
- phantomjs(), htmlunit(), and htmlunitwithjs(). Users can still manually
282
- configure capabilities for these, but their use is not recommended and
283
- they will no longer be surfaced in the API.
284
- * Changes to `lib/error`:
285
- - Added
286
- - ElementClickInterceptedError
287
- - InsecureCertificateError
288
- - InvalidCoordinatesError
289
- - NoSuchCookieError
290
- - Removed
291
- - ElementNotVisibleError
292
- - InvalidElementCoordinatesError
293
- * Changes to `lib/webdriver.WebDriver`:
294
- - Dropped support for "requiredCapabilities" from WebDriver.createSession
295
- - actions() now returns the new `lib/input.Actions` class
296
- - Removed touchActions
297
- - Renamed schedule to execute
298
- - Removed the `WebDriver.attachToSession()` factory method. Users can just
299
- the `WebDriver` constructor directly instead.
300
- - Removed the `call()` method. This was used to inject custom function calls
301
- into the control flow. Now that the promise manager is no longer used,
302
- this method is no longer necessary. Users are now responsible for
303
- coordinating actions (ideally with async functions) and can just call
304
- functions directly instead of through `driver.call()`.
305
- * Changes to `lib/webdriver.WebElement`:
306
- - Replaced getSize & getLocation with getRect
307
- * Changes to `lib/webdriver.Alert`:
308
- - Removed authenticateAs
309
- * Changes to `lib/webdriver.Options` (`driver.manage()`):
310
- - Removed timeouts (use get/setTimeouts)
311
- * Changes to `lib/webdriver.Window` (`driver.manage().window()`):
312
- - Added
313
- - getRect
314
- - setRect
315
- - fullscreen
316
- - minimize
317
- - Removed (use the getRect/setRect methods)
318
- - getPosition
319
- - setPosition
320
- - getSize
321
- - setSize
322
- * Removed the `testing/assert` module
323
- * Changes to `testing/index`
324
- - Since the promise manager has been removed, it is no longer necessary to
325
- wrap the Mocha test hooks; instead, users can simply use async functions.
326
- The following have all been removed:
327
- - describe
328
- - before
329
- - beforeEach
330
- - after
331
- - afterEach
332
- - it
333
- - Added the `suite` function. For details, refer to the jsdoc or
334
- `example/google_search_test.js`
209
+ * All window manipulation commands are now supported.
210
+ * Added `driver.switchTo().parentFrame()`
211
+ * When a named cookie is requested, attempt to fetch it directly using the W3C endpoint, `GET /session/{session id}/cookie/{name}`. If this command is not recognized by the
212
+ remote end, fallback to fetching all cookies and then searching for the desired name.
213
+ * Replaced `WebElement.getSize()` and `WebElement.getLocation()` with a single method, `WebElement.getRect()`.
335
214
 
215
+ ### API Changes
336
216
 
217
+ * The core WebDriver API no longer uses promise manager
218
+ - Removed `index.Builder#setControlFlow()`
219
+ - The following thenable types no longer have a `cancel()` method:
220
+ - The dynamically generated thenable WebDrivers created by `index.Builder`
221
+ - `lib/webdriver.AlertPromise`
222
+ - `lib/webdriver.WebElementPromise`
223
+ * Removed `remote/index.DriverService.prototype.stop()` (use `#kill()` instead)
224
+ * Removed the `lib/actions` module
225
+ * Removed the `lib/events` module
226
+ * Removed the `phantomjs` module
227
+ * Removed the 'opera' module
228
+ * Removed the promise manager from `lib/promise`, which includes the removal of the following
229
+ exported names (replacements, if any, in parentheses):
230
+ - CancellableThenable
231
+ - CancellationError
232
+ - ControlFlow
233
+ - Deferred
234
+ - LONG_STACK_TRACES
235
+ - MultipleUnhandledRejectionError
236
+ - Promise (use native Promises)
237
+ - Resolver
238
+ - Scheduler
239
+ - Thenable
240
+ - USE_PROMISE_MANAGER
241
+ - all (use Promise.all)
242
+ - asap (use Promise.resolve)
243
+ - captureStackTrace (use Error.captureStackTrace)
244
+ - consume (use async functions)
245
+ - controlFlow
246
+ - createPromise (use new Promise)
247
+ - defer
248
+ - fulfilled (use Promise.resolve)
249
+ - isGenerator
250
+ - rejected (use Promise.reject)
251
+ - setDefaultFlow
252
+ - when (use Promise.resolve)
253
+ * Changes to the `Builder` class:
254
+ - Added setChromeService, setEdgeService, & setFirefoxService
255
+ - Removed setEnableNativeEvents
256
+ - Removed setScrollBehavior
257
+ * Changes to `chrome.Driver`
258
+ - Added sendDevToolsCommand
259
+ - Added setDownloadPath
260
+ * Changes to `chrome.Options`
261
+ - Now extends the `Capabilities` class
262
+ - Removed from/toCapabilities
263
+ * Changes to `edge.Options`
264
+ - Now extends the `Capabilities` class
265
+ - Removed from/toCapabilities
266
+ * Changes to `ie.Options`
267
+ - Now extends the `Capabilities` class
268
+ - Removed from/toCapabilities
269
+ * Removed the `firefox.Binary` class. Custom binaries can still be selected using `firefox.Options#setBinary()`. Likewise, custom binary arguments can be specified
270
+ with `firefox.Options#addArguments()`.
271
+ * Changes to `firefox.Driver`
272
+ - Added installAddon(path)
273
+ - Added uninstallAddon(id)
274
+ * Changes to `firefox.Options`
275
+ - Now extends the `Capabilities` class
276
+ - Removed from/toCapabilities
277
+ - Removed setLoggingPreferences (was a no-op)
278
+ - setProfile now only accepts a path to an existing profile
279
+ - Added addExtensions
280
+ - Added setPreference
281
+ * Removed the `firefox.Profile` class. All of its functionality is now provided directly by `firefox.Options`
282
+ * Removed the `firefox/binary` module
283
+ * Removed the `firefox/profile` module
284
+ * Changes to `safari.Options`
285
+ - Now extends the `Capabilities` class
286
+ - Removed from/toCapabilities
287
+ - Removed setCleanSession (was a no-op)
288
+ * Changes to `lib/capabilities.Browser`:
289
+ - Removed several enum values.
290
+ - ANDROID (use Chrome for Android; see docs on the chrome module)
291
+ - IPAD (no support available)
292
+ - IPHONE (no support available)
293
+ - OPERA (use Chrome)
294
+ - PHANTOM_JS (use Chrome or Firefox in headless mode)
295
+ - HTMLUNIT (use Chrome or Firefox in headless mode)
296
+ * Changes to `lib/capabilities.Capabilities`:
297
+ - Removed static factory methods android(), ipad(), iphone(), opera(), phantomjs(), htmlunit(),
298
+ and htmlunitwithjs(). Users can still manually configure capabilities for these, but their use
299
+ is not recommended and they will no longer be surfaced in the API.
300
+ * Changes to `lib/error`:
301
+ - Added
302
+ - ElementClickInterceptedError
303
+ - InsecureCertificateError
304
+ - InvalidCoordinatesError
305
+ - NoSuchCookieError
306
+ - Removed
307
+ - ElementNotVisibleError
308
+ - InvalidElementCoordinatesError
309
+ * Changes to `lib/webdriver.WebDriver`:
310
+ - Dropped support for "requiredCapabilities" from WebDriver.createSession
311
+ - actions() now returns the new `lib/input.Actions` class
312
+ - Removed touchActions
313
+ - Renamed schedule to execute
314
+ - Removed the `WebDriver.attachToSession()` factory method. Users can just the `WebDriver`
315
+ constructor directly instead.
316
+ - Removed the `call()` method. This was used to inject custom function calls into the control
317
+ flow. Now that the promise manager is no longer used, this method is no longer necessary. Users are now responsible for coordinating actions (ideally with async functions) and can just
318
+ call functions directly instead of through `driver.call()`.
319
+ * Changes to `lib/webdriver.WebElement`:
320
+ - Replaced getSize & getLocation with getRect
321
+ * Changes to `lib/webdriver.Alert`:
322
+ - Removed authenticateAs
323
+ * Changes to `lib/webdriver.Options` (`driver.manage()`):
324
+ - Removed timeouts (use get/setTimeouts)
325
+ * Changes to `lib/webdriver.Window` (`driver.manage().window()`):
326
+ - Added
327
+ - getRect
328
+ - setRect
329
+ - fullscreen
330
+ - minimize
331
+ - Removed (use the getRect/setRect methods)
332
+ - getPosition
333
+ - setPosition
334
+ - getSize
335
+ - setSize
336
+ * Removed the `testing/assert` module
337
+ * Changes to `testing/index`
338
+ - Since the promise manager has been removed, it is no longer necessary to wrap the Mocha test
339
+ hooks; instead, users can simply use async functions. The following have all been removed:
340
+ - describe
341
+ - before
342
+ - beforeEach
343
+ - after
344
+ - afterEach
345
+ - it
346
+ - Added the `suite` function. For details, refer to the jsdoc or
347
+ `example/google_search_test.js`
337
348
 
338
349
  ## v3.6.0
339
350
 
340
351
  ### Bug Fixes
341
352
 
342
353
  * The Capabilities factory methods should only specify the name of the browser.
343
- * Protect against the remote end sometimes not returning a list to findElements
344
- commands.
354
+ * Protect against the remote end sometimes not returning a list to findElements commands.
345
355
  * Properly reset state in `remote.DriverService#kill()`
346
- * The firefox module will no longer apply the preferences required by the legacy
347
- FirefoxDriver. These preferences were only required when using the legacy
348
- driver, support for which was dropped in v3.5.0.
356
+ * The firefox module will no longer apply the preferences required by the legacy FirefoxDriver.
357
+ These preferences were only required when using the legacy driver, support for which was dropped
358
+ in v3.5.0.
349
359
 
350
360
  ### API Changes
351
361
 
@@ -356,16 +366,16 @@ mode (see `example/headless.js`)
356
366
  * Deprecated `selenium-webdriver/firefox/binary.Binary`
357
367
  * Removed `selenium-webdriver/firefox.Options#useGeckoDriver()`
358
368
  * Removed the unused `selenium-webdriver/firefox/profile.decode()`
359
- * Removed methods from `selenium-webdriver/firefox/profile.Profile` that had
360
- no effect since support for the legacy FirefoxDriver was dropped in 3.5.0:
369
+ * Removed methods from `selenium-webdriver/firefox/profile.Profile` that had no effect since support
370
+ for the legacy FirefoxDriver was dropped in 3.5.0:
361
371
  - setNativeEventsEnabled
362
372
  - nativeEventsEnabled
363
373
  - getPort
364
374
  - setPort
365
- * Removed `selenium-webdriver/firefox.ServiceBuilder#setFirefoxBinary()`; custom
366
- binaries should be configured through the `firefox.Options` class.
367
- * Removed `selenium-webdriver/firefox.Capability`. These hold overs from the
368
- legacy FirefoxDriver are no longer supported.
375
+ * Removed `selenium-webdriver/firefox.ServiceBuilder#setFirefoxBinary()`; custom binaries should be
376
+ configured through the `firefox.Options` class.
377
+ * Removed `selenium-webdriver/firefox.Capability`. These hold overs from the legacy FirefoxDriver
378
+ are no longer supported.
369
379
 
370
380
  ### Changes for W3C WebDriver Spec Compliance
371
381
 
@@ -373,7 +383,6 @@ mode (see `example/headless.js`)
373
383
  `error.ElementNotInteractableError`.
374
384
  * Support the `httpOnly` option when adding a cookie.
375
385
 
376
-
377
386
  ## v3.5.0
378
387
 
379
388
  ### Notice
@@ -387,20 +396,16 @@ to a remote Selenium server that supports Firefox 45.
387
396
  - The `SELENIUM_MARIONETTE` enviornment variable no longer has an effect.
388
397
  - `selenium-webdriver/firefox.Capability.MARIONETTE` is deprecated.
389
398
  - `selenium-webdriver/firefox.Options#useGeckoDriver()` is deprecated and now a no-op.
390
- * `firefox.Options` will no longer discard the `"moz:firefoxOptions"` set in
391
- user provided capabilities (via `Builder.withCapabilities({})`). When both
392
- are used, the settings in `firefox.Options` will be applied _last_.
393
- * Added `chrome.Options#headless()` and `chrome.Options#windowSize()`, which
394
- may be used to start Chrome in headless mode (requires Chrome 59+) and to set
395
- the initial window size, respectively.
396
-
399
+ * `firefox.Options` will no longer discard the `"moz:firefoxOptions"` set in user provided
400
+ capabilities (via `Builder.withCapabilities({})`). When both are used, the settings in `firefox.Options` will be applied _last_.
401
+ * Added `chrome.Options#headless()` and `chrome.Options#windowSize()`, which may be used to start
402
+ Chrome in headless mode (requires Chrome 59+) and to set the initial window size, respectively.
397
403
 
398
404
  ### Changes for W3C WebDriver Spec Compliance
399
405
 
400
- * Added `error.WebDriverError#remoteStacktrace` to capture the stacktrace
401
- reported by a remote WebDriver endpoint (if any).
402
- * Fixed `WebElement#sendKeys` to send text as a string instead of an array of
403
- strings.
406
+ * Added `error.WebDriverError#remoteStacktrace` to capture the stacktrace reported by a remote
407
+ WebDriver endpoint (if any).
408
+ * Fixed `WebElement#sendKeys` to send text as a string instead of an array of strings.
404
409
 
405
410
  ## v3.4.0
406
411
 
@@ -410,28 +415,25 @@ This release requires [geckodriver 0.15.0](https://github.com/mozilla/geckodrive
410
415
 
411
416
  ### API Changes
412
417
 
413
- * Added `Options#getTimeouts()` for retrieving the currently configured session
414
- timeouts (i.e. implicit wait). This method will only work with W3C compatible
415
- WebDriver implementations.
416
- * Deprecated the `Timeouts` class in favor of `Options#setTimeouts()`, which
417
- supports setting multiple timeouts at once.
418
+ * Added `Options#getTimeouts()` for retrieving the currently configured session timeouts (i.e.
419
+ implicit wait). This method will only work with W3C compatible WebDriver implementations.
420
+ * Deprecated the `Timeouts` class in favor of `Options#setTimeouts()`, which supports setting
421
+ multiple timeouts at once.
418
422
  * Added support for emulating different network conditions (e.g., offline, 2G, WiFi) on Chrome.
419
423
 
420
424
  ### Changes for W3C WebDriver Spec Compliance
421
425
 
422
- * Fixed W3C response parsing, which expects response data to always be a JSON
423
- object with a `value` key.
426
+ * Fixed W3C response parsing, which expects response data to always be a JSON object with a `value`
427
+ key.
424
428
  * Added W3C endpoints for interacting with various types of
425
429
  [user prompts](https://w3c.github.io/webdriver/webdriver-spec.html#user-prompts).
426
430
  * Added W3C endpoints for remotely executing scripts.
427
431
  * Added W3C endpoints to get current window handle and all windows handles.
428
432
 
429
-
430
433
  ## v3.3.0
431
434
 
432
- * Added warning log messages when the user creates new managed promises, or
433
- schedules unchained tasks. Users may opt in to printing these log messages
434
- with
435
+ * Added warning log messages when the user creates new managed promises, or schedules unchained
436
+ tasks. Users may opt in to printing these log messages with
435
437
 
436
438
  ```js
437
439
  const {logging} = require('selenium-webdriver');
@@ -440,112 +442,94 @@ This release requires [geckodriver 0.15.0](https://github.com/mozilla/geckodrive
440
442
  ```
441
443
  * If the `JAVA_HOME` environment variable is set, use it to locate java.exe.
442
444
 
443
-
444
445
  ## v3.2.0
445
446
 
446
447
  * Release skipped to stay in sync with the main Selenium project.
447
448
 
448
-
449
449
  ## v3.1.0
450
450
 
451
451
  * The `lib` package is once again platform agnostic (excluding `lib/devmode`).
452
- * Deprecated `promise.when(value, callback, errback)`.
453
- Use `promise.fulfilled(value).then(callback, errback)`
452
+ * Deprecated `promise.when(value, callback, errback)`. Use `promise.fulfilled(value).then(callback, errback)`
454
453
  * Changed `promise.fulfilled(value)`, `promise.rejected(reason)` and
455
- `promise.defer()` to all use native promises when the promise manager is
456
- disabled.
454
+ `promise.defer()` to all use native promises when the promise manager is disabled.
457
455
  * Properly handle W3C error responses to new session commands.
458
456
  * Updated `selenium-webdriver/testing` to export `describe.only` along with
459
457
  `describe.skip`.
460
- * Fixed `selenium-webdriver/lib/until.ableToSwitchToFrame`. It was previously
461
- dropping arguments and would never work.
458
+ * Fixed `selenium-webdriver/lib/until.ableToSwitchToFrame`. It was previously dropping arguments and
459
+ would never work.
462
460
  * Added the ability to use Firefox Nightly
463
461
  * If Firefox cannot be found in the default location, look for it on the PATH
464
462
  * Allow SafariDriver to use Safari Technology Preview.
465
- * Use the proper wire command for WebElement.getLocation() and
466
- WebElement.getSize() for W3C compliant drivers.
467
-
463
+ * Use the proper wire command for WebElement.getLocation() and WebElement.getSize() for W3C
464
+ compliant drivers.
468
465
 
469
466
  ## v3.0.1
470
467
 
471
468
  * More API adjustments to align with native Promises
472
469
  - Deprecated `promise.fulfilled(value)`, use `promise.Promise#resolve(value)`
473
470
  - Deprecated `promise.rejected(reason)`, use `promise.Promise#reject(reason)`
474
- * When a `wait()` condition times out, the returned promise will now be
475
- rejected with an `error.TimeoutError` instead of a generic `Error` object.
476
- * `WebDriver#wait()` will now throw a TypeError if an invalid wait condition is
477
- provided.
478
- * Properly catch unhandled promise rejections with an action sequence (only
479
- impacts when the promise manager is disabled).
480
-
471
+ * When a `wait()` condition times out, the returned promise will now be rejected with an `error.TimeoutError` instead of a generic `Error` object.
472
+ * `WebDriver#wait()` will now throw a TypeError if an invalid wait condition is provided.
473
+ * Properly catch unhandled promise rejections with an action sequence (only impacts when the promise
474
+ manager is disabled).
481
475
 
482
476
  ## v3.0.0
483
477
 
484
478
  * (__NOTICE__) The minimum supported version of Node is now 6.9.0 LTS
485
- * Removed support for the SafariDriver browser extension. This has been
486
- replaced by Apple's safaridriver, which is included wtih Safari 10
479
+ * Removed support for the SafariDriver browser extension. This has been replaced by Apple's
480
+ safaridriver, which is included wtih Safari 10
487
481
  (available on OS X El Capitan and macOS Sierra).
488
482
 
489
483
  To use Safari 9 or older, users will have to use an older version of Selenium.
490
484
 
491
485
  * geckodriver v0.11.0 or newer is now required for Firefox.
492
- * Fixed potential reference errors in `selenium-webdriver/testing` when users
493
- create a cycle with mocha by running with mocha's `--hook` flag.
494
- * Fixed `WebDriver.switchTo().activeElement()` to use the correct HTTP method
495
- for compatibility with the W3C spec.
486
+ * Fixed potential reference errors in `selenium-webdriver/testing` when users create a cycle with
487
+ mocha by running with mocha's `--hook` flag.
488
+ * Fixed `WebDriver.switchTo().activeElement()` to use the correct HTTP method for compatibility with
489
+ the W3C spec.
496
490
  * Update the `selenium-webdriver/firefox` module to use geckodriver's
497
491
  "moz:firefoxOptions" dictionary for Firefox-specific configuration values.
498
- * Extending the `selenium-webdriver/testing` module to support tests defined
499
- using generator functions.
492
+ * Extending the `selenium-webdriver/testing` module to support tests defined using generator
493
+ functions.
500
494
  * The promise manager can be disabled by setting an enviornment variable:
501
- `SELENIUM_PROMISE_MANAGER=0`. This is part of a larger plan to remove the
502
- promise manager, as documented at
495
+ `SELENIUM_PROMISE_MANAGER=0`. This is part of a larger plan to remove the promise manager, as
496
+ documented at
503
497
  <https://github.com/SeleniumHQ/selenium/issues/2969>
504
- * When communicating with a W3C-compliant remote end, use the atoms library for
505
- the `WebElement.getAttribute()` and `WebElement.isDisplayed()` commands. This
506
- behavior is consistent with the java, .net, python, and ruby clients.
507
-
498
+ * When communicating with a W3C-compliant remote end, use the atoms library for the `WebElement.getAttribute()` and `WebElement.isDisplayed()` commands. This behavior is
499
+ consistent with the java, .net, python, and ruby clients.
508
500
 
509
501
  ### API Changes
510
502
 
511
- * Removed `safari.Options#useLegacyDriver()`
512
- * Reduced the API on `promise.Thenable` for compatibility with native promises:
513
- - Removed `#isPending()`
514
- - Removed `#cancel()`
515
- - Removed `#finally()`
516
- * Changed all subclasses of `webdriver.WebDriver` to overload the static
517
- function `WebDriver.createSession()` instead of doing work in the
518
- constructor. All constructors now inherit the base class' function signature.
519
- Users are still encouraged to use the `Builder` class instead of creating
520
- drivers directly.
521
- * `Builder#build()` now returns a "thenable" WebDriver instance, allowing users
522
- to immediately schedule commands (as before), or issue them through standard
523
- promise callbacks. This is the same pattern already employed for WebElements.
524
- * Removed `Builder#buildAsync()` as it was redundant with the new semantics of
525
- `build()`.
526
-
527
-
503
+ * Removed `safari.Options#useLegacyDriver()`
504
+ * Reduced the API on `promise.Thenable` for compatibility with native promises:
505
+ - Removed `#isPending()`
506
+ - Removed `#cancel()`
507
+ - Removed `#finally()`
508
+ * Changed all subclasses of `webdriver.WebDriver` to overload the static function `WebDriver.createSession()` instead of doing work in the constructor. All constructors
509
+ now inherit the base class' function signature. Users are still encouraged to use the `Builder`
510
+ class instead of creating drivers directly.
511
+ * `Builder#build()` now returns a "thenable" WebDriver instance, allowing users to immediately
512
+ schedule commands (as before), or issue them through standard promise callbacks. This is the same
513
+ pattern already employed for WebElements.
514
+ * Removed `Builder#buildAsync()` as it was redundant with the new semantics of
515
+ `build()`.
528
516
 
529
517
  ## v3.0.0-beta-3
530
518
 
531
- * Fixed a bug where the promise manager would silently drop callbacks after
532
- recovering from an unhandled promise rejection.
533
- * Added the `firefox.ServiceBuilder` class, which may be used to customize the
534
- geckodriver used for `firefox.Driver` instances.
535
- * Added support for Safari 10 safaridriver. safaridriver may be disabled
536
- via tha API, `safari.Options#useLegacyDriver`, to use the safari
537
- extension driver.
519
+ * Fixed a bug where the promise manager would silently drop callbacks after recovering from an
520
+ unhandled promise rejection.
521
+ * Added the `firefox.ServiceBuilder` class, which may be used to customize the geckodriver used for `firefox.Driver` instances.
522
+ * Added support for Safari 10 safaridriver. safaridriver may be disabled via tha API, `safari.Options#useLegacyDriver`, to use the safari extension driver.
538
523
  * Updated the `lib/proxy` module to support configuring a SOCKS proxy.
539
- * For the `promise.ControlFlow`, fire the "uncaughtException" event in a new
540
- turn of the JS event loop. As a result of this change, any errors thrown by
541
- an event listener will propagate to the global error handler. Previously,
542
- this event was fired with in the context of a (native) promise callback,
543
- causing errors to be silently suppressed in the promise chain.
524
+ * For the `promise.ControlFlow`, fire the "uncaughtException" event in a new turn of the JS event
525
+ loop. As a result of this change, any errors thrown by an event listener will propagate to the
526
+ global error handler. Previously, this event was fired with in the context of a (native) promise
527
+ callback, causing errors to be silently suppressed in the promise chain.
544
528
 
545
529
  ### API Changes
546
530
 
547
- * Added `remote.DriverService.Builder` as a base class for configuring
548
- DriverService instances that run in a child-process. The
531
+ * Added `remote.DriverService.Builder` as a base class for configuring DriverService instances that
532
+ run in a child-process. The
549
533
  `chrome.ServiceBuilder`, `edge.ServiceBuilder`, and `opera.ServiceBuilder`
550
534
  classes now all extend this base class with browser-specific options.
551
535
  * For each of the ServiceBuilder classes, renamed `usingPort` and
@@ -557,144 +541,126 @@ This release requires [geckodriver 0.15.0](https://github.com/mozilla/geckodrive
557
541
  `selenium-webdriver` module (these were previously only available from
558
542
  `lib/webdriver`).
559
543
 
560
-
561
544
  ### Changes for W3C WebDriver Spec Compliance
562
545
 
563
546
  * Updated command mappings for [getting](https://w3c.github.io/webdriver/webdriver-spec.html#get-window-position)
564
547
  and [setting](https://w3c.github.io/webdriver/webdriver-spec.html#set-window-position)
565
548
  the window position.
566
549
 
567
-
568
550
  ## v3.0.0-beta-2
569
551
 
570
552
  ### API Changes
571
553
 
572
554
  * Moved the `builder.Builder` class into the main module (`selenium-webdriver`).
573
555
  * Removed the `builder` module.
574
- * Fix `webdriver.WebDriver#setFileDetector` when driving Chrome or Firefox on a
575
- remote machine.
576
-
556
+ * Fix `webdriver.WebDriver#setFileDetector` when driving Chrome or Firefox on a remote machine.
577
557
 
578
558
  ## v3.0.0-beta-1
579
559
 
580
560
  * Allow users to set the agent used for HTTP connections through
581
- `builder.Builder#usingHttpAgent()`
561
+ `builder.Builder#usingHttpAgent()`
582
562
  * Added new wait conditions: `until.urlIs()`, `until.urlContains()`,
583
- `until.urlMatches()`
563
+ `until.urlMatches()`
584
564
  * Added work around for [GeckoDriver bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1274924)
585
- raising a type conversion error
565
+ raising a type conversion error
586
566
  * Internal cleanup replacing uses of managed promises with native promises
587
567
  * Removed the mandatory use of Firefox Dev Edition, when using Marionette driver
588
568
  * Fixed timeouts' URL
589
569
  * Properly send HTTP requests when using a WebDriver server proxy
590
570
  * Properly configure proxies when using the geckodriver
591
- * `http.Executor` now accepts a promised client. The `builder.Builder` class
592
- will now use this instead of a `command.DeferredExecutor` when creating
593
- WebDriver instances.
594
- * For Chrome and Firefox, the `builder.Builder` class will always return an
595
- instanceof `chrome.Driver` and `firefox.Driver`, respectively, even when
596
- configured to use a remote server (from `builder.Builder#usingServer(url)`,
571
+ * `http.Executor` now accepts a promised client. The `builder.Builder` class will now use this
572
+ instead of a `command.DeferredExecutor` when creating WebDriver instances.
573
+ * For Chrome and Firefox, the `builder.Builder` class will always return an instanceof `chrome.Driver` and `firefox.Driver`, respectively, even when configured to use a
574
+ remote server (from `builder.Builder#usingServer(url)`,
597
575
  `SELENIUM_REMOTE_URL`, etc).
598
576
 
599
577
  ### API Changes
600
578
 
601
579
  * `promise.Deferred` is no longer a thenable object.
602
- * `Options#addCookie()` now takes a record object instead of 7 individual
603
- parameters. A TypeError will be thrown if addCookie() is called with invalid
604
- arguments.
580
+ * `Options#addCookie()` now takes a record object instead of 7 individual parameters. A TypeError
581
+ will be thrown if addCookie() is called with invalid arguments.
605
582
  * When adding cookies, the desired expiry must be provided as a Date or in
606
- _seconds_ since epoch. When retrieving cookies, the expiration is always
607
- returned in seconds.
583
+ _seconds_ since epoch. When retrieving cookies, the expiration is always returned in seconds.
608
584
  * Renamed `firefox.Options#useMarionette` to `firefox.Options#useGeckoDriver`
609
585
  * Removed deprecated modules:
610
- - `selenium-webdriver/error` (use `selenium-webdriver/lib/error`,\
611
- or the `error` property exported by `selenium-webdriver`)
612
- - `selenium-webdriver/executors` — this was not previously deprecated, but
613
- is no longer used.
586
+ - `selenium-webdriver/error` (use `selenium-webdriver/lib/error`,\
587
+ or the `error` property exported by `selenium-webdriver`)
588
+ - `selenium-webdriver/executors` — this was not previously deprecated, but is no longer used.
614
589
  * Removed deprecated types:
615
- - `command.DeferredExecutor` — this was not previously deprecated, but is no
616
- longer used. It can be trivially implemented by clients should it be
617
- needed.
618
- - `error.InvalidSessionIdError` (use `error.NoSuchSessionError`)
619
- - `executors.DeferredExecutor`
620
- - `until.Condition` (use `webdriver.Condition`)
621
- - `until.WebElementCondition` (use `webdriver.WebElementCondition`)
622
- - `webdriver.UnhandledAlertError` (use `error.UnexpectedAlertOpenError`)
590
+ - `command.DeferredExecutor` — this was not previously deprecated, but is no longer used. It can
591
+ be trivially implemented by clients should it be needed.
592
+ - `error.InvalidSessionIdError` (use `error.NoSuchSessionError`)
593
+ - `executors.DeferredExecutor`
594
+ - `until.Condition` (use `webdriver.Condition`)
595
+ - `until.WebElementCondition` (use `webdriver.WebElementCondition`)
596
+ - `webdriver.UnhandledAlertError` (use `error.UnexpectedAlertOpenError`)
623
597
  * Removed deprecated functions:
624
- - `Deferred#cancel()`
625
- - `Deferred#catch()`
626
- - `Deferred#finally()`
627
- - `Deferred#isPending()`
628
- - `Deferred#then()`
629
- - `Promise#thenCatch()`
630
- - `Promise#thenFinally()`
631
- - `WebDriver#isElementPresent()`
632
- - `WebElement#getInnerHtml()`
633
- - `WebElement#getOuterHtml()`
634
- - `WebElement#getRawId()`
635
- - `WebElement#isElementPresent()`
598
+ - `Deferred#cancel()`
599
+ - `Deferred#catch()`
600
+ - `Deferred#finally()`
601
+ - `Deferred#isPending()`
602
+ - `Deferred#then()`
603
+ - `Promise#thenCatch()`
604
+ - `Promise#thenFinally()`
605
+ - `WebDriver#isElementPresent()`
606
+ - `WebElement#getInnerHtml()`
607
+ - `WebElement#getOuterHtml()`
608
+ - `WebElement#getRawId()`
609
+ - `WebElement#isElementPresent()`
636
610
  * Removed deprecated properties:
637
- - `WebDriverError#code`
638
-
611
+ - `WebDriverError#code`
639
612
 
640
613
  ## v2.53.2
641
614
 
642
- * Changed `io.exists()` to return a rejected promise if the input path is not
643
- a string
644
- * Deprecated `Promise#thenFinally()` - use `Promise#finally()`. The thenFinally
645
- shim added to the promise module in v2.53.0 will be removed in v3.0
646
- Sorry for the churn!
647
- * FIXED: capabilities serialization now properly handles undefined vs.
648
- false-like values.
615
+ * Changed `io.exists()` to return a rejected promise if the input path is not a string
616
+ * Deprecated `Promise#thenFinally()` - use `Promise#finally()`. The thenFinally shim added to the
617
+ promise module in v2.53.0 will be removed in v3.0 Sorry for the churn!
618
+ * FIXED: capabilities serialization now properly handles undefined vs. false-like values.
649
619
  * FIXED: properly handle responses from the remote end in
650
- `WebDriver.attachToSession`
620
+ `WebDriver.attachToSession`
651
621
 
652
622
  ## v2.53.1
653
623
 
654
624
  * FIXED: for consistency with the other language bindings, `remote.FileDetector`
655
- will ignore paths that refer to a directory.
625
+ will ignore paths that refer to a directory.
656
626
 
657
627
  ## v2.53.0
658
628
 
659
629
  ### Change Summary
660
630
 
661
- * Added preliminary support for Marionette, Mozilla's WebDriver implementation
662
- for Firefox. Marionette may be enabled via the API,
663
- `firefox.Options#useMarionette`, or by setting the `SELENIUM_MARIONETTE`
664
- environment variable.
665
- * Moved all logic for parsing and interpreting responses from the remote end
666
- into the individual `command.Executor` implementations.
631
+ * Added preliminary support for Marionette, Mozilla's WebDriver implementation for Firefox.
632
+ Marionette may be enabled via the API,
633
+ `firefox.Options#useMarionette`, or by setting the `SELENIUM_MARIONETTE`
634
+ environment variable.
635
+ * Moved all logic for parsing and interpreting responses from the remote end into the individual `command.Executor` implementations.
667
636
  * For consistency with the other Selenium language bindings,
668
- `WebDriver#isElementPresent()` and `WebElement#isElementPresent()` have
669
- been deprecated. These methods will be removed in v3.0. Use the findElements
670
- command to test for the presence of an element:
637
+ `WebDriver#isElementPresent()` and `WebElement#isElementPresent()` have been deprecated. These
638
+ methods will be removed in v3.0. Use the findElements command to test for the presence of an
639
+ element:
671
640
 
672
641
  driver.findElements(By.css('.foo')).then(found => !!found.length);
673
642
  * Added support for W3C-spec compliant servers.
674
643
  * For consistent naming, deprecating `error.InvalidSessionIdError` in favor of
675
- `error.NoSuchSessionError`.
676
- * Moved the `error` module to `lib/error` so all core modules are co-located.
677
- The top-level `error` module will be removed in v3.0.
678
- * Moved `until.Condition` and `until.WebElementCondition` to the webdriver
679
- module to break a circular dependency.
680
- * Added support for setting the username and password in basic auth pop-up
681
- dialogs (currently IE only).
644
+ `error.NoSuchSessionError`.
645
+ * Moved the `error` module to `lib/error` so all core modules are co-located. The top-level `error`
646
+ module will be removed in v3.0.
647
+ * Moved `until.Condition` and `until.WebElementCondition` to the webdriver module to break a
648
+ circular dependency.
649
+ * Added support for setting the username and password in basic auth pop-up dialogs (currently IE
650
+ only).
682
651
  * Deprecated `WebElement#getInnerHtml()` and `WebEleemnt#getOuterHtml()`
683
652
  * Deprecated `Promise#thenCatch()` - use `Promise#catch()` instead
684
653
  * Deprecated `Promise#thenFinally()` - use `promise.thenFinally()` instead
685
- * FIXED: `io.findInPath()` will no longer match against directories that have
686
- the same basename as the target file.
687
- * FIXED: `phantomjs.Driver` now takes a third argument that defines the path to
688
- a log file to use for the phantomjs executable's output. This may be quickly
689
- set at runtime with the `SELENIUM_PHANTOMJS_LOG` environment variable.
654
+ * FIXED: `io.findInPath()` will no longer match against directories that have the same basename as
655
+ the target file.
656
+ * FIXED: `phantomjs.Driver` now takes a third argument that defines the path to a log file to use
657
+ for the phantomjs executable's output. This may be quickly set at runtime with the `SELENIUM_PHANTOMJS_LOG` environment variable.
690
658
 
691
659
  ### Changes for W3C WebDriver Spec Compliance
692
660
 
693
- * Changed `element.sendKeys(...)` to send the key sequence as an array where
694
- each element defines a single key. The legacy wire protocol permits arrays
695
- where each element is a string of arbitrary length. This change is solely
696
- at the protocol level and should have no user-visible effect.
697
-
661
+ * Changed `element.sendKeys(...)` to send the key sequence as an array where each element defines a
662
+ single key. The legacy wire protocol permits arrays where each element is a string of arbitrary
663
+ length. This change is solely at the protocol level and should have no user-visible effect.
698
664
 
699
665
  ## v2.52.0
700
666
 
@@ -708,51 +674,44 @@ the selenium-webdriver package README.
708
674
  ### Change Summary
709
675
 
710
676
  * Add support for Microsoft's Edge web browser
711
- * Added `webdriver.Builder#buildAsync()`, which returns a promise that will be
712
- fulfilled with the newly created WebDriver instance once the associated
713
- browser has been full initialized. This is purely a convenient alternative
714
- to the existing build() method as the WebDriver class will always defer
715
- commands until it has a fully created browser.
716
- * Added `firefox.Profile#setHost()` which may be used to set the host that
717
- the FirefoxDriver's server listens for commands on. The server uses
718
- "localhost" by default.
677
+ * Added `webdriver.Builder#buildAsync()`, which returns a promise that will be fulfilled with the
678
+ newly created WebDriver instance once the associated browser has been full initialized. This is
679
+ purely a convenient alternative to the existing build() method as the WebDriver class will always
680
+ defer commands until it has a fully created browser.
681
+ * Added `firefox.Profile#setHost()` which may be used to set the host that the FirefoxDriver's
682
+ server listens for commands on. The server uses
683
+ "localhost" by default.
719
684
  * Added `promise.Promise#catch()` for API compatibility with native Promises.
720
- `promise.Promise#thenCatch()` is not yet deprecated, but it simply
721
- delegates to `catch`.
685
+ `promise.Promise#thenCatch()` is not yet deprecated, but it simply delegates to `catch`.
722
686
  * Changed some `io` operations to use native promises.
723
- * Changed `command.Executor#execute()` and `HttpClient#send()` to return
724
- promises instead of using callback passing.
687
+ * Changed `command.Executor#execute()` and `HttpClient#send()` to return promises instead of using
688
+ callback passing.
725
689
  * Replaced the `Serializable` class with an internal, Symbol-defined method.
726
690
  * Changed the `Capabilities` class to extend the native `Map` type.
727
691
  * Changed the `Capabilities.has(key)` to only test if a capability has been set
728
- (Map semantics). To check whether the value is true, use `get(key)`.
692
+ (Map semantics). To check whether the value is true, use `get(key)`.
729
693
  * Deprecated `executors.DeferredExecutor` in favor of
730
- `lib/command.DeferredExecutor`.
731
- * API documentation is no longer distributed with the npm package, but remains
732
- available at <http://seleniumhq.github.io/selenium/docs/api/javascript/>
733
- * Rewrote the `error` module to export an Error subtype for each type of error
734
- defined in the [W3C WebDriver spec](https://w3c.github.io/webdriver/webdriver-spec.html#handling-errors).
735
- * Changed the `http.Request` and `http.Response` classes to store headers in
736
- maps instead of object literals.
694
+ `lib/command.DeferredExecutor`.
695
+ * API documentation is no longer distributed with the npm package, but remains available at <http://seleniumhq.github.io/selenium/docs/api/javascript/>
696
+ * Rewrote the `error` module to export an Error subtype for each type of error defined in the [W3C WebDriver spec](https://w3c.github.io/webdriver/webdriver-spec.html#handling-errors).
697
+ * Changed the `http.Request` and `http.Response` classes to store headers in maps instead of object
698
+ literals.
737
699
  * Updated `ws` dependency to version `1.0.1`.
738
700
  * Removed fluent predicates "is" and "not" from the experimental
739
- `testing/assert` module.
740
- * Wait conditions that locate an element, or that wait on an element's state,
741
- will return a WebElementPromise.
742
- * Lots of internal clean-up to break selenium-webdriver's long standing
743
- dependency on Google's Closure library.
701
+ `testing/assert` module.
702
+ * Wait conditions that locate an element, or that wait on an element's state, will return a
703
+ WebElementPromise.
704
+ * Lots of internal clean-up to break selenium-webdriver's long standing dependency on Google's
705
+ Closure library.
744
706
 
745
707
  ### Changes for W3C WebDriver Spec Compliance
746
708
 
747
- * Updated the `By` locators that are not in the W3C spec to delegated to using
748
- CSS selectors: `By.className`, `By.id`, `By.name`, and `By.tagName`.
749
-
709
+ * Updated the `By` locators that are not in the W3C spec to delegated to using CSS selectors: `By.className`, `By.id`, `By.name`, and `By.tagName`.
750
710
 
751
711
  ## v2.49-51
752
712
 
753
713
  * _Releases skipped to stay in sync with the rest of the Selenium project_
754
714
 
755
-
756
715
  ## v2.48.2
757
716
 
758
717
  * Added `WebElement#takeScreenshot()`.
@@ -760,24 +719,21 @@ the selenium-webdriver package README.
760
719
 
761
720
  ## v2.48.1
762
721
 
763
- * FIXED: Adjusted how the control flow tracks promise callbacks to avoid a
764
- potential deadlock.
722
+ * FIXED: Adjusted how the control flow tracks promise callbacks to avoid a potential deadlock.
765
723
 
766
724
  ## v2.48.0
767
725
 
768
- * Node v0.12.x users must run with --harmony. _This is the last release that
769
- will support v0.12.x_
770
- * FIXED: (Promise/A+ compliance) When a promise is rejected with a thenable,
771
- the promise adopts the thenable as its rejection reason instead of waiting
772
- for it to settle. The previous (incorrect) behavior was hidden by bugs in
773
- the `promises-aplus-tests` compliance test suite that were fixed in version
774
- `2.1.1`.
775
- * FIXED: the `webdriver.promise.ControlFlow` now has a consistent execution
776
- order for tasks/callbacks scheduled in different turns of the JS event loop.
777
- Refer to the `webdriver.promise` documentation for more details.
726
+ * Node v0.12.x users must run with --harmony. _This is the last release that will support v0.12.x_
727
+ * FIXED: (Promise/A+ compliance) When a promise is rejected with a thenable, the promise adopts the
728
+ thenable as its rejection reason instead of waiting for it to settle. The previous (incorrect)
729
+ behavior was hidden by bugs in the `promises-aplus-tests` compliance test suite that were fixed in
730
+ version
731
+ `2.1.1`.
732
+ * FIXED: the `webdriver.promise.ControlFlow` now has a consistent execution order for
733
+ tasks/callbacks scheduled in different turns of the JS event loop. Refer to the `webdriver.promise` documentation for more details.
778
734
  * FIXED: do not drop user auth from the WebDriver server URL.
779
- * FIXED: a single `firefox.Binary` instance may be used to configure and
780
- launch multiple FirefoxDriver sessions.
735
+ * FIXED: a single `firefox.Binary` instance may be used to configure and launch multiple
736
+ FirefoxDriver sessions.
781
737
 
782
738
  var binary = new firefox.Binary();
783
739
  var options = new firefox.Options().setBinary(binary);
@@ -786,11 +742,11 @@ the selenium-webdriver package README.
786
742
  var driver1 = builder.build();
787
743
  var driver2 = builder.build();
788
744
 
789
- * FIXED: zip files created for transfer to a remote WebDriver server are no
790
- longer compressed. If the zip contained a file that was already compressed,
791
- the server would return an "invalid code lengths set" error.
792
- * FIXED: Surfaced the `loopback` option to `remote/SeleniumServer`. When set,
793
- the server will be accessed using the current host's loopback address.
745
+ * FIXED: zip files created for transfer to a remote WebDriver server are no longer compressed. If
746
+ the zip contained a file that was already compressed, the server would return an "invalid code
747
+ lengths set" error.
748
+ * FIXED: Surfaced the `loopback` option to `remote/SeleniumServer`. When set, the server will be
749
+ accessed using the current host's loopback address.
794
750
 
795
751
  ## v2.47.0
796
752
 
@@ -804,58 +760,55 @@ continue to be supported, but will require setting the `--harmony` flag.
804
760
  ### Change Summary
805
761
 
806
762
  * Add support for [Node v4.0.0](https://nodejs.org/en/blog/release/v4.0.0/)
807
- * Updated `ws` dependency from `0.7.1` to `0.8.0`
808
- * Bumped the minimum supported version of Node from `0.10.x` to `0.12.x`. This
809
- is in accordance with the Node support policy established in `v2.45.0`.
763
+ * Updated `ws` dependency from `0.7.1` to `0.8.0`
764
+ * Bumped the minimum supported version of Node from `0.10.x` to `0.12.x`. This is in accordance with
765
+ the Node support policy established in `v2.45.0`.
810
766
 
811
767
  ## v2.46.1
812
768
 
813
769
  * Fixed internal module loading on Windows.
814
770
  * Fixed error message format on timeouts for `until.elementLocated()`
815
- and `until.elementsLocated()`.
771
+ and `until.elementsLocated()`.
816
772
 
817
773
  ## v2.46.0
818
774
 
819
775
  * Exposed a new logging API via the `webdriver.logging` module. For usage, see
820
- `example/logging.js`.
821
- * Added support for using a proxy server for WebDriver commands.
822
- See `Builder#usingWebDriverProxy()` for more info.
776
+ `example/logging.js`.
777
+ * Added support for using a proxy server for WebDriver commands. See `Builder#usingWebDriverProxy()`
778
+ for more info.
823
779
  * Removed deprecated functions:
824
- * Capabilities#toJSON()
825
- * UnhandledAlertError#getAlert()
826
- * chrome.createDriver()
827
- * phantomjs.createDriver()
828
- * promise.ControlFlow#annotateError()
829
- * promise.ControlFlow#await()
830
- * promise.ControlFlow#clearHistory()
831
- * promise.ControlFlow#getHistory()
780
+ * Capabilities#toJSON()
781
+ * UnhandledAlertError#getAlert()
782
+ * chrome.createDriver()
783
+ * phantomjs.createDriver()
784
+ * promise.ControlFlow#annotateError()
785
+ * promise.ControlFlow#await()
786
+ * promise.ControlFlow#clearHistory()
787
+ * promise.ControlFlow#getHistory()
832
788
  * Removed deprecated enum values: `ErrorCode.NO_MODAL_DIALOG_OPEN` and
833
- `ErrorCode.MODAL_DIALOG_OPENED`. Use `ErrorCode.NO_SUCH_ALERT` and
834
- `ErrorCode.UNEXPECTED_ALERT_OPEN`, respectively.
835
- * FIXED: The `promise.ControlFlow` will maintain state for promise chains
836
- generated in a loop.
789
+ `ErrorCode.MODAL_DIALOG_OPENED`. Use `ErrorCode.NO_SUCH_ALERT` and
790
+ `ErrorCode.UNEXPECTED_ALERT_OPEN`, respectively.
791
+ * FIXED: The `promise.ControlFlow` will maintain state for promise chains generated in a loop.
837
792
  * FIXED: Correct serialize target elements used in an action sequence.
838
- * FIXED: `promise.ControlFlow#wait()` now has consistent semantics for an
839
- omitted or 0-timeout: it will wait indefinitely.
840
- * FIXED: `remote.DriverService#start()` will now fail if the child process dies
841
- while waiting for the server to start accepting requests. Previously, start
842
- would continue to poll the server address until the timeout expired.
843
- * FIXED: Skip launching Firefox with the `-silent` flag to preheat the profile.
844
- Starting with Firefox 38, this would cause the browser to crash. This step,
845
- which was first introduced for Selenium's java client back with Firefox 2,
846
- no longer appears to be required.
847
- * FIXED: 8564: `firefox.Driver#quit()` will wait for the Firefox process to
848
- terminate before deleting the temporary webdriver profile. This eliminates a
849
- race condition where Firefox would write profile data during shutdown,
850
- causing the `rm -rf` operation on the profile directory to fail.
793
+ * FIXED: `promise.ControlFlow#wait()` now has consistent semantics for an omitted or 0-timeout: it
794
+ will wait indefinitely.
795
+ * FIXED: `remote.DriverService#start()` will now fail if the child process dies while waiting for
796
+ the server to start accepting requests. Previously, start would continue to poll the server
797
+ address until the timeout expired.
798
+ * FIXED: Skip launching Firefox with the `-silent` flag to preheat the profile. Starting with
799
+ Firefox 38, this would cause the browser to crash. This step, which was first introduced for
800
+ Selenium's java client back with Firefox 2, no longer appears to be required.
801
+ * FIXED: 8564: `firefox.Driver#quit()` will wait for the Firefox process to terminate before
802
+ deleting the temporary webdriver profile. This eliminates a race condition where Firefox would
803
+ write profile data during shutdown, causing the `rm -rf` operation on the profile directory to
804
+ fail.
851
805
 
852
806
  ## v2.45.1
853
807
 
854
- * FIXED: 8548: Task callbacks are once again dropped if the task was cancelled
855
- due to a previously uncaught error within the frame.
856
- * FIXED: 8496: Extended the `chrome.Options` API to cover all configuration
857
- options (e.g. mobile emulation and performance logging) documented on the
858
- ChromeDriver [project site](https://chromedriver.chromium.org/capabilities).
808
+ * FIXED: 8548: Task callbacks are once again dropped if the task was cancelled due to a previously
809
+ uncaught error within the frame.
810
+ * FIXED: 8496: Extended the `chrome.Options` API to cover all configuration options (e.g. mobile
811
+ emulation and performance logging) documented on the ChromeDriver [project site](https://chromedriver.chromium.org/capabilities).
859
812
 
860
813
  ## v2.45.0
861
814
 
@@ -871,10 +824,10 @@ major version release (i.e. 1.0.0).
871
824
 
872
825
  * Added native browser support for Internet Explorer, Opera 26+, and Safari
873
826
  * With the release of [Node 0.12.0](http://blog.nodejs.org/2015/02/06/node-v0-12-0-stable/)
874
- (finally!), the minimum supported version of Node is now `0.10.x`.
827
+ (finally!), the minimum supported version of Node is now `0.10.x`.
875
828
  * The `promise` module is now [Promises/A+](https://promisesaplus.com/)
876
- compliant. The biggest compliance change is that promise callbacks are now
877
- invoked in a future turn of the JS event loop. For example:
829
+ compliant. The biggest compliance change is that promise callbacks are now invoked in a future
830
+ turn of the JS event loop. For example:
878
831
 
879
832
  var promise = require('selenium-webdriver').promise;
880
833
  console.log('start');
@@ -893,12 +846,11 @@ major version release (i.e. 1.0.0).
893
846
  // end
894
847
  // middle
895
848
 
896
- The `promise.ControlFlow` class has been updated to track the asynchronous
897
- breaks required by Promises/A+, so there are no changes to task execution
898
- order.
899
- * Updated how errors are annotated on failures. When a task fails, the
900
- stacktrace from when that task was scheduled is appended to the rejection
901
- reason with a `From: ` prefix (if it is an Error object). For example:
849
+ The `promise.ControlFlow` class has been updated to track the asynchronous breaks required by
850
+ Promises/A+, so there are no changes to task execution order.
851
+ * Updated how errors are annotated on failures. When a task fails, the stacktrace from when that
852
+ task was scheduled is appended to the rejection reason with a `From: ` prefix (if it is an Error
853
+ object). For example:
902
854
 
903
855
  var driver = new webdriver.Builder().forBrowser('chrome').build();
904
856
  driver.get('http://www.google.com/ncr');
@@ -908,7 +860,7 @@ major version release (i.e. 1.0.0).
908
860
  }, 2000, 'element not found');
909
861
  });
910
862
 
911
- This code will fail an error like:
863
+ This code will fail an error like:
912
864
 
913
865
  Error: element not found
914
866
  Wait timed out after 2002ms
@@ -918,36 +870,30 @@ major version release (i.e. 1.0.0).
918
870
  From: Task: WebDriver.call(function)
919
871
  at <stack trace>
920
872
 
921
- * Changed the format of strings returned by `promise.ControlFlow#getSchedule`.
922
- This function now accepts a boolean to control whether the returned string
923
- should include the stacktraces for when each task was scheduled.
873
+ * Changed the format of strings returned by `promise.ControlFlow#getSchedule`. This function now
874
+ accepts a boolean to control whether the returned string should include the stacktraces for when
875
+ each task was scheduled.
924
876
  * Deprecating `promise.ControlFlow#getHistory`,
925
- `promise.ControlFlow#clearHistory`, and `promise.ControlFlow#annotateError`.
926
- These functions were all intended for internal use and are no longer
927
- necessary, so they have been made no-ops.
928
- * `WebDriver.wait()` may now be used to wait for a promise to resolve, with
929
- an optional timeout. Refer to the API documentation for more information.
930
- * Added support for copying files to a remote Selenium via `sendKeys` to test
931
- file uploads. Refer to the API documentation for more information. Sample
932
- usage included in `test/upload_test.js`
933
- * Expanded the interactions API to include touch actions.
934
- See `WebDriver.touchActions()`.
877
+ `promise.ControlFlow#clearHistory`, and `promise.ControlFlow#annotateError`. These functions were
878
+ all intended for internal use and are no longer necessary, so they have been made no-ops.
879
+ * `WebDriver.wait()` may now be used to wait for a promise to resolve, with an optional timeout.
880
+ Refer to the API documentation for more information.
881
+ * Added support for copying files to a remote Selenium via `sendKeys` to test file uploads. Refer to
882
+ the API documentation for more information. Sample usage included in `test/upload_test.js`
883
+ * Expanded the interactions API to include touch actions. See `WebDriver.touchActions()`.
935
884
  * FIXED: 8380: `firefox.Driver` will delete its temporary profile on `quit`.
936
885
  * FIXED: 8306: Stack overflow in promise callbacks eliminated.
937
- * FIXED: 8221: Added support for defining custom command mappings. Includes
938
- support for PhantomJS's `executePhantomJS` (requires PhantomJS 1.9.7 or
939
- GhostDriver 1.1.0).
886
+ * FIXED: 8221: Added support for defining custom command mappings. Includes support for PhantomJS's `executePhantomJS` (requires PhantomJS 1.9.7 or GhostDriver 1.1.0).
940
887
  * FIXED: 8128: When the FirefoxDriver marshals an object to the page for
941
- `executeScript`, it defines additional properties (required by the driver's
942
- implementation). These properties will no longer be enumerable and should
943
- be omitted (i.e. they won't show up in JSON.stringify output).
944
- * FIXED: 8094: The control flow will no longer deadlock when a task returns
945
- a promise that depends on the completion of sub-tasks.
888
+ `executeScript`, it defines additional properties (required by the driver's implementation). These
889
+ properties will no longer be enumerable and should be omitted (i.e. they won't show up in
890
+ JSON.stringify output).
891
+ * FIXED: 8094: The control flow will no longer deadlock when a task returns a promise that depends
892
+ on the completion of sub-tasks.
946
893
 
947
894
  ## v2.44.0
948
895
 
949
- * Added the `until` module, which defines common explicit wait conditions.
950
- Sample usage:
896
+ * Added the `until` module, which defines common explicit wait conditions. Sample usage:
951
897
 
952
898
  var firefox = require('selenium-webdriver/firefox'),
953
899
  until = require('selenium-webdriver/until');
@@ -956,46 +902,43 @@ major version release (i.e. 1.0.0).
956
902
  driver.get('http://www.google.com/ncr');
957
903
  driver.wait(until.titleIs('Google Search'), 1000);
958
904
 
959
- * FIXED: 8000: `Builder.forBrowser()` now accepts an empty string since some
960
- WebDriver implementations ignore the value. A value must still be specified,
961
- however, since it is a required field in WebDriver's wire protocol.
962
- * FIXED: 7994: The `stacktrace` module will not modify stack traces if the
963
- initial parse fails (e.g. the user defined `Error.prepareStackTrace`)
964
- * FIXED: 5855: Added a module (`until`) that defines several common conditions
965
- for use with explicit waits. See updated examples for usage.
905
+ * FIXED: 8000: `Builder.forBrowser()` now accepts an empty string since some WebDriver
906
+ implementations ignore the value. A value must still be specified, however, since it is a required
907
+ field in WebDriver's wire protocol.
908
+ * FIXED: 7994: The `stacktrace` module will not modify stack traces if the initial parse fails (e.g.
909
+ the user defined `Error.prepareStackTrace`)
910
+ * FIXED: 5855: Added a module (`until`) that defines several common conditions for use with explicit
911
+ waits. See updated examples for usage.
966
912
 
967
913
  ## v2.43.5
968
914
 
969
- * FIXED: 7905: `Builder.usingServer(url)` once again returns `this` for
970
- chaining.
915
+ * FIXED: 7905: `Builder.usingServer(url)` once again returns `this` for chaining.
971
916
 
972
917
  ## v2.43.2-4
973
918
 
974
- * No changes; version bumps while attempting to work around an issue with
975
- publishing to npm (a version string may only be used once).
919
+ * No changes; version bumps while attempting to work around an issue with publishing to npm (a
920
+ version string may only be used once).
976
921
 
977
922
  ## v2.43.1
978
923
 
979
- * Fixed an issue with flakiness when setting up the Firefox profile that could
980
- prevent the driver from initializing properly.
924
+ * Fixed an issue with flakiness when setting up the Firefox profile that could prevent the driver
925
+ from initializing properly.
981
926
 
982
927
  ## v2.43.0
983
928
 
984
- * Added native support for Firefox - the Java Selenium server is no longer
985
- required.
929
+ * Added native support for Firefox - the Java Selenium server is no longer required.
986
930
  * Added support for generator functions to `ControlFlow#execute` and
987
- `ControlFlow#wait`. For more information, see documentation on
988
- `webdriver.promise.consume`. Requires harmony support (run with
989
- `node --harmony-generators` in `v0.11.x`).
990
- * Various improvements to the `Builder` API. Notably, the `build()` function
991
- will no longer default to attempting to use a server at
992
- `http://localhost:4444/wd/hub` if it cannot start a browser directly -
993
- you must specify the WebDriver server with `usingServer(url)`. You can
994
- also set the target browser and WebDriver server through a pair of
995
- environment variables. See the documentation on the `Builder` constructor
996
- for more information.
997
- * For consistency with the other language bindings, added browser specific
998
- classes that can be used to start a browser without the builder.
931
+ `ControlFlow#wait`. For more information, see documentation on
932
+ `webdriver.promise.consume`. Requires harmony support (run with
933
+ `node --harmony-generators` in `v0.11.x`).
934
+ * Various improvements to the `Builder` API. Notably, the `build()` function will no longer default
935
+ to attempting to use a server at
936
+ `http://localhost:4444/wd/hub` if it cannot start a browser directly - you must specify the
937
+ WebDriver server with `usingServer(url)`. You can also set the target browser and WebDriver server
938
+ through a pair of environment variables. See the documentation on the `Builder` constructor for
939
+ more information.
940
+ * For consistency with the other language bindings, added browser specific classes that can be used
941
+ to start a browser without the builder.
999
942
 
1000
943
  var webdriver = require('selenium-webdriver')
1001
944
  chrome = require('selenium-webdriver/chrome');
@@ -1006,16 +949,14 @@ major version release (i.e. 1.0.0).
1006
949
 
1007
950
  * Promise A+ compliance: a promise may no longer resolve to itself.
1008
951
  * For consistency with other language bindings, deprecated
1009
- `UnhandledAlertError#getAlert` and added `#getAlertText`.
1010
- `getAlert` will be removed in `2.45.0`.
952
+ `UnhandledAlertError#getAlert` and added `#getAlertText`.
953
+ `getAlert` will be removed in `2.45.0`.
1011
954
  * FIXED: 7641: Deprecated `ErrorCode.NO_MODAL_DIALOG_OPEN` and
1012
- `ErrorCode.MODAL_DIALOG_OPENED` in favor of the new
1013
- `ErrorCode.NO_SUCH_ALERT` and `ErrorCode.UNEXPECTED_ALERT_OPEN`,
1014
- respectively.
1015
- * FIXED: 7563: Mocha integration no longer disables timeouts. Default Mocha
1016
- timeouts apply (2000 ms) and may be changed using `this.timeout(ms)`.
1017
- * FIXED: 7470: Make it easier to create WebDriver instances in custom flows for
1018
- parallel execution.
955
+ `ErrorCode.MODAL_DIALOG_OPENED` in favor of the new
956
+ `ErrorCode.NO_SUCH_ALERT` and `ErrorCode.UNEXPECTED_ALERT_OPEN`, respectively.
957
+ * FIXED: 7563: Mocha integration no longer disables timeouts. Default Mocha timeouts apply (2000 ms)
958
+ and may be changed using `this.timeout(ms)`.
959
+ * FIXED: 7470: Make it easier to create WebDriver instances in custom flows for parallel execution.
1019
960
 
1020
961
  ## v2.42.1
1021
962
 
@@ -1026,12 +967,11 @@ major version release (i.e. 1.0.0).
1026
967
  ## v2.42.0
1027
968
 
1028
969
  * Removed deprecated functions `Promise#addCallback()`,
1029
- `Promise#addCallbacks()`, `Promise#addErrback()`, and `Promise#addBoth()`.
970
+ `Promise#addCallbacks()`, `Promise#addErrback()`, and `Promise#addBoth()`.
1030
971
  * Fail with a more descriptive error if the server returns a malformed redirect
1031
- * FIXED: 7300: Connect to ChromeDriver using the loopback address since
1032
- ChromeDriver 2.10.267517 binds to localhost by default.
1033
- * FIXED: 7339: Preserve wrapped test function's string representation for
1034
- Mocha's BDD interface.
972
+ * FIXED: 7300: Connect to ChromeDriver using the loopback address since ChromeDriver 2.10.267517
973
+ binds to localhost by default.
974
+ * FIXED: 7339: Preserve wrapped test function's string representation for Mocha's BDD interface.
1035
975
 
1036
976
  ## v2.41.0
1037
977
 
@@ -1042,10 +982,10 @@ major version release (i.e. 1.0.0).
1042
982
 
1043
983
  * API documentation is now included in the docs directory.
1044
984
  * Added utility functions for working with an array of promises:
1045
- `promise.all`, `promise.map`, and `promise.filter`
985
+ `promise.all`, `promise.map`, and `promise.filter`
1046
986
  * Introduced `Promise#thenCatch()` and `Promise#thenFinally()`.
1047
987
  * Deprecated `Promise#addCallback()`, `Promise#addCallbacks()`,
1048
- `Promise#addErrback()`, and `Promise#addBoth()`.
988
+ `Promise#addErrback()`, and `Promise#addBoth()`.
1049
989
  * Removed deprecated function `webdriver.WebDriver#getCapability`.
1050
990
  * FIXED: 6826: Added support for custom locators.
1051
991
 
@@ -1055,28 +995,26 @@ major version release (i.e. 1.0.0).
1055
995
 
1056
996
  ## v2.38.1
1057
997
 
1058
- * FIXED: 6686: Changed `webdriver.promise.Deferred#cancel()` to silently no-op
1059
- if the deferred has already been resolved.
998
+ * FIXED: 6686: Changed `webdriver.promise.Deferred#cancel()` to silently no-op if the deferred has
999
+ already been resolved.
1060
1000
 
1061
1001
  ## v2.38.0
1062
1002
 
1063
- * When a promise is rejected, always annotate the stacktrace with the parent
1064
- flow state so users can identify the source of an error.
1003
+ * When a promise is rejected, always annotate the stacktrace with the parent flow state so users can
1004
+ identify the source of an error.
1065
1005
  * Updated tests to reflect features not working correctly in the SafariDriver
1066
- (cookie management and proxy support; see issues 5051, 5212, and 5503)
1067
- * FIXED: 6284: For mouse moves, correctly omit the x/y offsets if not
1068
- specified as a function argument (instead of passing (0,0)).
1006
+ (cookie management and proxy support; see issues 5051, 5212, and 5503)
1007
+ * FIXED: 6284: For mouse moves, correctly omit the x/y offsets if not specified as a function
1008
+ argument (instead of passing (0,0)).
1069
1009
  * FIXED: 6471: Updated documentation on `webdriver.WebElement#getAttribute`
1070
- * FIXED: 6612: On Unix, use the default IANA ephemeral port range if unable to
1071
- retrieve the current system's port range.
1072
- * FIXED: 6617: Avoid triggering the node debugger when initializing the
1073
- stacktrace module.
1010
+ * FIXED: 6612: On Unix, use the default IANA ephemeral port range if unable to retrieve the current
1011
+ system's port range.
1012
+ * FIXED: 6617: Avoid triggering the node debugger when initializing the stacktrace module.
1074
1013
  * FIXED: 6627: Safely rebuild chrome.Options from a partial JSON spec.
1075
1014
 
1076
1015
  ## v2.37.0
1077
1016
 
1078
- * FIXED: 6346: The remote.SeleniumServer class now accepts JVM arguments using
1079
- the `jvmArgs` option.
1017
+ * FIXED: 6346: The remote.SeleniumServer class now accepts JVM arguments using the `jvmArgs` option.
1080
1018
 
1081
1019
  ## v2.36.0
1082
1020
 
@@ -1096,20 +1034,18 @@ major version release (i.e. 1.0.0).
1096
1034
 
1097
1035
  ## v2.34.1
1098
1036
 
1099
- * FIXED: 6079: The parent process should not wait for spawn driver service
1100
- processes (chromedriver, phantomjs, etc.)
1037
+ * FIXED: 6079: The parent process should not wait for spawn driver service processes (chromedriver,
1038
+ phantomjs, etc.)
1101
1039
 
1102
1040
  ## v2.34.0
1103
1041
 
1104
- * Added the `selenium-webdriver/testing/assert` module. This module
1105
- simplifies writing assertions against promised values (see
1106
- example in module documentation).
1042
+ * Added the `selenium-webdriver/testing/assert` module. This module simplifies writing assertions
1043
+ against promised values (see example in module documentation).
1107
1044
  * Added the `webdriver.Capabilities` class.
1108
- * Added native support for the ChromeDriver. When using the `Builder`,
1109
- requesting chrome without specifying a remote server URL will default to
1110
- the native ChromeDriver implementation. The
1111
- [ChromeDriver server](https://code.google.com/p/chromedriver/downloads/list)
1112
- must be downloaded separately.
1045
+ * Added native support for the ChromeDriver. When using the `Builder`, requesting chrome without
1046
+ specifying a remote server URL will default to the native ChromeDriver implementation. The
1047
+ [ChromeDriver server](https://code.google.com/p/chromedriver/downloads/list)
1048
+ must be downloaded separately.
1113
1049
 
1114
1050
  // Will start ChromeDriver locally.
1115
1051
  var driver = new webdriver.Builder().
@@ -1123,15 +1059,14 @@ major version release (i.e. 1.0.0).
1123
1059
  build();
1124
1060
 
1125
1061
  * Added support for configuring proxies through the builder. For examples, see
1126
- `selenium-webdriver/test/proxy_test`.
1062
+ `selenium-webdriver/test/proxy_test`.
1127
1063
  * Added native support for PhantomJS.
1128
1064
  * Changed signature of `SeleniumServer` to `SeleniumServer(jar, options)`.
1129
- * Tests are now included in the npm published package. See `README.md` for
1130
- execution instructions
1065
+ * Tests are now included in the npm published package. See `README.md` for execution instructions
1131
1066
  * Removed the deprecated `webdriver.Deferred#resolve` and
1132
- `webdriver.promise.resolved` functions.
1133
- * Removed the ability to connect to an existing session from the Builder. This
1134
- feature is intended for use with the browser-based client.
1067
+ `webdriver.promise.resolved` functions.
1068
+ * Removed the ability to connect to an existing session from the Builder. This feature is intended
1069
+ for use with the browser-based client.
1135
1070
 
1136
1071
  ## v2.33.0
1137
1072
 
@@ -1141,33 +1076,32 @@ major version release (i.e. 1.0.0).
1141
1076
  ## v2.32.1
1142
1077
 
1143
1078
  * FIXED: 5541: Added missing return statement for windows in
1144
- `portprober.findFreePort()`
1079
+ `portprober.findFreePort()`
1145
1080
 
1146
1081
  ## v2.32.0
1147
1082
 
1148
- * Added the `selenium-webdriver/testing` package, which provides a basic
1149
- framework for writing tests using Mocha. See
1150
- `selenium-webdriver/example/google_search_test.js` for usage.
1151
- * For Promises/A+ compatibility, backing out the change in 2.30.0 that ensured
1152
- rejections were always Error objects. Rejection reasons are now left as is.
1083
+ * Added the `selenium-webdriver/testing` package, which provides a basic framework for writing tests
1084
+ using Mocha. See
1085
+ `selenium-webdriver/example/google_search_test.js` for usage.
1086
+ * For Promises/A+ compatibility, backing out the change in 2.30.0 that ensured rejections were
1087
+ always Error objects. Rejection reasons are now left as is.
1153
1088
  * Removed deprecated functions originally scheduled for removal in 2.31.0
1154
- * promise.Application.getInstance()
1155
- * promise.ControlFlow#schedule()
1156
- * promise.ControlFlow#scheduleTimeout()
1157
- * promise.ControlFlow#scheduleWait()
1158
- * Renamed some functions for consistency with Promises/A+ terminology. The
1159
- original functions have been deprecated and will be removed in 2.34.0:
1160
- * promise.resolved() -> promise.fulfilled()
1161
- * promise.Deferred#resolve() -> promise.Deferred#fulfill()
1162
- * FIXED: remote.SeleniumServer#stop now shuts down within the active control
1163
- flow, allowing scripts to finish. Use #kill to shutdown immediately.
1089
+ * promise.Application.getInstance()
1090
+ * promise.ControlFlow#schedule()
1091
+ * promise.ControlFlow#scheduleTimeout()
1092
+ * promise.ControlFlow#scheduleWait()
1093
+ * Renamed some functions for consistency with Promises/A+ terminology. The original functions have
1094
+ been deprecated and will be removed in 2.34.0:
1095
+ * promise.resolved() -> promise.fulfilled()
1096
+ * promise.Deferred#resolve() -> promise.Deferred#fulfill()
1097
+ * FIXED: remote.SeleniumServer#stop now shuts down within the active control flow, allowing scripts
1098
+ to finish. Use #kill to shutdown immediately.
1164
1099
  * FIXED: 5321: cookie deletion commands
1165
1100
 
1166
1101
  ## v2.31.0
1167
1102
 
1168
1103
  * Added an example script.
1169
- * Added a class for controlling the standalone Selenium server (server
1170
- available separately)
1104
+ * Added a class for controlling the standalone Selenium server (server available separately)
1171
1105
  * Added a portprober for finding free ports
1172
1106
  * FIXED: WebElements now belong to the same flow as their parent driver.
1173
1107