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