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