aboutsummaryrefslogtreecommitdiff
path: root/node_modules/selenium-webdriver/CHANGES.md
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2016-11-03 01:33:53 +0100
committerFlorian Dold <florian.dold@gmail.com>2016-11-03 01:33:53 +0100
commitd1291f67551c58168af43698a359cb5ddfd266b0 (patch)
tree55a13ed29fe1915e3f42f1b1b7038dafa2e975a7 /node_modules/selenium-webdriver/CHANGES.md
parentd0a0695fb5d34996850723f7d4b1b59c3df909c2 (diff)
downloadwallet-core-d1291f67551c58168af43698a359cb5ddfd266b0.tar.xz
node_modules
Diffstat (limited to 'node_modules/selenium-webdriver/CHANGES.md')
-rw-r--r--node_modules/selenium-webdriver/CHANGES.md660
1 files changed, 660 insertions, 0 deletions
diff --git a/node_modules/selenium-webdriver/CHANGES.md b/node_modules/selenium-webdriver/CHANGES.md
new file mode 100644
index 000000000..614f905b4
--- /dev/null
+++ b/node_modules/selenium-webdriver/CHANGES.md
@@ -0,0 +1,660 @@
+## v3.0.0-beta-3
+
+* Fixed a bug where the promise manager would silently drop callbacks after
+ recovering from an unhandled promise rejection.
+* Added the `firefox.ServiceBuilder` class, which may be used to customize the
+ geckodriver used for `firefox.Driver` instances.
+* Added support for Safari 10 safaridriver. safaridriver may be disabled
+ via tha API, `safari.Options#useLegacyDriver`, to use the safari
+ extension driver.
+* Updated the `lib/proxy` module to support configuring a SOCKS proxy.
+* For the `promise.ControlFlow`, fire the "uncaughtException" event in a new
+ turn of the JS event loop. As a result of this change, any errors thrown by
+ an event listener will propagate to the global error handler. Previously,
+ this event was fired with in the context of a (native) promise callback,
+ causing errors to be silently suppressed in the promise chain.
+
+### API Changes
+
+* Added `remote.DriverService.Builder` as a base class for configuring
+ DriverService instances that run in a child-process. The
+ `chrome.ServiceBuilder`, `edge.ServiceBuilder`, and `opera.ServiceBuilder`
+ classes now all extend this base class with browser-specific options.
+* For each of the ServiceBuilder clases, renamed `usingPort` and
+ `withEnvironment` to `setPort` and `setEnvironment`, respectively.
+* Renamed `chrome.ServiceBuilder#setUrlBasePath` to `#setPath`
+* Changed the signature of the `firefox.Driver` from `(config, flow, executor)`
+ to `(config, executor, flow)`.
+* Exposed the `Condition` and `WebElementCondition` classes from the top-level
+ `selenium-webdriver` module (these were previously only available from
+ `lib/webdriver`).
+
+
+### Changes for W3C WebDriver Spec Compliance
+
+* Updated command mappings for [getting](https://w3c.github.io/webdriver/webdriver-spec.html#get-window-position)
+ and [setting](https://w3c.github.io/webdriver/webdriver-spec.html#set-window-position)
+ the window position.
+
+
+## v3.0.0-beta-2
+
+### API Changes
+
+* Moved the `builder.Builder` class into the main module (`selenium-webdriver`).
+* Removed the `builder` module.
+* Fix `webdriver.WebDriver#setFileDetector` when driving Chrome or Firefox on a
+ remote machine.
+
+
+## v3.0.0-beta-1
+
+* Allow users to set the agent used for HTTP connections through
+ `builder.Builder#usingHttpAgent()`
+* Added new wait conditions: `until.urlIs()`, `until.urlContains()`,
+ `until.urlMatches()`
+* Added work around for [GeckoDriver bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1274924)
+ raising a type conversion error
+* Internal cleanup replacing uses of managed promises with native promises
+* Removed the mandatory use of Firefox Dev Edition, when using Marionette driver
+* Fixed timeouts' URL
+* Properly send HTTP requests when using a WebDriver server proxy
+* Properly configure proxies when using the geckodriver
+* `http.Executor` now accepts a promised client. The `builder.Builder` class
+ will now use this instead of a `command.DeferredExecutor` when creating
+ WebDriver instances.
+* 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 remote server (from `builder.Builder#usingServer(url)`,
+ `SELENIUM_REMOTE_URL`, etc).
+
+### API Changes
+
+* `promise.Deferred` is no longer a thenable object.
+* `Options#addCookie()` now takes a record object instead of 7 individual
+ parameters. A TypeError will be thrown if addCookie() is called with invalid
+ arguments.
+* When adding cookies, the desired expiry must be provided as a Date or in
+ _seconds_ since epoch. When retrieving cookies, the expiration is always
+ returned in seconds.
+* Renamed `firefox.Options#useMarionette` to `firefox.Options#useGeckoDriver`
+* Removed deprecated modules:
+ - `selenium-webdriver/error` (use `selenium-webdriver/lib/error`,\
+ or the `error` property exported by `selenium-webdriver`)
+ - `selenium-webdriver/executors` — this was not previously deprecated, but
+ is no longer used.
+* Removed deprecated types:
+ - `command.DeferredExecutor` — this was not previously deprecated, but is no
+ longer used. It can be trivially implemented by clients should it be
+ needed.
+ - `error.InvalidSessionIdError` (use `error.NoSuchSessionError`)
+ - `executors.DeferredExecutor`
+ - `until.Condition` (use `webdriver.Condition`)
+ - `until.WebElementCondition` (use `webdriver.WebElementCondition`)
+ - `webdriver.UnhandledAlertError` (use `error.UnexpectedAlertOpenError`)
+* Removed deprecated functions:
+ - `Deferred#cancel()`
+ - `Deferred#catch()`
+ - `Deferred#finally()`
+ - `Deferred#isPending()`
+ - `Deferred#then()`
+ - `Promise#thenCatch()`
+ - `Promise#thenFinally()`
+ - `WebDriver#isElementPresent()`
+ - `WebElement#getInnerHtml()`
+ - `WebElement#getOuterHtml()`
+ - `WebElement#getRawId()`
+ - `WebElement#isElementPresent()`
+* Removed deprecated properties:
+ - `WebDriverError#code`
+
+
+## v2.53.2
+
+* Changed `io.exists()` to return a rejected promise if the input path is not
+ a string
+* Deprecated `Promise#thenFinally()` - use `Promise#finally()`. The thenFinally
+ shim added to the promise module in v2.53.0 will be removed in v3.0
+ Sorry for the churn!
+* FIXED: capabilities serialization now properly handles undefined vs.
+ false-like values.
+* FIXED: properly handle responses from the remote end in
+ `WebDriver.attachToSession`
+
+## v2.53.1
+
+* FIXED: for consistency with the other language bindings, `remote.FileDetector`
+ will ignore paths that refer to a directory.
+
+## v2.53.0
+
+### Change Summary
+
+* Added preliminary support for Marionette, Mozilla's WebDriver implementation
+ for Firefox. Marionette may be enabled via the API,
+ `firefox.Options#useMarionette`, or by setting the `SELENIUM_MARIONETTE`
+ environment variable.
+* Moved all logic for parsing and interpreting responses from the remote end
+ into the individual `command.Executor` implementations.
+* For consistency with the other Selenium language bindings,
+ `WebDriver#isElementPresent()` and `WebElement#isElementPresent()` have
+ been deprecated. These methods will be removed in v3.0. Use the findElements
+ command to test for the presence of an element:
+
+ driver.findElements(By.css('.foo')).then(found => !!found.length);
+* Added support for W3C-spec compliant servers.
+* For consistent naming, deprecating `error.InvalidSessionIdError` in favor of
+ `error.NoSuchSessionError`.
+* Moved the `error` module to `lib/error` so all core modules are co-located.
+ The top-level `error` module will be removed in v3.0.
+* Moved `until.Condition` and `until.WebElementCondition` to the webdriver
+ module to break a circular dependency.
+* Added support for setting the username and password in basic auth pop-up
+ dialogs (currently IE only).
+* Deprecated `WebElement#getInnerHtml()` and `WebEleemnt#getOuterHtml()`
+* Deprecated `Promise#thenCatch()` - use `Promise#catch()` instead
+* Deprecated `Promise#thenFinally()` - use `promise.thenFinally()` instead
+* FIXED: `io.findInPath()` will no longer match against directories that have
+ the same basename as the target file.
+* FIXED: `phantomjs.Driver` now takes a third argument that defines the path to
+ a log file to use for the phantomjs executable's output. This may be quickly
+ set at runtime with the `SELENIUM_PHANTOMJS_LOG` environment variable.
+
+### Changes for W3C WebDriver Spec Compliance
+
+* Changed `element.sendKeys(...)` to send the key sequence as an array where
+ each element defines a single key. The legacy wire protocol permits arrays
+ where each element is a string of arbitrary length. This change is solely
+ at the protocol level and should have no user-visible effect.
+
+
+## v2.52.0
+
+### Notice
+
+Starting with v2.52.0, each release of selenium-webdriver will support the
+latest _minor_ LTS and stable Node releases. All releases between the LTS and
+stable release will have best effort support. Further details are available in
+the selenium-webdriver package README.
+
+### Change Summary
+
+* Add support for Microsoft's Edge web browser
+* Added `webdriver.Builder#buildAsync()`, which returns a promise that will be
+ fulfilled with the newly created WebDriver instance once the associated
+ browser has been full initialized. This is purely a convenient alternative
+ to the existing build() method as the WebDriver class will always defer
+ commands until it has a fully created browser.
+* Added `firefox.Profile#setHost()` which may be used to set the host that
+ the FirefoxDriver's server listens for commands on. The server uses
+ "localhost" by default.
+* Added `promise.Promise#catch()` for API compatibility with native Promises.
+ `promise.Promise#thenCatch()` is not yet deprecated, but it simply
+ delegates to `catch`.
+* Changed some `io` operations to use native promises.
+* Changed `command.Executor#execute()` and `HttpClient#send()` to return
+ promises instead of using callback passing.
+* Replaced the `Serializable` class with an internal, Symbol-defined method.
+* Changed the `Capabilities` class to extend the native `Map` type.
+* Changed the `Capabilities.has(key)` to only test if a capability has been set
+ (Map semantics). To check whether the value is true, use `get(key)`.
+* Deprecated `executors.DeferredExecutor` in favor of
+ `lib/command.DeferredExecutor`.
+* API documentation is no longer distributed with the npm package, but remains
+ available at <http://seleniumhq.github.io/selenium/docs/api/javascript/>
+* 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).
+* Changed the `http.Request` and `http.Response` classes to store headers in
+ maps instead of object literals.
+* Updated `ws` dependency to version `1.0.1`.
+* Removed fluent predicates "is" and "not" from the experimental
+ `testing/assert` module.
+* Wait conditions that locate an element, or that wait on an element's state,
+ will return a WebElementPromise.
+* Lots of internal clean-up to break selenium-webdriver's long standing
+ dependency on Google's Closure library.
+
+### Changes for W3C WebDriver Spec Compliance
+
+* 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`.
+
+
+## v2.49-51
+
+* _Releases skipped to stay in sync with the rest of the Selenium project_
+
+
+## v2.48.2
+
+* Added `WebElement#takeScreenshot()`.
+* More adjustments to promise callback tracking.
+
+## v2.48.1
+
+* FIXED: Adjusted how the control flow tracks promise callbacks to avoid a
+ potential deadlock.
+
+## v2.48.0
+
+* Node v0.12.x users must run with --harmony. _This is the last release that
+ will support v0.12.x_
+* FIXED: (Promise/A+ compliance) When a promise is rejected with a thenable,
+ the promise adopts the thenable as its rejection reason instead of waiting
+ for it to settle. The previous (incorrect) behavior was hidden by bugs in
+ the `promises-aplus-tests` compliance test suite that were fixed in version
+ `2.1.1`.
+* FIXED: the `webdriver.promise.ControlFlow` now has a consistent execution
+ order for tasks/callbacks scheduled in different turns of the JS event loop.
+ Refer to the `webdriver.promise` documentation for more details.
+* FIXED: do not drop user auth from the WebDriver server URL.
+* FIXED: a single `firefox.Binary` instance may be used to configure and
+ launch multiple FirefoxDriver sessions.
+
+ var binary = new firefox.Binary();
+ var options = new firefox.Options().setBinary(binary);
+ var builder = new Builder().setFirefoxOptions(options);
+
+ var driver1 = builder.build();
+ var driver2 = builder.build();
+
+* FIXED: zip files created for transfer to a remote WebDriver server are no
+ longer compressed. If the zip contained a file that was already compressed,
+ the server would return an "invalid code lengths set" error.
+* FIXED: Surfaced the `loopback` option to `remote/SeleniumServer`. When set,
+ the server will be accessed using the current host's loopback address.
+
+## v2.47.0
+
+### Notice
+
+This is the last release for `selenium-webdriver` that will support ES5.
+Subsequent releases will depend on ES6 features that are enabled by
+[default](https://nodejs.org/en/docs/es6/) in Node v4.0.0. Node v0.12.x will
+continue to be supported, but will require setting the `--harmony` flag.
+
+### Change Summary
+
+* Add support for [Node v4.0.0](https://nodejs.org/en/blog/release/v4.0.0/)
+ * Updated `ws` dependency from `0.7.1` to `0.8.0`
+* Bumped the minimum supported version of Node from `0.10.x` to `0.12.x`. This
+ is in accordance with the Node support policy established in `v2.45.0`.
+
+## v2.46.1
+
+* Fixed internal module loading on Windows.
+* Fixed error message format on timeouts for `until.elementLocated()`
+ and `until.elementsLocated()`.
+
+## v2.46.0
+
+* Exposed a new logging API via the `webdriver.logging` module. For usage, see
+ `example/logging.js`.
+* Added support for using a proxy server for WebDriver commands.
+ See `Builder#usingWebDriverProxy()` for more info.
+* Removed deprecated functions:
+ * Capabilities#toJSON()
+ * UnhandledAlertError#getAlert()
+ * chrome.createDriver()
+ * phantomjs.createDriver()
+ * promise.ControlFlow#annotateError()
+ * promise.ControlFlow#await()
+ * promise.ControlFlow#clearHistory()
+ * promise.ControlFlow#getHistory()
+* Removed deprecated enum values: `ErrorCode.NO_MODAL_DIALOG_OPEN` and
+ `ErrorCode.MODAL_DIALOG_OPENED`. Use `ErrorCode.NO_SUCH_ALERT` and
+ `ErrorCode.UNEXPECTED_ALERT_OPEN`, respectively.
+* FIXED: The `promise.ControlFlow` will maintain state for promise chains
+ generated in a loop.
+* FIXED: Correct serialize target elements used in an action sequence.
+* FIXED: `promise.ControlFlow#wait()` now has consistent semantics for an
+ omitted or 0-timeout: it will wait indefinitely.
+* FIXED: `remote.DriverService#start()` will now fail if the child process dies
+ while waiting for the server to start accepting requests. Previously, start
+ would continue to poll the server address until the timeout expired.
+* FIXED: Skip launching Firefox with the `-silent` flag to preheat the profile.
+ Starting with Firefox 38, this would cause the browser to crash. This step,
+ which was first introduced for Selenium's java client back with Firefox 2,
+ no longer appears to be required.
+* FIXED: 8564: `firefox.Driver#quit()` will wait for the Firefox process to
+ terminate before deleting the temporary webdriver profile. This eliminates a
+ race condition where Firefox would write profile data during shutdown,
+ causing the `rm -rf` operation on the profile directory to fail.
+
+## v2.45.1
+
+* FIXED: 8548: Task callbacks are once again dropped if the task was cancelled
+ due to a previously uncaught error within the frame.
+* FIXED: 8496: Extended the `chrome.Options` API to cover all configuration
+ options (e.g. mobile emulation and performance logging) documented on the
+ ChromeDriver [project site](https://sites.google.com/a/chromium.org/chromedriver/capabilities).
+
+## v2.45.0
+
+### Important Policy Change
+
+Starting with the 2.45.0 release, selenium-webdriver will support the last
+two stable minor releases for Node. For 2.45.0, this means Selenium will
+support Node 0.10.x and 0.12.x. Support for the intermediate, un-stable release
+(0.11.x) is "best-effort". This policy will be re-evaluated once Node has a
+major version release (i.e. 1.0.0).
+
+### Change Summary
+
+* Added native browser support for Internet Explorer, Opera 26+, and Safari
+* With the release of [Node 0.12.0](http://blog.nodejs.org/2015/02/06/node-v0-12-0-stable/)
+ (finally!), the minimum supported version of Node is now `0.10.x`.
+* The `promise` module is now [Promises/A+](https://promisesaplus.com/)
+ compliant. The biggest compliance change is that promise callbacks are now
+ invoked in a future turn of the JS event loop. For example:
+
+ var promise = require('selenium-webdriver').promise;
+ console.log('start');
+ promise.fulfilled().then(function() {
+ console.log('middle');
+ });
+ console.log('end');
+
+ // Output in selenium-webdriver@2.44.0
+ // start
+ // middle
+ // end
+ //
+ // Output in selenium-webdriver@2.45.0
+ // start
+ // end
+ // middle
+
+ The `promise.ControlFlow` class has been updated to track the asynchronous
+ breaks required by Promises/A+, so there are no changes to task execution
+ order.
+* Updated how errors are annotated on failures. When a task fails, the
+ stacktrace from when that task was scheduled is appended to the rejection
+ reason with a `From: ` prefix (if it is an Error object). For example:
+
+ var driver = new webdriver.Builder().forBrowser('chrome').build();
+ driver.get('http://www.google.com/ncr');
+ driver.call(function() {
+ driver.wait(function() {
+ return driver.isElementPresent(webdriver.By.id('not-there'));
+ }, 2000, 'element not found');
+ });
+
+ This code will fail an error like:
+
+ Error: element not found
+ Wait timed out after 2002ms
+ at <stack trace>
+ From: Task: element not found
+ at <stack trace>
+ From: Task: WebDriver.call(function)
+ at <stack trace>
+
+* Changed the format of strings returned by `promise.ControlFlow#getSchedule`.
+ This function now accepts a boolean to control whether the returned string
+ should include the stacktraces for when each task was scheduled.
+* Deprecating `promise.ControlFlow#getHistory`,
+ `promise.ControlFlow#clearHistory`, and `promise.ControlFlow#annotateError`.
+ These functions were all intended for internal use and are no longer
+ necessary, so they have been made no-ops.
+* `WebDriver.wait()` may now be used to wait for a promise to resolve, with
+ an optional timeout. Refer to the API documentation for more information.
+* Added support for copying files to a remote Selenium via `sendKeys` to test
+ file uploads. Refer to the API documentation for more information. Sample
+ usage included in `test/upload_test.js`
+* Expanded the interactions API to include touch actions.
+ See `WebDriver.touchActions()`.
+* FIXED: 8380: `firefox.Driver` will delete its temporary profile on `quit`.
+* FIXED: 8306: Stack overflow in promise callbacks eliminated.
+* 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).
+* FIXED: 8128: When the FirefoxDriver marshals an object to the page for
+ `executeScript`, it defines additional properties (required by the driver's
+ implementation). These properties will no longer be enumerable and should
+ be omitted (i.e. they won't show up in JSON.stringify output).
+* FIXED: 8094: The control flow will no longer deadlock when a task returns
+ a promise that depends on the completion of sub-tasks.
+
+## v2.44.0
+
+* Added the `until` module, which defines common explicit wait conditions.
+ Sample usage:
+
+ var firefox = require('selenium-webdriver/firefox'),
+ until = require('selenium-webdriver/until');
+
+ var driver = new firefox.Driver();
+ driver.get('http://www.google.com/ncr');
+ driver.wait(until.titleIs('Google Search'), 1000);
+
+* FIXED: 8000: `Builder.forBrowser()` now accepts an empty string since some
+ WebDriver implementations ignore the value. A value must still be specified,
+ however, since it is a required field in WebDriver's wire protocol.
+* FIXED: 7994: The `stacktrace` module will not modify stack traces if the
+ initial parse fails (e.g. the user defined `Error.prepareStackTrace`)
+* FIXED: 5855: Added a module (`until`) that defines several common conditions
+ for use with explicit waits. See updated examples for usage.
+
+## v2.43.5
+
+* FIXED: 7905: `Builder.usingServer(url)` once again returns `this` for
+ chaining.
+
+## v2.43.2-4
+
+* No changes; version bumps while attempting to work around an issue with
+ publishing to npm (a version string may only be used once).
+
+## v2.43.1
+
+* Fixed an issue with flakiness when setting up the Firefox profile that could
+ prevent the driver from initializing properly.
+
+## v2.43.0
+
+* Added native support for Firefox - the Java Selenium server is no longer
+ required.
+* Added support for generator functions to `ControlFlow#execute` and
+ `ControlFlow#wait`. For more information, see documentation on
+ `webdriver.promise.consume`. Requires harmony support (run with
+ `node --harmony-generators` in `v0.11.x`).
+* Various improvements to the `Builder` API. Notably, the `build()` function
+ will no longer default to attempting to use a server at
+ `http://localhost:4444/wd/hub` if it cannot start a browser directly -
+ you must specify the WebDriver server with `usingServer(url)`. You can
+ also set the target browser and WebDriver server through a pair of
+ environment variables. See the documentation on the `Builder` constructor
+ for more information.
+* For consistency with the other language bindings, added browser specific
+ classes that can be used to start a browser without the builder.
+
+ var webdriver = require('selenium-webdriver')
+ chrome = require('selenium-webdriver/chrome');
+
+ // The following are equivalent.
+ var driver1 = new webdriver.Builder().forBrowser('chrome').build();
+ var driver2 = new chrome.Driver();
+
+* Promise A+ compliance: a promise may no longer resolve to itself.
+* For consistency with other language bindings, deprecated
+ `UnhandledAlertError#getAlert` and added `#getAlertText`.
+ `getAlert` will be removed in `2.45.0`.
+* FIXED: 7641: Deprecated `ErrorCode.NO_MODAL_DIALOG_OPEN` and
+ `ErrorCode.MODAL_DIALOG_OPENED` in favor of the new
+ `ErrorCode.NO_SUCH_ALERT` and `ErrorCode.UNEXPECTED_ALERT_OPEN`,
+ respectively.
+* FIXED: 7563: Mocha integration no longer disables timeouts. Default Mocha
+ timeouts apply (2000 ms) and may be changed using `this.timeout(ms)`.
+* FIXED: 7470: Make it easier to create WebDriver instances in custom flows for
+ parallel execution.
+
+## v2.42.1
+
+* FIXED: 7465: Fixed `net.getLoopbackAddress` on Windows
+* FIXED: 7277: Support `done` callback in Mocha's BDD interface
+* FIXED: 7156: `Promise#thenFinally` should not suppress original error
+
+## v2.42.0
+
+* Removed deprecated functions `Promise#addCallback()`,
+ `Promise#addCallbacks()`, `Promise#addErrback()`, and `Promise#addBoth()`.
+* Fail with a more descriptive error if the server returns a malformed redirect
+* FIXED: 7300: Connect to ChromeDriver using the loopback address since
+ ChromeDriver 2.10.267517 binds to localhost by default.
+* FIXED: 7339: Preserve wrapped test function's string representation for
+ Mocha's BDD interface.
+
+## v2.41.0
+
+* FIXED: 7138: export logging API from webdriver module.
+* FIXED: 7105: beforeEach/it/afterEach properly bind `this` for Mocha tests.
+
+## v2.40.0
+
+* API documentation is now included in the docs directory.
+* Added utility functions for working with an array of promises:
+ `promise.all`, `promise.map`, and `promise.filter`
+* Introduced `Promise#thenCatch()` and `Promise#thenFinally()`.
+* Deprecated `Promise#addCallback()`, `Promise#addCallbacks()`,
+ `Promise#addErrback()`, and `Promise#addBoth()`.
+* Removed deprecated function `webdriver.WebDriver#getCapability`.
+* FIXED: 6826: Added support for custom locators.
+
+## v2.39.0
+
+* Version bump to stay in sync with the Selenium project.
+
+## v2.38.1
+
+* FIXED: 6686: Changed `webdriver.promise.Deferred#cancel()` to silently no-op
+ if the deferred has already been resolved.
+
+## v2.38.0
+
+* When a promise is rejected, always annotate the stacktrace with the parent
+ flow state so users can identify the source of an error.
+* Updated tests to reflect features not working correctly in the SafariDriver
+ (cookie management and proxy support; see issues 5051, 5212, and 5503)
+* FIXED: 6284: For mouse moves, correctly omit the x/y offsets if not
+ specified as a function argument (instead of passing (0,0)).
+* FIXED: 6471: Updated documentation on `webdriver.WebElement#getAttribute`
+* FIXED: 6612: On Unix, use the default IANA ephemeral port range if unable to
+ retrieve the current system's port range.
+* FIXED: 6617: Avoid triggering the node debugger when initializing the
+ stacktrace module.
+* FIXED: 6627: Safely rebuild chrome.Options from a partial JSON spec.
+
+## v2.37.0
+
+* FIXED: 6346: The remote.SeleniumServer class now accepts JVM arguments using
+ the `jvmArgs` option.
+
+## v2.36.0
+
+* _Release skipped to stay in sync with main Selenium project._
+
+## v2.35.2
+
+* FIXED: 6200: Pass arguments to the Selenium server instead of to the JVM.
+
+## v2.35.1
+
+* FIXED: 6090: Changed example scripts to use chromedriver.
+
+## v2.35.0
+
+* Version bump to stay in sync with the Selenium project.
+
+## v2.34.1
+
+* FIXED: 6079: The parent process should not wait for spawn driver service
+ processes (chromedriver, phantomjs, etc.)
+
+## v2.34.0
+
+* Added the `selenium-webdriver/testing/assert` module. This module
+ simplifies writing assertions against promised values (see
+ example in module documentation).
+* Added the `webdriver.Capabilities` class.
+* Added native support for the ChromeDriver. When using the `Builder`,
+ requesting chrome without specifying a remote server URL will default to
+ the native ChromeDriver implementation. The
+ [ChromeDriver server](https://code.google.com/p/chromedriver/downloads/list)
+ must be downloaded separately.
+
+ // Will start ChromeDriver locally.
+ var driver = new webdriver.Builder().
+ withCapabilities(webdriver.Capabilities.chrome()).
+ build();
+
+ // Will start ChromeDriver using the remote server.
+ var driver = new webdriver.Builder().
+ withCapabilities(webdriver.Capabilities.chrome()).
+ usingServer('http://server:1234/wd/hub').
+ build();
+
+* Added support for configuring proxies through the builder. For examples, see
+ `selenium-webdriver/test/proxy_test`.
+* Added native support for PhantomJS.
+* Changed signature of `SeleniumServer` to `SeleniumServer(jar, options)`.
+* Tests are now included in the npm published package. See `README.md` for
+ execution instructions
+* Removed the deprecated `webdriver.Deferred#resolve` and
+ `webdriver.promise.resolved` functions.
+* Removed the ability to connect to an existing session from the Builder. This
+ feature is intended for use with the browser-based client.
+
+## v2.33.0
+
+* Added support for WebDriver's logging API
+* FIXED: 5511: Added webdriver.manage().timeouts().pageLoadTimeout(ms)
+
+## v2.32.1
+
+* FIXED: 5541: Added missing return statement for windows in
+ `portprober.findFreePort()`
+
+## v2.32.0
+
+* Added the `selenium-webdriver/testing` package, which provides a basic
+ framework for writing tests using Mocha. See
+ `selenium-webdriver/example/google_search_test.js` for usage.
+* For Promises/A+ compatibility, backing out the change in 2.30.0 that ensured
+ rejections were always Error objects. Rejection reasons are now left as is.
+* Removed deprecated functions originally scheduled for removal in 2.31.0
+ * promise.Application.getInstance()
+ * promise.ControlFlow#schedule()
+ * promise.ControlFlow#scheduleTimeout()
+ * promise.ControlFlow#scheduleWait()
+* Renamed some functions for consistency with Promises/A+ terminology. The
+ original functions have been deprecated and will be removed in 2.34.0:
+ * promise.resolved() -> promise.fulfilled()
+ * promise.Deferred#resolve() -> promise.Deferred#fulfill()
+* FIXED: remote.SeleniumServer#stop now shuts down within the active control
+ flow, allowing scripts to finish. Use #kill to shutdown immediately.
+* FIXED: 5321: cookie deletion commands
+
+## v2.31.0
+
+* Added an example script.
+* Added a class for controlling the standalone Selenium server (server
+available separately)
+* Added a portprober for finding free ports
+* FIXED: WebElements now belong to the same flow as their parent driver.
+
+## v2.30.0
+
+* Ensures promise rejections are always Error values.
+* Version bump to keep in sync with the Selenium project.
+
+## v2.29.1
+
+* Fixed a bug that could lead to an infinite loop.
+* Added a README.md
+
+## v2.29.0
+
+* Initial release for npm:
+
+ npm install selenium-webdriver