Selenium 4.41 Released!
Categories:
We’re excited to announce the release of Selenium 4.41 for JavaScript, Ruby, Python, .NET, Java and the Grid! 🎉
Links to all assets can be found on our downloads page.
Selenium 4.41 Released
✨ Highlights
- [DotNet] Major BiDi expansion in the Emulation module (
SetTouchOverride,SetNetworkConditions, expandedSetViewport), a newSpeculationmodule, and async command dispatch throughout — including breaking changes that make Selenium Manager and the driver service start/stop asynchronously. - [Java] Continued JSpecify nullability coverage across all BiDi packages, plus a JSON parsing fix for numbers with an exponent.
- [Grid] Multiple Dynamic Grid fixes: a Distributor deadlock, WebSocket connection counter leaks, thread exhaustion in health checks, and new Kubernetes cluster and basic-auth support.
- [Python] New BiDi
set_screen_settings_overrideemulation command, Edge BiDi tests enabled, and a large Bazel/lint modernization pass. - [Ruby] Debug logging on by default, generated atoms no longer stored in the repo, and dependency/lint updates.
- [Build] A sweeping overhaul of the release and CI pipeline, and the retirement of the legacy Rake/CrazyFun build system.
📦 Notable Changes
Java
- Expanded JSpecify nullability annotations across the
bidi.browser,bidi.browsingcontext,bidi.emulation,bidi.module,bidi.log,bidi.network, andbidi.scriptpackages. - Implemented BiDi
emulation.setScreenSettingsOverride. - Added JSpecify annotations for
LoadableComponentandSlowLoadableComponent. - Fixed JSON parsing of numbers with an exponent.
- Improved the error message when the Grid dies, and fixed a secure/non-secure test failure.
Python
- Added BiDi
set_screen_settings_overrideemulation command and enabled Edge BiDi tests. - Modularized the Bazel build with per-module targets and integrated mypy type checking.
- Switched to lazy imports in
webdriver/__init__.pyand splitruffinto dedicated format/check targets. - Removed type stub packages from runtime dependencies and bumped dev dependencies to fix a vulnerability.
Ruby
- Driver logs now output by default when debug is enabled.
- Removed stored atoms in favor of generating them at build time.
- Updated lint configuration, fixed rubocop offenses, and added missing unit tests.
.NET
- Added
SetTouchOverride,SetNetworkConditions, and expandedSetViewport/AddPreloadScript/MovePointerin the BiDi Emulation and Input modules. - Added a new BiDi
Speculationmodule and made commands/events fully immutable. - Made Selenium Manager and the driver service start/stop asynchronous (breaking changes), and added
CancellationTokensupport for async commands and event registration. - Fixed several logging issues: truncated internal log messages, streamed Selenium Manager output, and corrected devtools inline docs generation.
Grid
- Fixed a potential deadlock in the Distributor and WebSocket connection counter leaks in
ProxyNodeWebsockets. - Added a session event API for server-side event bus integration.
- Added Kubernetes cluster support and basic-auth credential passing for Dynamic Grid standalone.
- Fixed thread exhaustion in the node health-check cycle and session retries when a RemoteNode executor is shutting down.
Build & Infra
- Continued the Bazel migration: per-language patch releases, consolidated nightly and pre-release workflows, and file-level test target indexing.
- Removed the legacy Rake/CrazyFun build system entirely.
- Added linting support for .NET and unified
SE_DEBUGwarning behavior across Python, Java, and JavaScript.
🐳 Docker Selenium
- Docker: Video recorder/uploader now listen on session events (#3070)
- Docker: Fixed spurious warning messages when basic auth isn’t configured (#3071)
- K8s: Updated KEDA to 2.19.0 in the Helm chart (#3068)
- See all changes
We thank all our contributors for their incredible efforts in making Selenium better with every release. ❤️
For a detailed look at all changes, check out the release notes.
Contributors
Special shout-out to everyone who helped the Selenium Team get this release out!
Selenium
Selenium Docs & Website
cookie
denay
Docker Selenium
Mårten Svantesson
Selenium Team Members
Thanks as well to all the team members who contributed to this release:
ian zhang
Andrei Solntsev
David Burns
Corey Goldberg
Swastik Baranwal
Diego Molina
Sri Harsha
Navin Chandra
Nikolay Borisenko
Michael Render
Pallavi Sharma
Titus Fortner
Viet Nguyen Duc
Stay tuned for updates by following SeleniumHQ on:
Happy automating!




