# Selenium changelog
> Browser automation for testing web applications.
- Vendor: Selenium project
- Category: Developer Tools
- Official site: https://www.selenium.dev
- Tracked by: What's New (https://whatsnew.fyi/product/selenium)
- Harvested from: GitHub (SeleniumHQ/selenium)
- Entries below: 10 (newest first)
What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog.
## Releases
### nightly — Nightly
- Date: 2026-08-06
- Version: nightly
- Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/nightly
- Permalink: https://whatsnew.fyi/product/selenium/releases/nightly
- Labels: Pre-release; nightly
- **deprecated** — Deprecate invalid Firefox profile code in dotnet, java, js, and rb
- **changed** — Dynamic K8s video always use the per-session subfolder and remove pod-wait plus relocation
- **fixed** — Prevent empty driver version from being cached in metadata in rust
- **added** — Support SE_*DRIVER environment variables to set driver locations in dotnet
- **changed** — Make BiDi transport factories composable in dotnet
##### Commits
- 88e2d0c: [js] Wait for async BiDi events and window resize in flaky tests (#17874) (Titus Fortner) [#17874](https://github.com/SeleniumHQ/selenium/pull/17874)
- 05a002e: [dotnet] fix flaky cancellation test to accept OperationCanceledException subclasses (Titus Fortner)
- 960abd2: [dotnet][java][js][rb] deprecate invalid Firefox profile code (#17871) (Titus Fortner) [#17871](https://github.com/SeleniumHQ/selenium/pull/17871)
- a25afbb: [build] Automated Browser Version Update with CDP (#17873) (Selenium CI Bot) [#17873](https://github.com/SeleniumHQ/selenium/pull/17873)
- 4376465: [build] patch rules_ruby to emit Windows batch launchers with CRLF (Titus Fortner)
- 4efbdf0: [grid] Dynamic K8s video always use the per-session subfolder; remove pod-wait + relocation (#17876) (Viet Nguyen Duc) [#17876](https://github.com/SeleniumHQ/selenium/pull/17876)
- b9d61b7: [rust] Prevent empty driver version from being cached in metadata (#17757) (Mathias Paulenko Echeverz) [#17757](https://github.com/SeleniumHQ/selenium/pull/17757)
- 62b6294: [dotnet] support SE_*DRIVER environment variables to set driver locations (#17875) (Titus Fortner) [#17875](https://github.com/SeleniumHQ/selenium/pull/17875)
- 4f1e333: [dotnet] [bidi] Make BiDi transport factories composable (#17877) (Nikolay Borisenko) [#17877](https://github.com/SeleniumHQ/selenium/pull/17877)
### selenium-4.46.0 — Selenium 4.46.0
- Date: 2026-07-11
- Version: selenium-4.46.0
- Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.46.0
- Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.46.0
- **changed** — Make Either.stream() and iterator() empty for a left value
- **fixed** — Trim whitespace around NO_PROXY entries in Ruby
- **fixed** — Treat prefix literally in UrlTemplate.match(url, prefix)
- **changed** — Show browser version and available CDP versions in Java
- **fixed** — Handle system proxy setting for arguments passed to selenium manager in Java
- **added** — Add binding-neutral BiDi schema with cddl2ts-gated fidelity in JavaScript
- **added** — Add ClientConfig for HTTP client customization in Ruby
- **changed** — Split event stream backed subscription and enumeration in DotNet BiDi
- **changed** — Move Urls knowledge to testing web server in DotNet tests
- **fixed** — Fix comparator of Docker versions in Java
- **changed** — Route Safari, STP and WebView2 to their handlers in Python
- **fixed** — Fix classpath packaging Redis-backed for SessionQueue in Grid
- **fixed** — Do not ignore browser path when version is specified in Rust selenium-manager
- **changed** — Allow constructor args to be used when coercing from JSON
- **fixed** — Fix JSON parser EOF sentinel collision with U+FFFF in Java
- **fixed** — Reject unescaped control characters in JSON strings in Java
- **changed** — Support multiple names for Firefox binary in Linux in Rust
- **fixed** — Tighten JSON number lexer to match RFC 8259 in Java
- **changed** — Enforce commas between JSON elements and accept trailing commas in Java
- **deprecated** — Deprecate methods to avoid internal BiDi connection surfacing on driver in Java
##### Detailed Changelogs by Component
**[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)** |
**[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)** |
**[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)** |
**[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)** |
**[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
* [build] Upgrade rules_rs to 0.0.90 and build Rust against @llvm on macOS by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17683
* [dotnet] Thread safe product info determination by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17684
* [release] Skip release if package is already published by @diemol in https://github.com/SeleniumHQ/selenium/pull/17686
* [docs] add design decision record process and template by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17665
* [rust] Support pbzx-compressed macOS .pkg payloads by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17691
* [java] Mark all current BiDi related classes beta by @pujagani in https://github.com/SeleniumHQ/selenium/pull/17690
* [build] Upgrade rules_rs to 0.0.92 by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17688
* [ci] Ignore changes in docs/decisions directory for pull requests by @diemol in https://github.com/SeleniumHQ/selenium/pull/17693
* [build] Upgrade @llvm to 0.8.9 by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17703
* [rust] Use PKG again for Firefox macOS downloads by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17702
* [rb] trim whitespace around NO_PROXY entries by @aguspe in https://github.com/SeleniumHQ/selenium/pull/17565
* Treat prefix literally in UrlTemplate.match(url, prefix) by @vasiliy-mikhailov in https://github.com/SeleniumHQ/selenium/pull/17713
* [java] show browser version and available CDP versions by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17708
* Make Either.stream() and iterator() empty for a left value by @vasiliy-mikhailov in https://github.com/SeleniumHQ/selenium/pull/17714
* [java] Handle system proxy setting for arguments passed to selenium manager by @bhecquet in https://github.com/SeleniumHQ/selenium/pull/17402
* [js] Add binding-neutral BiDi schema with cddl2ts-gated fidelity by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17700
* [build] add copyright headers to rbs, pyi, ts, mjs, and erb files by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17720
* [rb] add ClientConfig for HTTP client customization by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17699
* [rb] Add copyright header for client_config.rbs by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17722
* [dotnet] [bidi] Split event stream backed subscription and enumeration by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17705
* [dotnet] [test] Moves Urls knowledge to testing web server by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17724
* [java] fix comparator of Docker versions by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17723
* [dotnet] [test] Driver is protect
_[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.46.0]_
### selenium-4.45.0 — Selenium 4.45.0
- Date: 2026-06-16
- Version: selenium-4.45.0
- Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.45.0
- Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.45.0
- **removed** — Remove deprecated logging classes from Java
- **fixed** — Close pre-handshake race in WebSocket proxy for Grid
- **fixed** — Correct handling for older browsers and missing casing in JavaScript
- **deprecated** — Deprecate curb HTTP client support in Ruby
- **changed** — Migrate find-elements atom from Closure to TypeScript in JavaScript
- **security** — Update vulnerable JavaScript dependency with a range
- **fixed** — Fix template caching in DotNet
- **changed** — Update System.Text.Json to 8.0.6 in DotNet
- **changed** — Include snupkg files when packaging and allow the use of SourceLink in DotNet
- **changed** — Run format against slnx instead of looping csproj in DotNet
- **fixed** — Fix remote linkage in SourceLink for DotNet
- **changed** — Support deterministic build output in DotNet
- **changed** — Remove npm dependency and use Bazel for everything in JavaScript
##### Detailed Changelogs by Component
**[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)** |
**[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)** |
**[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)** |
**[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)** |
**[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
* [build] derive PR diff base from HEAD^1 instead of trunk tip by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17438
* [build] setup trusted publishing from Github to npmrc by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17445
* [build] generate release notes from previous minor release tag by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17449
* [build] fix when to update lock files during the release process by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17450
* [java] remove deprecated logging classes by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17453
* [grid] Close pre-handshake race in WebSocket proxy by @shs96c in https://github.com/SeleniumHQ/selenium/pull/17435
* [JavaScript] Correct handling for older browsers and missing casing by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17451
* Use pyproject for Python runtime deps lock input by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17452
* [rb] deprecate curb http client support by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17443
* [javascript] Migrate find-elements atom from Closure to TypeScript by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17458
* [py] replace rules_python sphinxdocs with local sphinx_docs rule by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17461
* [build] Configure Renovate dashboard approval by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17464
* [js] update vulnerable dependency with a range by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17466
* [build] remove duplicated grid ui tests by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17468
* [build] update java graphpql dependency by filtering out bad reference by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17469
* [rb] upgrade to steep 2.0 by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17470
* [rust] update dependencies by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17472
* [build] update GitHub Actions to latest major versions by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17475
* [dotnet] update dev dependencies by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17474
* [dotnet] fix template caching by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17476
* [dotnet] update system.text.json to 8.0.6 by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17477
* [js] update dev dependencies by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17479
* [dotnet] upgrade paket from v9 to v10 by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17481
* [build] bump baze
_[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.45.0]_
### selenium-4.44.0 — Selenium 4.44.0
- Date: 2026-05-12
- Version: selenium-4.44.0
- Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.44.0
- Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.44.0
- **fixed** — Retrieve devtools version dynamically for Ruby package verification
- **changed** — Do not truncate internal log messages at error/warn levels in dotnet
- **fixed** — Safe modifications of internal log handlers in dotnet
- **removed** — Remove planned obsoleted members for 4.44 in dotnet
- **changed** — Statically declare commands in dotnet bidi
- **changed** — Statically declare events in dotnet bidi
- **added** — Add C# 14 extension to polyfill ArgumentNullException.ThrowIfNull in dotnet
- **changed** — Align SetDownloadBehavior command in dotnet bidi
- **changed** — Align ContinueWithAuth command in dotnet bidi
- **changed** — Align SetGeolocation polymorphic command in dotnet bidi
- **deprecated** — Deprecate the native methods inside the HttpClient interface in Java
- **added** — Add CDDL 2 Python generator
- **fixed** — Accept legacy session-closed event payloads in grid
- **fixed** — Fix NoSuchElementException for custom By locators in Java
- **fixed** — Fix NPE when response status is null
- **fixed** — Fix stopping of network monitoring via DevTools in dotnet
- **added** — Initial creation of the Selenium CLI Tool
- **changed** — Use generated Bidi files instead of hand curated ones in Python
- **removed** — Remove field ChromiumDriver.capabilities in Java
- **deprecated** — Obsolete Type(string) method in Input module in dotnet bidi
##### Detailed Changelogs by Component
**[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)** |
**[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)** |
**[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)** |
**[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)** |
**[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
Click to see all the changes included in this release
* fix(documentation): update artifact naming for generated docs by @diemol in https://github.com/SeleniumHQ/selenium/pull/17332
* fix(ruby): retrieve devtools version dynamically for package verification by @diemol in https://github.com/SeleniumHQ/selenium/pull/17335
* [dotnet] Don't truncate internal log messages at error/warn levels by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17333
* [dotnet] Safe modifications of internal log handlers by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17334
* [dotnet] Remove planned obsoleted members for 4.44 by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17328
* [dotnet] [bidi] Statically declare commands by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17330
* [dotnet] [bidi] Statically declared events by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17331
* [dotnet] Add C# 14 extension to polyfill `ArgumentNullException.ThrowIfNull` by @RenderMichael in https://github.com/SeleniumHQ/selenium/pull/16697
* [dotnet] [bidi] Align SetDownloadBehavior command by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17336
* [dotnet] [bidi] Align ContinueWithAuth command by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17337
* [dotnet] [bidi] Align SetGeolocation polymorphic command by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17338
* [dotnet] [test] In-process test webserver by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17339
* [java] deprecate the 'native' methods inside the HttpClient interface by @joerg1985 in https://github.com/SeleniumHQ/selenium/pull/17340
* CDDL 2 Python generator by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/16914
* Fix py:local_dev rake task by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17342
* [grid] Accept legacy session-closed event payloads by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17343
* [java] specify nullability in package `org.openqa.selenium.remote` by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17325
* fix NPE when response status is null by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17348
* [java] fix NoSuchElementException for custom By locators by @Chandan25sharma in https://github.com/SeleniumHQ/selenium/pull/17287
* [py] Update docs with pytest example and minor formatting fixes by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17351
* [dotnet] Fix stopping of network monitoring via DevTools by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17352
* [dotnet] [test] Update tests to target .NET 10 by @nvborisenko in https:
_[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.44.0]_
### selenium-4.43.0 — Selenium 4.43.0
- Date: 2026-04-10
- Version: selenium-4.43.0
- Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.43.0
- Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.43.0
##### Detailed Changelogs by Component
**[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)** |
**[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)** |
**[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)** |
**[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)** |
**[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
**Full Changelog**: https://github.com/SeleniumHQ/selenium/compare/selenium-4.42.0...selenium-4.43.0
### selenium-4.42.0 — Selenium 4.42.0
- Date: 2026-04-09
- Version: selenium-4.42.0
- Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.42.0
- Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.42.0
- **added** — Color Class for Javascript library
- **added** — BiDi speculation module for Java
- **changed** — Python execute_script and execute_async_script now have return type annotations
- **changed** — DotNet BiDi event arguments unified to use EventArgs naming
- **changed** — DotNet BiDi functionality exposed via interface
- **changed** — DotNet WebDriver can be disposed asynchronously
- **changed** — DotNet BiDi RemoteValue converted to well-known types
- **changed** — DotNet BiDi BrowsingContext and UserContext cached per session
- **changed** — DotNet BiDi RemoteValue converted to IDictionary
- **changed** — Java PrintOptions and similar classes now use fluent setters
- **changed** — Java Keys enforces CharSequence contract in charAt()
- **changed** — Grid Router bypass WebSocket data path via transparent TCP tunnel
- **changed** — Ruby now uses portable Ruby
- **changed** — Python __enter__ in remote.WebDriver uses Self as return type
- **fixed** — DotNet BiDi unregister cancelled commands
- **fixed** — DotNet BiDi properly handle websocket close handshake
- **fixed** — Java fix or condition
- **fixed** — Java RemoteWebDriver.builder() no longer serializes binary stream
- **fixed** — Java Platform.extractFromSysProperty guarded against NPE
- **deprecated** — Java FN key deprecated in favor of OPTION as alias of ALT
##### Detailed Changelogs by Component
**[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)** |
**[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)** |
**[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)** |
**[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)** |
**[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
Click to see all the changes included in this release
* [rust][rb] Update lock files with new versions by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17118
* [dotnet] [bidi] Unify all event arguments to be *EventArgs by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17125
* [py] Add return type annotation to execute_script and execute_async_script by @adamtheturtle in https://github.com/SeleniumHQ/selenium/pull/17117
* [dotnet] [bidi] Expose functionality via interface by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17127
* [dotnet] [bidi] Unregister cancelled commands by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17129
* [dotnet] [bidi] Properly handle websocket close handshake by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17132
* [ruby] fix linter error in `./go authors` script by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17136
* [nodejs] Color Class for Javascript library by @BckupMuthu in https://github.com/SeleniumHQ/selenium/pull/16944
* [java] fix "or" condition by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17135
* [java] Improve screenshot error message by @seethinajayadileep in https://github.com/SeleniumHQ/selenium/pull/17120
* [java] fix "Don't serialize binary stream - it might be large" when using `RemoteWebDriver.builder()` by @tim-burke-systemware in https://github.com/SeleniumHQ/selenium/pull/17139
* [dotnet] [bidi] Wait until events are dispatched when unsubscribing by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17142
* [dotnet] Any WebDriver can be disposed asynchronously by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17119
* [grid] Router bypass WebSocket data path via transparent TCP tunnel by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17146
* [dotnet] [bidi] Preserve configurable options pattern by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17144
* [rb] Use portable Ruby by @p0deje in https://github.com/SeleniumHQ/selenium/pull/16936
* [java] Guard against NPE in Platform.extractFromSysProperty by @seethinajayadileep in https://github.com/SeleniumHQ/selenium/pull/17151
* [java] Deduplicate Unicode PUA mappings in Keys; make OPTION an alias of ALT and deprecate FN by @seethinajayadileep in https://github.com/SeleniumHQ/selenium/pull/17147
* [java] remove `@Nullable` from return value for `ExpectedConditions` that never return null by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17149
* [java] Fluent setters in few classes like `PrintOptions` etc. by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17148
* [dotnet] [bidi] Add disposed guard by @nvborisenko in https://githu
_[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.42.0]_
### selenium-4.41.0 — Selenium 4.41.0
- Date: 2026-02-20
- Version: selenium-4.41.0
- Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.41.0
- Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.41.0
- **removed** — Remove type stub packages from runtime dependencies in Python
- **added** — Canonical approach to supporting AI agent directions
- **fixed** — Improve error message for died grid in Java
- **fixed** — Fix return type hint for alert_is_present in Python
- **fixed** — Fix JSON parsing of numbers with exponent in Java
- **changed** — Simplify context aware command options for dotnet BiDi
- **changed** — Integrate mypy type checking with Bazel for Python
- **changed** — Make Bazel test target names consistent with other languages in Python
- **changed** — Replace hardcoded bazel-selenium references with dynamic path resolution
- **changed** — Refactor BiDi module initialization to pass BiDi explicitly in dotnet
##### Detailed Changelogs by Component
**[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)** |
**[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)** |
**[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)** |
**[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)** |
**[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
Click to see all the changes included in this release
* [py] Remove type stub packages from runtime dependencies by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16945
* Canonical approach to supporting AI agent directions by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16735
* [build] Pre-release workflow improvements by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16946
* [build] Prevent nightly releases during release window by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16948
* [build] Fix Bazel NuGet push implementation by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16950
* [build] Release workflow improvements by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16947
* [build] Fix Bazel JSDocs implementation by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16949
* [build] Create config files from environment variables for publishing by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16951
* [js] create task to update dependencies by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16942
* [build] Java release improvements and build verification tasks by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16952
* [py] integrate mypy type checking with Bazel by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16958
* [build] Migrate workflows to use centralized bazel.yml by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16955
* [dotnet] [bidi] Simplify context aware command options by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16954
* [build] simplify release.yml: remove draft, build once during publish by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16960
* [dotnet] [bidi] AOT safe json converter for `Input.Origin` class by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16962
* [dotnet] [bidi] AOT safe json converter for `OptionalConverter` by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16963
* [dotnet] [bidi] Null guard for event handlers by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16967
* [java] Improve error message for died grid by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16938
* [build] combine pre-release dependency updates by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16973
* [rb] remove stored atoms these get generated by build by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16971
* [dotnet] [bidi] Unignore some internal tests by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16968
* [build] run ruff on python files outside py directory by @titusfortner in https://github.com/SeleniumHQ/se
_[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.41.0]_
### selenium-4.40.0 — Selenium 4.40.0
- Date: 2026-01-18
- Version: selenium-4.40.0
- Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.40.0
- Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.40.0
- **changed** — Change BiDi emulation commands return type to void in Java
- **added** — Support SetScreenSettingsOverrideAsync method in DotNet Emulation module
- **added** — Implement emulation.setScreenOrientationOverride in Java BiDi
- **added** — Create user-friendly method for enabling BiDi in Ruby
- **added** — Add LocalWebDriver base class in Python
- **changed** — Add synchronization and error handling for socket interactions in Ruby
- **changed** — Mark low level BiDi implementation as private API in Ruby
- **changed** — Ensure driver process is always stopped in Ruby
- **added** — Add missing Script.RemoteReference LocalValue type in DotNet BiDi
- **fixed** — Fix nullability warnings in DotNet WebDriver
- **removed** — Remove deprecated FTP proxy support in Python
- **fixed** — Fix bug in FileHandler that always failed on macOS
- **added** — Add force encoding to remove warnings caused by json 3.0 in Ruby
- **changed** — Pin Browsers in Bazel by default
- **changed** — Build Selenium Manager for tests
##### Detailed Changelogs by Component
**[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)** |
**[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)** |
**[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)** |
**[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)** |
**[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
Click to see all the changes included in this release
* [dotnet] Modernize `EnvironmentManager`, standardize assembly teardown by @RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15551
* [java] Refactor tests by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16684
* [ci]: bump cargo lockfile by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16698
* [java][BiDi] change emulation commands return type to void by @Delta456 in https://github.com/SeleniumHQ/selenium/pull/16699
* [java] simplify strings processing by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/15309
* Fix few more flaky ruby tests by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16695
* [bazel] Switch to custom `closure_js_deps` rule by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16571
* [dotnet] [bidi] Support SetScreenSettingsOverrideAsync method in Emulation module by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16704
* [dotnet] Modernize code patterns in test suites by @RenderMichael in https://github.com/SeleniumHQ/selenium/pull/16701
* use proper AssertJ asserts that generate a useful error message by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16707
* fix Java language level in IDEA by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16708
* [py] Properly verify Selenium Manager exists by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16711
* fix flaky Ruby test `element_spec.rb` by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16709
* [java][BiDi] implement `emulation.setScreenOrientationOverride` by @Delta456 in https://github.com/SeleniumHQ/selenium/pull/16705
* [rb] add synchronization and error handling for socket interactions by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16487
* [rb] mark low level bidi implementation as private api by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16475
* [rb] ensure driver process is always stopped by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/15635
* [rb] create user-friendly method for enabling bidi by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/14284
* [dotnet] [bidi] Added missing Script.RemoteReference LocaclValue type by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16717
* [dotnet] Standardize `IEquatable` implementations across types overriding Equals by @RenderMichael in https://github.com/SeleniumHQ/selenium/pull/16665
* [dotnet] Fix nullability warnings in `WebDriver` by @RenderMichael in https://github.com/SeleniumHQ/selenium/pull/16662
* [py] Don't compare object identity in conftest by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16723
* #16720 avoid failing becau
_[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.40.0]_
### selenium-4.39.0 — Selenium 4.39.0
- Date: 2025-12-06
- Version: selenium-4.39.0
- Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.39.0
- Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.39.0
- **fixed** — Text node children are now always considered as displayed in atoms
- **changed** — Grid UI enhanced with theme integration and improved status indicators
- **added** — Python BiDi emulation command set_locale_override
- **added** — Python BiDi emulation command set_scripting_enabled
- **changed** — Python docstrings updated to Google pydoc format
- **added** — Java BiDi browsingContext.downloadEnd event implementation
- **added** — Python BiDi emulation command set_screen_orientation_override
- **added** — Python BiDi emulation command set_download_behavior
- **added** — Java BiDi emulation.setTimezoneOverride command implementation
- **changed** — Grid minimum Docker API requirement updated to 1.44 for Docker Engine v29+
- **added** — Python BiDi emulation command set_user_agent_override
- **changed** — DotNet BiDi communications namespace simplified
- **changed** — DotNet atoms now generated statically
- **changed** — Node.js dev dependencies updated to fix vulnerabilities
- **changed** — Java BiDi GeolocationOverride now allows passing null
- **changed** — rules_rust moved to bzlmod in Bazel
- **changed** — rules_dotnet upgraded to 0.20.5
##### Detailed Changelogs by Component
**[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)** |
**[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)** |
**[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)** |
**[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)** |
**[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
Click to see all the changes included in this release
* [atoms] fix text node children are always considered as displayed #16284 by @joerg1985 in https://github.com/SeleniumHQ/selenium/pull/16329
* [grid] Enhance UI with theme integration and improved status indicators by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/16512
* [py][bidi]: add emulation command - `set_locale_override` by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16504
* [py][bidi]: add emulation command `set_scripting_enabled` by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16513
* [py] Update docstrings to google pydoc format by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16511
* [java][BiDi] implement `browsingContext.downloadEnd` event by @Delta456 in https://github.com/SeleniumHQ/selenium/pull/16347
* Fix typo and minor formatting changes in README.md by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16523
* [py] Update docstrings (remove reST leftovers and resolve D200) by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16525
* [py] Fix docstring formatting and apply ruff linting rules by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16527
* [py] Fix Ruff D417 warnings in docstrings by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16535
* [py] Fix ruff D415 warnings in docstrings by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16536
* [py][bidi]: add `set_screen_orientation_override` command in Emulation by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16522
* [py] Fix D205 ruff warnings for docstrings and add type hints by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16537
* [py][bidi]: add `set_download_behavior` command by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16556
* [py] Bump pytest and dev dependencies by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16572
* [bazel] Move `rules_rust` to `bzlmod` by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16566
* [ci] Make a PR for updating mirror file instead of pushing directly to trunk by @bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16579
* [ci] Update mirror info (2025-11-11T15:26:46Z) by @github-actions[bot] in https://github.com/SeleniumHQ/selenium/pull/16578
* [ci] Revert latest changes related to the mirror workflow by @bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16580
* [java]: refactor request interception tests and handle CORS by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16585
* [py][bidi]: enable download event tests for firefox by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16587
* [py] Fix more type annotations by @iampopovich in https://github.com/Sele
_[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.39.0]_
### selenium-4.38.0 — Selenium 4.38.0
- Date: 2025-10-25
- Version: selenium-4.38.0
- Original notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.38.0
- Permalink: https://whatsnew.fyi/product/selenium/releases/selenium-4.38.0
##### Detailed Changelogs by Component
**[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)** |
**[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)** |
**[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)** |
**[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)** |
**[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
##### What's Changed
Click to see all the changes included in this release
* [dotnet] [bidi] Avoid using JsonInclude attribute to include optional property for DTO by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16413
* [rb] Bump prism to 1.6.0 by @Earlopain in https://github.com/SeleniumHQ/selenium/pull/16450
* [java] JSpecify annotations for `ExecuteMethod` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16464
* [rb] Fix Network issue by removing nil values on network requests by @aguspe in https://github.com/SeleniumHQ/selenium/pull/16442
* [py] Replaced :param: and :args: from docstrings by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16469
* [java] JSpecify annotations for `org.openqa.selenium.federatedcredent… by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16461
* [java] JSpecify annotations for `org.openqa.selenium.interactions` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16462
* [java][rb] Remove cruft from old Travis CI environment by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16473
* [java] JSpecify annotations for `org.openqa.selenium.net` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16463
* [rb] remove deprecated classes for previous implementation of log han… by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16474
* [build] minimize number of ruby targets run with bidi by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16477
* [java] JSpecify annotations for `Credential` and `MBean` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16481
* [java] JSpecify annotations for `ScriptKey` and `UnpinnedScriptKey` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16483
* [java] JSpecify annotations for `FileDetector` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16482
* [java] JSpecify annotations for `ExpectedCondition` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16489
* [java] JSpecify annotations for `Response` `SessionId` `HttpSessionId` by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16490
* [rb][build] improve ruby local_dev generation by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16495
* [build] removing test_tag_filter tag that isn't being used anywhere by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16496
* [rb][build] disable dev shm for Chrome and Edge on RBE by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16497
* [rb] update syntax with rspec linter by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16498
* [java][bidi]: add test for `onHistoryUpdated` event by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16293
* [py] Bump version of ruff formatter/linter by @cgoldberg in https://git
_[Truncated at 4000 characters — full notes: https://github.com/SeleniumHQ/selenium/releases/tag/selenium-4.38.0]_