v4.26.0
======
* Add CDP for Chrome 130 and remove 127
* Add PAC proxy url to arguments for Selenium Manager (#14506)
* Prevent closing the stdin, stdout, stderr streams (#14569)
* Increasing of properties scope for better Appium compatibility (#14183)
* Fix decoding of line endings (#14539)
* Fix SpotBugs findings in `ChromiumDriver` and `PortProber` (#14589)
* Fix `v*Network.java` conditions (#14585)
* [grid] Enable the httpclient to perform async requests (#14409)
* [grid] Limit the number of websocket connections per session (#14410)
* [grid] Improvement for Node handling (#14628)
* [grid] Add node sessionTimeout to Grid status (#14582)
* [grid] Capability se:vncEnabled value based on list of vnc-env-var (#14584)
* [grid] UI Sessions list view sort Duration in ascending by default (#14599)
* [grid] UI Liveview disconnect noVNC websocket when closing dialog (#14598)
* [grid] UI Overview is able to sort Nodes capabilities (#14571)

v4.25.0
======
* Add CDP for Chrome 129 and remove 126
* replace `fedcm` links with new ones (#14478)
* toml: warn about upcoming change enforcing string to have quotes (#14491)
* Escape cookie values when required for tests (#14486)

v4.24.0
======
* Add "se" prefixed capabilities to session response (#14323)
* Ensure all prefixed caps in request are added in response
* [bidi] return the id of the listener added
* [grid] shutdown the websocket on unexpected failures
* Add JSpecify annotations to WebElement and SearchContext (#14291)
* Add JSpecify annotations for WebDriver and 3 other interfaces (#14371)
* Implement getAttributes() method of MBean, and update Number-based MBean attributes to return Number objects instead of Strings (#14153)
* [grid] shutdown the client related to a websocket
* [grid] release the upstream websocket
* [grid] close the httpclient after connecting the websocket failed
* [bidi] Add execute script high-level API (#14330)
* [ci] Use a tag to figure out what we might want to release (#14378)
* Add CDP for Chrome 128 and remove 125

v4.23.1
======
* [bidi] Add dom mutation handler support (#14304)
* [grid] Exclude status DRAINING when distributor getting available nodes (#14282)
* [bidi] Add script pinning methods (#14305)
* Allow setting JDKHttpClient connectionTimeout, readTimeout, version via system property (#14306)
* remove package org.openqa.selenium.grid.session.remote (#14295)
* close the HttClient in case starting the session fails
* Adding system property to disable tracing `webdriver.remote.enableTracing`
* wait for the close response #14280
* [bidi] Add authentication handlers (#14334)
* [grid] ensure the local_sessionmap.remove event is raised (#14337)
* [bidi] Add filter auth handler (#14349)

v4.23.0
======
* Use Files.notExists to check files #14088
* Setting proxy in SM only when it is needed.
* Remove `LocateNodeParameters.Builder`, deprecated since 4.20
* Remove usage of deprecated methods in Require.java
* Delete tests referencing deprecated methods in Require.java
* [bidi] Remove the method that converts node value to RemoteWebElement
* [bidi] Ensure the listeners returns an id (#14215)
* [bidi] Fix the adding and the removing listener
* [bidi] Ensure empty values are removed from the call back map
* [bidi] Avoid creating new instances of log entry event
* [bidi] Add source type to log entry (#14244)
* Revert workaround for old netty http client (addendum to #12843) (#14134)
* [grid] Remove 'browserName' capability from stereotype when using RelaySession (#14247)
* Merge android specific parameters in chrome options (#14217)
* Add custom duration for Actions constructor (#14085)
* Consistent UTF-8 Encoding and Code Enhancements (#14218)
* [grid] Set session-request-timeout as client readTimeout in RemoteNewSessionQueue (#14272)
* [bidi]Add high-level logging APIs (#14225)
* Add CDP for Chrome 127 and remove 124


v4.22.0
======

* [grid] Log unsuccessful attempts to create a session
* [grid] Prevent UrlChecker leaking threads on timeout
* Add convenience for enabling BiDi (#14029)
* Eliminate assumption of mutable list argument in SeleniumManager.getBinaryPaths() (#14036)
* Add 'toJson' method to Rectangle class to produce expected serialization (#14038)
* Let TracedCommandExecutor delegate NeedsLocalLogs calls
* Add preference to enable CDP in Firefox by default (#14091)
* [grid] Video file name set independently in dynamic grid via se:videoName (#14148)
* Add CDP for Chrome 126 and remove 123
* EdgeOptions.useWebView to return "this" (#14157)
* Various minor performance improvements and code cleanup (#14054)
* Use java.nio to check files (#14088)

v4.21.0
======

* Add CDP for Chrome 125 and remove 122
* [bidi]Add methods to allow all parameters for script callFunction and evaluate method (#13873)
* Setting a connection timeout for the WebSocket connections
* [grid] flatten combined routes to improve routing (#13856)
* Java language level aids (#13834)
* [grid] apply protocol version in relay session factory (#13880)
* Configure Selenium Manager environment from System Properties (#13858)
* [grid] Set test name to video file name in dynamic grid (#13907)
* [grid] Set connection timeout to session-timeout in RemoteNode (#13854)
* Type casting and numeric improvements (#13909)
* Allow filters to recover from failed requests in NetworkInterceptor (#13847)
* Allow a DevTools listener to determinate the order of handler calls (#13921)
* Read selenium manager output as UTF-8 #13653
* Reduce redundant toString() calls (#13932)
* Fixed format of expires in Cookie.toString #13927
* [bidi] Remove root ownership parameter due to update in BiDi spec

v4.20.0
======

* Add CDP for Chrome 124 and remove 121
* [bidi] Deprecate using builder for Locate Node parameters. (#13767)
* [grid] handle baseRoute like the hubRoute and the graphqlRoute (#13772)
* [grid] Fixing Dynamic Grid Docker (#13789)
* [grid] Browser containers provisioned in dynamic grid uses node-docker hostConfig
* Making Selenium Manager a thin wrapper (#13385)
  * This change has been made to make it easier to maintain and improve, the interface has
  changed and if users were invoking it, they might experience issues. Selenium Manager is
  still in beta and these type of changes are expected.
* [grid] Dynamic Grid re-fetch browser images if they were pruned during runtime (#13821)
* [grid] Relay service can set protocol version in fetching status (#13849)
* [cdp] Continue requests without modification for know errors in NetworkInterceptor (#13836)
* [bidi] Update browsing context create method (#13766)

v4.19.1
======
* [bidi] Fix the bazel file after the BiDi breaking change

v4.19.0
======
* Add CDP for Chrome 123 and remove 120
* Use daemon threads in JdkHttpClient #13601
* Use a static class for ProxySelector #13622
* Improve memory allocation of an idle relay node #13643
* Close the httpclient after checking the service status #13643
* [bidi] Add storage module (#13675)
* [bidi] Add browser module (#13677)
* [bidi] Add continueRequest and continueResponse command (#13692)
* [bidi] Add provide response command (#13708)
* [bidi] Add setFiles command of the Input Module (#13711)
* Add JSON serialization for ShadowRoot (#13680)
* [grid] Ensure the original RemoteNode stays DOWN #13646 (#13647)
* Removed usage of FileBackedOutputStream in the client  (#13308)
* [grid] Remove "se:bidi" (#13528)
* [bidi] Update the capture screenshot APIs to include all parameters and remove scroll parameter (#13743)

v4.18.1
======

* Add CDP for Chrome 122 and remove 119

v4.18.0
======

* Recommitting self-signed certificate should not require certificate file
* [bidi] Add browsing context destroyed event
* Add missing support events for Web Driver Listener  (#13210)
* [bidi] Add network intercept commands
* [bidi] Add command "continuewithAuth"
* [bidi] Add failRequest command
* use the W3C state to detect errors
* [grid] Fixing driver configuration parsing (Fixes #13531)
* [cdp] Ensure dom mutation listener calls to webdriver apis are thread safe (Fixes #13500)
* Fix typo in comment (#13549)
* Allow `null` input in `FluentWait` (#13558)
* Add missing event handlers for `TargetLocator` interface (#13559)
* shutdown the process of a failed driver server start
* ensure ExternalProcess.waitFor will not block
* fixed the format of DriverService
* use message templates in logger calls
* [bidi] Add 'fetchError' event
* Fixing NPE when "se:downloadsEnabled" not set (#13583)
* Make Rectangle fields final to enhance immutability (#13586)
* Use all provided options while merging them for Firefox (#13582)
* Fix access modifier for script module classes
* use the ErrorCodec to build the WebDriverException #13580
* give the driver some time to terminate graceful

v4.17.0
======

* Self-signed certificate do not require certificate file (#13268)
* Remove deprecated event listener classes (#13200)
* Add ability to disable UI on grid (#13212)
* Recognise `chrome-headless-shell` as Chrome browser (#13292)
* Remove most of guava from remote package
* Add java to Selenium Manager input for tracking (see #13288)
* Add cookie support for network module (#13325)
* Refactored log capture and formatting code (#13322)
* Add support for Input module (Actions) (#13259)
* Close http connection for RemoteNode (#13313)
* Add Duration overload to SlowLoadableComponent constructor and deprecate the int (#13309)
* Improve logging errors (#13327)
* Ensure calling close() and quit() don't cause BiDi websocket errors (#13333)
* Check for emptiness instead of using length or size (#13335)
* Remove unnecessary overridden methods (#13336)
* improved logging when driver discovery failed
* WebSocket NoVNC session against the grid URL contains trailing slash (#13353)
* Updating channel name from Aurora to Dev
* Removing mentions to firefox-bin in docs and tests
* Deprecate FirefoxBinary class
* Deprecate json wire related ErrorCodes
* Fix the ScreenshotException message
* Add ShadowRoot.hashCode / .equals #13326
* Deprecate unused RemoteStatus
* Remove use of guava from FluentWait
* Remove all references to firefox-bin
* Deprecate all html5 offline storage implementations See #10397 (#13373)
* Remove endpoints and commands that are not w3c compliant (#13372)
* Deprecate methods for getting and setting location (#13372)
* Deprecate methods for getting and setting network connection (#13372)
* remove non-w3c endpoint references that are mobile specific
* Add auth required event
* Copy the output in a daemon thread
* No longer accept session requests with desiredCapabilities
* Remove requiredCapabilities from metadata ignored list
* Deprecate `AddWebStorage` augmenter provider as well (#13399)
* Update logging and errors for driver management
* Deprecate `ContextAware` interface (#13405)
* Add check back to driver service session factory
* Fix broken driver finder conditional
* Node WebSocket not working with sub-path option (#13407)
* Add window proxy properties class
* Schema HTTPS in Distributor, SessionQueue, SessionMap (#13413)
* Add BiDi Input module release command (#13362)
* Add Node properties class as precursor to BiDi's locateNodes command
* Deprecate `NoSuchContextException` (#13425)
* Ensure the worker thread is stopped
* Log the complete exception
* Add deprecation annotation to FirefoxBinary
* Add a warning while passing a decorated driver to augmenter (#13246)
* Tapping the Node session when there is WebSocket activity (#12223)
* Small code improvement in ProxyWebsocketsIntoGrid
* Using `max-sessions` from Node when it was declared (#12836)
* Fix typo in NodeFlags (#13440)
* Add locate nodes command (#13445)
* Add user friendly methods to locate nodes
* Add click dialog support to Federated Credential Management implementation
* Use the ErrorCodec to encode exceptions
* Ignore null text of UnhandledAlertException
* Add CDP for Chrome 121 and remove 118

v4.16.1
======

* Re-release due to broken packages

v4.16.0
======

* Allow stereotype to always allow browser version of "stable"
* [bidi] Listen to channel message
* [bidi] Add realm related events
* Move the module-info.class to the correct place
* Allow external uri to be configurable for components that support server functionality - #12491 (#12508)
* Close the streams after I/O failure #13096
* Fix events without parameters #13109
* Chrome-based browsers can do CDP-based script pinning (#13125)
* Ensure the complete output is read #13091
* Fixed reading array parameters in the CDP client
* Keep HttpClient alive until unused #12558  (#12978)
* Implement Safe Casting in getPermissions Method (#13143)
* Fix null request in case of chunked request (#13113)
* Set a name for thread started to forward output of external processes (#13142)
* Allow resuing devtools instance with JDK 11 client (#12882, #13165)
* Ensure all print options are sent as map instead of object
* Allow setting print options page ranges using list
* Fix bug replacing setDownloadThroughput for setUploadThroughput (#13187)
* Add macOS 14.0 to Platform enum
* Do not return linux Selenium Manager by default
* [bidi] Add traverse history command
* Make the json parsing exception text more helpful
* Add javadoc to support event classes (#13199)
* Packages should be opened to modules #13217
* Add more tests for java support event class (#13198)
* Add a `/quitquitquit` endpoint to the test server to make killing it easy
* Grid vnc session is not using the --sub-path argument (#12791, #13219)
* Remove retrying on timeout exception (#13224, #12975)
* Must not request further invocations for a broken websocket
* Moved org.openqa.selenium.remote.http.jdk to selenium-http (#13243)
* Add Chrome 120 and remove 117 for CDP

v4.15.0
======

* Fixed the characteristics of the collector
* Marked Client Config version field as final. (#12941)
* Removed use of guava from browser packages
* Removed use of guava from devtools (#12943)
* Do not set browser binary if it is an empty string (#12738)
* Allow setting proxy for all http client instances (#12940)
* Ensure request can be modified while intercepting (#12930)
* Add BiDi browsing contexts events related to navigation and user prompt
* Update Actions.java as removed modifier keys (#12903)
* Removed the unused netty domain socket client and dependencies
* Removed the guava reference from os, manager, bidi package
* Removed the unused sockets test base
* Removed most usages of guava from the support package
* Copy SM binary to cache folder and use it from there (#11359) (#12539)
* Prevent browser to be created and unused in case a short session-request-timeout is set (#12848)
* Add BiDi request data types from Network module
* Remove the http2-settings header in the reverse proxy
* Add BiDi network response data type, network initiator type
* Add value key to delete downloadFile response per w3c convention (#13025)
* Add BiDi BeforeRequestSent type
* Add BiDi mechanism to listen to network event - beforeRequestSent
* Fix bug in downloading files by ensuring browser vendor options in capabilities (#13024)
* Add BiDi network module events - onResponseStarted and onResponseCompleted
* Fixed processing continuation frames #12962
* Remove CDP version dependencies in the server (#12502)
* Add placeholder for BiDi script module commands and events
* Add BiDi script types, remote reference types, and local value types for script module
* Change local value method name for BiDi serialization
* Fixed the invalid session id response #12655
* Add BiDi channel value type, remote value type and evaluate result types
* Add BiDi call script command, evaluate function command, disown command, get realms command
* Open the selenium-manager to the selenium-json package for the Java Module System
* Add message to exception error for downloads error
* Add BiDi command to add and remove preload script
* Add CDP v119 and remove v116
* Implement file downloads (#12979)

v4.14.1
======
* Add print, activate and set viewport commands to Browsing Context
* Remove deprecated lift packages (#12917)
* Add validation for browsing context id (#12920)
* Fix default values for print options page size
* Use the java process builder to run external processes (#12898)
* Allow a custom timeout when shutting down a process
* Replacing Guava implementations with native Java implementations
* Allow setting version in Http Client Config (#12919)

v4.14.0
======
* Supported CDP versions: 85, 116, 117, 118
* Replace the EventAttribute(Value) with an AttributeMap (#12684)
* Add browsing context's capture box and element screenshot commands
* Enable handle user prompt tests for Firefox
* Delete SM binary only when SE_MANAGER_PATH is not set (#12840)
* Shutdown executors created for a single tasks
* Ensure closed socket connection does not prevent freeing up resources
* Remove the unused htmlunit-driver from the unit tests (#12849)
* Ensure proper error message gets logged (#12853)
* Allow setting SSL context in client config for HttpClient (#12874)
* Improve warning when CDP version not found (#12880)
* Ensure retry mechanism does not swallow an exception (#12838)
* Require Java 11 and move jdk-http-client into default package (#12843)
* Reduce log noise at FINE level (#12866)
* Refactor frame method to use isEmpty for list check and String check. (#12894)
* Use new 'getArray' method to extract driver configurations (#12716)

v4.13.0
======
* Supported CDP versions: 85, 115, 116, 117
* Deprecate setScriptTimeout(), use scriptTimeout()
* Remove deprecated method move on Point class
* Remove deprecated method GeckoDriverService usingFirefoxBinary, use setBinary
* Remove deprecated method GeckoDriverService createDefaultService with capabilities
* Remove deprecated onConsoleLog in BiDi LogInspector
* Fix NewSession Runner (#12700)
* Add 'getArray' method for array values (#12703)
* Ensure HttpClients not closed while waiting for responses
* Fix bug for overwriting driver log output stream passed in by user
* Update pinned browser versions
* Improve stability with final variables (#12733)
* Fix bug for Appium subclass that sets neither log file nor output (#12696)
* Remove deprecated headless methods from Options classes
* Remove deprecated driver service constructors and methods
* Remove deprecated log_file methods
* Allow users to set Selenium Manager path by environment variable (#12752)

v4.12.1
======
* Supported CDP versions: 85, 114, 115, 116
* Safari driver service system properties should be public
* [grid] Removing browserVersion before sending payload to driver
* Selenium Manager don't log file paths by default (#12673)
* Parse log output to support streams and file location in system properties (#12674)
* Fixing default service for drivers #12682

v4.12.0
======
* Supported CDP versions: 85, 114, 115, 116
* Update Selenium Manager to use io for executing command line
* Improve logic for deleting Selenium Manager binary on exit
* Remove deprecated BROWSER_LOGFILE
* Ensure grid maps exceptions to the correct error
* Allow deleting remote downloaded files from grid (#12501)
* Deprecate the Remote Response status field
* Remove deprecated UNEXPECTED_ALERT_BEHAVIOR capability in IE Options
* Deprecate disableNativeEvents method in IE Options
* Remove deprecated createPointerDown and createPointerUp methods
* use devtools script pinning mechanism by default (#11622)
* ensure all headers are removed or replaced
* Remove deprecated /file JWP endpoint (#12354)
* Increase maximum depth of generated JSON (see #12581)
* Do not register multiple listeners
* Improve synchronization for network event listeners
* Fix bug for null hashCode in element subclasses (#12442)
* Fix potential deadlock in processing events (#12576)
* Fix proxy breaking in RemoteWebDriver (#12607)
* Grid detects Safari and Safari Technology Preview only on macOS
* Grid avoids using Selenium Manager offline mode when it is enabled in arguments
* Batch copy input to multiple streams
* Remove browserVersion from options in Selenium Manager (#12639)

v4.11.0
======
* Supported CDP versions: 85, 113, 114, 115
* Add Missing W3C Exceptions (#12175)
* Increased the max depth of new session payload (#12205)
* Create less HttpClient instances while creating a CDP connection (#12216)
* Raise a ConnectionFailedException when openSocket failed (#12215)
* Ack the log file argument without need to combine it. Fixes #12225
* Improved the exit code and error handling (#12219)
* No need to have the auto-service dependency in the client bindings (#12244)
* Deprecate all 'lift style' code (#12263)
* Minor spelling Fix (#12258)
* Adding ignore process match for IE Mode across bindings (#12279)
* Extract original driver from decorated driver when Augmenting a driver (#12248)
* BidiException instead of DevToolsException in getBiDi (#12284)
* [grid] Switching to fine log level when clearing caches in LocalNode
* Removing deprecated methods (findElement & findElements)
* less memory allocation (#12320)
* Add move to location method to Actions (#11509)
* [grid] Add supports for list-of-table options (#12363)
* [grid] reject requests only if it has been in the queue before trying… (#12336)
* [grid] do not rely on .hashCode for .equals (#12361)
* Use Selenium Manager to locate drivers on PATH (#12352)
* [grid] Improved the new session handling when the queue is empty (#12385)
* [grid] Using SM to find drivers on PATH
* Using same variable for log output, fixes #12406
* UnreachableBrowserException logs the command parameter details only in debug mode (#11328)
* Filter related fixed in the NettyClient and the JdkHttpClient
* Removing deprecated `createServiceWithConfig` in ChromeDriverService
* Removing deprecated `webdriver.chrome.whitelistedIps` in ChromeDriverService
* Removing deprecated ChromeDriverLogLevel
* Add browser output from Selenium Manager to options (#12424)
* [grid] Make user defined SlotMatcher used everywhere in grid code (#12240)
* Add support for FedCM commands (#12096)
* [grid] Returning se:bidi when the user sends `webSocketUrl`. Fixes #12314
* [grid] Covering use case where a Node is UP after being marked DOWN. Fixes #12116
* Make external modules static (#12294)
* Use double-checked locking to initialise the Selenium Manager instance
* Making sure browser path is not null before setting the binary when value is returned from SM
* Showing SM error when the exception is thrown

v4.10.0
======
* Supported CDP versions: 85, 112, 113, 114
* Remove Selenium RC and WebDriverBackedSelenium code (#12024)
* Fixed URI in logs (#12000)
* Enhancing stereotype in Dynamic Grid (#12034)
* Support proxies in Selenium Manager (#12036)
* Close websockets when closing JDK HTTP Client (#12035)
* Change bidi loglevel warning level (#12054)
* Allow driving embedded apps without CDP (#11963)
* Fix possible freeze from incompatible HTTP responses (#12055)
* Fix bug when JSON max depth reached (#12056)
* Remove deprecated capabilities `SUPPORTS_JAVASCRIPT` and `SUPPORTS_WEB_STORAGE`
* Remove deprecated setters in `Rectangle`
* improve cleaning of upload and download directories (#12059)
* Fix redirect bug in JDK HTTP Client (#12070)
* Prevent grid from creating sessions that will time out in queue (#12014)
* Respect disabled pretty printing for arrays (#12079)
* Add support for WebView2 in Edge
* Allow setting savefile directory in Chrome when downloads are enabled (#12109)
* Add BiDi support for browing context events
* Enable BiDi functionality for Chromium browsers
* Improve "near" locator behavior (#11290)
* Do not send driver logs to console by default (#12136)
* Fix bug with GeckoDriver option for truncating log lines
* Do not log Selenium Manager details as INFO (#12145)
* Error messages link to Selenium documentation where supported
* Create NoSuchDriverException for referencing driver location problems

v4.9.1
======
* Supported CDP versions: 85, 111, 112, 113
* Typo in the "addArguments" method comment (#11945)
* Handling case where -1 is returned as statusCode (#11910)
* Adding remote-allow-origins argument only when the Java 11 http client is not used (#11949)
* Remove deprecated "version" JWP capability
* Remove deprecated "platform" JWP capability
* Remove deprecated "takesScreenshot" JWP capability
* Remove deprecated "unexpectedAlertBehaviour" JWP capability
* [grid] Displaying the real stereotype config at startup
* Add logging for starting the driver
* [grid] Do not switch and remove node in one iteration (#11961)
* Handle fragmented websocket messages (#11962)
* Add more logging to Selenium Manager (#11959)
* Make Driver Services consistent (#11973)
* Using driver path always for Safari and Safari Technology Preview (#11952)
* Overriding methods to have main platform names lowercase (#11952)

v4.9.0
======
* Supported CDP versions: 85, 110, 111, 112
* Handle redirects inside the JdkHttpClient (#11816)
* [grid] Remove Json Wire Protocol support (#11823)
* Selenium Manager use binary from Browser Options
* [grid] Allowing binary to be set via options when not set in Grid
* Log exception message (#11922)
* [grid] Fixing remote execution for Edge when Java 8 client is used

v4.8.3
======
* Supported CDP versions: 85, 109, 110, 111
* Fix bug preventing adding items to ArrayList for Selenium Manager command

v4.8.2
======
* Supported CDP versions: 85, 109, 110, 111
* [grid] Enabling `detectDrivers` original behaviour.
* Fix NPE regression in 4.8.0 (#11701)
* Implement DriverFinder completely independent of Service classes (#11491)
* [grid] Allow LocalNode to be extended for customisation (#11718)
* InvalidSelectorException extends WebDriverException (#11727)
* Deprecate CDP instance methods in FirefoxDriver
* Adding allowHosts to GeckoDriverService
* [grid] Passing language env var to child containers
* [grid] Removing unknown capability extensions for IE
* [bidi] Ensure removing listeners does not cause an error
* Process Selenium Manager output as JSON (#11663)
* [grid] Support remote downloads in Grid (#11702)
* Adding `remote-allow-origins` for Chrome
* Invoking Selenium Manager only with `--browser
* [grid] Adding `remote-allow-origins` for Chrome stereotypes
* Overloaded constructors to configure connect and read timeouts for WebDriver objects (#11532)

v4.8.1
======
* Supported CDP versions: 85, 108, 109, 110
* Merge capabilities of slot with the new session request capabilities (#11369)
* Keep track of pinned scripts per CDP session (#11598)
* Simplify Augmentation for Basic Auth (#11601)
* Print requested capabilities in SessionNotCreatedException (#11604)
* Simplify Augmentation for Dom Mutation
* Generate a Maven BOM (#11560)
* Synchronize method to get Selenium Manager binary (fix #11620) (#11640)
* Updating Selenium Manager binaries for 4.8.1 release
* File downloads url - Adhere to w3c standards (#11646)

v4.8.0
======
* Supported CDP versions: 85, 107, 108, 109
* Implement Edge and Chrome Driver Services using log level with ChromiumDriverLogLevel enum
* Deprecate Edge Driver Service using log level with String
* Deprecate Chrome Driver Service using log level with ChromeDriverLogLevel enum
* Deprecate setting Chrome Driver Service logging values in Chrome Options
* Close BiDi session on closing the last top-level browsing context
* Add withAllowedListIps() to ChromeDriverService
* Add comment with name of large JS executions (#11038)
* Allow Pointer and Wheel methods to accept Point object (#11477)
* Fix bug where options are not properly merged into capabilities (#11396)
* JDKHttpClient: Fix null pointer bug when responseBody is null (#11450)
* CDP: Ensure child session is created under browser session (#11475)
* Deprecate setHeadless for Chrome and Firefox Options (#11467)
* Grid: Remove translations of non-w3c locators (#11470)
* JDKHttpClient: Handle RQST with no Body [POST/PUT] (#11445)
* Fix bug with decorated webdriver not calling the listeners  (#11438)
* BiDi: Add filter parameter to LogInspector methods
* BiDi: Rename 'onConsoleLog' to 'onConsoleEntry'
* CDP: Fix bug with console events returning modified args (#11435)
* Grid: Accommodate ability to specify sub-paths (#11271)
* Grid: fix bug with pulling image using zero content-length (#11342)

v4.7.2
======
* Grid: Support file downloads on the node (#11277)
* Change chromium service names from whitelisted to allowed (#11409)
* Avoid closing CDP connection in browser implementation since that logic now sits in RemoteWebDriver (Fixes #11401)
* Fix bug where failing Selenium Manager method results in wrong error
* Allow changing chromium driver log timestamp formatting
* Allow ignoring chromedriver build checks using service builders
* Add support for appendLog to msedgedriver service
* Fix msedgedriver log level logic
* Allow setting chromedriver log level from system properties
* Fix chromedriver log level logic
* Remove deprecated Firefox capabilities
* Removing a few bits more of the magic that moves JWP to W3C
* Removing deprecated SUPPORTS_ALERTS and SUPPORTS_SQL_DATABASE caps
* Removing deprecated OVERLAPPING_CHECK_DISABLED cap
* Removing deprecated LOGGING_PREFS cap
* Removing deprecated HAS_TOUCHSCREEN cap
* Removing deprecated HAS_NATIVE_EVENTS cap
* Removing deprecated ENABLE_PROFILING_CAPABILITY cap
* Removing deprecated ACCEPT_SSL_CERTS cap

v4.7.1
======
* Supported CDP versions: 85, 106, 107, 108
* Add close method to JDK 11 client. Ensure close methods for Http client is called. (#11345)
* Don’t specify content length when pulling images (#11343)
* Allow arguments to be passed in Node flag "driver-configuration" (#11367)
* Ensure all states of StartOrDie are handled (#11297)

v4.7.0
======
* Supported CDP versions: 85, 106, 107, 108
* Remove deprecated classes for Rotatable, AppCache, NetworkConnection, LocationContext
* Remove deprecated capabilities- IE_USE_PRE_PROCESS_PROXY, APPLICATION_NAME, ELEMENT_SCROLL_BEHAVIOR
* Fix bug causing sessions to hang when session stops (#11167)
* Support multiple reads of input stream (#11249)
* Fix reading connection header (#11255)
* BiDi: Implement JavascriptLogEntry
* BiDi: Support browsing context in event subscriptions
* BiDi: Fix type of JavascriptLogEntry
* Grid: improved exception handling when no cause is set (#11286)
* Fix following contract of Closeable (#11282)
* Grid: Get TZ from parent container when not passed as cap (#11289)
* BiDi: Add LogInspector
* Grid: do not offload from multiple threads to a single worker (#11260)
* Add support for Selenium Manager to work with IE Driver
* Improve error handling with Selenium Manager (#11300)
* BiDi: Add constructor parameter for commands without a response
* Grid: remove browser filters from makeW3CSafe
* Fix bug for merging MutableCapabilities and Options

v4.6.0
======
* Supported CDP versions: 85, 105, 106, 107
* Updated IllegalArgumentException to NullPointerException for Null Values in Require Class (#11162)
* Fix page ranges issue in PrintOptions (#11172) (#11174)
* Ensure the correct output stream is used (#11175)
* Add initial support for Selenium Manager
* Revert "[java] only allow enabled select lists for Select class"
* [grid] Closing input pipeline when 404 is returned
* JDK Http client - avoid chunking without buffering to memory (#11198)
* Avoiding pulling same netty dependencies for AsyncHttpClient
* [grid] Only check for IEDriver on Windows.


v4.5.3
======
* Supported CDP versions: 85, 104, 105, 106
* Removing check "::1" in PortProber (Fixes #11159)

v4.5.2
======
* Supported CDP versions: 85, 104, 105, 106
* Add support for basic auth in JDK client (Related to #11068)
* [grid] Adjusting PortProber for Docker execution

v4.5.1
======
* Supported CDP versions: 85, 104, 105, 106
* Avoid throwing errors once NetworkInterceptor is closed (Fixes #11032)
* Avoiding hiding "internal" package so that selenium-api exports it (Fixes #11069)
* Close the CDP connection on quit for FF (#11109)
* Removed the broken escape (#11110)
* Use the correct base64 decoder (#11107)
* Reduce noisy logs from CDP version finder and made dialect related log debug level (Related to #11088)
* Respect the last flag for binary data (#11108)
* Check that a port truly is free before using it (#11085)
* Make public constant storing capability name for IE options (#11114)
* [grid] Add BiDi endpoint to returned caps if available, adding `se:bidi`
* Ignoring additional headers in the JDK 11 implementation
* Pick random port outside of well-known ranges of ephemeral ports (#10990)
* [grid] Consume in batches from the new session queue (#10987)
* [grid] Deprecate max-threads flag. Add an alternate flag in the Distributor for new session thread
  pool size. (#10995)
* [grid] Restoring behavior for session creation interval.
* [grid] Add batch size flag for session queue
* Make sure `EventFiringWebElement` implements all `WebElement` methods (#11144)
* [bidi] Make BaseLogEntry.LogLevel enum public (#11147)
* [grid] Removing default value for `max-threads` to avoid noisy warnings due to deprecation

v4.5.0
======
* Supported CDP versions: 85, 104, 105, 106
* Allow event firing decorator to accept a target class (#1694)
* Fix Javadoc for executeAsyncScript method
* [cdp] Add  support for CDP 105 and remove CDP 102
* Make httpclient ClientConfig constructor protected (#10985)
* Throw an error when trying to select a disabled select or option (#10812)
* Add "webdriver.edge.loglevel" system property (#10961)
* Remove deprecated Opera support (#10379)
* [grid] Adding handler for options when using CORS and creating a session
* Add a JDK 11 HTTP client (#10730)
* [grid] Delete a session when a session times out (#10820)
* Set high redirect default value in Netty client
* [grid] Remove unused "grid-mode" flag
* Improve default matcher to enable Appium
* Remove host info for most exceptions, except SessionNotCreatedException (#9792)
* Change message when session is not found in Grid for better exception handling
* Remove IME support
* Remove deprecated ForSeleniumServer caps
* Remove deprecated BrowserType
* Differentiate "Windows 7" and "Windows Vista" in Platform class
* Fix bug preventing websocket connections in Firefox v105 from localhost

v4.4.0
======

* Supported CDP versions: 85, 102, 103, 104
* Fix bug to ensure correct window handle used by CDP (#10811)
* Remove makeW3CSafe from NewSession in Command Payload
* Allow decorating child classes of WebDriver (#10737)
* Throwing an error when user sets `w3c:false` in `goog:chromeOptions`
* Allow a Relay Node to boot and check periodically for the status endpoint.
* Forwarding requests with non-W3C locators (useful for Relay Nodes with Appium)

v4.3.0
======

* Supported CDP versions: 85, 101, 102, 103
* Remove deprecated methods that use capabilities in WebDrivers (#10427)
* Removal of deprecated Actions commands
  Deprecated in (1/7/2017) for selenium-3.1.0 and (10/29/2018) for selenium-3.141.0
* Removing deprecated getPlatform and getVersion
* Removing a few non-W3C ways of matching browsers
* Add support for BiDi log event (#10696)
* Warning when user sets `w3c: true` in `goog:chromeOptions`
* Adding native ARM support for sockets
* Add Firefox profile preferences when retrieving from a file
* Add BiDi augmenter support (#10789)
* [cdp] Add support CDP 103 and remove CDP 100

v4.2.2
======

* Supported CDP versions: 85, 100, 101, 102
* Throwing warnings for non-W3C before creating session (#10741)
* Update ExpectedCondition to extend java util Function (#10695)
* Fixing SafariTechPreview

v4.2.1
======

* Supported CDP versions: 85, 100, 101, 102
* Improving warnings for non W3C capability checks (#10711)
* Adding LOGGING_PREFS to Edge and Chrome options

v4.2.0
======

* Supported CDP versions: 85, 100, 101, 102
* Add wheel input (#10445)
* Adding `--allow-origins` when starting GeckoDriver
* Deactivating automatic retries in the HTTPClient
* Implement separate Origin class for WheelInput (#10636)
* Deprecating IME
* Add javadocs to scroll()
* Add support to create a BiDi session
* [grid] Include JMX monitoring feature in the Grid local distributor (#10674)
* [grid] Fixing Node drain when session expires
* [grid] Add docker device mapping configuration (#10645)
* [grid] Flag to disable CDP if needed (#10661)
* [cdp] Add support Chrome 102 and remove for Chrome 99
* Improve error message for unsuccessfully submitting form
* [grid] Add deprecation notices to Grid logs and Java stdout,
  check https://www.selenium.dev/blog/2022/legacy-protocol-support/
* Deprecating non W3C caps and Augmenters using them,
  check https://www.selenium.dev/blog/2022/legacy-protocol-support/
* Logging warnings when non-W3C caps are being used,
  check https://www.selenium.dev/blog/2022/legacy-protocol-support/
* Removing HTMLRunner, this was a server extracted from the old
  Grid server which was used to run HTML test
  suites exported from the old Selenium IDE
* Fix screen rotate error (#10693)
* Make the action movement methods specify the button number
* Convert RemoteWebElement::getLocation and ::getSize from JWP Standard to W3C Standard (#10700)
* Creating browser name for SAFARI_TECH_PREVIEW

v4.1.4
======

* Supported CDP versions: 85, 99, 100, 101
* [grid] Setting session-timeout as read timeout for http client (#10404)
* Add Windows 11 support to platform enum
* Enabling request retries for session handling (#9528)
* Use class' class loader when looking up `HttpClient` factory. (#10509)
* Fixing search in Java docs (#10415)
* Added fix to intercept PUT request
* [grid] Standalone should also shutdown when it has been drained
* [grid] Draining a Node after X sessions have been created (#9845)
* Fixing options handling for print command
* Fix links in JavaDocs (#10529)
* Introduce common interface for all web storage types (#10528)
* Added PATCH request
* Honoring proxy in ClientConfig (#10531)
* Return friendly names for Windows platforms like Mac does
* Support for sending firefox addon directory as temporary in remote sessions
* [grid] Closing input pipeline when client disconnects

v4.1.3
======

* Supported CDP versions: 85, 97, 98, 99
* [grid] Using DefaultSlotMatcher in DockerSessionFactory
* Removing XpiDriverService and XpiDriverInfo
* Implement event support for pointer device actions (#10198)
* Removing STP from SafariDriverService
* Fix modifier keys scope on Java Actions (#10333)
* Guarding runnables when scheduleAtFixedRate is used
* Acknowledging proxy config set in ClientConfig
* Make driver.close() tolerant to CDP failures (#10346)
* Fix issue "Incompatible types for '-' operation" in the Javascript executor example
* [grid] Refactoring rejectEvent and guarding UUID parsing
* [grid] Querying Node status only once at registration
* Add deprecated warnings to OperaDriver and OperaOptions
* Remove references to invalid errors (#10209)
* Removing deprecated methods from WebDriverWait, HttpMessage, CommandLine and DesiredCapabilities
* Avoid using ServiceLoader while creating FirefoxDriver instance
* [grid] Matching webview2 browser name with EdgeDriverService
* [grid] Pinging relay service to update health-check
* [grid] Adding a configuration flag to set a noVNC port.
* switch ByClassName locator from to "class name" (#10355)
* Ensure DevTools is augmented when using DriverService
* Fixed reading the data from the stream and fixed the size of chunks (#10409)
* [grid] Do not match empty capabilities
* [grid] Node capacity is given by available slots and usage below maxSessions.
* [grid] Grid is ready when Nodes are up and have availability.
* [grid] Improving /readyz return http code.
* Retry filter not used by default
* Add exponential backoff policy to the Retry request filter
* [grid] Preventing XSS attack.



v4.1.2
======

* Supported CDP versions: 85, 95, 96, 97
* Add new desktop cast command for Chromium
* BugFix: Update toJson() method creation for integer type in CdpClientGenerator
* Fix Javadocs FluentWait's sample usage wrt durations
* [grid] Throw ServerBindException when server cannot start due to network issues
* Add support for CDP Chrome 97
* Throw error when using custom client config with local driver
* Adding a builder() to all drivers to generate the correct default options instance
* Use class' class loader when looking up `HttpClient` factory
* Remove max duration value to allow retries during network connection failures
* allow setting a different keyboard or pointer for actions on input devices
* [grid] Guarding how the server reads parameters to keep it stable
* Remove connection timeout setter, a static 10s value is used
* [grid] Getting session requests from the queue faster
* [grid] Reworking how new session requests are processed, querying queue only
  when Grid has availability
* [grid] Fix added missing quotation marks in examples (cli help)
* Replace deprecated OpenTelemetrySdk creation API
* [grid] Improving Node health check execution
* [grid] Adding back support for unix domain sockets
* Allow disabling tracing in RemoteWebDriver
* Replace dynamic proxy with ByteBuddy for WebDriverDecorator
* Log Timestamp flag added

v4.1.1
======

* Supported CDP versions: 85, 94, 95, 96
* Allow custom tracing to integrate with existing OpenTelemetry tracing
* Avoiding NoClassDefFoundError by waiting for completion of already started tasks
* use addon parameter with base64 encoding instead of path parameter
  that requires using file detector and upload
* support installing temporary addon in Firefox
* Remove references to opera_blink in favour of opera
* BugFix: Handle null parameters in TracedCommandExecutor
* BugFix: Following redirects by default in HttpClient
* BugFix: Forwarding CDP/BiDi connections to the container in Dynamic Grid
* BugFix: Do not log screenshots payload in debug mode
* BugFix: Mapping Slot fields properly for json payloads
* BugFix: Configuring relay service via CLI
* BugFix: Adding a "bind-host" flag to start Grid properly when the
  server cannot bind to the host, fixes this for environments like Docker

v4.1.0
======

* Supported CDP versions: 85, 94, 95, 96
* Removed USE_CHROMIUM from EdgeOptions as new Edge is the default
* [grid] Fixed command completion for ZSH when using the Selenium Server
* Pass WebDriver instead of Loggable to allow augmentation of HasLogEvents
* [grid] Using a random port when "-1" is set as port number for the Selenium Server
* Handle Json parsing error such that future messages are not blocked
* [grid] Fix host option
* Changing type of extraInfo from HashMap to ConcurrentHasMap to avoid
  ConcurrentModificationException while reading exception message by parallel threads
* Add retry http request filter for transient errors.
* Fix Javadoc code block formatting
* [grid] Using non-loopback address when default config is used
* Fix classloading error in host identifier
* Split OpenTelemetry command in order to facilitate search by tags

v4.0.0
======

* Supported CDP versions: 85, 93, 94, 95
* Improved "relay" service description in help
* Switch to different JCIP annotations for Apache 2 license
* Deprecated USE_CHROMIUM so we can remove it after 4.0
* Add a --hub flag for the Node

v4.0.0-rc-3
===========

* Supported CDP versions: 85, 93, 94, 95
* Updated java dependencies
* Fixed bug in zsh completions
* Use the IANA port range for selecting random ports if there are
  fewer than 5k ports to choose from

v4.0.0-rc-2
===========

* Supported CDP versions: 85, 93, 94
* Moved NetworkInterceptor to org.openqa.selenium.devtools
* NetworkInterceptor now takes a Filter to allow responses to be
  captured and rewritten.
* Added a "relay" option to better support forwarding sessions to
  something like the Appium server.
* Fixed CDP connection locking when called re-entrantly.
* Remove sessions from Redis backed session map on restart
* Accept "webSocketUrl" as a valid w3c capability name, as it's
  declared in WebDriver Bidi
* Add strongly-typed methods for setting timeouts and other w3c
  capabilities on the base options class.
* Enable live view for Dynamic Grid
* Merged devtools maven artifact into the main remote driver
* Added android capabilities to Chromium and Firefox options.

v4.0.0-rc-1
===========

* Supported CDP versions: 85, 92, 93.
* Only the name and stereotype are mandatory in nodeConfig.
* No longer sets unexpected alert value in Options by default.
* Update IE options class in each language to match the currently
  supported capabilities in the IE Driver.
* Delete existing sessions if the Node is restarted.
* Sessions are now stopped when the Node is gracefully shutdown.
* Fixes file upload for Dynamic Grid
* Add docker max sessions flag. (#9688)
* Close DriverService and DriverCommandExecutor executor on
  quit. (#9666)
* Handle empty inputs for JSON more gracefully.
* Ensure that default healthcheck duration is less than
  the default node timeout duration.
* Better resource utilisation in the Distributor when starting
  sessions.
* Implement ShadowDOM APIs in the Java bindings
* Routing VNC websockets through the Grid

v4.0.0-beta-4
=============

* Rework how the `Distributor` creates sessions to be more
  spec-compliant.
* Rework internal structure of the New Session Queue.
* `DriverCommandExecutor` uses its own `ExecutorService` (#9430)
* Add proxy support to NettyClient (#9434)
* Handle bad gateway response from the server when starting a new
  session (#9444)
* Expose session request metadata from the new session payload
* Implement getDomAttribute method in EventFiringWebDriver (#9394)

v4.0.0-beta-3
=============

* Allow RelativeBy to start with any locator, not just tag name
  (#9273)
* Selenium-created sessions supporting CDP have a `se:cdp` capability,
  pointing to the websocket address for CDP communication, and a
  `se:cdpVersion` which indicates the version of the CDP to use.
* Correctly indicate the Firefox supports CDP v85
* Add support for CDP v90 and v91 and remove support for CDP v86 and
  v87.
* Improving exception when server returns 504 (#9354)
* The node server rewrites cdp endpoints and versions into standard
  `se:cdp*` ones.
* Allowing users to override recommended max sessions in Grid.
* Better platform matching in Grid.
* Use heartbeat to register the Node with the Distributor (#9321)
* Add logging of http exchange contents in debug mode.
* Fix getScreenshotAs: avoid unnecessary conversions (#9308)
* Docker fixes around starting containers with the correct network
  name.
* Wait until Nodes are available before indicating that Grid is ready.
* Purge timed out requests sitting the queue at regular intervals
  (#9283)
* Add null check before returning isDisplayed value (#9299)
* Added "/wd/hub" route to RouterServer for better backwards compat.

v4.0.0-beta-2
=============

* Use `opera` for Blink-based Opera versions
* Updated OpenTelemetry to 1.0.0
* Use standard OpenTelemetry mechanisms for configuring tracing.
* Make better use of `getDomAttribute` in `Select`
* [cdp] Added support for Firefox Nightly
* [cdp] Use `se:cdp` to report CDP endpoint
* [grid] Close resources leaks caused by http client not being
  properly closed.
* [grid] Nodes will auto-detect their platform
* [grid] Make health check interval a configurable option for
  Distributor role (#9272)
* [grid] Correctly propagate startup errors to the client
* [grid] Make session timeout configurable option for Node role

v4.0.0-beta-1
=============

* All `*Options` classes now serialise with w3c-safe keys. This means
  that support for legacy options (eg. `firefox_binary` rather than
  using the setting in `moz:firefoxOptions`) will need to be set
  directly via a call to `setCapability`.
* FirefoxDriver requires geckodriver 0.29.0 or later
* Reworked `RemoteWebDriver.builder` to allow it to work as a primary
  mechanism for creating a new `WebDriver` instance
* DevTools support for Firefox added
* Support multiple CDP versions simultaneously (currently v86-89)
* New commands to Get Timeouts, Print to PDF, Get DOM Attribute, Get
  DOM Property
* Relative locators now return elements by proximity to last search
  term.
* Refreshed Grid UI
* Legacy XPI driver marked as deprecated
* Removed reactor-netty httpclient
* Reworked how custom element locators work. They will try to be
  remoted directly, before using a local implementation if remoting
  fails.
* Allow `CustomLocator` instances to be bound to the server
  automatically.
* Ensured locators are converted to CSS locator consistently.
* Ensure `Capabilities.merge` returns a new `Capabilities` instance
  rather than modifying the existing one.
* Add `--allow-cors` flag to enable CORS support in the server
* Better declare services in our Java Module information
* Removed obsolete browsers from BrowserType
* Implemented the ability to get raw original message without
  additional info from WebDriverException
* Allow max-sessions to be configured per driver on the command line
* Substantially improved javadocs for `WebDriverDecorator`
* Distributor now uses a proper session queue
* `FluentWait` performs waiting on the main thread to ensure
  exceptions are thrown as expected.
* Changing default timeouts for HTTP clients: connect timeout is 10s,
  read timeout is 3 min
* Moving to using immutable data structures where possible. `Point`
  and `Rectangle` now have deprecated setters.
* Added methods to get container logs from the Grid
* Docker now mounts /dev/shm to browser containers.
* Docker instances can now save videos of test runs
* Docker containers now created with `autoRemoval` set to `true`

v4.0.0-alpha-7
==============

* Started to add new Grid UI.
* Add support for BASIC and DIGEST authentication.
* Add listener for DOM mutations.
* Add support for listening out for console log events.
* Experimental support for script pinning.
* Support multiple versions of CDP simultaneously.
* Fix getText atom for unicode character middle of word (#8736)
* Include original stack trace when throwing TimeoutException.
* Removed okhttp implementation of the http client.
* Add experimental "reactor" http client.
* [graphql] Add graphql query to retrieve session information for a
  given session id.
* [grid] Support remoting CDP over the Grid.
* [grid] Record video only when `recordVideo` is sent in `se:options`.
* [grid] Securing 0mq when user provides a certificate.
* [grid] All messages on the 0mq event bus now have a secret.
* [grid] Provide a command line flag for creating SessionFactory
  instances: `--driver-factory`.
* Added a JDBC-backed implementation of the SessionMap.
* [grid] Added a "New Session Queue" component.
* [grid] Added support for draining a Node. Once all sessions are
  complete, the node will shutdown.
* [grid] Added a "One Shot Node" which starts draining once a session.
  is started. This is designed for use in environments which will
  restart nodes as required.
* [grid] Add a `/readyz` endpoint that conforms to k8s expectations
  for an HTTP readiness probe.

v4.0.0-alpha-6
==============

* Ability to proxy CDP commands from the local end through the
  fully-distributed Grid. The end point to connect to is reported via
  "se:options -> cdp"
* Amended Augmenter to mixin `HasDevTools` if needed.
* Very, very basic support for GraphQL
* Ability to configure node on the command line by specifying
  well-known browser names (eg. "-I firefox")
* Ability to set maximum number of concurrent sessions on a node.
* New reactor-based http client implementation. Set the
  `webdriver.http.factory` system property to `reactor` try it out.
* Bumped OpenTelemetry version to 0.4.0
* Selenium Standalone and Hub now also accept requests to `/wd/hub`
* Implementing file uploading for distributed grid (and deleting
  uploaded files when session is closed)
* Fix potential NPE on DeviceRotation. Fixes #8183
* Corrected the documentation for Protected Mode (#8163)
* Fix comments on Java Actions.moveToElement (#6974)
* Grid can be configured using TOML files.
* Fixing sendKeys to handle newline characters properly. Fixes #7886
* Added a `completion` command to generate a zsh autocompletion
  file. This should be saved as `_selenium` on the `fpath`
* New `config` section in the `info` command.

v4.0.0-alpha-5
==============

* Implement "minimize window"
* Add `SameSite` attribute to `Cookie`
* Improve Docker support to use unix domain sockets and the
  DOCKER_HOST env variable.
* Minimum supported Docker protocol is v1.40. This matches the release
  on all platforms at 2020-03-13
* Stop driver server when session is over. Fixes #7989
* Reuse the same HTTP client instead of creating a client per
  session. Fixes #7989
* Sending auth headers to the grid if username and password are
  specified in the base URL. Fixes #8005
* Replace OpenTracing with OpenTelemetry
* Enabling IPv6 in the Grid, fixes #7541
* Add response to RemoteWebDriver's client log level (#7925)
* Add a command to run the message bus as a standalone component
* Make "info help" less misleading

v4.0.0-alpha-4
==============

* Added an "information" command to provide users with better
  information about how to use features in Selenium.
* Rename "friendly" locators to "relative"
* Chrome Debugging Protocol commands now mirror latest CDP spec.
* Strengthen java deps now rules_jvm_external has been updated.
* Update EdgeOptions constructor to use new ms:edgeOptions capability
  name (#7633)
* Add support for creating and removing virtual authenticators (#7760)
* Add support to debug virtual authenticators (#7842)
* Improving error message if a remote side responses with code 405
  Method Not Allowed.
* Better traces via OpenTracing.
* Added Netty-based HTTP client (-Dwebdriver.http.factory=netty)
* Selenium server now uses Netty
* [grid] https between components (#7767)
* [grid] Added file upload endpoint to the new grid
* [grid] Adding ability to discover and start Edge (both
  chromium-based and legacy)
* [grid] Only allow CORS when using a —allow-cors flag
* [docker] Re-enable existing docker functionality for Grid Nodes
* Checking for changes in frozen preferences in XPI-based
  FirefoxDriver only

v4.0.0-alpha-3
==============

* Add "relative" locators. The entry point is through the `RelativeLocator`.
  Usage is like `driver.findElements(withTagName("p").above(lowest));`
* Add chromedriver cast APIs to remote server (#7282)
* `By` is now serializable over JSON.
* Add ApplicationCache, Fetch, Network, Performance, Profiler,
  ResourceTiming, Security and Target CDP domains.
* Fixing Safari initialization code to be able to use Safari Technology
  Preview.
* Ensure that the protocol converter handles the new session responses
  properly.
* Expose devtools APIs from chromium derived drivers.
* Expose presence of devtools support on a role-based interface
* Move to new Grid, deleting the old standalone server and grid implementation.
* Switch to using `HttpHandler` where possible. This will impact projects that
  are extending Selenium Grid.
* Respect "webdriver.firefox.logfile" system property in legacy Firefox driver.
  Fixes #6649
* Back out OpenCensus support: OpenTracing and OpenCensus are merging, so
  settle on one for now.
* Only allow CORS when using a —allow-cors flag in the Grid server
* If you're using the Java Platform Module System, all modules
  associated with the project are generated as "open" modules. This
  will change in a future release.
* The version of Jetty being used is unshadowed.

v4.0.0.0-alpha-2
================

* Add Chromium-based Edge support. This involves adding a new Chromium driver to
  the tree too.
* Extra domains added for CDP: Network, Performance, Security, Target
* Firefox: enable full page screenshots
* Better support for Java 9+ modules
* Start reworking HTTP abstractions. These should better support streaming, and
  so will not require us to hold all requests in memory.

v4.0.0.0-alpha-1
================

* Many deprecated methods and classes deleted.
* Alpha version of new Grid Server, supports "standalone", "hub",
  "node", and completely distributed usage.
* Basic support for using Docker containers with the new Grid Server.
* Basic support for CDP landed via the "DevTools" interface.
* Basic support for OpenTracing landed. Use the "--ext" flag to the
  new Grid Server to provide the classpath to an OpenTracing
  implementation.
* Added support for WebSockets to the HttpClient
* Location of safari driver now configurable using
  "webdriver.safari.driver" system property.
* #6649: Legacy firefox driver respects "webdriver.firefox.logfile"
   system property.
* Added command to open a new window.
* Element screenshotting now possible
* Selenium Server now no longer includes HtmlUnit by default
* New Grid can output logs in single-line json format to stdout
* #6617 Implement equals() and hashCode() in `Select` element wrapper

v3.141.59
=========

* Restored remoteHost support
* [Grid] Adding a test to check that remoteHost is properly read and
  set.
* Fix mime-types of displayed content in help servlet.
* Encourage people to access help over https.
* Implement `WrapsElement` by `Select` element wrapper (#6616)
* Version number is an even better approximation of π.

v3.141.5
========

* Default the number of threads assigned to the server to 200,
  which is what it was in 3.13.0

v3.141.0
========

* Removed HtmlUnit driver and all its dependencies (including HtmlUnit and
  Apache HttpClient) from selenium-server-standalone. This drastically
  reduced the size of selenium server distribution package.
* Hub status should only count reachable proxies. Fixes #6494.
* Deprecated the original Actions API in favour of the W3C approach.
* Correct localisation of platform name (#6491)
* Beta commands in SafariDriver for opening a new window or tab.
* Clean up of internal of `Select` element wrapper (#6501)
* Acknowledge that Mojave is a `Platform` (#6552)
* Deleted many command-line options marked as deprecated some time
  ago.
* Removed Selenium's own deprecated `Duration` and `Clock` classes in
  favour of those provided by the JRE.
* Fixed WebDriverBackedSelenium servlet by registering a session
  finalization listener.
* Installing Firefox extensions in the same form as they provided,
  either as a file or as a directory. With the release of Firefox 62
  Mozilla discontinued support for unpacked sideloaded extensions in
  Release channel. Users must themselves choose proper format to use
  in their tests depending on the browser version they run tests in.
* Prepended command names in https error response reports (#6321)
* Removed the apache-backed httpclient.
* Fixing regression in Grid: if -hubPort was specified through CLI
  params but not -hubHost, the node tried to register to
  http://null:hubPort.
* Fixing regression in Grid by using browserTimeout again to set
  timeouts in the HttpClient.
* Grid: adding image for Safari Technology Preview, fixes #6297
* Grid: Nodes and Hubs can now be started in any order, and
  configuration will be correct Fixes #3064.
* Added a basic ServiceBuilder for Internet Explorer (#6181)
* Version number is a better approximation of π.

v3.14.0
=======

* Move or deprecate internal classes in java client
* Introduce basic JPMS support. This is experimental.
* The browser name of the Safari Tech Preview is not "safari" but
  "Safari Technology Preview". Who knew?
* Deprecated our own `Clock` interface for `java.time.Clock`
* Completely removed the GSON dependency. We now use reflection to try
  and find the class.
* Tiny clean up to try and make Grid a little more performant.
* Added new capabilities for safari driver: automaticInspection and
  automaticProfiling (#6095) This commit is from the "Fix a Bug,
  Become a Committer" workshop held at SeConf India.
* Removed support for geckodriver 0.13. It is time.
* Adding High Sierra to the platform set. Fixes #5969
* Enriching Hub Status to include Node info (#6127)
* Fixing potential Zip Slip Vulnerability, see
  https://snyk.io/research/zip-slip-vulnerability
* Allow temporary installation of FF extension (#1) (#5751)
* Fix windowSize option in Firefox in Javascript (#6075)
* Make ConnectionType serialize as integer (#6176)
* Pass found elements to the EventListener's afterFind method (#6191)
* Add native events under se:ieOptions. (#6183)

v3.13.0
=======

* Introduced our own JSON parser and outputter, allowing GSON to be
  removed from our dependencies.
* Exposing a `RemoteWebDriverBuilder` which can be used to construct
  instances of selenium when talking to servers that speak the w3c
  protocol.
* Fixed loading of Grid hub and node config files.
* Fixed `noProxy` handling in Grid.
* Added bindings for custom ChromeDriver commands
  (GET_NETWORK_CONDITIONS, SET_NETWORK_CONDITIONS and
  DELETE_NETWORK_CONDITIONS) that allows client code to utilize
  built-in throttling functionality. (#3479)
* Minimised data being encoded as JSON when serialising Java objects.
* EventFiringWebDriver now fires events before and after `getText` and
  implements `HasCapabilities`.

v3.12.0
=======

* Added `User-Agent` header to requests from Selenium to give remote
  ends more visibility into distribution of clients.
* Remove GSON from how we coerce JSON to Java types.
* Clean up the internals of Selenium's JSON handling, including
  deprecating places where GSON leaks from our APIs.
* Grid assignes node to a random free port if not specified.
  explicitly. Fixes #5783.
* Addressed concerns about backward compatibility of Grid's `-host`
  parameter.
* Implemented WebStorage in ChromeDriver and FirefoxDriver.
* Documentation clean up in `By`.
* `before/afterGetScreenshotAs` added to to WebDriverEventListener.

v3.11.0
=======

* Implemented `equals` and `hashCode` for `LoggingPreferences`
* Deleted deprecated methods from `*Options` and `MutableCapabilities`
* Converting an object to JSON now doesn't include the object's hash
  code.
* Removed deprecated methods from `RemoteWebDriver`.
* Switching Grid to use OkHttp rather than the Apache HttpClient.
* Internal change to better use Selenium's abstractions for handing
  JSON in Grid.
* Removed deprecated `GridRegistry.getHttpClientFactory` method.
* Removed `Registry.getConfiguration`

v3.10.0
=======

* Deprecate internal Duration in favor of java.time.Duration
* Fix handling of IE capabilities in Grid Nodes. Fixes #5502
* Fix problem where Grid wasn't starting Safari sessions
* Migrate Selenium Grid to reduce exporting GSON and Apache HttpClient
  as much to public APIs.
* Migrate Grid to use Selenium's own abstractions where possible. This
  means that more of it is using OkHttp rather than the Apache
  HttpClient.
* Fix an issue where RemoteProxy instances were causing an exception
  to be thrown if they weren't marked as a ManagedService.
* Deleting ability to run html suites with selenium-server-standalone,
  users are adviced to use htmlrunner

v3.9.1
======

* OkHttp backed instances can now connect to servers requiring
  authorisation. Based on PR #5444 proposed by @valfirst.

v3.9.0
======

* Switched to OkHttp for all HTTP communication. The version used can
  be changed back to the Apache HttpClient by setting the
  `webdriver.http.factory` system property to `apache`.
* Removed passthrough mode for the server.
* Grid: (implementation note) Start migrating servlets used to be
  command handlers.
* Upgraded every dependency to latest versions.
* Added varargs methods to `ExpectedConditions` in order to avoid
  annoying `Arrays.asList`.
* Better logging when new session creation errors.

v3.8.1
======

* Fixed Chrome mutator injecting null binary path into new session payload.
* Added mutator that stips grid-specific capabilities hurting IE driver.
* Fixed SafariOptions construction from plain Capabilities object.

v3.8.0
======

* Dropped support for PhantomJS, it's recommended to use headless Firefox or
  Chrome instead.
* Node skips configurations that does not match current platform, no more IE
  slots on Linux-based nodes.
* Introduced unique ids for node slot configurations. Hub injects UID of the
  matched configuration to the new request payload. Node mutates capabilities
  with matching config UUID only. This allows to have multiple configurations
  for the same browser in node config file.
* Implemented matching of some browser-specific capabilities on Grid hub,
  namely "marionette" for Firefox (default is true) and "technologyPreview"
  for Safari (default is false).
* "technologyPreview" capability is now honored again by SafariDriver.
* Added initial support for managing Grid Hubs and Nodes via JMX
* Removed `Alert.authenticate` and supporting classes
* Better handling of configuring SafariDriver via capabilities.

v3.7.1
======

* Including httpcore in the packaged libs.
* Sending geckodriver logs to stderr by default. The default log level
  is low enough that the log does not look polluted. Geckodriver does
  not allow to separate its own log from the browser logs, so messages
  from the browser log can appear in the log even on the lowest level.
* Avoid sending the shutdown command to driver services that don't
  support it.
* Add support for customizing the Grid Registry.

v3.7.0
======

* Firefox and Chrome binary paths specified in Grid Node configs are
  now honoured.
* W3C spec compliant drivers need not return RGBA values for colours
  defined in CSS.
* Minimise disk usage when starting new remote sessions.
* SafariDriver and legacy FirefoxDriver can now be configured when
  using the remote server through Capabilities. Notably, this allows
  the Safari Technology Preview to be used if it's installed.
* Implemented the ability to configure the firefox log target using
  the driver service builder or a system property. Logs are sent to
  the null output stream by default. Fixes #4136
* Simulate some w3c Actions commands using the old APIs. This allows a
  local end that only speaks the JSON Wire Protocol to use
  "Actions.moveTo" when communicating with a W3C compliant remote
  end. Apparently, people need this.
* More fluent APIs in `*Options` classes.
* Moving some safari config options from `SafariOptions` to the
  `SafariDriverService`.
* In Grid and Remote, force the use of the legacy Firefox driver when
  marionette flag is set.
* The protocol handshake now uses a `CapabilityTransform` to convert
  an JSON Wire Protocol capability to one or more w3c
  capabilities. These are located using the standard Java
  ServiceLoader framework.
* The protocol handshake also uses a `CapabilitiesFilter` that
  extracts keys and values specific to a browser from a JSON Wire
  Protocol capabilities map. Again, these are loaded using the
  `ServiceLoader` framework.
* `requiredCapabilities` are now no longer sent across the wire.
* Fixed handling of unrecognized platform names returned by remote
  end. #4781
* Better error messages from the htmlrunner.
* Migrated from using `DesiredCapabilities` to either
  `MutableCapabilities` or (preferably) `ImmutableCapabilities`.
* Move building of locators to How enum


v3.6.0
======

* Remove direct dependency on HTMLUnit and PhantomJS from Maven
  artifacts.
* All `*Option` classes now extend `MutableCapabilities`
  `new RemoteWebDriver(new ChromeOptions());`
* Deprecating constructors that don't take strongly-typed `*Options`.
* Improved exceptions when a `Wait` times out when using a
  `WrappedWebDriver`.
* Added `Interactive` interface to EventFiringWebDriver. Fixes #4589
* Add options to start Firefox and Chrome in headless modes.


v3.5.3
======

Important note:

* The new standalone server and Grid Node feature a "pass through"
  mode. If you see changes to the Selenium WebDriver "logging" APIs or
  automatic capture of screenshots on error (or if you want the old
  behaviour back) you can do so by executing:

  `java -jar selenium-server-standalone-3.5.3.jar -enablePassThrough false`

* Allow user-provided DriverProviders to override default providers in
  passthrough mode.
* Fixes issue with W3C Actions not being properly filled when multiple
  input sources are used.
* Platform that represent platform families ("WINDOWS", "UNIX", "MAC",
  and "IOS") return `null` from `Platform.getFamily`.
* Handle null return values from chromedriver. Fixes #4555
* Synchronized "platform" and "platformName" capability values. Fixes #4565
* Add iOS `Platform`.
* Fix wrapping of maps with null values. Fixes #3380
* Grid: Add new w3c compatible `status` endpoints for Hub and nodes.
* Grid: Properly parse responses from upstream nodes that are not
  200. Fixes issue where `NoSuchElementException` was mistaken for a
  `NoSuchSessionException`.
* Grid: Handle re-encoding issue when transferring text from the
  endpoint node to the local end.


v3.5.2
======

Important note:

* The new standalone server and Grid Node feature a "pass through"
  mode. If you see changes to the Selenium WebDriver "logging" APIs or
  automatic capture of screenshots on error (or if you want the old
  behaviour back) you can do so by executing:

  `java -jar selenium-server-standalone-3.5.2.jar -enablePassThrough false`

* Avoid encoding numbers as floats rather then longs in JSON payloads.
* New "pass through" mode supports file uploads again.
* Added support for querying running sessions via the
  "/wd/hub/sessions" endpoint
* Fix a NullPointerException when deserializing exceptions from a
  remote webdriver.
* Handle the `macOS` as a valid platform name, as this is used by
  safaridriver.


v3.5.1
======

Important note:

* The new standalone server and Grid Node feature a "pass through"
  mode. If you see changes to the Selenium WebDriver "logging" APIs or
  automatic capture of screenshots on error (or if you want the old
  behaviour back) you can do so by executing:

  `java -jar selenium-server-standalone-3.5.1.jar -enablePassThrough false`

* Bump guava to version 23. This is work around an issue where maven
  will select guava's android variant if using a ranged selector.


v3.5.0
======

Note: Never pushed to maven due to problems resolving guava version.

Important note:

* The new standalone server and Grid Node feature a "pass through"
  mode. If you see changes to the Selenium WebDriver "logging" APIs or
  automatic capture of screenshots on error (or if you want the old
  behaviour back) you can do so by executing:

  `java -jar selenium-server-standalone-3.5.0.jar -enablePassThrough false`

* Bump guava to version 22.
* Add support for a new "pass through" mode. This allows a connection
  from your test's RemoteWebDriver, through the Grid Hub, to a Grid
  Node, and down to a DriverService and thence the browser to use the
  same WebDriver protocol (the Json Wire Protocol or the W3C one) end
  to end without translation. This mode can be disabled by starting
  the standalone server or Grid node with `-enablePassThrough false`
* Pin Guava to version 21+. This fixes problems with lambdas being
  used as ExpectedConditions.
* Start making *Option classes instances of Capabilities. This allows
  the user to do:
  `WebDriver driver = new RemoteWebDriver(new InternetExplorerOptions());`
* Better handling of `getText` when confronted with a Shadow DOM
* Better logging when using an Augmenter fails.
* Make it easier to add new @FindBy annotations.
* Attempt to kill processes before draining input, error, and output
  streams. This should reduce apparent hanging when closing Firefox in
  particular.
* Grid will make use of W3C capabilities in preference to the JSON Wire
  Protocol ones.
* Fixing boolean command line arguments (#3877)

v3.4.0
======

* Geckodriver 0.16 is strongly recommended
* LiFT package is now available as a separate maven dependency.
* Deprecated numerous constructors on RemoteWebDriver that are no
  longer useful.
* `requiredCapabilities` are now being removed. Use
  `desiredCapabilities` instead.
* Legacy Firefox support broken out into a `XpiDriverService`, but
  still relies on the same `webdriver.xpi` as before.
* Better support for W3C endpoints

v3.3.1
======

* Better support for geckodriver v0.15.0. Notably, exceptions returned
  from the remote end are now unwrapped properly.
* Fix a bug with the status page of the standalone server.
* Deprecated `Capabilities.isJavascriptEnabled`


v3.3.0
======

* Support for geckodriver v0.15.0.
* Deprecated seldom used FirefoxDriver constructors.
* Added javadocs to show best way to create a new FirefoxDriver:
  ```
  DesiredCapabilities caps = new FirefoxOptions()
       // For example purposes only
      .setProfile(new FirefoxProfile())
      .addTo(DesiredCapabilities.firefox());
  WebDriver driver = new FirefoxDriver(caps);
  ```
* Stream New Session capabilities to disk before use to avoid eating
  every byte of available memory.
* Beginnings of local-end implementation of the w3c New Session
  capabilities. There's still some work to do.

v3.2.0
======

* Updated Guava to version 21 and started using Java 8 features. Users
  are recommended to update too.
* Fix a problem starting Firefox caused by missing libraries
* Experimental support for the W3C Action endpoints
* Remove deprecated `FluentWait.until(Predicate<?>)` method. This
  should make lambdas work properly with Wait instances now.
* Bump htmlunitdriver version to 2.24
* [Grid] Allow for customisation of TestSlot (#3431)

v3.1.0
======

* Update how the WebDriverException gathers system info. Resolves an
  issue with slow-downs on OS X Sierra.
* Update Wait and FluentWait for Java 8. Requires an update to the
  latest guava version 21.0
* Remove old marionette actions support.
* Selenium server now understands a "-version" flag.
* `WebElement.getText` now returns text from the Shadow DOM.
* Implemented a more straightforward way to specify firefox binary in
  GeckoDriverService builder.
* Firefox can now pick a channel to start from on Windows via
  `FirefoxBinary.Channel`
* ChromeDriver now supports `NetworkConnection` interface.
* htmlrunner bug fixes, in particular around `getValue`, and relative
  paths to the suite file.
* Fixes to make htmlrunner work.
* Removed native events from FirefoxDriver.
* Truncate the string representation of capabilities for display purposes.
* Implemented session storage for w3c codec.
* Change server dependency to htmlunit 2.23.2.
* [Grid] DefaultCapabilityMatcher now considers "browserVersion".
* [Grid] Fix node registration issue for Se2.x nodes with -servlets.
* [Grid] Windows nodes are no longer displayed as "mixedOS".
* [Grid] browser version capability specified on node command line no longer parsed to a Number

v3.0.1
======

* Include ElementScrollBehavior enum in the release.
* Add dependency on HTMLUnit to be included in the standalone server.
* Grid new session requests pass original request through to the node
  without any modifications.
* Fix NPE in htmlrunner when port is not specified.
* FirefoxDriver (legacy) fix to cleanup temp filesystem on quit (#2914 #2908).

v3.0.0
======

IMPORTANT CHANGES

* Firefox is only fully supported at version 47.0.1 or earlier. Support
  for later versions of firefox is provided by geckodriver, which is
  based on the evolving W3C WebDriver spec, and uses the wire protocol
  in that spec, which is liable to change without notice.
* You may wish to choose an ESR release such as 45.4.0esr or earlier.
* Firefox 47.0.0 is not supported at all.

Other major changes:

* Stability fixes in Grid.
* All Grid nodes can now offer help.
* Updated to the latest version of HtmlUnitDriver.
* Re-enabled log gathering for the standalone server.
* Firefox profile is passed to both the legacy FirefoxDriver and
  geckodriver.

v3.0.0-beta4
============

IMPORTANT CHANGES

* Firefox is only fully supported at version 47.0.1 or earlier. Support
  for later versions of firefox is provided by geckodriver, which is
  based on the evolving W3C WebDriver spec, and uses the wire protocol
  in that spec, which is liable to change without notice.
* You may wish to choose an ESR release such as 45.4.0esr or earlier.
* Firefox 47.0.0 is not supported at all.

Other major changes:

* Remove OSS safaridriver in preference for Apple's own SafariDriver
  that ships as part of Safari 10.
* [Grid] -nodeConfig (json) files have a new flatter format (#2789)
* [Grid] Fix #2721, -nodeConfig (json) settings were not always
  applied
* [Grid] Cleanup the api for RegistrationRequest -- will break
  compilation for people moving from 2.x -- removed the ability to
  change the GridNodeConfiguration reference via the
  RegistrationRequest object and removed all other setters
* Include the selenium version in exceptions (again).
* [HTML suite runner] Better flag compatibility with the 2.x
  selenium-server-standalone.
* Fix #2727, combine -jettyThreads and -jettyMaxThreads (#2735)
* [atoms] Cleaning up getAttribute dependencies, reducing size from
  36K to 7K
* Better support for the W3C webdriver wire codec.
* Added ability to use FirefoxOptions when starting firefox.
* Fixed a bug where the firefox profile was not being passed to the
  geckodriver.
* SafariDriver's Technology Preview can be used if installed.

v3.0.0-beta3
============

* The HTML table runner can be downloaded as selenium-html-runner.jar.
* leg-rc jar is no longer bundled into the main selenium jar. Instead,
  it needs to be downloaded separately.
* Removed deprecated SessionNotFoundException in favour of the
  NoSuchSessionException.
* Added a "protocol handshake" on starting a remote webdriver. We now
  log the wire dialect spoken (original as "OSS" and the version
  tracking the W3C spec as "W3C"). This may result in multiple calls
  to the new session endpoint on local end start up.
* Removed command names ending with "*w3c" and instead handle this
  with different codecs.
* Switch to using atoms for 'getAttribute' and 'isDisplayed' when
  communicating with a W3C remote end.

v3.0.0-beta2
============

* maven packaging fixes
* Update GeckoDriver --port argument in all bindings
* System property webdriver.firefox.marionette now forces the server in marionette or legacy firefox driver mode, ignoring any related Desired Capability
* Grid fix NPE's on registration when -browser not specified

v3.0.0-beta1
============

IMPORTANT CHANGES

* Minimum java version is now 8+
* The original RC APIs are only available via the leg-rc package.
* To run exported IDE tests, ensure that the leg-rc package is on the
  classpath.
* Support for Firefox is via Mozilla's geckodriver. You may download
  this from https://github.com/mozilla/geckodriver/releases
* Support for Safari is provided on macOS (Sierra or later) via
  Apple's own safaridriver.
* Support for Edge is provided by MS:
  https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
* Official support for IE requires version 9 or above. Earlier
  versions may work, but are no longer supported as MS has
  end-of-lifed them.

Other major changes:

* New html-table runner backed by WebDriver.
* Unused command line arguments are now no longer parsed.


v2.53.0
=======

FINAL 2.X RELEASE.

No more HtmlUnitDriver... Moved to a subproject https://github.com/SeleniumHQ/htmlunit-driver

Java:
    * Query Selenium Server to retrieve actual running port.  Fixes #1299
    * Upgrading HtmlUnit to 2.20
    * Java: Introducing NoSuchSessionException in the core API
    * Fixing memory leak in TemporaryFileSystem Fixes #1679
    * Fixing rectangle dimension, and adding equals and hashCode
    * Java: Adding a new W3C-compatible string error code
    * Add support to listen "refresh" events. Fixes #1584
    * extended ExpectedConditions with a list of new ones. New logic operators + conditions for css and html attributes
    * Java: Deleting webbit a test server
Grid:
    * cleanup cycle needs to be persisted to allMap, since that's where it's read from in other places. this stuff needs some cleanup...
    * adding grid e2e distribution test
    * fix mixed content issue
    * when sorting nodes for consideration, also take into account last time accessed for a more even distribution across nodes over the lifetime of the grid.
    * Also fix using the RemoteProxy's getResourceUsageInPercent instead of calculating it in the sort.  Fixes #1673
    * make HttpClientFactory private methods protected to allow one to extend / override.

v2.52.0
=======

Firefox:
    * Weakening platform restriction to enable 64-bit support
    * Fixing closed window handling in FF45
    * Implementing a capability that disables overlapping checks - "overlappingCheckDisabled"

WebDriver:
    * Fix deselecting options in <select>, actually throw Exceptions documented
    * handle special case spellcheck attribute Fixes #1605

Grid:
    * Allow forwarded response to be modified by CommandListener

v2.51.0
=======

Firefox:
    * finding another edge case where we need to check -1 from the right and bottom of the element's rect
    * stop gap to help with elementFromPoint not being completely reliable
    * Implementing ability to return non-boolean capabilities
    * Bumping up the max version
    * Fixing scrolling to elements in overflow:hidden blocks. Fixes issue #1527
    * Fixing issue #1509
    * Deleting deprecated constant
    * Deleting unused method FirefoxBinary.createProfile

WebDriver:
    * Fixing httpOnly cookies in HtmlUnit driver
    * Adding close connection support to HttpClient to combat hanging open files Fixes #1080
    * Increasing log buffer max size
    * optimize JsonToBeanConverter In case the input is a JsonNull, return null asap.
    * Add toString() to DefaultElementLocator
    * fix #1575

v2.50.1
=======

    * add a way to add to the list of capabilities to consider to the default capability matcher
    * Grid: Fixing timeout issue again... Why isn't it covered by tests? A rhetorical question...
    * Java: Improving handling of marionette errors
    * Java: Replacing ByteArrayOutputStream with CircularOutputStream to prevent OOM exception. Fixes issue #427
    * Java: Moving CircularOutputStream to another package (it's an internal class so no need to create a copy)
    * fix #1562

v2.50.0
=======

WebDriver:
    * Firefox: fixing sendKeys throwing "cross-process JS call failed " in FF45
    * Firefox: fixing click to multirect elements broken by the previous PR
    * Check element corners and middle for clickability
    * Fix keyCodes for some characters in the FirefoxDriver.
    * Firefox: fixing malformed URL handling. Fixed issue #1248
    * Prevent Firefox from opening a page on a second or later run and/or after some amount of time
    * Fixing executable finder on Windows
    * Fixing HtmlUnit driver to pass recently added tests
    * Firefox: fixing appending to contenteditable elements. Fixes issue 1419
    * correct javascript remote client ui executor to use new promise based execute introduced by 0fa587 Fixes #1521
    * Firefox: Adding an extra check to result wrapper. Fixes issue #1426
    * Changes to simplify the execution of finding elements.
    * Fixing issue #1479. The only reasonable thing we can do for select elements is to disable clickability checking, see https://gist.github.com/p0deje/c549e93fa19bf7aaee49

Grid:
    * Found a better place to convert seconds to milliseconds

v2.49.1
=======

Grid:
    * Fixing timeout issue in the Grid.

WebDriver:
    * Allow GeckoDriverService to be extended.
    * Update tagName test searching for "" to throw

v2.49.0
=======

WebDriver:
    * Add maven coordinate for the Firefox Driver when built using Buck.
    * Remove guava dep on the selenium-apis when built using Buck.
    * on osx for firefox, fallback to checking homebrew install, if the default isn't there
    * Pass Options.ime() through to the wrapped driver.
    * Fixing HTML suite test runner
    * Bump guava to version 19
    * Ensure that the buck-built core library has no third party dependencies.
    * Updating textContent attribute test for IE9
    * Adding appropriate wait to AuthenticatedPageLoadingTest
    * Refactor concrete WebDriverException#getSupportUrl's
    * Fix a NullPointerException in RemoteWebDriver.getCurrentUrl
    * Reduces time wasted in when using a native driver
    * add the useful information about the session / capabilities in the exception when the 'browser may have died'
    * give the cleaner almost double the time to clean up the sessions (a whopping 9 more ms). Hopefully will deflake this test in CI.
    * Adding El Capitan (OS X 10.11) to Platform
    * Updating IE driver to fix clearing of <input type='number'> fields
    * Treat a null response to getCookies as [].
    * Restore a isNativeEventsEnabled check.
    * Updating TestNG.
    * firefox: Throw error when element cannot be clicked
    * Include Windows 10 in the Platform enum.
    * adding selenium server pass throughs for W3C dialect of alert / window / cookie commands.
    * clearing a number input with invalid text, should actually clear it.
    * Add innerHTML attribute support to HtmlUnitDriver
    * Add textContent attribute support to HtmlUnitDriver
    * make RemoteMouse public, akin to RemoteKeyboard. Not sure why it wasn't made public when it was originally moved out of RWD.
    * Use platform-dependant line separator instead of hardcoded '\n'.
    * Safari should only specify MAC as platform in default desired capabilities
    * improve javadoc for FluentWait
    * Changing interface name to be more Java-ish
    * Update GeneratedJsTestServlet to work with test files that use Closure's module syntax.
    * Adding release-v3 crazyfun target
    * should be able to send keys to a content editable div that is initially empty
    * Implementing pure WebDriver grid server (v.3)
    * Making BrowserLauncherFactory non-static, to avoid global configuration, for better testability and configurability (per object, not globally)
    * Server: Moving shared classes to a more appropriate place out of the legacy server namespace
    * Deleting RemoteControlLauncher as it is just a couple of static methods to parse command line options, that should belong to the server.
    * Refactoring GridLauncher: replacing big switch with a map of simple launchers; it's a step toward decomposition of the GridLauncher and dynamic discovery of the elements that can be launched.
    * Refactoring GridLauncher build process
    * Decoupling node registration module (SelfRegisteringRemote) from concrete implementation of the server to be run on the node.
    * Refactoring grid node registration procedure to make server start/stop methods as simple as possible.
    * Breaking another dependency of Grid on RC server
    * Deleting fail-fast check of browser configuration, this breaks another Grid dependency on parts of RC server. The check must be performed in RC server (if ever).
    * Actually fix the Safari BUCK build
    * Monkey-patching W3C-compatible cookie serialization to fix Marionette. A more proper fix would be to change the parameters of a Command from Map to Object.
    * There is no need to create a profile for Marionette
    * removing prebuilt SafariDriver extension, bumping version number to 2.48
    * Fixing tests for JsonToBeanConverter to avoid "error" key collision that has got new semantics in the standard
    * Stop exposing embedded jetty out of SeleniumServer
    * Breaking unwanted grid dependency on parts of RC server
    * Deleting JsonKey, it's a useless abstraction
    * Breaking unwanted grid test dependency on RC server (the removed attribute is not used actually)
    * Fixes #1140, #1334, #1263, #669, #1165, #1132, #1186, #1203, #1214, #1242
            #1241, #1240, #1238, #1237

v2.48.2
=======
WebDriver:
    * Update fix for ChromeDriver to work with Marionette/Wires also.

v2.48.1
=======
WebDriver:
    * Fix #1123, ChromeDriver doesn't start up.

v2.48.0
=======

WebDriver:
    * java: add ExpectedConditions#numberOfWindowsToBe
    * Bump the buck version to the latest version.
    * fix maven build for jetty 9
    * adding pom files for jetty 9 repakced jars and the empty-javadoc jar used to upload to maven central
    * Restoring use of queued thread pool in the hub
    * Deleting commented code
    * Fixing UploadServlet in test environment to conform to servlet-api 3.1
    * Update jetty readme
    * Bump the Jetty version from 7 to 9
    * Updating screenshot code to retain scroll bars in required directions.
    * Updating screenshot code to prevent resizing if window is large enough.
    * Removing superfluous comment that was causing javadoc build error in ci
    * fixing the remaining jdk 8 javadoc errors
    * Make the javadocs for java/server too.
    * fixing java command line options for 'go' MaxPermSize -> MetaspaceSize in java 8
    * updating third party wicked good xpath to e33a3876a6d592b824942751d86ba5f2b08a3dc5 Fixes #1040
    * Removing use of Windows hooks for taking screenshots in IE.
    * Firefox: fixing sendKeys for contentEditable elements, it should append to the existing text.
    * Buck version bumps
    * Update closure-library to 04a8ceefc6972511e669563d47abeca18b28092c
    * Firefox: implementing mouse doubleclick action via nsIDOMWindowUtils
    * Add FluentWait.withMessage with string supplier
    * Firefox: fixing events generated as a result of click on an element that disappears after the click.
    * Firefox: implementing mouse up/down actions via nsIDOMWindowUtils. This makes mouse actions "more native". In particular, if there are overlapping element at the click point, the driver will click the topmost element.
    * Safari: stop embedding the extension in the client libs, it should be downloaded and installed manually.
    * Deleting a couple of redundant casts
    * No need to cast, the variable has required type already
    * Deleting redundant logging to console in tests
    * HtmlUnit: Ignoring one more test
    * Disabling a test if JS is not enabled
    * HtmlUnit: Unignoring a magically working test
    * HtmlUnit: restoring backward compatibility after changes in getCurrentUrl semantics
    * WDBC: restoring backward compatibility after changes in getCurrentUrl semantics
    * Deleting native events from firefox driver
    * Deleting outdated assumes for unsupported Firefox version
    * Resorting tests for moveByOffset action
    * Firefox: don't dispatch keypress event if defaultPrevent() of the keydown event is called because KEY_FLAG_PREVENT_DEFAULT has no effect
    * Moving IE specific test to IE test suite
    * Firefox: throwing proper exception on an attempt to find an element in the deleted frame
    * Firefox: changing getCurrentUrl to return top level browsing context address (to conform to the standard)
    * Firefox: fixing page source for plain text pages
    * Adding information on the reasons to ignore tests
    * fix the client and server classpath
    * Move the servlet-api package for easier automated updates.
    * Renaming the Jetty7AppServer to remove the version number.
    * Fix up failing htmlunitdriver test.
    * Simulating window.getPosition and setPosition operations
    * Simulating switchTo().window by name
    * Fixing test to switch back to the original window after opening a new one.
    * Implementing standard-compliant window operations
    * Implementing standard-compliant getSize, getPosition and getPositionInView
    * Deleting marionette tcp connector
    * remove unused css transform code from location in view
    * use BasicHttpRequest instead of EnclosingRequest
    * htmlunit passes the httponly cookie test
    * fix maven dependency of htmlunit driver on the support package
    * don't replace a platform specified to the add browser method, like the TODO says
    * Simulating submit operation for standard compliant drivers
    * Making sendKeys more backward compatible (because i18n tests)
    * Change buils to builds
    * Unignoring marionette tests passed after sendKeys rework
    * Fixing getSize operation broken by copy-paste from getLocation
    * Reworking sendKeys to send characters one by one, this is standard compliant behavior
    * Making switchTo().window more standard compliant
    * Making getLocation and getSize standard compliant
    * Making timeout setting methods standard compliant
    * Fixing "no such alert" error mapping
    * Making findElement(s) commands standard compliant (except for link text locators)
    * java: fix log string for RemoteTargetLocator#defaultContent
    * Update check to see if we are speaking to a W3C remote end point
    * specificationLevel is defined in http://w3c.github.io/webdriver/webdriver-spec.html#capabilities
    * use exception message.  no method overload exists for log.severe
    * Upgrade HtmlUnit 2.18
    * ReflectionBackendDriverSupplier: two arguments Capabilities
    * HtmlUnitMouse: no need to .focus()
    * Fix HtmlUnitWebElement.getCssValue
    * AMO requires the max version be an actual release version number
    * Correcting IE driver build process to create executables runnable on Windows XP Fixes issue #936.
    * Improve comments and error message on scrolling_test#testScrollingAccountsForScrollbarWidths.
    * Java client side support for launch_app command of chromedriver:
    * Add "additionalCommands" support to DriverCommandExecutor.
    * Use directExecutor().
    * Updating IE driver C++ code to use Visual Studio 2015.

Grid:
    * Run grid tests using Buck.
    * removing '-debug' command line parameter for grid hub, it isn't used anywhere.
    * adding edge icon for grid


v2.47.0
=======

** Java 7 is now requried, but you really should be on 8, since 7 is EOL **


WebDriver:
* Supports native events for Firefox version 31 (immediately previous
  ESR). Native event support has been discontinued for versions of
  Firefox later than 33. Synthetic events tested on Firefox versions 31
  (immediately previous ESR), 38 (immediately previous release and current
  ESR), and 39 (current release).
* Beta Alert.AuthenticateUsing api implementation added, beta testing with IE.
* Added TakesScreenshot to WebElement.
* (provided by Microsoft) Added language bindings for Microsoft Edge browser
* Make it possible for users to override how the Lock is obtained with Firefox.
* (provided by Ahmed Ashour) Added implementation of Alert for HtmlUnit driver.
* (provided by Ahmed Ashour) Fixed findElementByXPath for HtmlUnit driver to
  work for XML pages.
* (provided by Ahmed Ashour) Fixed HtmlUnit driver to allow for manipulating
  elements in SVG documents.
* (provided by Ahmed Ashour) Fixed HtmlUnit driver so that deleteAllCookies
  deletes cookies only for the current domain, matching other implementations.
* (provided by Tamás Buka) Created an overload to
  ExpectedConditions.frameToBeAvailableAndSwitchToIt support to index and
  WebElement so that WebDriverWait can use this mode to switch frames.
* (provided by Joshua Bruning) Allow access to local profiler logs. An
  exception may be thrown if the WebDriver server does not recognize profiler
  logs. In this case, the user should be able to see the local profiler logs.
* (provided by Sergey Tikhomirov) Changed visibility of isDecoratableList
  method of DefaultFieldDecorator to protected for use with custom PageFactory
  implementations.
* Froze javascript.enabled property in Firefox profiles
* FIXED #426: (provided by Anand Jayaram) Default the hub port to 4444, if no
  port was provided.
* FIXED #638: Disabled HTTP Public Key Pinning (HPKP) when the
  webdriver_accept_untrusted_certs capability is set. As of Firefox 39, Firefox
  ignores certificate overrides if the domain's certificate is pinned.
* FIXED #644: (provided by Brett Randall) Modified ErrorHandler to tolerate
  non-Number lineNumber, and also attempts to safely parse a non-Number Object
  if it receives a non-Number. If absent or non-numeric it now continues to
  build the StackTraceElement (instead of aborting that frame) and uses the
  conventional -1 for lineNumber.
* FIXED #658: Disable reading list info panel in Firefox.

Server:
* Added a guard that prevents starting "IE instead of Opera" (or some other
  unwanted browser that obviously does not match the desired capabilities).
  Previously if a new session request is forwarded to a node it results in a
  driver instance creation in any case. For example, let's suppose a user
  starts a node with -browser browserName=opera option, and there is no
  operadriver in the classpath. Then the user requests a new remote driver with
  browserName=opera. The hub forwards the request to the node, and the node
  attempts to find the "best matching" driver provider. As far as opera is not
  available, it can start any other browser. Because "best matching" does not
  imply matching. The new guard prevents this unwanted behavior.

Grid:
* Added support to grid for Microsoft Edge driver
* (provided by Dima Kovalenko) Sort Grid Proxies in order of least busy to
  busiest. This should prevent situation where one node is running multiple
  sessions while several nodes are completely idle.

RC:
* Removed start of Firefox with -silent option to prevent crash in Firefox.

IDE:
* FIXED #570: Add ability to record elements that do not have href attributes.

v2.46.0
=======

Important changes in this release:

* Supports native events for Firefox version 31 (immediately previous
  ESR). Native event support has been discontinued for versions of
  Firefox later than 33. Synthetic events tested on Firefox versions 31
  (immediately previous ESR), 37 (immediately previous release), and 38
  (current release and current ESR).
* Remove all support from both webdriver and RC for Presto-based
  Opera. Blink-based Opera is still supported!
* Added beta Marionette driver (for Firefox OS and recent desktop
  releases).
* Fixing critical selenium server error caused by a user registering a
  driver class compiled with a higher Java version than the server is
  running (eg: server runs with Java 7, but the driver is comopiled to
  target Java 8)
* FirefoxDriver: now supported on OpenBSD (added by minusf@gmail.com)
* HtmlUnitDriver: Updated to HtmlUnit 2.17. Requires Java 7 or above to work.

Other notable changes:

* Added ability to clear file input fields for Firefox.
* Fix bug in Safari where Selenium updated the page under test in some
  circumstances.
* HtmlUnit: do not disable mouse notifications when js is disabled,
  css is also related to this information (only partly implemented in
  HtmlUnit at the moment)
* Updated htmlunitdriver to use htmlunit 2.17
* Upgraded commons-exec from 1.1 to 1.3
* Changed capability name from pageLoadingStrategy to pageLoadStrategy
* FIX: Google Code issue #7749: Add Get/Set network connection
  commands to JsonHttpCommandHandler to be able to use commands in
  selenium grid.
* Allow clients to specify TCP timeouts in the remote webdriver.
* Allow the chrome binary passed in capabilities to have a higher
  priority than node configuration.
* ChromeDriver: Added ability to pass whitelisted-ips option to the
  chromedriver
* Implement lazy loopback detection. This provides ~10x speed
  improvement of selenium server startup.
* Allow loading option descriptions from JSON file instead of
  Properties, allowing the server to manage order of options in the
  help message
* SafariDriver: In SafariDriver's page script, copy window properties
  to goog.global. (provided by juangj@google.com)
* Add a method toList that allows converting CompositeAction to JSON
* FirefoxDriver: Skip the profile cleaning step when launching Firefox
* Implement both integer (legacy) and string (standard) response status
  for the JSON wire protocol
* FirefoxDriver: Disable https://wiki.mozilla.org/Advocacy/heartbeat
  Firefox 37+ feature in browser sessions started by FirefoxDriver.
* FirefoxDriver: Added getters to FirefoxProfile to allow reading
  preset preference values
* PageFactory: Changed default value of how part of @FindBy annotation
  from ID to UNSET, but treat them equivalent to ensure backward
  compatibility
* PageFactory: Provide ability to use custom annotations. (Provided
  by Artem Koshelev)
* Use DaemonExecutor from commons-exec instead of DefaultExecutor.
  Fixes Google Code issue 4734. (Provided by Richard Atkins)
* FirefoxDriver and Java language bindings now handle both legacy and
  W3C specification dialects of element reference serialization in the
  JSON wire protocol.
* FirefoxDriver:  Don't force garbage collection in httpd.js for
  Firefox when connections are closed

v2.45.0
=======

Important changes in this release:

* Native events in Firefox relied on an API that Mozilla no longer
  provides. As such, fall back to synthesized events on recent Firefox
  versions.

Other changes:

* When Selenium is unable to interact with an element, such as the
  case when an element is missing or disabled, this change will output
  exactly how Selenium is attempting to locate the element, such as
  the XPath or id of the element. This greatly speeds up
  troubleshooting issues, as the exception message clearly states what
  element is broken/missing for common problems like an
  ElementNotFoundException.
* improve ByCssSelector#toString
* Remove automatic installation of the SafariDriver in Java.
* Complete Selenium Java Server support for Blink based Opera
* Upgrading PhantomJS driver
* Pull HttpClient implementation details out of HttpCommandExecutor.
* Fix issue 8254: Extensions were incorrectly transferred between
  Windows client and Linux grid node, because ZipEntry had incorrect
  name with '\' as separators.
* Adding capabilities and browser type for Opera Blink, and
  configuring tests to run in Opera Blink
* Adding support for Blink-based Opera to Java binding
* Adding Yosemite platform
* Allowing to set an arbitrary platform capability even if it can't be
  converted to Platform enum. Non-standard platform values can cause
  matching issues on Grid, but they can be usable for third-party Grid
  implementations
* Taking XML namespaces into account when searching by XPath. Checked
  to work in Firefox. Chrome supports namespaces out of the box. Need
  to update IE and Safari drivers to use the updated atom and test
  them carefully.

v2.44.0
=======

  * Updating Native events to support Firefox 24, 31, 32 and 33
  * Update calls to deprecated guava methods.
  * Remove the deprecated DatabaseStorage interface. And callers. Note that the browser implementations may still have an implementation of these interfaces, but nothing in the main project implements it so we should be okay.
  * Bump the version of guava to 18
  * Bringing MarionetteConnection in line with the current marionette state (FF33)
  * Add new tests for some wait conditions Also add the ExpectedConditionsTest to the test suite.
  * Update FindBy annotations description
  * Moving last part of browserlaunchers package from client to server
  * Moving Proxies utility class to server
  * Moving LauncherUtils to the server
  * Moving utility method isScriptFile to the only class where it is needed
  * Deleting tests for removed deprecated classes
  * Moving more RC stuff to the server
  * Moving tests too
  * Moving proxy management stuff to the server, it is used in RC browser launchers only
  * Using asMap as well as toMap to convert an object to Json
  * Using JsonNull.INSTANCE instead of null
  * Removing deprecated classes
  * Log stacktrace. Adds more info on catch to be put into the log instead of just console.  This will help debug issues when one has access to grid hub log but no access to console.
  * Remove unused static import of Ignore.Driver.HTMLUNIT.
  * Remove obsolete ChromeOptions code.
  * trim() HTTP response content because some drivers send back a response containing trailing null bytes, which the GSON parser does not like.
  * If JsonParser.parse() fails to parse a string obtained from a reflective call to a toJson() method, assume it is a primitive string.
        This is the case for, e.g., FirefoxProfile.toJson(), which returns a base64-encoded zip file. That string likely contains at least one '/', which the Gson parser rejects.
  * Fixing SessionId from json converter to better handle the case of null sessionId
  * Fix the Eclipse config. The new gson dependency wasn't added. Now is :) Also switched a call in HtmlUnitWebElement to use guava rather than commons-lang since that's already included in the build configs for both Buck and CrazyFun.
  * Get the Buck build working again.
  * HtmlUnit: add text to the end of input fields. This makes the htmlunit driver work as the other drivers do.
  * HtmlUnit: Fix getAttribute for dynamic properties.
  * Enable Html5CapabilitiesTest for HtmlUnit
  * Fix classpath for running tests in eclipse This allows the htmlunitdriver tests to run in Eclipse.
  * Fixing broken CrossDomainRpcLoader
  * Implementing autoconverion of platform in Capabilities on write
  * Moving from org.json to gson because the license. Fixes issue 7956
  * Revert "Bump the version of webbit to 0.4.15"
  * Optimizing finding multiple elements by id by using CSS selectors if available. Fixes issue 7682
  * Fixing WDBS compatibility with IE5. Fixes issue 7938
  * HtmlUnitDriver: Initial code cleanup.
  * Eclipse classpath fixes for htmlunit.
  * Deflake a test.

v2.43.1
=======

  * Fixing socketlock bug with reusing the same profile multiple times

v2.43.0
=======
WebDriver:

  * Updating Native events to support Firefox 24, 31 and 32
  * Add note on stale element checks and a WebElement represents a DOM element
  * Upgrade third party dependency JavaScript-XPath to 0.1.12
  * Fix example code: "using(-Chrome)DriverExecutable"
  * Make event_firing_test.html pass in Firefox 24 ESR.
  * Fix an error propagation bug when a command fails from bad inputs.
  * Handle the case where a proxied element from PageFactory causes a FluentWait to timeout.
  * Integrating the Microsoft Internet Explorer driver implementation
  * Allow subclasses of HttpCommandExecutor to extend it at runtime.
  * Handle the case where executeScript returns an HTMLDocument.
  * IEDriver crashes in WaitUntilElementFocused() because of null pointer. Fixes issue #7577
  * Deprecate the original RC interface in Selenium.
    As part of Selenium 3.0, we shall be moving the original RC interface to a
    legacy JAR that will be available as a separate download. As the first step
    in this process, the original "Selenium" interface is being marked as
    deprecated.
  * Run FirefoxDriver tests with Buck.
  * Bump timeout for tests since a suite is also a test.
  * Run htmlunit-driver tests with Buck.
  * Run the ignored tests printer with Buck.
  * Get org.openqa.selenium.SmallTests building with Buck.
  * Working around limitations in subpixel precision event handling.

    The bug/limitation where browser supports subpixel precision for elements but not for dispatched events was found in both modern Chrome (http://crbug.com/396380) and Firefox (?) browsers.
    (IE doesn't seem to be affected: before and including IE9 - no subpixel for elements and events; from ie10 - subpixel is supported for both elements and events).

    This test was lucky so far (mostly?) and didn't hit this issue, until Chrome 37 that enabled subpixel text scaling by default.

    This change makes *sure* elements have subpixel coordinates (if only browser supports'em) and then it makes sure this test doesn't fail because of that (while still testing selenium atoms).

    While there, I moved asserts from event handlers into the normal test flow so jsunit can properly attribute assertion failures to specific test methods.
  * Updating prebuilt libs for windows
  * Re-add the rubyzip jar
  * updating prebuilts for linux
  * Updating to gecko 32
  * Log formatter should be able to work with empty keys array. Fixes issue 7357
  * Fixing infinite read from socket. Fixes issue 7814
  * WDBS: safe check for window.localStorage
  * Driver should operate cookies for the current frame, not the topmost one. Fixes issue 7799 in
    Firefox
  * Actually supporting promised Id for webdriver.WebElement.
  * Adding more checks for JS functions removed from IE11. Fixes issue 7803
  * Fixing use of deprecated API in httpclient
  * Fixing use of deprecated API in guava
  * Update Closure library to head and compiler to the latest release
  * Implementing ability to use FirefoxDriver on a machine where localhost is not the first alias for
    127.0.0.1. Fixes issue 3280
  * Handle null and empty paths the same as /
  * fixing maven build, adding reference to jetty-rc-repacked-5
  * adding pom and info on uploading jetty-repacked-5 to maven central
  * Adding checks for JS functions removed from IE11. Fixes issue 7780
  * Deleting what appears to be unused deps.
  * Add more options to the Builder API (every common, settable capability should be covered).
    * Require calling Builder.usingServer(url) to use a remote server. If this is not called, the
     builder will attempt to create a client locally, throwing an error if it can't (e.g. for IE).
    * Add browser specific constructors to simplify creating a client without the Builder.
    Fixes issue 7593
  * Updating json-cpp lib and replacing mongoose web server with civetweb.
  * Safari is flaky. Reducing timeout to fail faster when we're going to fail.
  * Catch driver start-up failures.
  * Add explicit API for configuring log prefs rather than forcing users to rely on
    magic capability strings.
  * Clean up internal Firefox logging API.
  * Use LogLevelMapping to convert JSON wire protocol name to Level instance.
  * Make the jettyMaxThreads parameter actually be effective
  * Fix NullPointerException when File#listFiles() returns null. Fixes issue #1934
  * Making WDBS.start command a no-op if it was instantiated with an already started driver. Fixes issue 3993
  * Handling possible exception in stringification of window.location. Fixes issue 3908
* Modified IE driver server to more closely follow W3C spec

    This commit includes a number of changes designed to bring the IE driver
    into closer alignment with the W3C WebDriver specification. It provides
    no functional changes to the driver, nor does it change any external-
    facing API. The changes are:
     * Changed webdriver::Server to examine the response from the newSession
       command for the session ID rather than a two-stage process. The
       webdriver::Server::DispatchCommand method now calls the
       InitializeSession method directly when processing the newSession
       command.
     * Removed the now-obsolete webdriver::Server::CreateSession method.
     * Added a Serialize/Deserialize method pair on the webdriver::Command
       class (renaming the Populate method to Deserialize).
     * Revamped the serialization of webdriver::Command to use 'name' instead
       of 'command' for the command name.
     * Added a session ID member to the webdriver::Command object.
     * Modified the webdriver::Command object to no longer draw distinction
       between parameters passed in as part of the URL substitution and those
       passed in as part of the JSON payload in the body.
     * Modified webdriver::CommandHandler::ExecuteInternal (and all subclass
       implementations to use a single parameters map instead of the dual
       URL tokens/JSON payload parameters maps used previously.
  * Propagate webdriver_firefox_port preference to FirefoxDriver, was being ignored. Fixes issue 5172
  * Adding a new selenium server option -logLongForm to log more details to the console. Fixes issue 6645
  * Handling possible IllegalStateException while cleaning orphaned and timed out sessions. Fixes issue 6771
  * Setting forwarded content for CommandListener afterCommand handler. Fixes issue 7443
  * Fixing the list of extensions to search for an executable on Windows, and logging process startup
    errors. Fixes issue 7514
  * Setting layout.css.devPixelsPerPx to 1.0 if native events are enabled only. Fixes issue 7445
  * BODY element is always shown/displayed.
    related section in the W3C spec:
    https://dvcs.w3.org/hg/webdriver/raw-file/default/webdriver-spec.html#determining-if-an-element-is-displayed
  * Implementing switchToParentFrame support in atoms
  * Setting HtmlUnit to emulate FF24 by default
  * Updating HtmlUnit to 2.15
  * Stop polluting the log with stacktraces. Fixes issue 7460
  * Returning less specific platform info from firefox driver. Fixes issue 3354
  * Adding driver info into TimeoutException thrown by WebDriverWait. Fixes issue 7429
  * Implementing switchToParentFrame command for IE driver
  * Adding URL endpoint for switchToParentFrame

v2.42.2
=======
WebDriver:

  * errorHandler needs to be instantiated. Fixing NPE with IEDriver Issue #7415

v2.42.1
=======
WebDriver:

  * resorting context endpoints, belong with mobile spec
  * re-added Context endpoints to java client
  * allow custom ErrorHandler for HTTPCommandExecutor
  * fixing toJSON of chrome options where equal options become unequal.

v2.42.0
=======
WebDriver:

  * updating firefox prebuilts, thanks jleyba for fixing the build!
  * Use PRUnichar for Gecko < 29, char16_t otherwise.
  * Updating third_party/py/jython.jar to Jython 2.5.3
  * Removing unused functions
  * Implementing more straightforward way to send keyboard events in synthesized mode. Fixes typing into number inputs and rich text editors (like tinymce)
  * Fixing interactions API in Firefox to be able to move mouse to elements in frames using native events. Fixes issue 7253
  * Removing unused import
  * Refactoring: moving an auxiliary class from the top level to inner class
  * Removing outdated getValue command handler
  * Change ClearElement to be a subclass of WebElementHandler instead of WebDriverHandler
  * Removing outdated (unused) command constants
  * Fixing clicks on invisible elements in HtmlUnitDriver broken by ElementNotVisibleException being a subclass of InvalidElementStateException
  * Click after move with offset should use last mouse position
  * Adding new interface methods to the stubs
  * Preserve wrapped test function's string representation for Mocah's BDD interface.
  * Fixing IE driver to allow JavaScript objects with property names with spaces
  * Ignoring IE6-only test failure for CSS
  * Bump the hmltunit version to 2.14
  * Remove a class of our which replicates HTTP status codes already given meaningful names in the standard JRE.
  * Updating version match for native libs in firefox plugin manifest file
  * Updating native events dll for FF28
  * Implement ability to load driver providers using ServiceLoader. A user can add new providers or override existing ones. To use this ability a user should:
  * Refactoring the process of driver instances creation to use a new DriverProvider interface. DefaultDriverProvider wraps the current logic -- creating instances using reflection. This is a step to implement ability to load additional providers using ServiceLoader that can add new providers or override existing ones.
  * Ruby: Fix for extensions whose install.rdf uses an attribute for em:id (issue 5978)
  * fixes issue for locating newly installed chrome versions
  * Fixing IE driver crash when clicking on link that opens a new window.
  * Properly configure the http client in the presence of user credentials.
  * java json converter chooses Long (Number base class). Fixing RemoteNetworkConnection
  * SUPPORTS_BROWSER_CONNECTION was removed, missed a reference
  * Clean up use deprecated methods & classes.
  * ElementNotVisibleException is a type of InvalidElementStateException.
  * Tweak messaging on SafariDriver client page to better reflect what is happening. Also added a log message pointing users to the toolbar button that opens the driver log page.
  * Remove some no-op calls to deprecated functions.
  * Pull the logic for converting Command/Response pairs to and frame HTTP request/response pairs into a common codec instead of duplicating the logic on the client and server.
  * Change some tests to use Alert#accept() instead of Alert#dismiss() to get rid of alert dialogs. This is a workaround to ChromeDriver issue 764:
  * When running tests against the remote server, ignore two tests that use required capabilities. The remote server only supports desired capabilities on new session requests.
  * Update two tests to work when running with a remote server, where the original js error will be the root exception, but not necessarily the second error in the cause chain.
  * Test if we need to skip cookie tests for lack of a valid domain name before calling a method that asserts we have a valid domain name.
  * Convert HttpRequest/Response to POJOs; handle all conversion to and from HttpServletRequest/Response inside DriverServlet.
  * Every command handler returns ResultType.SUCCESS and those handlers that return an actual value do so through a level of indirection. This commit changes command handlers to just return results directly to the caller, making it possible to delete a lot of unnecessary code.
  * Move static resource serving code into DriverServlet. It is not part of the JSON wire protocol and including it in the command dispatcher complicates planned refactoring and other code cleanup.
  * Mobile - Network Connection implementation for Java and Python.
  * ChromeDriver 2.10.267517 binds to the loopback address instead of 0.0.0.0, so only attempt to connect using the loopback address.
  * Code comment changes for wait()
  * added task name to SCHEDULE_TASK event
  * Eclipse compiler update for Java 8 support
  * Updating naive user agent string checks to account for IE11
  * Adding Windows 8.1 detection to Platform.extractFromSysProperty
  * retry a test failure if there was a 'sauce' issue, like we exceeded the total time a test session is allowed to take.
  * adding Windows 8.1 platform, so we can use it in saucelabs for IE11 testing
  * Remove deprecated functions on webdriver.promise.Promise class * Use templates with webdriver.promise.Promise to improve types   documentation.
  * Loosen input type to webdriver.stacktrace.getStack_ to account for an rare condition in FF 28+ where the Error() constructor returns undefined (not sure what causes it, just know it happens)
  * Add ability to save an abitrary base64 string as a screenshot from a WebDriverJS test running in a browser.
  * When Firefox is configured to accept all SSL certs (which is the default behavior), we need to set a time offset to prevent Firefox from using HSTS (HTTP Strict Transport Security). If we don't do this, Firefox will pre-fetch the certs for sites that should always be accessed over HTTPS and allows Firefox to catch man-in-the-middle attacks. While this is A Good Thing for users, it prevents WebDriver from accepting self-signed certs for these domains (e.g. when they are accessed through a HTTPS proxy).
  * Remove unnecessary dependency on bouncycastle.
  * Making ChromeDriver directly implement the interfaces representing features it implements.
  * Updating build process for Firefox native events components to use gecko 29 SDK
  * Updating buck version to latest OSS release
  * Use addEventListener if possible. Fixes issue 6680
  * Packaging webdriven selenium (emulator) to client-combined jar. Fixes issue 7206
  * Don't use system path separators when computing URL paths.
  * Make Cookie serializable
  * Ignoring a test for HtmlUnitDriver that can't be run due to HtmlUnit restrictions
  * Allowing FindBy, FindBys, FindAll annotations on types
  * Minor cleanup FirefoxBinary.java
  * Adding Firefox native event version support to CHANGELOG
  * Adding version number to the capabilities returned by htmlunitdriver. Fixes issue 7110
  * Implementing augmentation indicator as an annotation
  * Error handling for startSession is handled in the parent class now.
  * Remove deprecated functions.
  * Revert "Fixing Java 8 incompatibility caused by use of old jruby" because it breaks java 7 compatibility :(
  * Fixing Java 8 incompatibility caused by use of old jruby
  * Export logging API from main webdriver module.
  * Setting pixel density to be independent from OS settings. Fixes issue 6112

v2.41.0
=======
WebDriver:
 * Update to support native events for Firefox 28 (removed native event
   support for Firefox 26). Native events are now supported for the
   following Firefox versions:

   17 (immediately previous ESR release)
   24 (current ESR release)
   27 (immediately previous release
   28 (current release)

 * Fixed capabilities to be sent properly encoded. For instance,
   capabilities for mobile have copyright signs.
 * Renamed some commands in the Firefox driver to prepare for Selenium
   3. This essentially means that we're mirroring the names of the
   commands in the function names within the driver. Also implemented
   handling a Selenium 3 style "sessionId" in a Command received by a
   Selenium 2 server.
 * Implemented support for switching context as described here:
   http://code.google.com/p/selenium/source/browse/spec-draft.md?repo=mobile#133.
   This feature will be used by mobile WebDriver users to switch
   between different contexts like the native or the webview UI element
   tree. The feature is end to end tested with latest Selendroid
   snapshot version (6a126ab). In the langauge bindings, this is
   implemented as a role-based interface. Subclasses of RemoteWEbDriver
   that need this should extend TargetLocator and use covariant return
   types to keep everything happy and sweet.
 * Removed InternetExplorerDriver constructor that accepts
   WindowsProxyManager as a parameter. Proxy management moved to
   IEDriverServer and WindowsProxyManager is used for RC only now.
 * Removed use of VK_ENTER since its been removed from Firefox. PUA
   code uses VK_RETURN now like Mozilla Tools.
 * Added switch to parent frame command to the wire protocol and API.
 * Added httpOnly flag to Cookie JSON object.
 * (on behalf of Tobias Lidskog): Added property for silencing
   chromedriver. The Java property "webdriver.chrome.silentOutput" is
   now used to set the default value for silent mode in chromedriver
   using the ChromeDriverService class. This is analogous to the
   existing system property for controlling verbose mode.
 * (on behalf of Yi Zeng): Updated download link to googleapis.com
 * Reduced the visibility of a deprecated class in the htmlunit driver.
 * Removed deprecated FirefoxProfile.setProxyPreferences method.
 * Removed deprecated ChromeOptions.setExperimentalOptions
 * FIXED: 4843: (on behalf of Jonatan Kronqvist): Regard all modifier
   keys in SingleKeyAction. An earlier commit added META, but COMMAND
   and LEFT_* were left out as they were misinterpreted as aliases,
   which they aren't (they onlyuse the enum definition to get the same
   character code of the keys).
 * FIXED: 5331: Added javadoc to JavascriptExecutor executeAsyncScript
   about the default timeout. Also added some extra information on
   troubleshooting common issues.
 * FIXED: 7014: Fixed parameters parsing.
 * FIXED: 7033: Fixed javadoc.

WebDriverJS:
 * FIXED: 7105: Properly bind "this" for beforeEach/it/afterEach in
   mocha integration.

Grid:
 * Modified to ignore exceptions during the clean-up process if failing
   to start a RemoteWebDriver instance.
 * FIXED: 6770: Setting a timeout when Jetty has low resources to
   prevent hub from hanging.
 * FIXED: 6771: If a session times out and the browser was never
   started, it should still be cleaned up on the hub side.
   BeforeRelease should then be a no-op and not throw.
 * FIXED: 6772: Added a configuration parameter to set the number of
   threads Jetty uses. Default is -1, which implements the current
   behavior (255 threads from Jetty's default settings)
 * FIXED 6773: Consuming the request in all cases to properly release
   resources.
 * FIXED: 6811: Clean up immediately if starting a driver or session
   errors in RemoteWebDriver.
 * FIXED: 6878: Actually pass the response body to CommandListener
   implementations, per the interface contract.
 * FIXED: 7047: Updated a grid timeout property that seems to have been
   overlooked in a previous cleanup.

RC:
 * Added lost quotes in JSON format (RC).
 * Removed old version of Selenium RC emulation and leaving the new one
   in place.

v2.40.0
=======
WebDriver:
 * Update to support native events for Firefox 27 (removed native event
   support for Firefox 25).
 * Removed the iPhone driver. Also leaving the atoms available, so that
   appium and iosdriver can use them.
 * Deleted the client side of the AndroidDriver. Note that the atoms
   are still left in place so that Selendroid can still be compiled.
 * Make the RemoteWebDriver implement TakesScreenshot. There's only one
   driver that doesn't implement the interface (the HtmUnitDriver) and
   this is the most common cause for using the Augmenter, which isn't
   very discoverable.
 * Imported PhantomJSDriver 1.1.0, removing 1.0.4 (previous version).
 * Implemented augmentation of previously augmented instances
 * Fixed JdkAugmenter's inability to add interfaces that are already implemented
 * Removed org.openqa.selenium.net.INetAddress, an unnecessary abstraction
   around java.net.InetAddress.
 * (on behalf of Tobias Lidskog) Add ability to send --silent flag to
   chromedriver.
   when building an inverted predicate.
 * Implemented part of advanced user interactions using injected atoms
 * Fixed HtmlUnitDriver to handle timeout exception on refresh.
 * Implemented page load timeouts in Firefox without stopping page
   loading.
 * Implemented pageLoadingStrategy capability in Firefox.
 * Migrated the WebDriverBackedSelenium to
   com.thoughtworks.selenium.webdriven. This also leaves behind a
   deprecated implementation of each of the key interfaces to ease
   migration for users.
 * Implemented proper error code for the case of invalid css selector
   empty class name, and compound class name in atoms.
 * Implemented alert and confirmation handling in WDBS (Java)
 * Throw a more descriptive error when typing in certain types of input
   elements in Chrome. Starting with Chrome 33, certain types of input
   elements do not support the selection API (in fact, they throw when
   you try to access the property). This prevents us from fully
   simulating typing in the atoms.
 * FIXED: 2397: (on behalf of TommyBeadle) Fixed exception handling
 * FIXED: 3991: Add Keys.chord(Iterable<CharSequence>) as a utility
   method.
 * FIXED: 4606: Stop web page loading after timeout.
 * FIXED: 4843: (on behalf of Jonatan Kronqvist) Keys.META is now
   regarded as modifier key in SingleKeyAction. Keys.META, Keys.COMMAND,
   Keys.LEFT_ALT, Keys.LEFT_CONTROL and Keys.LEFT_SHIFT are now also
   regarded as modifier keys in SingleKeyAction (because of their
   aliases).
 * FIXED: 5397: Disabled validation of cookies loaded from the browser.
   If the browser could parse the cookie we are to be able to provide
   this information to the user even if the cookie is inalid.
 * FIXED: 5859: Implemented keyDownNative, keyUpNative and
   keyPressNative in WDBS. These commands are implemented via Actions.
 * FIXED: 6512: When the host is unknown, make the HtmlUnitDriver
   return an error page.
 * FIXED: 6657: Make the LoggingPreferences implement Serializable.
 * FIXED: 6681: Preventing augmentation of subclasses of RemoteWebDriver. Fixes
 * FIXED: 6830: (on behalf of GeorgeKlinich) Urlencoding result
   returned by server implementation of WebDriverBackedSelenium.
 * FIXED: 6834: Creating sesion cookie if expiry is not set. Fixes issue 6834
 * FIXED: 6947: Script timeout should get reset even when async
   callback is called synchronously.

WebDriverJS:
 * For consistency with Closure's new promise API, use thenCatch()
   and thenFinally() instead of addCallback(), addErrback(), et al.
 * ResultType.EXCEPTION and ResultType.ERROR are handled the exact same way,
   so remove one of them and simplify some code.
 * Treat promise.fulfill/reject as no-ops instead of throwing if the
   promise has already been resolved.
 * Added some utility functions to simplify working with arrays of
   promises.
 * FIXED: 6826: Add support for custom locators in webdriverjs.

Grid:
 * FIXED: 4589: Restrict the host where grid hub is listening if -host
   option is specified.
 * FIXED: 6445: Shorten string representation of capabilities in the
   hub log and grid console.

RC:
 * Deprecated browser launchers for dead versions of firefox.

v2.39.0
=======
WebDriver:
 * Update to support native events for Firefox 26.
 * Removed server side of iPhone driver.
 * Removed server-side of AndroidDriver and deprecating client side.

WebDriverJS:
 * FIXED: 6686: Changed Deferred#cancel() to silently no-op if the
   deferred has already been resolved.

v2.38.0
=======
WebDriver:
  * Update to support native events for Firefox 25.
  * Updated httpclient and httpcore maven dependencies
  * When moving the mouse relative to an element hidden in a parent's
    overflow region, that element must first be scrolled into view
    before the mouse move can be completed.
  * Removed WindowsProxyManager from InternetExplorerDriver, proxy
    management is implemented in IEDriverServer now.
  * The logging level for the FirefoxDriver's native components can now
    be set from the command line with the SELENIUM_LOG_LEVEL
    environment variable. Valid values are ERROR, WARN, INFO, DEBUG,
    and TRACE. If the value is not set, or an unrecognized value is
    specified, the log level will be set to FATAL (which was the
    previous behavior).
  * Implemented ability to return Date object from executeScript
    (Firefox only).
  * Fixed Firefox returning the actual state of nativeEvents.
  * Made it possible to switch the webdriver.xpi from the command line
    using a system property.
  * Removed hardcoded chromedriver version
  * SafariDriver WebElement#getTagName() should return a lowercase
    string.
  * If ChromeDriver fails to start, suppress any exceptions from the
    subsequent "clean-up" quit() so the error from start is not lost.
  * Added an alternate, and Android-friendly, implementation of the
    Augmenter that uses JDK interface proxies instead of cglib. This
    new implementation is available as org.openqa.remote.JdkAugmenter;
    the default Augmenter implementation still relies on cglib.
  * Prevented an infinite loop when computing overflow state when the
    documentElement has fixed position.
  * Improveed logging for UnixProcess#destroy().
  * If an error is thrown while typing a key sequence, return that
    error to the client. Prior to this change, the driver would
    effectively hang.
  * Do not attempt to generate a key event if the target element is no
    longer attached to the DOM. nsIPressShell (which is used to
    dispatch events) will throw a generic NS_UNEXPECTED_ERROR if we
    fail to make this check.
  * FIXED: 3107: (On behalf of Ross Patterson) Preventing possible NPE.
  * FIXED: 4501: (On behalf of Robert Ambrus) Introduced a system
    property org.openqa.jetty.SocketListener.bufferSize that allows to
    set the size of the buffer Jetty uses for network communications.
  * FIXED: 4698: Added missing expected conditions.
  * FIXED: 5295: User defined element properties should be retrievable
    with getAttribute.
  * FIXED: 5900: Revamped the SafariDriver's internal networking.
  * FIXED: 6294: Implemented ability to switch to a frame by id or name
    in WDBS.
  * FIXED: 6358: Disabled Content Security Policy in Firefox.
  * FIXED: 6414: Fixed the way EventFiringWebDriver unwraps the
    underlying driver.
  * FIXED: 6431: Catch an exception thrown if the chrome executable is
    not found and stop chromedriver before propagating it.
  * FIXED: 6445: Shortened Firefox profile textual representation in
    capabilities.
  * FIXED: 6473: Implemented ability to pass --verbose option to
    chromedriver.

WebDriver JS:
  * Always annotate errors for rejected promises
  * FIXED: 6284: Omit x/y offsets from the mouseMove command instead of
    defaulting to (0,0).
  * FIXED: 6471: Correctly document the contract on
    WebElement#getAttribute
  * FIXED: 6612: On Unix, use the default IANA ephemeral port range if
    unable to retrieve the current system's range.
  * FIXED: 6617: Checking for Error.captureStackTrace is sufficient to
    determine if an environment supports stack traces. This avoids
    unnecessarily triggering debuggers configured to halt when an error
    is thrown.
  * FIXED: 6627: Safely rebuild chrome.Options from a partial JSON spec.

Grid:
  * FIXED: 6357: Added PhantomJS icon to the grid console.
  * FIXED: 6392: Removed misleading log messages.

RC:
  * FIXED: 1666: Fixed typo in RegExp.test function name.
  * FIXED: 1758: Ignoring closed windows when collecting attributes
    from all windows (RC).
  * FIXED: 2508: Fixed screenshot size calculation for quirks mode (RC)
  * FIXED: 2845: Moved storedVars from test case level to test suite
    level.
  * FIXED: 3185: Fixed JSON converter (RC).
  * FIXED: 3270: Fixed switch to window by var= locator (RC).
  * FIXED: 5103: Fixed screenshooter in Firefox and Selenium RC,
    limiting the size of the screenshot to pevent failures.
  * FIXED: 6496: Enabled .htm and .xhtml extensions for test suites.

v2.37.0
=======
  * Fix Firefox native event support on Linux for 23 & 24.

v2.36.0
=======
WebDriver:
  * Updated Firefox native event components to support Firefox 24.
  * Updated HtmlUnit to 2.13.
  * Updated HttpClient to 4.3.
  * Updated version of Guava to 15.
  * Updated version of wgxpath.
  * Return an empty string instead of "null" when the browserName and
    version capabilities are not set.
  * Stop propagation of the webdriver-evaluate custom event when
    executing user supplied JavaScript. Without this change, the event
    handler will trigger twice for async scripts, causing the driver to
    attempt to evaluate the user script twice, leading to unpredictable
    behavior.
  * Added a new pause action to the interactions API.
  * Improved support for using the HTML5 APIs through the remote
    server by augmenting the session driver before attempting to
    access HTML5 capabilities.  If the driver does not support the
    requested feature, throw an UnsupportedCommandException instead of
    a ClassCastException.
  * Implemented elementScrollBehavior capability in FirefoxDriver.
  * Fixed getLocation to work on scrolled pages.
  * Fixed autoscrolling for elements located in frames.
  * Fixed drag-n-drop for elements in frames in Firefox with native
    events
  * Implemented SOCKS proxy support for FirefoxDriver
  * Fixed support for SVG documents in the atoms.
  * Fixed computing an element's container dimensions to account for
    the scrollbar size when scrolling
  * FIXED: 2670: Made subclasses of By serializable.
  * FIXED: 6200: Pass command line arguments to the Selenium server
    instead of to the JVM.
  * FIXED: 6293: Added more informative error message.
  * FIXED: 6346: Allow args to passed to the JVM using the jvmArgs
    option.

Grid:
  * Added ability to fetch slotCounts from /grid/api/hub. The resource
    looks like this:

        { "slotCounts": { "total": 20, "free": 8 } }

  * Added ability to fetch newSessionRequestCount from the
    /grid/api/hub resource.


v2.35.0
=======
WebDriver:
  * Updated Firefox native event components to support Firefox 23.
  * Removing deprecated interactions interfaces (Keyboard, Mouse,
    TouchScreen).
  * Updated operadriver to 1.4.
  * Introduced ie.setProxyByServer capability to select how IE browser
    proxy will be set up, either by old Java code using Windows
    registry or inside IEDriverServer using WinINet methods. This
    capability is marked as deprecated and will be removed in future
    versions. In the future, IE proxy settings will be set up only by
    IEDriverServer. Current default value of ie.setProxyByServer is
    false so Windows registry will be used for IE proxy setup.
  * Guarded around IE returning an empty object for the active element.
  * FIXED: 6055: Fixing "invalid xpath" issue, actually invalid NS
    resolver.

WebDriver JS:
  * FIXED: 6079: The parent process should not wait for spawned driver
    service processes (chromedriver, phantomjs, etc.)

v2.34.0
=======

WebDriver:
  * Updated Firefox native event components to support Firefox 22.
  * Update synthesized mouse implementation. Mouse moves are
    implemented using nsIDOMWindowUtils.
  * Finding libX11.so.6 in a slightly more intelligent way: Check that
    dlopen actually succeeds, if not found in one of the fixed paths,
    look in the LD_LIBRARY_PATH.
  * Added ExpectedConditions to check for the visibility of all
    WebElements in a List
  * Updated the wgxpath library.
  * Updated our copy of the Closure compiler and library to the most
    recent versions.
  * Updated the atoms library, including support for MS pointer events
    and refinements to element visibility tests.
  * Close all open connections when stopping the SafariDriver server.
  * Fall back to a loopback address if the current machine does not
    have an external IP address (as will be the case when there is no
    internet connection).
  * Remove sizzle dependency from the firefox driver. We only needed
    this for versions of firefox prior to 3.5, which we no longer
    support.
  * Fixed Select.escapeQuotes method.
  * Added SafariOptions and support for custom Safari extensions.
  * Moved Mouse, Keyboard and TouchScreen to the interactions package
    where they belong. This has the benefit of also making our build
    files simpler once we delete the original versions which have been
    deprecated.
  * Deprecated the HasTouchScreen interface.
  * Fixed condition in Select.select_by_index method to fix case when
    selection is performed by index on a multiple select element.
  * Implemented an alpha version of a Marionette (WebDriver implemented
    natively in Firefox) driver.
  * Deprecated IPhoneDriver.
  * Added support for the HTML5 "hidden" attribute. If an element, or
    ancestor, has hidden attribute make, it is not shown.
  * FIXED: 2285: Allow setting default logLevel for standalone-server.
  * FIXED: 5609: Adding the ability to redirect firefox process output
    to file.
  * FIXED: 5669: Add Driver#remote_status for the Ruby remote driver.
  * FIXED: 5715: Adding toString method for the event firing
    webelement.

WebDriver JS:
  * When capturing console output, guard against user scripts that
    redefine the console global.
  * Improved logging in the test client.
  * Use goog.labs.testing.assertThat for the assertThat library.
  * Improved stack trace handling
  * Defined a webdriver.Capabilities class for webdriverjs.
  * Added native ChromeDriver support to WebDriverJs.
  * Mark discarded tasks as cancelled to prevent hanging on
    asynchronously scheduled callbacks.
  * Include the webdriverjs tests in the built npm package. Updated
    the README with instructions for running the tests using npm.
  * Add native PhantomJS support to webdriverjs.

Grid:
  * Update grid for change in behavior of WebDriver's new session
    command.
  * Fixed handling of JSON conversion errors at node.
  * FIXED: 5942: Fix hang of hub when node machine is not available.

RC:
  * Fixed RC tests failing in Firefox beta builds. This has been fixed
    in two ways:

    * Rely on the automation atoms where possible.
    * Obtain the document and window from the element the event is
      firing from.

    In the course of fixing this, all but one usage of "triggerEvent"
    was replaced. Because of this, the method has been inlined to the last
    call site.
  * FIXED: 1646: UTF-8 encoded user-extensions.js support.


v2.33.0
=======

WebDriver:
  * getText() ignores elements in the <head>
  * Bundled OperaDriver version bumped to 1.3.
  * Added a FindAll annotation for the PageFactory to use.
  * Added a toString() implementation to Color.
  * Deleted the Selenium-backed WebDriver.
  * FIXED: 2218: IE >=9 versions triggerMouseEvent like other
    browsers.
  * FIXED: 2610: Implementing ability to specify path to the chrome
    executable in the node configuration file using chrome_binary
    capability.
  * FIXED: 2685: Increasing port range for Firefox to chose from when
    starting.
  * FIXED: 4790: Improvements made to Firefox startup in highly
    concurrent environments.
  * FIXED: 5045: Added support for fetching logs from SafariDriver.
  * FIXED: 5652: Adding unhandled alert text to the exception message.
  * Added LogType.PERFORMANCE, supported in chromedriver2 0.9+.

WebDriver JS:
  * FIXED: 5511: Implement
    driver.manage().timeouts().pageLoadTimeout(ms) for WebDriverJs.
  * FIXED: 5632: It's now possible to create a new session with
    WebDriverJs when running in a browser.
  * Add a WebDriverJs client to the SafariDriver's logging window so
    it's possible to use WebDriver from the devtools REPL on that
    page.

Grid:

  * Making "beta" console the default one, it's time to get out of
    beta status
  * Old console is now available at /grid/old/console/
  * Addressed memory leaks caused by per-session logging.
  * FIXED: 3001: Making Selenium the default protocol if a node was
    started with "-role rc" option.

RC:
  * FIXED: 3636: selenium.fireEvent works with the webdriver-backed
     selenium and IE.

v2.32.0
=======

WebDriver:
  This release supports Firefox verions: 10esr, 17esr, 19, 20

  * Let WindowsUtils.killPID() kill the whole process tree
  * Implementing support for implicit "submit" button type in
    HtmlUnitDriver.
  * bug fix for python hang with 302 response
  * Adding better support for SVG within Firefox. Has better scrolling
    to element and allows JavaScript execution
  * Fixing case of "no active element" for HtmlUnitDriver
  * WindowsUtils.kill() fix on Windows 8
  * Updating HtmlUnit to 2.12 (and cssparser to 0.9.9)
  * Fixing illegal negative timeout values for HtmlUnitDriver, zero
    means infinite wait
  * Implementing pageLoadTimeout in HtmlUnitDriver
  * Allow users to specify a custom location for Safari's data
    directory using the "safari.dataDir" capability.
  * Fix for using DesiredCapabilities with WebDriverBackedSelenium
  * PhantomJS Driver bindings updated to 1.0.3
  * Minimize the number of third party libraries used by the very
    heart of the remote webdriver server.
  * fix issue where server was appending '?null' to all forwarded
    requests
  * Issues fixed: 5293, 4902, 5283, 5278

v2.31.0
=======
  (summary not created, check version history logs)

v2.30.0
=======

WebDriver:
  * Fixing a bug introduced by a change in how we get already logged
    messages from the console service in firefox. This allows us to
    function with firefox 19
  * FIXED: 1181: Improved loopback detection
  * FIXED: 1627: Implementing ability to use auto proxy in
    HtmlUnitDriver.
  * FIXED: 3652: moveToElement with offset should consider 0 as a
    valid value, not as "undefined".
  * FIXED: 3868: Better ephemeral port range selection.
  * FIXED: 4107: Added prebuilt version of the SafariDriver extension
    to the client jar.
  * FIXED: 4821: WebDriverBackedSelenium works when added to project
    via maven.
  * FIXED: 4940, 5075: Added iceweasel to list of firefox variants.
  * FIXED: 5022: Text node with overflow:hidden and height/width 0 to
    not be visible since we cant see them.
  * FIXED: 5030: Only send files to upload, not directories.
  * FIXED: 5079: FluentWait.until(Predicate) method does not propagate
    predicate message.
  * FIXED: 5109: We should show elements visible if there is a pixel
    visible.
  * Semi-private change: Changes in the Coordinate class.

JS:
  * Update WebDriverJS to support parallel flows.  This change renames
   several low-level classes and functions in the promise module:

      promise.Application                                 -> promise.ControlFlow
        #schedule(string, function)                       ->   #execute(function, [string])
        #scheduleTimeout(string, number)                  ->   #timeout(number, [string])
        #scheduleWait(string, function, number, [string]) ->   #wait(function, number, [string])

    The old schedule* functions are still present, but will print a
    warning message if called. They will be removed in 2.31.

RC:
  * Added ability to use relative path to an -htmlSuite file.
  * FIXED: 3498: Proxy based browsers are back to normal on HTTPS
  * FIXED: 5113: Implementing GET requests support for RC protocol.


v2.29.0
=======

WebDriver:
  * Firefox 18 support.
  * IEDriver supports "requireWindowFocus" desired capability. When
    using this and native events, the IE driver will demand focus and
    user interactions will use SendInput() for simulating user
    interactions. Note that this will mean you MUST NOT use the
    machine running IE for anything else as the tests are running.
  * Use the "webdriver.remote.shorten_log_messages" system property to
    reduce the verboseness of ouput from executeScript and
    executeAsyncScript when using the RemoteWebDriver.
  * Switching HtmlUnitDriver default from FIREFOX_3_6 to FIREFOX_10
  * SafariDriverExtension should restore Safari's previous settings on
    shutdown.
  * Bundled version of PhantomJSDriver bumped to 1.0.1
  * Updated the version of guava-libraries used to 14.
  * Updated HtmlUnit to 2.11
  * Deprecated XPathLookupException in favour of
    InvalidSelectorException
  * FIXED: 3602: Changing IE view port calculations to allow for
    always-present vertical scroll bar, and to test for horizontal
    scroll bar and adjust as required by page content.
  * FIXED: 4576: self registering proxy now check for user specified
    proxy id.
  * FIXED: 5010: icons in chrome newtab now correctly identified as
    being shown.

RC:
  * FIXED: 4818: Make sure that each generated SSL cert has a unique
    ID associated with it.

Project:
  * Moved to git. Most obvious in revision number in our exceptions.


v2.28.0
=======

WebDriver:
  * "null" can now be passed to executeScript
  * .Net: Corrected FileUtilities.FindFile() to correctly return the
    current directory if the specified file is located there.
  * .Net: Introduces the Updating the CustomFinderType property to the
    .NET FindsByAttribute. This allows use of custom By subclasses in
    the PageFactory. The custom finder must be a subclass of By, and
    it must expose a public constructor that takes a string argument.
  * SafariDriver: better attempts to catch native dialogs from user
    defined onbeforeunload handlers.
  * Updating HtmlUnit to 2.11
  * Added the PhantomJS bindings to the release. You'll still need to
    download PhantomJS itself separately.

RC:
  * Implemented getAllWindowNames in WebDriverBackedSelenium
  * Implemented openWindow in WebDriverBackedSelenium to allow opening
    relative URLs


v2.27.0
=======

WebDriver:
  * Added support for native events for Firefox 17.
  * Added support for ghostdriver (PhantomJS)
  * Adding new capability "enableElementCacheCleanup" to the IE
    driver. When set to true, the IE driver will clean the
    known-element cache of invalid elements after every page
    load. This is intended to keep memory usage down and improve
    performance. However, it is an intrusive change, so this
    capability is provided temporarily to allow disabling this
    behavior if problems arise. The default of this new capability is
    "true", meaning this behavior is turned on by default.
  * Added shift key handling to the synthetic keyboard actions.
  * Modifying scroll behavior in IE driver SendKeysCommandHandler to
    call Element::GetLocationOnceScrolledIntoView() instead of calling
    the DOM scrollIntoView() function. Should result in less page
    scrolling during test runs.
  * Checking if CSS transforms on elements, or their parents, are
    hiding them and therefore returning they arent visible.
  * Add not, refreshed, invisibilityOfElementWithText to
    ExpectedConditions.
  * Added support for new IE10 pointer events.
  * FIXED: 1543: Allowing equal sign in a cookie value.
  * FIXED: 2103, 3508: Modified to no longer hang on alerts triggered
    by onchange of <select> elements or by onsubmit of <form>
    elements.
  * FIXED: 2035: Returning a simple result (null) after opening a new
    window instead of the window object (that can't be serialized to
    JSON).
  * FIXED: 2353: Only call blur() for IE if the element is not the
    <body> element.
  * FIXED: 3043: Better error message reporting when browser launch
    fails.
  * FIXED: 4490: Checking script evaluation result to prevent null
    reference exception.
  * FIXED: 4736: Added all of the extended colour keywords to the
    Colors enum in support of
    http://www.w3.org/wiki/CSS3/Color/Extended_color_keywords.
  * FIXED: 4800: Fixed calculation of coordinates for elements in
    frames/iframes where the element is scrolled out of view within
    the frame.

Grid:
  * FIXED: 3818: Generating session identifiers with UUID to prevent duplication.

RC:
  * FIXED: 4668: Fixing ability to open relative URLs in WDBS.
  * FIXED: 4273: Added getCssCount to the list of the methods
    supported by WebDriverBackedSelenium.
  * FIXED: 4055: WDBS implementation of getValue for radio buttons now
    reflects behaviour of RC.
  * FIXED: 4784: Processing locators before use in getCssCount and
    getXpathCount.


v2.26.0
=======
WebDriver:
  * Updated OperaDriver to 0.15.
  * Added transparency support to the Color class.
  * Increased lock time a bit for the FirefoxDriver to make tests more
    stable on Windows.
  * Added the enablePersistenHover capability to allow the user to specify
    whether to use the persistent hover thread in the IE driver. Defaults
    to true for IE.
  * Added support for native events for Firefox 15 and 16.
  * Removed deprecation from ChromeDriver constructors that take a Capabilities
    object. Also added a method to set experimental options in ChromeOptions
    which may be used to set options that aren't exposed through the ChromeOptions
    API.
  * Fixed SafariDriver to allow calling .quit() consecutively without error.
  * Modified FirefoxDriver to use atoms to switch between frames.
  * FIXED: 4535: Hover still does not work perfectly in IE.
  * FIXED: 4676: Unable to fire javascript events into SVG's.
  * FIXED: 4320: Impossible to IE run tests in parallel via TestNG.
  * FIXED: 4309: 'Could not convert Native argument arg 0' error with Firefox.
  * FIXED: 4593: Alert.accept() Cancels the Resend Alert/Dialog Box.
  * FIXED: 4321: Upgrade HtmlUnitDriver to HtmlUnit 2.10.
  * FIXED: 4639: Webdriver 2.25 fails to quit on Windows.
  * FIXED: 3774: New SafariDriver sessions do not come with a clean profile.
  * FIXED: 4375: Executing javascript hangs Firefox.
  * FIXED: 4203: Java SafariDriver has limited websocket frame size.
  * FIXED: 4165: WebDriver fails on a machine with no IP address.
  * FIXED: 3969: SafariDriver should auto-dismiss alerts.

WebDriverJS:
  * FIXED: 4648: findElement errros not helpful.
  * FIXED: 4687: webserverjs cannot find module in node.js.
  * FIXED: 4649: Wrong Content-Length calculation in webdriverjs.
  * FIXED: 4425: Webdriver.js regression: webdriver.By.* selectors defect when
    using Node.js.

Grid:
  * FIXED: 4433: NPE at grid launch if invalid servlet class name is specified.
  * FIXED: 4526: elenium node stop responding when there are 2 or more tests
    waiting for a specific node.
  * FIXED: 2549: "-role hub" doesn't allow Firefox to starts.

v2.25.0
=======
WebDriver:
  * Added API for dealing with BASIC and DIGEST authentication
    dialogs. Currently not implemented in any drivers.
  * Warn users that the IE driver will no longer use the DLL in the
    next release.
  * Deprecated browser specific WebElement subclasses.
  * Added support for "requiredCapabilities" to the remote webdrivers
    and implemented basic support for these in the firefox
    driver. Failure to fulfull a required capability will cause a
    SessionNotCreatedException to be thrown.
  * Added the ability to determine how unhandled alerts should be
    handled. This is handled by the "unexpectedAlertBehaviour"
    capability, which can be one of "accept", "dismiss" or
    "ignore". Java code should use the UnexpectedAlertBehaviour
    enum. This is only implemented in Firefox for now.
  * Allow native events to be configured in Firefox and
    (experimentally) in IE using the "nativeEvents" capability.
  * Updated supported versions of Firefox to 17.
  * Firefox driver will enumerate through client rects until finding
    one with non-zero dimensions when clicking.
  * Better support for hovering on linux.
  * Safari driver will dismiss open alerts to prevent tests from
    hanging.
  * Better handling of overflow edge cases when determining element
    visibility.
  * Point users in the right direction when Safari fails to load a
    file:// URL.
  * Allowed to use IEDriverServer logging abilities in Java binding.
  * Avoid an issue where a call to submit could hang the firefox
    driver.
  * FluentWait will now handle any Throwable, not just
    RuntimeExceptions.
  * FIXED: 3897: Allow windows to be resized from a frame.

WebDriverJS:
  * Better stack traces from test code.
  * Update webdriver.atoms.element.type to recognize
    webdriver.Key.SEPARATOR

RC:
  * Better emulation provided by the WebDriver-backed Selenium when
    using IE, particularly when emulating firing of events.

Grid:
  * FIXED: 3230: Implementing /lifecycle-manager?action=shutdown
    command for the Grid Hub to ensure backward compatibility with
    Grid1 behaviour.

Selenium Server:
  * Reworked SSL certificate generation code when proxying HTTPS
    connections to use non-deprecated APIs in BouncyCastle.

v2.24.1
=======
WebDriver:
  * Work has started on a basic performance profiler.
  * Java bindings: The Color class now supports more color conversions.
  * Failure to click on an element in the IE Driver will yield a more meaningful
    error.
  * FIXED: 3268: setting a cookie without one of the optional values (secure)
    null pointers through remote webdriver
  * FIXED: 1584: bot.dom.getVisibleText does not properly handle display:run-in
    or display:table.
  * FIXED: 4071: IE: JVM/IEDriverServer Crash when the current window is closed
    without switching to another window.
  * FIXED: 3683: WebDriver (selenium server) does not use user specified proxy PAC file for IE.
  * FIXED: 4070: Dot-net bindings: == oprerator fails if first argument is null.
  * FIXED: 4064: Selenium2 crash on IE8 when S_FALSE is returned from get_Document.
  * FIXED: 3945: The SafariDriver hangs if an iframe is deleted while it is selected.
  * FIXED: 3892: WebdriverJS: Need support mouse events
  * FIXED: 3198: Cannot take screenshot from IPhoneDriver in Java

v2.23.1
=======

Selenium RC:
  * Support for Firefox 13 on windows with RC api

v2.23.0
=======

WebDriver:
  * Firefox 13 support
  * CSS Selectors now allow compound selectors
  * SafariDriver is (still) in Beta, annotated accordingly in Java
  * FIXED: 3785: Implicit waits for Safari driver
  * FIXED: 1225: Get text is handled appropriately for self-closing tags.

v2.22.0
=======

Project:
  * Code grant from Google acknowledged in our copyright
    headers. Thanks, Google!

WebDriver:
  * JRE dependency upped to Java 6.
  * IE driver now uses the IEDriverServer. You may need to download
    this. Set the "useLegacyInternalServer" to boolean true if you
    need the old behaviour.
  * Standardized colour values returned from getCssValue are
    normalized to RGBA.
  * IE can use synthesized events if the capability
    "enableNativeEvents" is set to false. This is experimental and not
    expected to work properly.
  * Native events added for Firefox 12.
  * Native events retained for Firefox 10, 11, and 3.x
  * Selenium-backed WebDriver can now return WebElements from
    executeScript.
  * With WebElement.getAttribute() a boolean attribute will return
    "null" if not present on an element.
  * A NoSuchWindowException will be thrown if the currently selected
    window is closed and another command is sent.
  * SafariDriver improved: frame switching, snapshot taking and JS
    executing added.
  * SafariDriver: changed message protocol. The 2.22.0 SafariDriver will
    not be backwards compatible with Selenium 2.21.
  * FIXED: 185: Appending screenshots to remote exceptions is now
    optional. Controlled via the "webdriver.remote.quietExceptions"
    capability.
  * FIXED: 1089: Style attributes are no longer lower-cased by default.
  * FIXED: 1934: Firefox cleans up temporary directories more effectively.
  * FIXED: 3647: WebElement.sendKeys now works in Firefox on XHTML pages.
  * FIXED: 3758: Maximize windows from inside a frame works as expected.
  * FIXED: 3825: Alerts from a nested iframe are now handled properly.

Grid:

  * Fixing Firefox profile extraction if a grid node started from a
    network location (UNC path)

Atoms:
  * bot.actions.type now works as expected in Firefox 12.
  * Introduced better mouse and keyboard abstractions


v2.21.0
=======

WebDriver:
  * Safaridriver has now been added !
  * Issue 3489, maximize the browser window
  * Significant stability improvements in firefoxdriver.
  * Issue 3357 log-path for chromedriver
  * IE driver issue 3360
  * Android driver issue 3504
  * Firefox issue 3559, max-connections-per-server
  * Issue 3520
  * Issue 2826
  * Native events support for Firefox 11
  * Dropped native events support for Firefoxes 4-9

Grid:
  * Significant changes in the timeout strategy0 between hub, nodes and browser.
    See http://code.google.com/p/selenium/wiki/Grid2 section on timeouts.
    Compatibility note: It is recommended to at least update the nodes
    to 2.21. Upgrading only the hub will effectively disable the
    browser-death timeout and is *not* recommended.
  * Improved error messages on console
  * Content length issue solved, Issue 2362
  * Issues 3328,3366
  * Improvements in thread dumps in both hub and node,
    possible to corrolate the two.
  * Added hub api to query parameters

Server:
  * -browserTimeout <timeoutInSeconds> added to
    differentiate between browser hang and client gone (which is
    -timeout <timeout>)
    - System property -Dselenium.server.timeout removed, use -timeout instead.
    See http://code.google.com/p/selenium/wiki/RemoteWebDriverServer
    for further details.
    * Issue 3577


v2.20.0
=======

WebDriver:
  * RemoteWebDriver.setLogLevel is no longer a static method.
  * Introduce a timeout for page loads. This needs to be used in
    conjunction with the unstable page load detection.
  * Adding alertIsPresent ExpectedCondition.
  * Turning off password saving in the Android driver.
  * FIXED: 3391: scroll containing elements, not just windows.
  * FIXED: 2211: Allow the http client factory to discover the proxy
    for traffic between the http command executor and the webdriver
    server via the normal system properties.

WebDriverJS:
  * Refactored the WebDriverJs promise manager to use a proper tree to
    track scheduled tasks.
  * In webdriver.Builder, default to http://localhost:4444/wd/hub if a
    server URL is not specified.

Grid:
  * JDK 1.6.1_31 recommended for maximum stability
  * The HUB is now upgraded to run with Jetty 7.6.1.
  * Making the id for proxy final, and allowing it to be specified
    from the registration request. If the id isn't in the request, the
    remote host is used as an id, as it was before.
  * FIXED: 3096: Memory leak in selenium hub.

RC:
  * More work on SSL certs. Should work cleanly in Firefox now.
  * FIXED: 1982: Clear an input element in such a way as to avoid
    firing any events when emulating typing in selenium
    emulation. Fixes issue 1982.

Atoms:
  * Submit a form when the enter button is pressed in its input
    element.
  * Add a "mouse pixel scroll" event to the atoms events module.
  * Adding a public "mouseOver" action and a little internal
    refactoring around the mouseOver functionality.


v2.19.0
=======

WebDriver:
  * Server-side implementation of the webdriver-backed selenium.
  * "sendKeys" works in the webdriver-backed selenium when using
    safari.
  * Implement local/session storage for iOS driver.
  * Exceptions now thrown when an alert occurs during script
    execution.
  * Native events implemented for Firefox 10.
  * Renamed the experimental "fast" page loaded strategy "unstable"
    and disable queuing of commands when it's enabled.
  * Corrections to javadocs.
  * Disabled native events for Firefox 8 as it's deprecated by
    Mozilla.

RC:
  * Update cybervillains certificate (thanks to Ivan De Marino and
    Mark Watson @ Neustar)
  * Default to using the native xpath engine in selenium-backed
    webdriver instances.
  * Correctly fire events when outside a firefox extension

WebDriverJS:
  * Return a promise from webdriver.WebDriver.prototype.quit() so
    users may register callbacks.
  * Small tweaks so WebDriverJs works as expected in IE7/8.

Known Issues:
  * Holding down a modifier key and clicking with Firefox 10 on
    Windows does not work reliably when using native events.


v2.18.0
========

WebDriver:
  * FIXED: 3169: Getting value attribute on option elements.
  * Alert handling in Firefox and IE: Throwing UnhandledAlertException
    if an alert is present during an operation. The unhandled alert is
    also dismissed to mitigate repeat exceptions.
  * Better handling of getText invocations on SVG elements.
  * FIXED: 3253: Clicking stopped working on Firefox 4.
  * Android Driver now supports Flash, Geolocation.
  * FIXED: 1371: iPhone Driver now supports frame switching.

RC:
  * FIXED: 2958: Selenium RC now closes IE HTA when the tests finish.

WebDriverJs:
  * Fixes around findElements.

v2.17.0
========

WebDriver:
  * Removed deprecated methods
  * FIXED: 3152: iWebDriver will auto-play HTML5 video
  * Fixed issue with permissions on windows caused by wrapping
  * FIXED: 3154, 3144: Issues launching Firefox 9 due to modal dialog
  * Adding warning to android apk when used with an incompatible
    android version (issue 3142)
  * FIXED: 3167: Sending empty keys to a text field no longer throws
  * FIXED: 3173: Using ChromeOptions no longer causes stack exhaustion
  * FIXED: 3169: getAttribute("value") falls back to the text of
    option tags, if no value attribute is specified
  * Updated operadriver to version 0.9

Maven:

  * NOTE: We have removed our dependency on the operadriver from our
    pom, because it creates a circular dependency.  To use the
    operadriver, add the following dependency to your own pom.xml
    file:

    <dependency>
      <groupId>com.opera</groupId>
      <artifactId>operadriver</artifactId>
      <version>0.9</version>
    </dependency>

RC:
  * Bumped firefox support up to Firefox 12

Grid:
  * FIXED: 3161: Thread safety issues

Known issues:
  * Some issues around scrolling (3075, 3045, 3034)

v2.16.1
=======

RC:
  * FIXED: 3148: Allow IE to be launched.

v2.16.0
=======

WebDriver:
  * Native events enabled for Firefox 9
  * The FirefoxDriver now enables apps to use offline storage by
    default.
  * ChromeDriver allows setting the chrome driver's environment more
    easily.
  * RemoteWebElement implementations now guarantee that the ID used to
    identify them. This allows "hashCode" and "equals" to be local
    operations in Java.
  * The PageFactory will now no longer decorate List<WebElement>
    fields unless annotated with a @FindBy.
  * By default, clicks will now be in the middle of elements.
  * RemoteWebDriver will use uncacheable GET requests to communicate
    with the remote webdriver server.
  * HtmlUnitDriver defaults to emulating Firefox 3.6.
  * FIXED: 2985: Calling quit() on the IE Driver in a shutdown hook
    will no longer kill the JVM.
  * FIXED: 2893: You can now pass a Map to executeScript when using
    Firefox.
  * FIXED: 1395, 2747, 2869, 2431: Upgraded version of CocoaHTTPServer
    to the latest and greatest.

WebDriverJS:
  * Test failures are now annotated with the task history.
  * JSONP support dropped in favour of CORS. For those browsers where
    CORS is not fully implemented, added a "/xdrpc" (cross-domain rpc)
    end-point.
  * Change the promise.Application event loop to run at a set interval
    instead of trying to explicitly trigger it at the appropriate
    times. This makes debugging much simpler.
  * WebDriverJS hub front-end now renders correctly in IE.

Grid:
  * It's now a beautiful butterfly.

RC:
  * IE HTA mode will now close the final window.
  * All windows are now opened as "resizable". This means that they
    should always open in new windows rather than tabs in IE.
  * *chrome mode can type into file input elements on Firefox 8+
  * WebDriverCommandProcessor has all constructors depending on the
    (deprecated) SuppliesWebDriver class marked as deprecated. Will be
    deleted in the next release.

Automation Atoms:
  * Bug fixes and updates
  * Included a touchscreen abstraction


v2.15.0
=======
Project:
  * Code donation from Google.

WebDriver:
  * Now supports up to and including Firefox 11.
  * Changed order of FirefoxProfile initialization attempts on a
    remote host: 1) try to load from capabilities, 2) try to load
    locally if webdriver.firefox.profile is specified, 3) create an
    empty profile.
  * Added the beginning of infrastructure for gathering logs from
    webdriver tests.
  * Added an UnreachableBrowserException.
  * Additional work on the WebDriver JS console.
  * Implicit waits now change how long we wait for alerts. This
    functionality will change in 2.16
  * FIXED: 2700: The infamous scrolling issue.
  * FIXED: 2816: ClassCastException when calling switchTo().alert().

Grid:
  * Grid now distinguishs between CLIENT_GONE and
    FORWARDING_TO_NODE_FAILED.
  * FIXED: issue where older RCs could not connect to a newer hub.

RC:
  * Selenium-backed WebDriver now uses atoms for typing.

Automation Atoms:
  * Significantly reworked input device abstractions.

Known Issues:
  * HTA mode for Selenium RC (*iexplore) leaves a browser window open.


v2.14.0
=======
WebDriver:
  * Deleted all deprecated methods in the Java API.
  * Client code cleaned to work with Java 5. Server code needs Java 6.
  * Added a front-end for executing WebDriverJS scripts. Point a
    browser at http://localhost:4444/wd/hub.
  * Can now query an Android driver for supported capabilities.
  * Updated JSON framework used in the iOS driver.
  * Fixed issue with scrolling on small viewports with native events
    in Firefox.
  * FIXED: 2889: FluentWait supports adding a custom message to
    timeout exception.
  * FIXED 2798: When implicit waits are enabled in the FirefoxDriver,
    stale element reference errors when searching for child elements
    are now handled properly
  * FIXED 2917: Preventing endless recursion in hashCode.

Server:
  * Memory leak fixed

Grid:
  * New beta console added.
  * Grid nodes were leaking even more memory that regular server
    nodes.
  * Fixed a scenario that used to lead to "session = null" errors.
  * Now support iOS nodes.

Known issues:
  * Continuing problems with element out of bounds exception being
    thrown.


v2.13.0
=======
Dependency change:
  * Selenium/webdriver java dependencies now use apache commons-exec
    (http://commons.apache.org/exec/) version 1.1. If you are using manual
    dependency management you will need to add this to your project.
    If you resolve via maven central (maven, ivy, gradle), this will
    be handled automatically.
WebDriver:
  * Recovering from null window references in the Firefox driver (#1438)
  * Make native events work correctly on Linux with the Python bindings (#2633)
  * Improved finding Firefox on Windows in the C# bindings (2818)
  * Screenshots in Python are now working (2829)
  * Exporting webdriver.promise from the Javascript API (2839)
  * Permission denied accessing some elements using the Firefox driver (2863)
  * Fixed typing into content editable elements with Firefox (2.12 regression)
  * Firefox is started in the forgeground on OS X. Focus / blur events now have
    higher chance of firing correctly on OS X.
  * Deprecated methods were removed from the FirefoxDriver and FirefoxProfile
    classes (saveScreenshot, enableNativeEvents, alwaysLoadNoFocusLib).
  * The amount of time a test can remain hanging is now capped (to 3 hours).

Grid:
  * Gracefully handle registration of old nodes in a new grid hub (#2738).
  * Releasing all the resources when a proxy is removed from the hub (#2768).

Known issues:
  * Synthesized mouse events are inaccurate (Affects Firefox driver users
    on OS X) (2281)
  * Invalid move target out of bounds exception thrown.2700
  * Dragged elements end up in the wrong location, with the Firefox driver,
    when scrolling is required (typically with small viewport) (2877)

v2.12.0
=======

RC
  * Disabled web security checks for Chrome by default.
  * Actually reenabling *safariproxy.

WebDriver
  * Firefox 8 support enabled
  * Added @Beta annotation. Any method marked with this may be deleted
    or changed without notification.
  * Added @Beta Window control for Firefox in Ruby and Java. This
    allows resizing and moving.
  * Renamed FirefoxProfile.enableNativeEvents() to
    FirefoxProfile.areNativeEventsEnabled(). Deprecated original
    method. Will be removed in 2.13.
  * Renamed FirefoxProfile.alwaysLoadNoFocusLib() to
    FirefoxProfile.shouldLoadNoFocusLib(). Deprecated original
    method. Will be removed in 2.13.
  * Better reporting of page size when attempting to move out of bounds.
  * More informative error message when a remote webdriver client
    fails to connect to the browser.
  * PageFactory now only decorates WebElement lists.
  * Calling WebElement.clear on a disabled or readOnly element will
    throw an InvalidElementStateException.
  * WebDriver.getWindowHandle will throw a NoSuchWindowException if
    the window is closed.
  * FIXED: 1498: HtmlUnit no longer finds containing element when
    searching by CSS.

Grid
  * Made Grid orphan check only apply to Se1 clients.

Atoms
  * Implemented clear action for contentEditable elements.


v2.11.0
=======

RC:
  * Safari proxy added back to the supported browser.


v2.10.0
======

Grid:
  * Stability and reliability fixes.
  * A single node can now process both selenium 1.0 and selenium webdriver requests.  Old proxies deprecated.
  * FIXED: 2617: Removing unnecessary logging.
  * FIXED: 2650, 2400: Unregister dead nodes.

WebDriver:
  * FIXED: 2700: Don't throw MoveTargetOutOfBoundsError where we shouldn't.
  * FIXED: 2301: Allow commas in CSS selectors.
  * FIXED: 2099: Occasional XPath lookup errors.
  * FIXED: 1771: Don't scroll unnecessarily.
  * FIXED: 2674: Don't incorrectly decorate List<WebElement>s which don't have @FindBy annotations.

Javascript:
  * Added jsapi, including node integration.  More details to come.

General:
  * Updated version of guava used to 10.0.1.

v2.9.0
======

Project:
  * ThoughtWorks code grant to the Software Freedom Conservancy complete.

WebDriver:
  * Support for Ice Cream Sandwich in the AndroidDriver
  * CSS Selector support enabled for Android
  * Remote webdriver server log now contains '[HTML source]' instead of full
    source.
  * Better respect for preformatted text in WebElement.getText()
  * Adding better error message when failing to connect to the FirefoxDriver.
  * Reduced scrolling during tests for IE and Firefox.
  * Preserve the state of modified keys when using native events on Linux.
  * Support for experimental page load detection in firefox. Set the
    "webdriver.load.strategy" to "fast" in the FirefoxProfile to enable less
    conservative page loading detection at the risk of greater test
    instability.
  * FIXED: 2031: Shielding backslashes when writing preferences to a file.
    There is an issue with Firefox: it drops \n and \r when it moves user
    preferences to prefs.js. This patch is a workaround.
  * FIXED: 2223: Clicks on labels are now propagated to the referenced element.
  * FIXED: 2646: PortProber no longer attempts to divide by zero.
  * FIXED: 2675: Better detection of where to click on links.

RC:
  * FIXED: 569: Making assert and verify methods NPE-safe.


v2.8.0
======

WebDriver
  * FIXED: 1967,1934: Temporary directories no longer fill up disk.
  * FIXED: 2295,1899: Better handling of select/option tags in HtmlUnit
  * Disabled elements won't be cleared any more
  * FIXED: 2531: Allow setting frozen firefox profile preferences to their frozen values.
  * FIXED: 2509: Fixing error=24 too many open files bug
  * Added setFileDetector to RemoteWebDriver to allow files to be uploaded to the remote server
  * Faster error reporting if chromedriver isn't executable
  * FIXED: Occasional ClassCastExceptions
  * FIXED: Proxy configuration NullPointerException problem
  * FIXED: 1326: Allow parallel execution of FirefoxDriver on Linux with native events
  * FIXED: 384: Fixed native FirefoxDriver crash on some 64-bit linux systems
  * FIXED: 417: Allow @FindBy annotations to be put on List<WebElement> as well as just WebElement fields
  * Added native event support for Firefox 7
  * Added constructor to ChromeDriver that lets you specify the ChromeDriverService as well as the DesiredCapabilities
  * FIXED: By.linkText now always trims leading and trailing whitespace
  * FIXED: Issues with doubleClick in Firefox

RC
  * FIXED: 1934: -singleWindow works for *iexplore
  * Selenium Server params work with RC Grid configuration
  * Adding support for Firefox 8

v2.7.0
======

WebDriver
  * FIXED: 2487: FirefoxDriver no longer types in the URL bar.
  * FIXED: Issues to do with not clicking on elements out of view when using
    native events.
  * FIXED: 2456: Double click and get no longer hangs Firefox.
  * Improved emulation of Selenium RC when using Opera in the
    WebDriverBackedSelenium.
  * FIXED: 2421: Chrome returns doubles instead of ints because it supports
    sub-pixel rendering.

RC
  * FIXED: #2413: "Missing space between browser name and custom path in error
    message"
  * FIXED: 2390, 2477: Make -h a synonym for -help

Automation Atoms
  * Allow bot.dom.getInViewLocation to scroll a specified location into view.


v2.6.0
======

WebDriver
  * Better handling of the case where emphemeral sockets are exhausted.
  * More widespread use of the InvalidSelectorError in Chrome and Remote.
  * When using native events, prevent firefox from scrolling if an element is
    already in the view.
  * Improvements in the mouse emulation (movement, click, double click, context
    click)
  * Bumped included version of OperaDriver to 0.7.1.
  * Attempt to address issue #1443 (the infamous "getWindow() == null" problem)
  * Added timing information to WebDriver exceptions resulting from command
    invocations in the remote driver.
  * Added an ExpectedConditions class with common ExpectedCondition
    implementations.
  * Better usage of sockets in the remote webdriver

RC
  * WebDriver-backed Seleniums will now clear text fields before typing.

Grid
  * Significantly improved thread safety.
  * Improved information on the index page of the hub.

Automation Atoms
  * bot.inject.executeScript* handles function arguments better.
  * Add atom to get the frame index of a frame element (bot.frame.getFrameIndex)
  * Added emulation of touch devices and events
  * Use DOM Events level 2 and 3 for events IE if available


v2.5.0
======

WebDriver
  * Firefox 7 support without Native Events
  * Implementing scrolling past the viewport for Firefox
  * FIXED: 1020: Clicking on a link over multiple lines in Firefox
  * Minor cleanups of code

Grid
  * FIXED: Thread Safety Issues



v2.4.0
======

WebDriver:
  * Firefox 6 support.
  * Change in the wire protocol to bring alert checking inline with the
    semantics of other commands.
  * Improved text handling: non-breaking spaces are now returned as spaces, even
    in the middle of an existing body of text.
  * Minor fixes for detecting whether elements are visible.
  * Added handling of lists and maps in EventFiringWebDriver.executeScript().
  * FIXED: 2158: Fixing HtmlUnit select element getAttribute behaviour for
    "multiple" attribute.
  * Better handling of cookies in the remote webdriver (particularly Chrome)
  * FIXED: Thread safety issues.
  * Added clear app cache to the wire protocol.


Selenium:
  * Firefox 8 support.


v2.3.0
======

WebDriver:
  * Better detection of clickable areas in Firefox.
  * Alert handling works in Chrome.
  * Merge of Google-contributed code into the underlying Atoms.
  * FIXED: Internet Explorer crashes when an element has empty text and getText called.
  * FIXED: IBM JDK throws different exception when unable to bind to a socket.


v2.2.0
======

Selenium RC:
  * Avoiding double quoting the "method" when captured network traffic is
    returned via XML.

WebDriver:
  * relatedTarget now set on appropriate events (mouseover, mouseout)
  * Multiply wrapped WebElements now unwrapped properly when using the remote
    webdriver
  * RemoteWebElement will reuse an ID if the element has been looked up before.
  * Better warnings for emulated Selenium methods "allowNativeXpath" and
    "useXpathLibrary"
  * More consistent errors when an xpath expression returns something that is
    not a WebElement (indicated via the InvalidSelectorException.

Grid:
  * Adding support for a "host" variable in the config files.
  * Additional logging


v2.1.0
======

WebDriver:
  * Round to 0 if something looks like it's off the edge of the screen when
    calculating distances. Fixes issue 1776.
  * Deleting the deprecated TimeoutException inner class and replacing with the
    top-level one

Grid:
  * Properly form the HTML output for console display.
  * Track when a session has become orphaned.  I.e., when the client sends no
    commands after the initial session creation.  This almost always indicates
    the client is no longer connected and the session is unusable immediately.
