Skip to content

selenium

API Development
Java Latest selenium-4.44.0 · 22d ago Security brief →

Features

  • Provides infrastructure for the W3C WebDriver specification
  • Enables language‑neutral browser automation across major browsers
  • Supports cross‑platform development via Bazel build system

Recent releases

View all 5 releases →
Review required
selenium-4.44.0 Breaking risk
Breaking upgrade Auth

UnhandledPromptBehavior string/map support + strong signing

selenium-4.42.0 Breaking risk
Breaking changes
  • Deprecate `Keys.FN` in Java; make `Keys.OPTION` an alias of `Keys.ALT`.
Full changelog

Detailed Changelogs by Component

Java     |     Python     |     DotNet     |     Ruby     |     JavaScript

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://github.com/SeleniumHQ/selenium/pull/17161
  • [java] Enhance ScriptKey.toString() and mask script content in UnpinnedScriptKey by @seethinajayadileep in https://github.com/SeleniumHQ/selenium/pull/17159
  • [java] specify nullability in packages org.openqa.selenium.chrom* by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17152
  • Nullability for browsers by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17167
  • [py] Use Self as return type of enter in remote.WebDriver by @pinterior in https://github.com/SeleniumHQ/selenium/pull/17170
  • [dotnet] [bidi] Convert RemoteValue to well-known types by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17027
  • [dotnet] [bidi] Cache BrowsingContext/UserContext per session by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17172
  • [java] Keys: enforce CharSequence contract in charAt() by @seethinajayadileep in https://github.com/SeleniumHQ/selenium/pull/17166
  • [java][BiDi] implement speculation module by @Delta456 in https://github.com/SeleniumHQ/selenium/pull/17130
  • [java] specify nullability in org.openqa.selenium.grid.* packages by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17173
  • [dotnet] [bidi] Revert... Wait until events are dispatched by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17178
  • [dotnet] Use props file for legacy sdk by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17180
  • [bidi] Convert RemoteValue to IDictionary by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17181
  • [java] make the signature change in ExecuteMethod backward compatible by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17183
  • [java] specify nullability in package org.openqa.selenium.devtools by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17185
  • [py] Add type stubs for lazy imported classes and modules by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17165
  • [dotnet] Apply selenium theme for docs by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17190
  • [py] Bidi py tests expansion by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17193
  • [dotnet] [bidi] Simplified how background tasks are started by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17198
  • [grid] Router WebSocket handle dropped close frames, idle disconnects, high-latency proxying by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17197
  • [build] Fix Lint Format CI by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17202
  • [dotnet] [bidi] Optimize commands via ReadOnlyMemory by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17205
  • [java] specify nullability in package org.openqa.selenium.docker by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17191
  • [dotnet] [bidi] Optimize processing of incoming messages by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17206
  • [dotnet] [bidi] Add SetScrollbarTypeOverride command in Emulation module by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17171
  • [dotnet] [bidi] Thread safe events registration by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17210
  • [grid] Align Router-Node read timeout with session pageLoad capability by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17211
  • [py] Do not close externally provided log_output streams by @jit3pam in https://github.com/SeleniumHQ/selenium/pull/17204
  • [dotnet] [bidi] Keep events deserialization at transport layer by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17212
  • [dotnet] [bidi] Parallel event handlers by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17213
  • [java] specify nullability in other java packages by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17194
  • [dotnet] [bidi] ~Zero allocation per command/event by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17214
  • [dotnet] Hide unnecessary chromium public fields by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17113
  • [dotnet] [bidi] Don't propagate cancellation token for websocket by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17220
  • [java] Fix saving docker logs to a file by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17218
  • [py][bidi]: skip test_perform_actions_pointer_pen_type for firefox by @navin772 in https://github.com/SeleniumHQ/selenium/pull/17203
  • [java] Fix duplicate field name handling in InstanceCoercer#getFieldWriters by @seethinajayadileep in https://github.com/SeleniumHQ/selenium/pull/17187
  • [grid] Dynamic Grid Docker configure container stop-grace-period by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17222
  • [java] Add field names to JsonException "Duplicate JSON field name..." by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17225
  • [build] Fix RBE tests by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17233
  • [build] Skip failing Firefox Beta tests by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17234
  • [py] Create module for importing latest devtools by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17133
  • [bazel] Update to Bazel 9 by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16757
  • [grid] Fix VNC caps not propagated for sessions without browserName by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17235
  • [dotnet] [build] Bump up C# lang version to 14.0 by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17236
  • [build] Fix py:local_dev rake task by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17238
  • [dotnet] [bidi] Dedicated RealmInfoEventArgs type for OnRealmCreated event by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17240
  • [py][build] Bump dev dependencies and toolchain by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17241
  • [grid] Add NodeCommandInterceptor for pluggable command interception via --ext by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17242
  • [dotnet] [bidi] Protected Subscribe method in Module by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17260
  • [dotnet] [build] Move build targets from cdp to DevTools by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17267
  • [java] fix loading "isDisplayed.js" and other resources in OSGI environment by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17257
  • [py] Improve Selenium Manager platform/architecture detection by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17271
  • [dotnet] [build] Significantly simplify how test targets execute tests by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17269
  • [dotnet] [build] Simplify how we pack nuget package by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17270
  • [dotnet] Actualize readme how to run tests by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17272
  • [py] Bump python dev dependencies by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17273
  • [dotnet] [test] Start test webserver globally before any tests in Support by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17275
  • [dotnet] [test] Rename namespace for common test project by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17276
  • [dotnet] [test] Normalize namespace for Support tests by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17277
  • [rb] [build] Upgrade bazel rules by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17279
  • [dotnet] [test] Return safari back by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17280
  • [dotnet] [test] Remove/move browser specific test projects by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17281
  • [dotnet] [bidi] Remove high-level network interception by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17288
  • [dotnet] [bidi] Remove enumerable json converter for Input module by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17285
  • [java] Fix failing java tests by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17278
  • [js] Fix failing javascript tests by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17293
  • [dotnet] [build] Don't skip tests by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17295
  • [dotnet] [bidi] Decouple transport and processing by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17291
  • [rb] fix Ruby tests failing because of alerts in Firefox by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17294
  • [py] Add APIRequestContext to make requests with browser auth/cookie state by @mayank-at-sauce in https://github.com/SeleniumHQ/selenium/pull/17228
  • [dotnet] [bidi] Revise event args by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17304
  • [dotnet] Fix domain lifecycle in CDP adapters by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17305
  • [dotnet] [bidi] Testing infra for custom module by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17306
  • [rb] Turn off external caching on portable Ruby by @p0deje in https://github.com/SeleniumHQ/selenium/pull/17307
  • [dotnet] [bidi] Improve json discriminator determination by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17309
  • [dotnet] [bidi] IIdentifiable json converter factory by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17310
  • [dotnet] [bidi] Fix commands cancelling callback by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17315
  • [py] Update dev dependencies and multitool binaries by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17314
  • fix(js): migrate closure_js_binary provider access to modern Starlark API by @diemol in https://github.com/SeleniumHQ/selenium/pull/17317
  • fix(update_cdp): update release fetch URL to include milestone 146 by @diemol in https://github.com/SeleniumHQ/selenium/pull/17318
  • fix(update_cdp): update file paths for ChromeDriver configuration by @diemol in https://github.com/SeleniumHQ/selenium/pull/17319
  • fix(pre-release): simplify dependency update command and ensure cargo… by @diemol in https://github.com/SeleniumHQ/selenium/pull/17320
  • fix(pre-release): update job dependencies and streamline version bump process by @diemol in https://github.com/SeleniumHQ/selenium/pull/17321

New Contributors

  • @BckupMuthu made their first contribution in https://github.com/SeleniumHQ/selenium/pull/16944
  • @seethinajayadileep made their first contribution in https://github.com/SeleniumHQ/selenium/pull/17120
  • @tim-burke-systemware made their first contribution in https://github.com/SeleniumHQ/selenium/pull/17139
  • @jit3pam made their first contribution in https://github.com/SeleniumHQ/selenium/pull/17204
  • @mayank-at-sauce made their first contribution in https://github.com/SeleniumHQ/selenium/pull/17228

Full Changelog: https://github.com/SeleniumHQ/selenium/compare/selenium-4.41.0...selenium-4.42.0

selenium-4.41.0 Breaking risk
Breaking changes
  • [dotnet] Selenium Manager as async (breaking change)
  • [dotnet] Remove unnecessary ICommandServer interface (breaking change)
Full changelog

Detailed Changelogs by Component

Java     |     Python     |     DotNet     |     Ruby     |     JavaScript

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/selenium/pull/16957
  • [py] Fix return type hint for alert_is_present by @nemowang2003 in https://github.com/SeleniumHQ/selenium/pull/16975
  • Replace hardcoded bazel-selenium references with dynamic path resolution by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16976
  • No More CrazyFun! by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16972
  • [build] Remove update_gh_pages in favor of CI workflow by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16977
  • [build] Remove legacy rake helpers and unused code by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16978
  • [py] make bazel test target names consistent with other languages by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16969
  • [dotnet] [bidi] Fix namespace for Permissions module by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16981
  • [dotnet] [bidi] Hide Broker as internal implementation by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16982
  • [dotnet] [bidi] Refactor BiDi module initialization to pass BiDi explicitly by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16983
  • [build] Add DocFX updater script by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16980
  • [build] add reusable commit-changes.yml workflow by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16965
  • [java] fix JSON parsing of numbers with exponent by @joerg1985 in https://github.com/SeleniumHQ/selenium/pull/16961
  • [build] Skip macOS-only archive rules on unsupported platforms by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16985
  • [build] Split Rakefile into per-language task files by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16979
  • Implement fast bazel target lookup with index caching by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16974
  • [build] Remove git.add() calls from rake tasks by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16994
  • [js] Add eslint binary target for selenium-webdriver by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16992
  • [dotnet] Add bazel rules for dotnet format and paket deps by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16986
  • [dotnet] [bidi] Introduce CancellationToken for async commands by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16990
  • [dotnet] [bidi] Support cancellation of events registration by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16996
  • [build] Separate rust from all: namespace by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16995
  • [build] optimize fetch-depth across workflows by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16966
  • [build] consolidate pre-release workflow by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16997
  • [build] Support per-language patch releases by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16987
  • [build] retrigger CI after auto-format commits by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17000
  • [dotnet] have SE_DEBUG output driver logs to stderr by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16903
  • [dotnet] [bidi] Use System.Threading.Channels dependency for events dispatching by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17004
  • [py] Replace //py:ruff with dedicated ruff-format and ruff-check targets by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16998
  • [build] use bazel to update python requirements by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16930
  • [dotnet] Add linting support with configurable dotnet format by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16999
  • [dotnet][rb][java][js][py] remove disk cleanup, add monitoring by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17001
  • [build] consolidate nightly workflow by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17005
  • [rb] output driver logs by default when debug is enabled by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16901
  • [build] use matrix for nightly releases by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17010
  • [rb] Update lint configuration and fix rubocop offenses by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17008
  • [py] Use lazy imports in webdriver init.py by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16993
  • [py][java][js] SE_DEBUG warns only when overriding user settings by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17009
  • mark wait.until as non-nullable by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17007
  • restore BiDi constructor without timeout parameter by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17014
  • [rust] Fix suppport for webview2 (#15797) by @bonigarcia in https://github.com/SeleniumHQ/selenium/pull/17016
  • [dotnet] Fix generation of inline docs for devtools members by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17017
  • [build] auto merge browser version updates if they pass all checks by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16991
  • [py] Modularize Bazel build with per-module targets by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17012
  • [dotnet] update formatting rules by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17019
  • [grid] Preventing potential deadlock in Distributor by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17022
  • [rb] add missing unit tests by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17025
  • Report exactly which JSON value was incorrect by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17003
  • [build] Add permissions for nightly job in release workflow by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17031
  • [build] Separate format and lint tasks, add per-language format commands by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17020
  • [Java] JSpecify annotations for LoadableComponent , SlowLoadableComponent by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16798
  • [java] parse all JSON numbers the same way by @joerg1985 in https://github.com/SeleniumHQ/selenium/pull/17038
  • [py] Make extensions tests work when not running bazel by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17026
  • [grid] Add session event API for server-side event bus integration by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17015
  • [java] specify nullability in package org.openqa.selenium.bidi.browser by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17036
  • [py][bidi]: add emulation command set_screen_settings_override by @navin772 in https://github.com/SeleniumHQ/selenium/pull/17030
  • [py] Autofix lint errors but still fail by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17042
  • [java][BiDi] implement emulation.setScreenSettingsOverride by @Delta456 in https://github.com/SeleniumHQ/selenium/pull/17028
  • [java] specify nullability in package org.openqa.selenium.bidi.browsingcontext by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17040
  • [py]: enable edge browser tests for bidi by @navin772 in https://github.com/SeleniumHQ/selenium/pull/17032
  • [build] File-level test target indexing for precise affected test detection by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17033
  • [build] add smart targeting and --lint flag to format.sh by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/17035
  • [dotnet] [bidi] SetTouchOverride command in Emulation module by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17045
  • [dotnet] [bidi] SetNetworkConditions command in Emulation module by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17047
  • [dotnet] [bidi] Adjusted name for Capabilities in new session result by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17048
  • [dotnet] [bidi] Expand SetViewport options with optional UserContexts by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17049
  • [dotnet] [bidi] Change MovePointer X/Y types to double by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17050
  • [dotnet] [bidi] Support UserContexts in AddPreloadScript command options by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17051
  • [dotnet] [bidi] Rename input actions according spec by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17052
  • [java] Fix "secure vs non-secure" error in tests by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17046
  • [py][build] Bump bazel rules_python and python toolchain versions by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17054
  • [java] Nullability annotations in package org.openqa.selenium.bidi.emulation by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17055
  • [java] specify nullability in package org.openqa.selenium.bidi.module by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17058
  • [java] specify nullability in package org.openqa.selenium.bidi.log by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17059
  • [grid] Revert default standalone config by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17060
  • [java] specify nullability in package org.openqa.selenium.bidi.network by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17061
  • [java] specify nullability in package org.openqa.selenium.bidi.script by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17062
  • [bazel] fix running google formatter with too many files by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17065
  • [java] Nullability in all BiDi packages by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17064
  • [dotnet] Truncate internal log messages by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17063
  • [py] Bump dev dependencies by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17066
  • [java] Remove unneeded protection from BiDi Connection constructor by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/17067
  • [dotnet] Fix test file/class names for consistency by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17068
  • [dotnet] Fix emitting of trace log messages from http client handler by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17069
  • [grid] Dynamic Grid standalone support passing basic auth credential by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17072
  • [dotnet] Stream Selenium Manager output to internal logging by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17024
  • [dotnet] Warn if SM log level is unknown by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17073
  • [dotnet] Correlate low level http requests/responses and log failures by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17074
  • [dotnet] Temporary disable CS1591 warning for BiDi namespace by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17075
  • [dotnet] Fix generated devtools inline docs (amp;) by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17076
  • [dotnet] [bidi] Fully immutable commands and events by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17077
  • [dotnet] [bidi] Refactor CommandInfo and EventInfo to structs by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17080
  • [py] Update dev dependencies to fix vulnerability by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17078
  • [dotnet] Mark network request id as non-nullable by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17082
  • [dotnet] Suppress arrays as attribute arguments is not CLS-compliant by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17083
  • [dotnet] Remove legacy static analyzer suppressions by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17084
  • [dotnet] Nullable value in dictionary for json preparation by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17087
  • [dotnet] [bidi] Add Speculation module by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17093
  • [grid] Restore stereotype capabilities merging in RelaySessionFactory by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17097
  • [grid] Support Dynamic Grid in Kubernetes cluster by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17092
  • [build] update for Nightly build by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17101
  • [dotnet] [bidi] Add UserContext in event args by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17100
  • [dotnet] Remove global suppressions from Support project by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17099
  • [dotnet] Implicit global usings by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17094
  • [dotnet] Selenium Manager as async (breaking change) by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17088
  • [dotnet] Remove unnecessary ICommandServer interface (breaking change) by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17103
  • [dotnet] Fix start/quit implementation on incorrect level by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17105
  • [grid] Fix Distributor thread exhaustion in node health-check cycle by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17104
  • [grid] Fix WebSocket connection counter leaks in ProxyNodeWebsockets by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17106
  • [dotnet] Refactor waiting until driver service is initialized by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17107
  • [dotnet] Asynchronously start driver service (breaking change) by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17108
  • [grid] Distributor retry session when RemoteNode executor shutting down by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/17109
  • [dotnet] Stop/Dispose driver service asynchronously by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/17110
  • [py] Add in rules to agents around python 3.10+ by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17102
  • [rb] Update dependencies by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/17111
  • [py] Update test to check it's an integer rather than a value by @AutomatedTester in https://github.com/SeleniumHQ/selenium/pull/17114

New Contributors

  • @nemowang2003 made their first contribution in https://github.com/SeleniumHQ/selenium/pull/16975

Full Changelog: https://github.com/SeleniumHQ/selenium/compare/selenium-4.40.0...selenium-4.41.0

selenium-4.40.0 Breaking risk
Breaking changes
  • Removed deprecated FTP proxy support in Python bindings.
Full changelog

Detailed Changelogs by Component

Java     |     Python     |     DotNet     |     Ruby     |     JavaScript

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<T> 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 because of temporary Chrome internal files by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16722
  • [rb] Add force encoding to remove warnings caused by json 3.0 by @aguspe in https://github.com/SeleniumHQ/selenium/pull/16728
  • [py] Remove deprecated FTP proxy support by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16721
  • [py] Bump ruff and mypy versions by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16737
  • Create target directories before copying file by @MohabMohie in https://github.com/SeleniumHQ/selenium/pull/16739
  • [bazel+closure]: Vendor the version of closure library we use by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16742
  • [closure] Fix failing //javascript/atoms:test-* targets by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16749
  • Avoid sleep in tests by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16713
  • [bazel] Bump rules_closure and google closure libary to latest release by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16755
  • [refactor] call WebDriverException constructor instead of using reflection by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16763
  • [build] Pin Browsers in Bazel by default by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16743
  • [build] build selenium manager for tests by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16736
  • [refactor] replace JUnit assertions by AssertJ by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16765
  • [py] Add LocalWebDriver base class by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16730
  • Fix bug in FileHandler: it always failed on MacOS by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16771
  • [java] add missing bazel artifacts by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16773
  • [bazel+js]: Wrap grid-ui tests with bazel by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16758
  • Add missing build file by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16779
  • [bazel] Flag fixes for the RBE by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16785
  • [bazel+js]: Avoid shadowing directory with test name by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16784
  • [py] Add type hints for WebElement.find_element(s) by @pixelsapphire in https://github.com/SeleniumHQ/selenium/pull/16772
  • [build] add explicit permissions to github workflows by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16774
  • [dotnet] Hide driver service window by default by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16782
  • [rb] Fix steep issues by @aguspe in https://github.com/SeleniumHQ/selenium/pull/16752
  • [py][build]: consolidate Python CI tests by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16766
  • [dotnet] [bidi] Fix context aware event handlers by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16787
  • [java] #16753 workaround for JDK bug JDK-8228970 by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16793
  • [java][BiDi] implement emulation.setNetworkConditions by @Delta456 in https://github.com/SeleniumHQ/selenium/pull/16794
  • [java] [refactor] replace most of Guava collections by Java built-in collections by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16776
  • [build] fix issue trying to guard actions run on forks by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16800
  • [py] Add/fix type hints for find_element/find_elements by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16786
  • [ci] Use macos-latest instead of macos-13 in Rust workflow by @bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16803
  • [py][bidi]: improve tests to use local no-proxy server by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16747
  • [py][bidi]: add emulation command set_network_conditions by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16702
  • [dotnet][java][py][rb][rust] Only use External Cache for GitHub Actions by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16788
  • [py] Add new ruff lint rules, fix violations and type annotations by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16789
  • [java] Be more tolerant to remote responses by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16797
  • [py] pin python versions to specific patches by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16795
  • [java] Fix asserts for maps and sets by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16808
  • [js] fix JS tests on RBE by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16777
  • [py] Remove deprecated FirefoxBinary class by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16811
  • [build] limit what check job pulls in by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16815
  • [rust] fix support for Edge beta versions on Windows by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16806
  • [py] Bump versions and remove unnecessary dev/test dependencies by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16820
  • remove docker deploy code by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16822
  • [py] Fix type annotations, make docstrings consistent, centralize dependencies by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16821
  • [java] several packages marks jspecify nullmarked by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16802
  • Update copyright to 2026 by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16830
  • [rust] ignore force download for Safari by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16825
  • [dotnet] [bidi] Properly return shared buffer when disposing websocket by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16804
  • [java] fix NPE in FirefoxOptions by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16833
  • [py] Fix remaining mypy errors and enable CI for type checking by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16837
  • [java] Mark obsolete variables deprecated in DriverCommand and W3CHttpCommandCodec by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16013
  • [java] remove usages of Guava collections (sets and maps) by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16835
  • [java] simplify several statements with isEmpty function call by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16836
  • [java] JSpecify annotations for org.openqa.selenium.json by @mk868 in https://github.com/SeleniumHQ/selenium/pull/16799
  • [java][rb][py][dotnet][js] use SE_DEBUG to enable debugging by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16816
  • [java] Allow downloading files from old Grid server by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16839
  • [build] fix lint problems automatically by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16780
  • [java] Speed up tests, improve test logging and build script by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16843
  • [rb] ensure the grid is properly restarted in tests when there is a problem by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16842
  • [build] get chrome-driver tests passing on RBE by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16807
  • [Java] add lint job by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16846
  • [java] rework downloading files from Grid by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16844
  • [java] configurable timeout for BiDi commands by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16796
  • [java] Unify error message format for all Expected Conditions & add tests by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16831
  • [java][py][rb][js][dotnet] rerun failing tests when requested by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16840
  • [build] remove ruby tests from skipped tests files by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16859
  • [node] Add asMap function to Header class and corresponding tests by @iampopovich in https://github.com/SeleniumHQ/selenium/pull/16832
  • [java] Fix flaky tests by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16862
  • [java] fixes for running on windows by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16852
  • [js]: Get the chrome-driver tests passing by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16856
  • [js] Migrate javascript/atoms tests from Closure to QUnit by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16855
  • [rb] should not need long client timeout in tests by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16847
  • [py] Reduce traceback output on test failures by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16854
  • [py] Bump minimum dependency versions because of CVE by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16867
  • [js] Delete tests and files which are not run any more by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16871
  • Migrate remaining Google Closure jsunit tests to qunit by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16870
  • [py] improve how tests are run against the grid server by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16851
  • Java chrome beta by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16860
  • add readable toString() to org.openqa.selenium.remote.Browser by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16873
  • [java] restore ClientConfig constructor used by Appium (for backward compatibility) by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16874
  • Remove outdated CodeTour files by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16872
  • [dotnet] get tests working on windows with bazel by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16853
  • [py] Add type annotations to bidi network module by @mzyndul in https://github.com/SeleniumHQ/selenium/pull/16875
  • [dotnet] Stabilize ShouldTimeoutIfAPageTakesTooLongToRefresh test by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16880
  • [dotnet] [bidi] Context aware network collector by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16866
  • [dotnet] [bidi] Rent and return buffer to shared pool per remote message by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16838
  • [build][rb] remove unnecessary log output from windows runs by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16876
  • [build] save bazel cache to GitHub only from trunk by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16890
  • [py] Add type annotations by @mzyndul in https://github.com/SeleniumHQ/selenium/pull/16883
  • [rb] update ruby versions by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16891
  • [java] update what java test targets are generated by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16886
  • [java] update browser tests to match test suite conventions by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16888
  • [rb][py][dotnet][java][js] move logic for reruns and collecting logs into separate scripts by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16879
  • [java] deprecate unused logging implementation by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16889
  • [py] rerun tests with debugging by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16892
  • create FakeWebDriver only if "browser=selenium-test" by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16898
  • [java] update how unit tests are declared and run by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16887
  • [dotnet] [bidi] Allow consumer to combine input actions via identifier by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16885
  • [build][rb][py] use arm binaries for mac by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16897
  • [rb] wait for grid to actually be ready when starting server by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16896
  • [java] rerun tests with debugging by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16893
  • [rust] only collect stats on stamped builds by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16826
  • [rb] Set Ruby tests to rerun when failing by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16858
  • [rb] check driver status endpoint rather than socket connection by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16877
  • [java] remove Apache Commons dependency by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16865
  • [py] have SE_DEBUG output driver logs as well by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16902
  • [build] rerun the RBE tests with debugging enabled by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16905
  • [java] SE_DEBUG dumps all log output to stderr by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16900
  • [py] Update development dependencies by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16908
  • [java] Use ClientConfig provided by user instead of the default one by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16882
  • [rust] Replace fs::rename by file::move_file for Grid artifacts by @bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16911
  • [dotnet] [bidi] Expose New session command by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16907
  • [build] automate the new java release publish by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16509
  • [py] Find grid in tests if not using bazel by @cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16912
  • build python docs with bazel by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16919
  • [build] generate dotnet docs with bazel by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16921
  • [bazel] Prevent duplicate directory warnings from python builds by @shs96c in https://github.com/SeleniumHQ/selenium/pull/16923
  • [grid] Improve Node handling concurrent sessions creation by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/16913
  • [java] Change BiDi "internalId" type from Long to String by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16918
  • [build] update ruby gems with bazel by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16924
  • build js docs with bazel by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16922
  • [rb] add a //rb:steep run target by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16925
  • [py]: use is_url_connectable for driver status check by @navin772 in https://github.com/SeleniumHQ/selenium/pull/16881
  • [java] create fewer objects while parsing JSON by @joerg1985 in https://github.com/SeleniumHQ/selenium/pull/16926
  • [build] implement bazel rule for pushing nuget packages by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16920
  • [build] release selenium via workflow by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16937
  • [java] preserve original file's modification time when uploading to Grid by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16935
  • [java] fix logging in Selenium own tests by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16933
  • [java] Stabilize flaky tests related to mouse movement by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16906
  • [java] Automatically save screenshots & page sources for failed tests by @asolntsev in https://github.com/SeleniumHQ/selenium/pull/16904
  • [grid] Improve race conditions in Grid session distribution by @VietND96 in https://github.com/SeleniumHQ/selenium/pull/16939
  • [dotnet] [bidi] FileDialogOpened event in Input module by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16934
  • [dotnet] [bidi] Expose Input module in root BiDi class by @nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16940
  • [build] use rulesets to restrict and unrestrict trunk during release window by @titusfortner in https://github.com/SeleniumHQ/selenium/pull/16941

New Contributors

  • @pixelsapphire made their first contribution in https://github.com/SeleniumHQ/selenium/pull/16772
  • @mzyndul made their first contribution in https://github.com/SeleniumHQ/selenium/pull/16875

Full Changelog: https://github.com/SeleniumHQ/selenium/compare/selenium-4.39.0...selenium-4.40.0

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
34,144
Forks
8,685
Languages
Java C# C++

Install & Platforms

Platforms
linux macos windows

Open source alternatives

Beta — feedback welcome: [email protected]