[rb] create user-friendly method for enabling bidi - #14284

Merged
titusfortner merged 14 commits into
trunkfrom
rb_enable_bidi
Dec 10, 2025
Merged

[rb] create user-friendly method for enabling bidi#14284
titusfortner merged 14 commits into
trunkfrom
rb_enable_bidi

Conversation

@titusfortner

@titusfortnertitusfortner commented Jul 19, 2024

Copy link
Copy Markdown
Member

User description

This matches what is being done in other languages (#13991)

In general it isn't user friendly that that web_socket_url value to the driver is a boolean, but the response is a string. This provides a more obvious name for users to set the property.

This allows Options class to use #enable_bidi! and #bidi? as the booleans for the options.
Capabilities will return driver.capabilities[:web_socket_url] with either nil or the value of the url.

We ok with my use of bang and predicate here?


PR Type

Enhancement, Tests


Description

  • Added enable_bidi! method to Selenium::WebDriver::Options to set web_socket_url to true.
  • Added bidi? method to check if web_socket_url is enabled.
  • Added integration test for enabling bidi in Chrome options, verifying web_socket_url and bidi? method behavior.
  • Added unit test for enable_bidi! method, verifying setting and querying of bidi option.

Changes walkthrough 📝

Relevant files
Enhancement
options.rb
Add methods to enable and check bidi in options

rb/lib/selenium/webdriver/common/options.rb

  • Added enable_bidi! method to set web_socket_url to true.
  • Added bidi? method to check if web_socket_url is enabled.
  • +8/-0
    Tests
    options_spec.rb
    Add integration test for enabling bidi in Chrome options

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb

  • Added integration test for enabling bidi in Chrome options.
  • Verified web_socket_url and bidi? method behavior.
  • +18/-0
    options_spec.rb
    Add unit test for enable_bidi! method in Chrome options

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb

  • Added unit test for enable_bidi! method.
  • Verified setting and querying of bidi option.
  • +12/-0

    💡 PR-Agent usage:
    Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    @qodo-code-review

    Copy link
    Copy Markdown
    Contributor

    PR Reviewer Guide 🔍

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Key issues to review

    Code Clarity
    The use of the bang (!) in enable_bidi! suggests that the method could raise an exception or has a dangerous side effect, which does not seem to be the case here. Consider renaming to enable_bidi if there are no such implications.

    Redundant Code
    The double negation in !!@options[:web_socket_url] is redundant. Ruby implicitly treats nil as false in boolean contexts, so @options[:web_socket_url] is sufficient.

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    PR Code Suggestions ✨

    CategorySuggestion Score
    Possible bug
    Update the enable_bidi! method to accept and set a URL instead of a boolean

    The method enable_bidi! sets @options[:web_socket_url] to true, which seems
    incorrect as it should likely store a WebSocket URL string instead of a boolean.
    Consider updating this method to accept a URL parameter or fetch it from a
    configuration.

    rb/lib/selenium/webdriver/common/options.rb [95]

    -def enable_bidi!- @options[:web_socket_url] = true+def enable_bidi!(url)+ @options[:web_socket_url] = url
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: This suggestion addresses a potential bug by ensuring that the enable_bidi! method sets a WebSocket URL instead of a boolean, which aligns with the expected behavior of handling a URL.

    9
    Enhancement
    Modify the bidi? method to correctly handle URL strings

    The bidi? method uses a double negation (!!) to convert the value to a boolean. This
    is unnecessary if @options[:web_socket_url] is always a boolean. If
    @options[:web_socket_url] is intended to be a URL string, adjust the method to check
    for nil or an empty string instead.

    rb/lib/selenium/webdriver/common/options.rb [99]

     def bidi?
    - !!@options[:web_socket_url]+ !@options[:web_socket_url].nil? && !@options[:web_socket_url].empty?
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This enhancement ensures that the bidi? method correctly checks for the presence of a WebSocket URL, improving the robustness of the code.

    8
    Possible issue
    Update the test to check for a valid WebSocket URL format

    The test case for enable_bidi! assumes web_socket_url to be a boolean, which
    contradicts the expected behavior of handling a URL. Update the test to check for a
    valid URL format instead of a boolean.

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb [56]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion improves the test case by ensuring it checks for a valid WebSocket URL format, which aligns with the expected behavior of the enable_bidi! method.

    8
    Adjust the unit test to validate that web_socket_url is a properly formatted URL

    Similar to the integration test, the unit test for enable_bidi! should verify that
    web_socket_url is set to a valid URL, not just a boolean. Adjust the expectation to
    validate the format of the URL.

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb [152]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion enhances the unit test by verifying that web_socket_url is a valid URL, ensuring consistency with the expected behavior of the enable_bidi! method.

    8

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    CI Failure Feedback 🧐

    (Checks updated until commit ceaa988)

    Action: Ruby / Remote Tests (edge, windows) / Remote Tests (edge, windows)

    Failed stage:Run Bazel [❌]

    Failed test name: Selenium::WebDriver::Edge::Options enables bidi

    Failure summary:

    The action failed due to two specific test failures in the Selenium WebDriver integration tests for
    Edge:

  • The test Selenium::WebDriver::Edge::Options enables bidi failed because it attempted to load a
    non-existent file selenium/webdriver/chrome, which resulted in a LoadError. The correct file might
    be selenium/webdriver/chromium.
  • The test Selenium::WebDriver::Edge::Options enables BiDi on initialization also failed due to a
    LoadError when trying to initialize the WebDriver for Edge with certain options.

  • Relevant error logs:
    1: ##[group]Operating System2: Microsoft Windows Server 2022
    ...
    743: �[32m[1,847 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/helpers.cc [for tool]; 5s local, disk-cache ... (4 actions running)744: �[32m[1,848 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 2s local, disk-cache ... (4 actions running)745: �[32m[1,849 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 4s local, disk-cache ... (4 actions, 3 running)746: �[32m[1,852 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 1s local, disk-cache ... (4 actions running)747: �[32m[1,865 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 2s local, disk-cache ... (4 actions, 3 running)748: �[32m[1,892 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 3s local, disk-cache ... (4 actions, 3 running)749: �[32m[2,058 / 3,107]�[0m Compiling src/google/protobuf/compiler/command_line_interface.cc [for tool]; 4s local, disk-cache ... (3 actions, 1 running)750: �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (71 source files):751: java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal752: private final ErrorCodes errorCodes;753: ^754: java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal755: this.errorCodes = new ErrorCodes();756: ^757: java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal758: public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {759: ^760: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal761: ErrorCodes errorCodes = new ErrorCodes();762: ^763: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal764: ErrorCodes errorCodes = new ErrorCodes();765: ^766: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal767: response.setStatus(ErrorCodes.SUCCESS);768: ^769: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal770: response.setState(ErrorCodes.SUCCESS_STRING);771: ^772: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal773: new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));774: ^775: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal776: new ErrorCodes().getExceptionType((String) rawError);777: ^778: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal779: private final ErrorCodes errorCodes = new ErrorCodes();780: ^781: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal782: private final ErrorCodes errorCodes = new ErrorCodes();783: ^784: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:55: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal785: int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;786: ^787: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:101: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal788: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);789: ^790: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:103: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal791: response.setStatus(ErrorCodes.UNHANDLED_ERROR);792: ^793: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:117: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal794: response.setStatus(ErrorCodes.SUCCESS);795: ^796: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:118: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal797: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));798: ^799: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:124: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal800: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));801: ^802: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal803: private final ErrorCodes errorCodes = new ErrorCodes();804: ^805: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal806: private final ErrorCodes errorCodes = new ErrorCodes();807: ^808: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:93: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal809: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);810: ^811: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:98: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal812: response.setStatus(ErrorCodes.UNHANDLED_ERROR);813: ^814: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:145: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal815: response.setStatus(ErrorCodes.SUCCESS);
    ...
    1014: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 182s local, disk-cache ... (4 actions, 2 running)1015: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 185s local, disk-cache ... (4 actions, 2 running)1016: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 189s local, disk-cache ... (4 actions, 2 running)1017: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 190s local, disk-cache ... (4 actions, 1 running)1018: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 201s local, disk-cache ... (4 actions, 1 running)1019: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 204s local, disk-cache ... (4 actions, 1 running)1020: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 219s local, disk-cache ... (4 actions, 2 running)1021: �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (see D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log)1022: �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (Summary)
    ...
    1033: platform: windows1034: ci: github1035: rbe: false1036: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1037: Selenium::WebDriver::Edge::Options1038: passes emulated device correctly1039: passes emulated user agent correctly1040: passes args correctly1041: enables bidi (FAILED - 1)1042: enables BiDi on initialization (FAILED - 2)1043: Failures:1044: 1) Selenium::WebDriver::Edge::Options enables bidi1045: Failure/Error: options = Selenium::WebDriver::Options.chrome1046: LoadError:1047: cannot load such file -- selenium/webdriver/chrome1048: Did you mean? selenium/webdriver/chromium1049: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1050: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1051: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1052: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1053: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1054: LoadError:
    ...
    1059: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1060: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1061: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1062: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1063: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1064: # ./rb/lib/selenium/webdriver.rb:89:in `for'1065: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1066: Finished in 24.51 seconds (files took 1.11 seconds to load)1067: 5 examples, 2 failures1068: Failed examples:
    ...
    1078: platform: windows1079: ci: github1080: rbe: false1081: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1082: Selenium::WebDriver::Edge::Options1083: passes emulated device correctly1084: passes emulated user agent correctly1085: passes args correctly1086: enables bidi (FAILED - 1)1087: enables BiDi on initialization (FAILED - 2)1088: Failures:1089: 1) Selenium::WebDriver::Edge::Options enables bidi1090: Failure/Error: options = Selenium::WebDriver::Options.chrome1091: LoadError:1092: cannot load such file -- selenium/webdriver/chrome1093: Did you mean? selenium/webdriver/chromium1094: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1095: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1096: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1097: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1098: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1099: LoadError:
    ...
    1104: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1105: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1106: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1107: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1108: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1109: # ./rb/lib/selenium/webdriver.rb:89:in `for'1110: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1111: Finished in 21.49 seconds (files took 1.01 seconds to load)1112: 5 examples, 2 failures1113: Failed examples:
    ...
    1123: platform: windows1124: ci: github1125: rbe: false1126: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1127: Selenium::WebDriver::Edge::Options1128: passes emulated device correctly1129: passes emulated user agent correctly1130: passes args correctly1131: enables bidi (FAILED - 1)1132: enables BiDi on initialization (FAILED - 2)1133: Failures:1134: 1) Selenium::WebDriver::Edge::Options enables bidi1135: Failure/Error: options = Selenium::WebDriver::Options.chrome1136: LoadError:1137: cannot load such file -- selenium/webdriver/chrome1138: Did you mean? selenium/webdriver/chromium1139: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1140: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1141: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1142: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1143: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1144: LoadError:
    ...
    1149: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1150: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1151: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1152: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1153: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1154: # ./rb/lib/selenium/webdriver.rb:89:in `for'1155: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1156: Finished in 21.76 seconds (files took 1.06 seconds to load)1157: 5 examples, 2 failures1158: Failed examples:1159: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:47 # Selenium::WebDriver::Edge::Options enables bidi1160: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:65 # Selenium::WebDriver::Edge::Options enables BiDi on initialization1161: ================================================================================1162: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 36s ... (4 actions, 1 running)1163: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 46s ... (4 actions, 1 running)1164: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 49s ... (4 actions, 1 running)1165: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 33s ... (4 actions, 2 running)1166: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 35s ... (4 actions, 1 running)1167: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 46s ... (4 actions, 1 running)1168: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 47s ... (4 actions, 1 running)1169: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 33s ... (4 actions, 2 running)1170: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 35s ... (4 actions, 1 running)1171: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 45s ... (4 actions, 1 running)1172: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 47s ... (4 actions, 1 running)1173: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 38s ... (4 actions, 2 running)1174: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 39s ... (4 actions, 1 running)1175: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 49s ... (4 actions, 1 running)1176: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 52s ... (4 actions, 1 running)1177: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 43s ... (4 actions, 2 running)1178: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 44s ... (4 actions, 1 running)1179: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 54s ... (4 actions, 1 running)1180: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 58s ... (4 actions, 1 running)1181: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 38s ... (4 actions, 2 running)1182: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 39s ... (4 actions, 1 running)1183: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 50s ... (4 actions, 1 running)1184: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 54s ... (4 actions, 1 running)1185: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 32s ... (4 actions, 2 running)1186: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 33s ... (4 actions, 1 running)1187: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 44s ... (4 actions, 1 running)1188: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 46s ... (4 actions, 1 running)1189: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 37s ... (4 actions, 2 running)1190: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 39s ... (4 actions, 1 running)1191: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 49s ... (4 actions, 1 running)1192: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 52s ... (4 actions, 1 running)1193: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 27s ... (4 actions, 2 running)1194: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 29s ... (3 actions, 1 running)1195: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 39s ... (3 actions, 1 running)1196: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 18s ... (3 actions, 2 running)1197: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 20s ... (2 actions, 1 running)1198: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 30s ... (2 actions, 1 running)1199: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 15s local, disk-cache ... (2 actions running)1200: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 1s local, disk-cache1201: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 11s local, disk-cache1202: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 16s local, disk-cache1203: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 0s disk-cache1204: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote1205: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 1s local, disk-cache1206: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 15s local, disk-cache1207: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 0s disk-cache1208: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote1209: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 1s local, disk-cache1210: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 15s local, disk-cache1211: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 0s disk-cache1212: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote1213: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 1s local, disk-cache1214: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 87s local, disk-cache1215: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s disk-cache1216: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote1217: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s local, disk-cache1218: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 14s local, disk-cache1219: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 0s disk-cache1220: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote1221: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 1s local, disk-cache1222: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 15s local, disk-cache1223: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 0s disk-cache1224: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote1225: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s local, disk-cache1226: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 15s local, disk-cache1227: �[32mINFO: �[0mFound 31 test targets...1228: �[32mINFO: �[0mElapsed time: 1597.229s, Critical Path: 687.20s1229: �[32mINFO: �[0m2877 processes: 1429 disk cache hit, 1172 internal, 276 local.1230: �[32mINFO: �[0mBuild completed, 1 test FAILED, 2877 total actions1231: //rb/spec/integration/selenium/webdriver:action_builder-edge-remote �[0m�[32mPASSED�[0m in 29.1s1232: //rb/spec/integration/selenium/webdriver:bidi-edge-remote �[0m�[32mPASSED�[0m in 15.0s1233: //rb/spec/integration/selenium/webdriver:devtools-edge-remote �[0m�[32mPASSED�[0m in 87.9s1234: //rb/spec/integration/selenium/webdriver:driver-edge-remote �[0m�[32mPASSED�[0m in 34.3s1235: //rb/spec/integration/selenium/webdriver:element-edge-remote �[0m�[32mPASSED�[0m in 29.8s1236: //rb/spec/integration/selenium/webdriver:error-edge-remote �[0m�[32mPASSED�[0m in 14.6s
    ...
    1253: //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote �[0m�[32mPASSED�[0m in 15.5s1254: //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote �[0m�[32mPASSED�[0m in 15.1s1255: //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote �[0m�[32mPASSED�[0m in 15.1s1256: //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote �[0m�[32mPASSED�[0m in 34.2s1257: //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote �[0m�[32mPASSED�[0m in 15.3s1258: //rb/spec/integration/selenium/webdriver/edge:service-edge-remote �[0m�[32mPASSED�[0m in 22.2s1259: //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote �[0m�[32mPASSED�[0m in 31.3s1260: //rb/spec/integration/selenium/webdriver/remote:element-edge-remote �[0m�[32mPASSED�[0m in 17.2s1261: //rb/spec/integration/selenium/webdriver/edge:options-edge-remote �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 32.4s1262: Stats over 3 runs: max = 32.4s, min = 29.3s, avg = 30.5s, dev = 1.4s1263: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log1264: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_1.log1265: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_2.log1266: Executed 31 out of 31 tests: 30 tests pass and �[0m�[31m�[1m1 fails locally�[0m.1267: There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.1268: �[0m1269: ##[error]Process completed with exit code 1.

    ✨ CI feedback usage guide:

    The CI feedback tool (/checks) automatically triggers when a PR has a failed check.
    The tool analyzes the failed checks and provides several feedbacks:

    • Failed stage
    • Failed test name
    • Failure summary
    • Relevant error logs

    In addition to being automatically triggered, the tool can also be invoked manually by commenting on a PR:

    /checks "https://github.com/{repo_name}/actions/runs/{run_number}/job/{job_number}"
    

    where {repo_name} is the name of the repository, {run_number} is the run number of the failed check, and {job_number} is the job number of the failed check.

    Configuration options

    • enable_auto_checks_feedback - if set to true, the tool will automatically provide feedback when a check is failed. Default is true.
    • excluded_checks_list - a list of checks to exclude from the feedback, for example: ["check1", "check2"]. Default is an empty list.
    • enable_help_text - if set to true, the tool will provide a help message with the feedback. Default is true.
    • persistent_comment - if set to true, the tool will overwrite a previous checks comment with the new feedback. Default is true.
    • final_update_message - if persistent_comment is true and updating a previous checks message, the tool will also create a new message: "Persistent checks updated to latest commit". Default is true.

    See more information about the checks tool in the docs.

    Comment threadrb/lib/selenium/webdriver/common/options.rb
    PhilipWoulfe pushed a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.Support](https://github.com/SeleniumHQ/selenium) from
    4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.Support's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images…
    PhilipWoulfe added a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Selenium.WebDriver&package-manager=nuget&previous-version=4.31.0&new-version=4.41.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    ---
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    </details>
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: PhilipWoulfe <philip.woulfe@gmail.com>
    Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    C-rbRuby BindingsP-enhancementPR with a new featureReview effort [1-5]: 2

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    5 participants

    @titusfortner@p0deje@aguspe@pujagani@diemol
    , 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
     blocks
    (function() {
    function addCopyButtons() {
    document.querySelectorAll('pre code').forEach(function(codeBlock) {
    if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
    codeBlock.parentElement.setAttribute('data-copy-added', 'true');
    var btn = document.createElement('button');
    btn.textContent = 'Copy';
    btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
    btn.onmouseover = function() { this.style.opacity = '1'; };
    btn.onmouseout = function() { this.style.opacity = '0.7'; };
    btn.onclick = function() {
    navigator.clipboard.writeText(codeBlock.textContent).then(function() {
    btn.textContent = 'Copied!';
    setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
    });
    };
    codeBlock.parentElement.style.position = 'relative';
    codeBlock.parentElement.appendChild(btn);
    });
    }
    addCopyButtons();
    // Re-run on dynamic content
    var observer = new MutationObserver(addCopyButtons);
    observer.observe(document.body, { childList: true, subtree: true });
    })();
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    
    Skip to content

    [rb] create user-friendly method for enabling bidi - #14284

    Merged
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi
    Dec 10, 2025
    Merged

    [rb] create user-friendly method for enabling bidi#14284
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi

    Conversation

    @titusfortner

    @titusfortnertitusfortner commented Jul 19, 2024

    Copy link
    Copy Markdown
    Member

    User description

    This matches what is being done in other languages (#13991)

    In general it isn't user friendly that that web_socket_url value to the driver is a boolean, but the response is a string. This provides a more obvious name for users to set the property.

    This allows Options class to use #enable_bidi! and #bidi? as the booleans for the options.
    Capabilities will return driver.capabilities[:web_socket_url] with either nil or the value of the url.

    We ok with my use of bang and predicate here?


    PR Type

    Enhancement, Tests


    Description

    • Added enable_bidi! method to Selenium::WebDriver::Options to set web_socket_url to true.
    • Added bidi? method to check if web_socket_url is enabled.
    • Added integration test for enabling bidi in Chrome options, verifying web_socket_url and bidi? method behavior.
    • Added unit test for enable_bidi! method, verifying setting and querying of bidi option.

    Changes walkthrough 📝

    Relevant files
    Enhancement
    options.rb
    Add methods to enable and check bidi in options

    rb/lib/selenium/webdriver/common/options.rb

  • Added enable_bidi! method to set web_socket_url to true.
  • Added bidi? method to check if web_socket_url is enabled.
  • +8/-0
    Tests
    options_spec.rb
    Add integration test for enabling bidi in Chrome options

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb

  • Added integration test for enabling bidi in Chrome options.
  • Verified web_socket_url and bidi? method behavior.
  • +18/-0
    options_spec.rb
    Add unit test for enable_bidi! method in Chrome options

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb

  • Added unit test for enable_bidi! method.
  • Verified setting and querying of bidi option.
  • +12/-0

    💡 PR-Agent usage:
    Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    @qodo-code-review

    Copy link
    Copy Markdown
    Contributor

    PR Reviewer Guide 🔍

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Key issues to review

    Code Clarity
    The use of the bang (!) in enable_bidi! suggests that the method could raise an exception or has a dangerous side effect, which does not seem to be the case here. Consider renaming to enable_bidi if there are no such implications.

    Redundant Code
    The double negation in !!@options[:web_socket_url] is redundant. Ruby implicitly treats nil as false in boolean contexts, so @options[:web_socket_url] is sufficient.

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    PR Code Suggestions ✨

    CategorySuggestion Score
    Possible bug
    Update the enable_bidi! method to accept and set a URL instead of a boolean

    The method enable_bidi! sets @options[:web_socket_url] to true, which seems
    incorrect as it should likely store a WebSocket URL string instead of a boolean.
    Consider updating this method to accept a URL parameter or fetch it from a
    configuration.

    rb/lib/selenium/webdriver/common/options.rb [95]

    -def enable_bidi!- @options[:web_socket_url] = true+def enable_bidi!(url)+ @options[:web_socket_url] = url
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: This suggestion addresses a potential bug by ensuring that the enable_bidi! method sets a WebSocket URL instead of a boolean, which aligns with the expected behavior of handling a URL.

    9
    Enhancement
    Modify the bidi? method to correctly handle URL strings

    The bidi? method uses a double negation (!!) to convert the value to a boolean. This
    is unnecessary if @options[:web_socket_url] is always a boolean. If
    @options[:web_socket_url] is intended to be a URL string, adjust the method to check
    for nil or an empty string instead.

    rb/lib/selenium/webdriver/common/options.rb [99]

     def bidi?
    - !!@options[:web_socket_url]+ !@options[:web_socket_url].nil? && !@options[:web_socket_url].empty?
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This enhancement ensures that the bidi? method correctly checks for the presence of a WebSocket URL, improving the robustness of the code.

    8
    Possible issue
    Update the test to check for a valid WebSocket URL format

    The test case for enable_bidi! assumes web_socket_url to be a boolean, which
    contradicts the expected behavior of handling a URL. Update the test to check for a
    valid URL format instead of a boolean.

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb [56]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion improves the test case by ensuring it checks for a valid WebSocket URL format, which aligns with the expected behavior of the enable_bidi! method.

    8
    Adjust the unit test to validate that web_socket_url is a properly formatted URL

    Similar to the integration test, the unit test for enable_bidi! should verify that
    web_socket_url is set to a valid URL, not just a boolean. Adjust the expectation to
    validate the format of the URL.

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb [152]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion enhances the unit test by verifying that web_socket_url is a valid URL, ensuring consistency with the expected behavior of the enable_bidi! method.

    8

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    CI Failure Feedback 🧐

    (Checks updated until commit ceaa988)

    Action: Ruby / Remote Tests (edge, windows) / Remote Tests (edge, windows)

    Failed stage:Run Bazel [❌]

    Failed test name: Selenium::WebDriver::Edge::Options enables bidi

    Failure summary:

    The action failed due to two specific test failures in the Selenium WebDriver integration tests for
    Edge:

  • The test Selenium::WebDriver::Edge::Options enables bidi failed because it attempted to load a
    non-existent file selenium/webdriver/chrome, which resulted in a LoadError. The correct file might
    be selenium/webdriver/chromium.
  • The test Selenium::WebDriver::Edge::Options enables BiDi on initialization also failed due to a
    LoadError when trying to initialize the WebDriver for Edge with certain options.

  • Relevant error logs:
    1: ##[group]Operating System2: Microsoft Windows Server 2022
    ...
    743: �[32m[1,847 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/helpers.cc [for tool]; 5s local, disk-cache ... (4 actions running)744: �[32m[1,848 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 2s local, disk-cache ... (4 actions running)745: �[32m[1,849 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 4s local, disk-cache ... (4 actions, 3 running)746: �[32m[1,852 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 1s local, disk-cache ... (4 actions running)747: �[32m[1,865 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 2s local, disk-cache ... (4 actions, 3 running)748: �[32m[1,892 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 3s local, disk-cache ... (4 actions, 3 running)749: �[32m[2,058 / 3,107]�[0m Compiling src/google/protobuf/compiler/command_line_interface.cc [for tool]; 4s local, disk-cache ... (3 actions, 1 running)750: �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (71 source files):751: java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal752: private final ErrorCodes errorCodes;753: ^754: java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal755: this.errorCodes = new ErrorCodes();756: ^757: java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal758: public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {759: ^760: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal761: ErrorCodes errorCodes = new ErrorCodes();762: ^763: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal764: ErrorCodes errorCodes = new ErrorCodes();765: ^766: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal767: response.setStatus(ErrorCodes.SUCCESS);768: ^769: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal770: response.setState(ErrorCodes.SUCCESS_STRING);771: ^772: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal773: new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));774: ^775: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal776: new ErrorCodes().getExceptionType((String) rawError);777: ^778: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal779: private final ErrorCodes errorCodes = new ErrorCodes();780: ^781: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal782: private final ErrorCodes errorCodes = new ErrorCodes();783: ^784: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:55: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal785: int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;786: ^787: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:101: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal788: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);789: ^790: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:103: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal791: response.setStatus(ErrorCodes.UNHANDLED_ERROR);792: ^793: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:117: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal794: response.setStatus(ErrorCodes.SUCCESS);795: ^796: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:118: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal797: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));798: ^799: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:124: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal800: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));801: ^802: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal803: private final ErrorCodes errorCodes = new ErrorCodes();804: ^805: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal806: private final ErrorCodes errorCodes = new ErrorCodes();807: ^808: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:93: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal809: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);810: ^811: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:98: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal812: response.setStatus(ErrorCodes.UNHANDLED_ERROR);813: ^814: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:145: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal815: response.setStatus(ErrorCodes.SUCCESS);
    ...
    1014: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 182s local, disk-cache ... (4 actions, 2 running)1015: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 185s local, disk-cache ... (4 actions, 2 running)1016: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 189s local, disk-cache ... (4 actions, 2 running)1017: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 190s local, disk-cache ... (4 actions, 1 running)1018: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 201s local, disk-cache ... (4 actions, 1 running)1019: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 204s local, disk-cache ... (4 actions, 1 running)1020: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 219s local, disk-cache ... (4 actions, 2 running)1021: �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (see D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log)1022: �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (Summary)
    ...
    1033: platform: windows1034: ci: github1035: rbe: false1036: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1037: Selenium::WebDriver::Edge::Options1038: passes emulated device correctly1039: passes emulated user agent correctly1040: passes args correctly1041: enables bidi (FAILED - 1)1042: enables BiDi on initialization (FAILED - 2)1043: Failures:1044: 1) Selenium::WebDriver::Edge::Options enables bidi1045: Failure/Error: options = Selenium::WebDriver::Options.chrome1046: LoadError:1047: cannot load such file -- selenium/webdriver/chrome1048: Did you mean? selenium/webdriver/chromium1049: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1050: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1051: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1052: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1053: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1054: LoadError:
    ...
    1059: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1060: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1061: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1062: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1063: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1064: # ./rb/lib/selenium/webdriver.rb:89:in `for'1065: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1066: Finished in 24.51 seconds (files took 1.11 seconds to load)1067: 5 examples, 2 failures1068: Failed examples:
    ...
    1078: platform: windows1079: ci: github1080: rbe: false1081: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1082: Selenium::WebDriver::Edge::Options1083: passes emulated device correctly1084: passes emulated user agent correctly1085: passes args correctly1086: enables bidi (FAILED - 1)1087: enables BiDi on initialization (FAILED - 2)1088: Failures:1089: 1) Selenium::WebDriver::Edge::Options enables bidi1090: Failure/Error: options = Selenium::WebDriver::Options.chrome1091: LoadError:1092: cannot load such file -- selenium/webdriver/chrome1093: Did you mean? selenium/webdriver/chromium1094: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1095: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1096: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1097: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1098: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1099: LoadError:
    ...
    1104: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1105: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1106: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1107: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1108: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1109: # ./rb/lib/selenium/webdriver.rb:89:in `for'1110: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1111: Finished in 21.49 seconds (files took 1.01 seconds to load)1112: 5 examples, 2 failures1113: Failed examples:
    ...
    1123: platform: windows1124: ci: github1125: rbe: false1126: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1127: Selenium::WebDriver::Edge::Options1128: passes emulated device correctly1129: passes emulated user agent correctly1130: passes args correctly1131: enables bidi (FAILED - 1)1132: enables BiDi on initialization (FAILED - 2)1133: Failures:1134: 1) Selenium::WebDriver::Edge::Options enables bidi1135: Failure/Error: options = Selenium::WebDriver::Options.chrome1136: LoadError:1137: cannot load such file -- selenium/webdriver/chrome1138: Did you mean? selenium/webdriver/chromium1139: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1140: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1141: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1142: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1143: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1144: LoadError:
    ...
    1149: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1150: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1151: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1152: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1153: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1154: # ./rb/lib/selenium/webdriver.rb:89:in `for'1155: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1156: Finished in 21.76 seconds (files took 1.06 seconds to load)1157: 5 examples, 2 failures1158: Failed examples:1159: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:47 # Selenium::WebDriver::Edge::Options enables bidi1160: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:65 # Selenium::WebDriver::Edge::Options enables BiDi on initialization1161: ================================================================================1162: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 36s ... (4 actions, 1 running)1163: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 46s ... (4 actions, 1 running)1164: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 49s ... (4 actions, 1 running)1165: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 33s ... (4 actions, 2 running)1166: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 35s ... (4 actions, 1 running)1167: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 46s ... (4 actions, 1 running)1168: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 47s ... (4 actions, 1 running)1169: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 33s ... (4 actions, 2 running)1170: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 35s ... (4 actions, 1 running)1171: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 45s ... (4 actions, 1 running)1172: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 47s ... (4 actions, 1 running)1173: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 38s ... (4 actions, 2 running)1174: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 39s ... (4 actions, 1 running)1175: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 49s ... (4 actions, 1 running)1176: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 52s ... (4 actions, 1 running)1177: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 43s ... (4 actions, 2 running)1178: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 44s ... (4 actions, 1 running)1179: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 54s ... (4 actions, 1 running)1180: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 58s ... (4 actions, 1 running)1181: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 38s ... (4 actions, 2 running)1182: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 39s ... (4 actions, 1 running)1183: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 50s ... (4 actions, 1 running)1184: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 54s ... (4 actions, 1 running)1185: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 32s ... (4 actions, 2 running)1186: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 33s ... (4 actions, 1 running)1187: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 44s ... (4 actions, 1 running)1188: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 46s ... (4 actions, 1 running)1189: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 37s ... (4 actions, 2 running)1190: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 39s ... (4 actions, 1 running)1191: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 49s ... (4 actions, 1 running)1192: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 52s ... (4 actions, 1 running)1193: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 27s ... (4 actions, 2 running)1194: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 29s ... (3 actions, 1 running)1195: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 39s ... (3 actions, 1 running)1196: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 18s ... (3 actions, 2 running)1197: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 20s ... (2 actions, 1 running)1198: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 30s ... (2 actions, 1 running)1199: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 15s local, disk-cache ... (2 actions running)1200: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 1s local, disk-cache1201: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 11s local, disk-cache1202: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 16s local, disk-cache1203: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 0s disk-cache1204: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote1205: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 1s local, disk-cache1206: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 15s local, disk-cache1207: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 0s disk-cache1208: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote1209: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 1s local, disk-cache1210: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 15s local, disk-cache1211: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 0s disk-cache1212: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote1213: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 1s local, disk-cache1214: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 87s local, disk-cache1215: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s disk-cache1216: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote1217: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s local, disk-cache1218: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 14s local, disk-cache1219: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 0s disk-cache1220: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote1221: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 1s local, disk-cache1222: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 15s local, disk-cache1223: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 0s disk-cache1224: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote1225: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s local, disk-cache1226: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 15s local, disk-cache1227: �[32mINFO: �[0mFound 31 test targets...1228: �[32mINFO: �[0mElapsed time: 1597.229s, Critical Path: 687.20s1229: �[32mINFO: �[0m2877 processes: 1429 disk cache hit, 1172 internal, 276 local.1230: �[32mINFO: �[0mBuild completed, 1 test FAILED, 2877 total actions1231: //rb/spec/integration/selenium/webdriver:action_builder-edge-remote �[0m�[32mPASSED�[0m in 29.1s1232: //rb/spec/integration/selenium/webdriver:bidi-edge-remote �[0m�[32mPASSED�[0m in 15.0s1233: //rb/spec/integration/selenium/webdriver:devtools-edge-remote �[0m�[32mPASSED�[0m in 87.9s1234: //rb/spec/integration/selenium/webdriver:driver-edge-remote �[0m�[32mPASSED�[0m in 34.3s1235: //rb/spec/integration/selenium/webdriver:element-edge-remote �[0m�[32mPASSED�[0m in 29.8s1236: //rb/spec/integration/selenium/webdriver:error-edge-remote �[0m�[32mPASSED�[0m in 14.6s
    ...
    1253: //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote �[0m�[32mPASSED�[0m in 15.5s1254: //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote �[0m�[32mPASSED�[0m in 15.1s1255: //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote �[0m�[32mPASSED�[0m in 15.1s1256: //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote �[0m�[32mPASSED�[0m in 34.2s1257: //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote �[0m�[32mPASSED�[0m in 15.3s1258: //rb/spec/integration/selenium/webdriver/edge:service-edge-remote �[0m�[32mPASSED�[0m in 22.2s1259: //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote �[0m�[32mPASSED�[0m in 31.3s1260: //rb/spec/integration/selenium/webdriver/remote:element-edge-remote �[0m�[32mPASSED�[0m in 17.2s1261: //rb/spec/integration/selenium/webdriver/edge:options-edge-remote �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 32.4s1262: Stats over 3 runs: max = 32.4s, min = 29.3s, avg = 30.5s, dev = 1.4s1263: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log1264: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_1.log1265: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_2.log1266: Executed 31 out of 31 tests: 30 tests pass and �[0m�[31m�[1m1 fails locally�[0m.1267: There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.1268: �[0m1269: ##[error]Process completed with exit code 1.

    ✨ CI feedback usage guide:

    The CI feedback tool (/checks) automatically triggers when a PR has a failed check.
    The tool analyzes the failed checks and provides several feedbacks:

    • Failed stage
    • Failed test name
    • Failure summary
    • Relevant error logs

    In addition to being automatically triggered, the tool can also be invoked manually by commenting on a PR:

    /checks "https://github.com/{repo_name}/actions/runs/{run_number}/job/{job_number}"
    

    where {repo_name} is the name of the repository, {run_number} is the run number of the failed check, and {job_number} is the job number of the failed check.

    Configuration options

    • enable_auto_checks_feedback - if set to true, the tool will automatically provide feedback when a check is failed. Default is true.
    • excluded_checks_list - a list of checks to exclude from the feedback, for example: ["check1", "check2"]. Default is an empty list.
    • enable_help_text - if set to true, the tool will provide a help message with the feedback. Default is true.
    • persistent_comment - if set to true, the tool will overwrite a previous checks comment with the new feedback. Default is true.
    • final_update_message - if persistent_comment is true and updating a previous checks message, the tool will also create a new message: "Persistent checks updated to latest commit". Default is true.

    See more information about the checks tool in the docs.

    Comment threadrb/lib/selenium/webdriver/common/options.rb
    PhilipWoulfe pushed a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.Support](https://github.com/SeleniumHQ/selenium) from
    4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.Support's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images…
    PhilipWoulfe added a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Selenium.WebDriver&package-manager=nuget&previous-version=4.31.0&new-version=4.41.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    ---
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    </details>
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: PhilipWoulfe <philip.woulfe@gmail.com>
    Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    C-rbRuby BindingsP-enhancementPR with a new featureReview effort [1-5]: 2

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    5 participants

    @titusfortner@p0deje@aguspe@pujagani@diemol
    , 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
    Skip to content

    [rb] create user-friendly method for enabling bidi - #14284

    Merged
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi
    Dec 10, 2025
    Merged

    [rb] create user-friendly method for enabling bidi#14284
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi

    Conversation

    @titusfortner

    @titusfortnertitusfortner commented Jul 19, 2024

    Copy link
    Copy Markdown
    Member

    User description

    This matches what is being done in other languages (#13991)

    In general it isn't user friendly that that web_socket_url value to the driver is a boolean, but the response is a string. This provides a more obvious name for users to set the property.

    This allows Options class to use #enable_bidi! and #bidi? as the booleans for the options.
    Capabilities will return driver.capabilities[:web_socket_url] with either nil or the value of the url.

    We ok with my use of bang and predicate here?


    PR Type

    Enhancement, Tests


    Description

    • Added enable_bidi! method to Selenium::WebDriver::Options to set web_socket_url to true.
    • Added bidi? method to check if web_socket_url is enabled.
    • Added integration test for enabling bidi in Chrome options, verifying web_socket_url and bidi? method behavior.
    • Added unit test for enable_bidi! method, verifying setting and querying of bidi option.

    Changes walkthrough 📝

    Relevant files
    Enhancement
    options.rb
    Add methods to enable and check bidi in options

    rb/lib/selenium/webdriver/common/options.rb

  • Added enable_bidi! method to set web_socket_url to true.
  • Added bidi? method to check if web_socket_url is enabled.
  • +8/-0
    Tests
    options_spec.rb
    Add integration test for enabling bidi in Chrome options

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb

  • Added integration test for enabling bidi in Chrome options.
  • Verified web_socket_url and bidi? method behavior.
  • +18/-0
    options_spec.rb
    Add unit test for enable_bidi! method in Chrome options

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb

  • Added unit test for enable_bidi! method.
  • Verified setting and querying of bidi option.
  • +12/-0

    💡 PR-Agent usage:
    Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    @qodo-code-review

    Copy link
    Copy Markdown
    Contributor

    PR Reviewer Guide 🔍

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Key issues to review

    Code Clarity
    The use of the bang (!) in enable_bidi! suggests that the method could raise an exception or has a dangerous side effect, which does not seem to be the case here. Consider renaming to enable_bidi if there are no such implications.

    Redundant Code
    The double negation in !!@options[:web_socket_url] is redundant. Ruby implicitly treats nil as false in boolean contexts, so @options[:web_socket_url] is sufficient.

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    PR Code Suggestions ✨

    CategorySuggestion Score
    Possible bug
    Update the enable_bidi! method to accept and set a URL instead of a boolean

    The method enable_bidi! sets @options[:web_socket_url] to true, which seems
    incorrect as it should likely store a WebSocket URL string instead of a boolean.
    Consider updating this method to accept a URL parameter or fetch it from a
    configuration.

    rb/lib/selenium/webdriver/common/options.rb [95]

    -def enable_bidi!- @options[:web_socket_url] = true+def enable_bidi!(url)+ @options[:web_socket_url] = url
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: This suggestion addresses a potential bug by ensuring that the enable_bidi! method sets a WebSocket URL instead of a boolean, which aligns with the expected behavior of handling a URL.

    9
    Enhancement
    Modify the bidi? method to correctly handle URL strings

    The bidi? method uses a double negation (!!) to convert the value to a boolean. This
    is unnecessary if @options[:web_socket_url] is always a boolean. If
    @options[:web_socket_url] is intended to be a URL string, adjust the method to check
    for nil or an empty string instead.

    rb/lib/selenium/webdriver/common/options.rb [99]

     def bidi?
    - !!@options[:web_socket_url]+ !@options[:web_socket_url].nil? && !@options[:web_socket_url].empty?
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This enhancement ensures that the bidi? method correctly checks for the presence of a WebSocket URL, improving the robustness of the code.

    8
    Possible issue
    Update the test to check for a valid WebSocket URL format

    The test case for enable_bidi! assumes web_socket_url to be a boolean, which
    contradicts the expected behavior of handling a URL. Update the test to check for a
    valid URL format instead of a boolean.

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb [56]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion improves the test case by ensuring it checks for a valid WebSocket URL format, which aligns with the expected behavior of the enable_bidi! method.

    8
    Adjust the unit test to validate that web_socket_url is a properly formatted URL

    Similar to the integration test, the unit test for enable_bidi! should verify that
    web_socket_url is set to a valid URL, not just a boolean. Adjust the expectation to
    validate the format of the URL.

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb [152]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion enhances the unit test by verifying that web_socket_url is a valid URL, ensuring consistency with the expected behavior of the enable_bidi! method.

    8

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    CI Failure Feedback 🧐

    (Checks updated until commit ceaa988)

    Action: Ruby / Remote Tests (edge, windows) / Remote Tests (edge, windows)

    Failed stage:Run Bazel [❌]

    Failed test name: Selenium::WebDriver::Edge::Options enables bidi

    Failure summary:

    The action failed due to two specific test failures in the Selenium WebDriver integration tests for
    Edge:

  • The test Selenium::WebDriver::Edge::Options enables bidi failed because it attempted to load a
    non-existent file selenium/webdriver/chrome, which resulted in a LoadError. The correct file might
    be selenium/webdriver/chromium.
  • The test Selenium::WebDriver::Edge::Options enables BiDi on initialization also failed due to a
    LoadError when trying to initialize the WebDriver for Edge with certain options.

  • Relevant error logs:
    1: ##[group]Operating System2: Microsoft Windows Server 2022
    ...
    743: �[32m[1,847 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/helpers.cc [for tool]; 5s local, disk-cache ... (4 actions running)744: �[32m[1,848 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 2s local, disk-cache ... (4 actions running)745: �[32m[1,849 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 4s local, disk-cache ... (4 actions, 3 running)746: �[32m[1,852 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 1s local, disk-cache ... (4 actions running)747: �[32m[1,865 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 2s local, disk-cache ... (4 actions, 3 running)748: �[32m[1,892 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 3s local, disk-cache ... (4 actions, 3 running)749: �[32m[2,058 / 3,107]�[0m Compiling src/google/protobuf/compiler/command_line_interface.cc [for tool]; 4s local, disk-cache ... (3 actions, 1 running)750: �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (71 source files):751: java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal752: private final ErrorCodes errorCodes;753: ^754: java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal755: this.errorCodes = new ErrorCodes();756: ^757: java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal758: public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {759: ^760: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal761: ErrorCodes errorCodes = new ErrorCodes();762: ^763: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal764: ErrorCodes errorCodes = new ErrorCodes();765: ^766: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal767: response.setStatus(ErrorCodes.SUCCESS);768: ^769: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal770: response.setState(ErrorCodes.SUCCESS_STRING);771: ^772: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal773: new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));774: ^775: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal776: new ErrorCodes().getExceptionType((String) rawError);777: ^778: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal779: private final ErrorCodes errorCodes = new ErrorCodes();780: ^781: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal782: private final ErrorCodes errorCodes = new ErrorCodes();783: ^784: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:55: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal785: int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;786: ^787: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:101: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal788: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);789: ^790: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:103: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal791: response.setStatus(ErrorCodes.UNHANDLED_ERROR);792: ^793: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:117: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal794: response.setStatus(ErrorCodes.SUCCESS);795: ^796: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:118: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal797: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));798: ^799: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:124: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal800: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));801: ^802: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal803: private final ErrorCodes errorCodes = new ErrorCodes();804: ^805: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal806: private final ErrorCodes errorCodes = new ErrorCodes();807: ^808: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:93: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal809: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);810: ^811: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:98: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal812: response.setStatus(ErrorCodes.UNHANDLED_ERROR);813: ^814: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:145: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal815: response.setStatus(ErrorCodes.SUCCESS);
    ...
    1014: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 182s local, disk-cache ... (4 actions, 2 running)1015: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 185s local, disk-cache ... (4 actions, 2 running)1016: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 189s local, disk-cache ... (4 actions, 2 running)1017: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 190s local, disk-cache ... (4 actions, 1 running)1018: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 201s local, disk-cache ... (4 actions, 1 running)1019: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 204s local, disk-cache ... (4 actions, 1 running)1020: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 219s local, disk-cache ... (4 actions, 2 running)1021: �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (see D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log)1022: �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (Summary)
    ...
    1033: platform: windows1034: ci: github1035: rbe: false1036: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1037: Selenium::WebDriver::Edge::Options1038: passes emulated device correctly1039: passes emulated user agent correctly1040: passes args correctly1041: enables bidi (FAILED - 1)1042: enables BiDi on initialization (FAILED - 2)1043: Failures:1044: 1) Selenium::WebDriver::Edge::Options enables bidi1045: Failure/Error: options = Selenium::WebDriver::Options.chrome1046: LoadError:1047: cannot load such file -- selenium/webdriver/chrome1048: Did you mean? selenium/webdriver/chromium1049: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1050: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1051: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1052: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1053: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1054: LoadError:
    ...
    1059: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1060: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1061: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1062: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1063: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1064: # ./rb/lib/selenium/webdriver.rb:89:in `for'1065: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1066: Finished in 24.51 seconds (files took 1.11 seconds to load)1067: 5 examples, 2 failures1068: Failed examples:
    ...
    1078: platform: windows1079: ci: github1080: rbe: false1081: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1082: Selenium::WebDriver::Edge::Options1083: passes emulated device correctly1084: passes emulated user agent correctly1085: passes args correctly1086: enables bidi (FAILED - 1)1087: enables BiDi on initialization (FAILED - 2)1088: Failures:1089: 1) Selenium::WebDriver::Edge::Options enables bidi1090: Failure/Error: options = Selenium::WebDriver::Options.chrome1091: LoadError:1092: cannot load such file -- selenium/webdriver/chrome1093: Did you mean? selenium/webdriver/chromium1094: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1095: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1096: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1097: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1098: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1099: LoadError:
    ...
    1104: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1105: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1106: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1107: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1108: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1109: # ./rb/lib/selenium/webdriver.rb:89:in `for'1110: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1111: Finished in 21.49 seconds (files took 1.01 seconds to load)1112: 5 examples, 2 failures1113: Failed examples:
    ...
    1123: platform: windows1124: ci: github1125: rbe: false1126: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1127: Selenium::WebDriver::Edge::Options1128: passes emulated device correctly1129: passes emulated user agent correctly1130: passes args correctly1131: enables bidi (FAILED - 1)1132: enables BiDi on initialization (FAILED - 2)1133: Failures:1134: 1) Selenium::WebDriver::Edge::Options enables bidi1135: Failure/Error: options = Selenium::WebDriver::Options.chrome1136: LoadError:1137: cannot load such file -- selenium/webdriver/chrome1138: Did you mean? selenium/webdriver/chromium1139: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1140: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1141: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1142: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1143: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1144: LoadError:
    ...
    1149: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1150: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1151: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1152: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1153: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1154: # ./rb/lib/selenium/webdriver.rb:89:in `for'1155: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1156: Finished in 21.76 seconds (files took 1.06 seconds to load)1157: 5 examples, 2 failures1158: Failed examples:1159: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:47 # Selenium::WebDriver::Edge::Options enables bidi1160: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:65 # Selenium::WebDriver::Edge::Options enables BiDi on initialization1161: ================================================================================1162: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 36s ... (4 actions, 1 running)1163: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 46s ... (4 actions, 1 running)1164: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 49s ... (4 actions, 1 running)1165: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 33s ... (4 actions, 2 running)1166: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 35s ... (4 actions, 1 running)1167: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 46s ... (4 actions, 1 running)1168: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 47s ... (4 actions, 1 running)1169: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 33s ... (4 actions, 2 running)1170: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 35s ... (4 actions, 1 running)1171: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 45s ... (4 actions, 1 running)1172: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 47s ... (4 actions, 1 running)1173: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 38s ... (4 actions, 2 running)1174: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 39s ... (4 actions, 1 running)1175: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 49s ... (4 actions, 1 running)1176: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 52s ... (4 actions, 1 running)1177: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 43s ... (4 actions, 2 running)1178: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 44s ... (4 actions, 1 running)1179: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 54s ... (4 actions, 1 running)1180: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 58s ... (4 actions, 1 running)1181: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 38s ... (4 actions, 2 running)1182: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 39s ... (4 actions, 1 running)1183: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 50s ... (4 actions, 1 running)1184: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 54s ... (4 actions, 1 running)1185: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 32s ... (4 actions, 2 running)1186: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 33s ... (4 actions, 1 running)1187: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 44s ... (4 actions, 1 running)1188: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 46s ... (4 actions, 1 running)1189: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 37s ... (4 actions, 2 running)1190: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 39s ... (4 actions, 1 running)1191: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 49s ... (4 actions, 1 running)1192: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 52s ... (4 actions, 1 running)1193: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 27s ... (4 actions, 2 running)1194: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 29s ... (3 actions, 1 running)1195: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 39s ... (3 actions, 1 running)1196: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 18s ... (3 actions, 2 running)1197: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 20s ... (2 actions, 1 running)1198: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 30s ... (2 actions, 1 running)1199: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 15s local, disk-cache ... (2 actions running)1200: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 1s local, disk-cache1201: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 11s local, disk-cache1202: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 16s local, disk-cache1203: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 0s disk-cache1204: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote1205: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 1s local, disk-cache1206: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 15s local, disk-cache1207: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 0s disk-cache1208: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote1209: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 1s local, disk-cache1210: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 15s local, disk-cache1211: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 0s disk-cache1212: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote1213: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 1s local, disk-cache1214: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 87s local, disk-cache1215: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s disk-cache1216: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote1217: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s local, disk-cache1218: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 14s local, disk-cache1219: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 0s disk-cache1220: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote1221: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 1s local, disk-cache1222: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 15s local, disk-cache1223: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 0s disk-cache1224: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote1225: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s local, disk-cache1226: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 15s local, disk-cache1227: �[32mINFO: �[0mFound 31 test targets...1228: �[32mINFO: �[0mElapsed time: 1597.229s, Critical Path: 687.20s1229: �[32mINFO: �[0m2877 processes: 1429 disk cache hit, 1172 internal, 276 local.1230: �[32mINFO: �[0mBuild completed, 1 test FAILED, 2877 total actions1231: //rb/spec/integration/selenium/webdriver:action_builder-edge-remote �[0m�[32mPASSED�[0m in 29.1s1232: //rb/spec/integration/selenium/webdriver:bidi-edge-remote �[0m�[32mPASSED�[0m in 15.0s1233: //rb/spec/integration/selenium/webdriver:devtools-edge-remote �[0m�[32mPASSED�[0m in 87.9s1234: //rb/spec/integration/selenium/webdriver:driver-edge-remote �[0m�[32mPASSED�[0m in 34.3s1235: //rb/spec/integration/selenium/webdriver:element-edge-remote �[0m�[32mPASSED�[0m in 29.8s1236: //rb/spec/integration/selenium/webdriver:error-edge-remote �[0m�[32mPASSED�[0m in 14.6s
    ...
    1253: //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote �[0m�[32mPASSED�[0m in 15.5s1254: //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote �[0m�[32mPASSED�[0m in 15.1s1255: //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote �[0m�[32mPASSED�[0m in 15.1s1256: //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote �[0m�[32mPASSED�[0m in 34.2s1257: //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote �[0m�[32mPASSED�[0m in 15.3s1258: //rb/spec/integration/selenium/webdriver/edge:service-edge-remote �[0m�[32mPASSED�[0m in 22.2s1259: //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote �[0m�[32mPASSED�[0m in 31.3s1260: //rb/spec/integration/selenium/webdriver/remote:element-edge-remote �[0m�[32mPASSED�[0m in 17.2s1261: //rb/spec/integration/selenium/webdriver/edge:options-edge-remote �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 32.4s1262: Stats over 3 runs: max = 32.4s, min = 29.3s, avg = 30.5s, dev = 1.4s1263: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log1264: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_1.log1265: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_2.log1266: Executed 31 out of 31 tests: 30 tests pass and �[0m�[31m�[1m1 fails locally�[0m.1267: There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.1268: �[0m1269: ##[error]Process completed with exit code 1.

    ✨ CI feedback usage guide:

    The CI feedback tool (/checks) automatically triggers when a PR has a failed check.
    The tool analyzes the failed checks and provides several feedbacks:

    • Failed stage
    • Failed test name
    • Failure summary
    • Relevant error logs

    In addition to being automatically triggered, the tool can also be invoked manually by commenting on a PR:

    /checks "https://github.com/{repo_name}/actions/runs/{run_number}/job/{job_number}"
    

    where {repo_name} is the name of the repository, {run_number} is the run number of the failed check, and {job_number} is the job number of the failed check.

    Configuration options

    • enable_auto_checks_feedback - if set to true, the tool will automatically provide feedback when a check is failed. Default is true.
    • excluded_checks_list - a list of checks to exclude from the feedback, for example: ["check1", "check2"]. Default is an empty list.
    • enable_help_text - if set to true, the tool will provide a help message with the feedback. Default is true.
    • persistent_comment - if set to true, the tool will overwrite a previous checks comment with the new feedback. Default is true.
    • final_update_message - if persistent_comment is true and updating a previous checks message, the tool will also create a new message: "Persistent checks updated to latest commit". Default is true.

    See more information about the checks tool in the docs.

    Comment threadrb/lib/selenium/webdriver/common/options.rb
    PhilipWoulfe pushed a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.Support](https://github.com/SeleniumHQ/selenium) from
    4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.Support's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images…
    PhilipWoulfe added a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Selenium.WebDriver&package-manager=nuget&previous-version=4.31.0&new-version=4.41.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    ---
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    </details>
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: PhilipWoulfe <philip.woulfe@gmail.com>
    Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    C-rbRuby BindingsP-enhancementPR with a new featureReview effort [1-5]: 2

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    5 participants

    @titusfortner@p0deje@aguspe@pujagani@diemol
    , 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
    Skip to content

    [rb] create user-friendly method for enabling bidi - #14284

    Merged
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi
    Dec 10, 2025
    Merged

    [rb] create user-friendly method for enabling bidi#14284
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi

    Conversation

    @titusfortner

    @titusfortnertitusfortner commented Jul 19, 2024

    Copy link
    Copy Markdown
    Member

    User description

    This matches what is being done in other languages (#13991)

    In general it isn't user friendly that that web_socket_url value to the driver is a boolean, but the response is a string. This provides a more obvious name for users to set the property.

    This allows Options class to use #enable_bidi! and #bidi? as the booleans for the options.
    Capabilities will return driver.capabilities[:web_socket_url] with either nil or the value of the url.

    We ok with my use of bang and predicate here?


    PR Type

    Enhancement, Tests


    Description

    • Added enable_bidi! method to Selenium::WebDriver::Options to set web_socket_url to true.
    • Added bidi? method to check if web_socket_url is enabled.
    • Added integration test for enabling bidi in Chrome options, verifying web_socket_url and bidi? method behavior.
    • Added unit test for enable_bidi! method, verifying setting and querying of bidi option.

    Changes walkthrough 📝

    Relevant files
    Enhancement
    options.rb
    Add methods to enable and check bidi in options

    rb/lib/selenium/webdriver/common/options.rb

  • Added enable_bidi! method to set web_socket_url to true.
  • Added bidi? method to check if web_socket_url is enabled.
  • +8/-0
    Tests
    options_spec.rb
    Add integration test for enabling bidi in Chrome options

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb

  • Added integration test for enabling bidi in Chrome options.
  • Verified web_socket_url and bidi? method behavior.
  • +18/-0
    options_spec.rb
    Add unit test for enable_bidi! method in Chrome options

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb

  • Added unit test for enable_bidi! method.
  • Verified setting and querying of bidi option.
  • +12/-0

    💡 PR-Agent usage:
    Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    @qodo-code-review

    Copy link
    Copy Markdown
    Contributor

    PR Reviewer Guide 🔍

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Key issues to review

    Code Clarity
    The use of the bang (!) in enable_bidi! suggests that the method could raise an exception or has a dangerous side effect, which does not seem to be the case here. Consider renaming to enable_bidi if there are no such implications.

    Redundant Code
    The double negation in !!@options[:web_socket_url] is redundant. Ruby implicitly treats nil as false in boolean contexts, so @options[:web_socket_url] is sufficient.

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    PR Code Suggestions ✨

    CategorySuggestion Score
    Possible bug
    Update the enable_bidi! method to accept and set a URL instead of a boolean

    The method enable_bidi! sets @options[:web_socket_url] to true, which seems
    incorrect as it should likely store a WebSocket URL string instead of a boolean.
    Consider updating this method to accept a URL parameter or fetch it from a
    configuration.

    rb/lib/selenium/webdriver/common/options.rb [95]

    -def enable_bidi!- @options[:web_socket_url] = true+def enable_bidi!(url)+ @options[:web_socket_url] = url
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: This suggestion addresses a potential bug by ensuring that the enable_bidi! method sets a WebSocket URL instead of a boolean, which aligns with the expected behavior of handling a URL.

    9
    Enhancement
    Modify the bidi? method to correctly handle URL strings

    The bidi? method uses a double negation (!!) to convert the value to a boolean. This
    is unnecessary if @options[:web_socket_url] is always a boolean. If
    @options[:web_socket_url] is intended to be a URL string, adjust the method to check
    for nil or an empty string instead.

    rb/lib/selenium/webdriver/common/options.rb [99]

     def bidi?
    - !!@options[:web_socket_url]+ !@options[:web_socket_url].nil? && !@options[:web_socket_url].empty?
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This enhancement ensures that the bidi? method correctly checks for the presence of a WebSocket URL, improving the robustness of the code.

    8
    Possible issue
    Update the test to check for a valid WebSocket URL format

    The test case for enable_bidi! assumes web_socket_url to be a boolean, which
    contradicts the expected behavior of handling a URL. Update the test to check for a
    valid URL format instead of a boolean.

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb [56]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion improves the test case by ensuring it checks for a valid WebSocket URL format, which aligns with the expected behavior of the enable_bidi! method.

    8
    Adjust the unit test to validate that web_socket_url is a properly formatted URL

    Similar to the integration test, the unit test for enable_bidi! should verify that
    web_socket_url is set to a valid URL, not just a boolean. Adjust the expectation to
    validate the format of the URL.

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb [152]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion enhances the unit test by verifying that web_socket_url is a valid URL, ensuring consistency with the expected behavior of the enable_bidi! method.

    8

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    CI Failure Feedback 🧐

    (Checks updated until commit ceaa988)

    Action: Ruby / Remote Tests (edge, windows) / Remote Tests (edge, windows)

    Failed stage:Run Bazel [❌]

    Failed test name: Selenium::WebDriver::Edge::Options enables bidi

    Failure summary:

    The action failed due to two specific test failures in the Selenium WebDriver integration tests for
    Edge:

  • The test Selenium::WebDriver::Edge::Options enables bidi failed because it attempted to load a
    non-existent file selenium/webdriver/chrome, which resulted in a LoadError. The correct file might
    be selenium/webdriver/chromium.
  • The test Selenium::WebDriver::Edge::Options enables BiDi on initialization also failed due to a
    LoadError when trying to initialize the WebDriver for Edge with certain options.

  • Relevant error logs:
    1: ##[group]Operating System2: Microsoft Windows Server 2022
    ...
    743: �[32m[1,847 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/helpers.cc [for tool]; 5s local, disk-cache ... (4 actions running)744: �[32m[1,848 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 2s local, disk-cache ... (4 actions running)745: �[32m[1,849 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 4s local, disk-cache ... (4 actions, 3 running)746: �[32m[1,852 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 1s local, disk-cache ... (4 actions running)747: �[32m[1,865 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 2s local, disk-cache ... (4 actions, 3 running)748: �[32m[1,892 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 3s local, disk-cache ... (4 actions, 3 running)749: �[32m[2,058 / 3,107]�[0m Compiling src/google/protobuf/compiler/command_line_interface.cc [for tool]; 4s local, disk-cache ... (3 actions, 1 running)750: �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (71 source files):751: java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal752: private final ErrorCodes errorCodes;753: ^754: java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal755: this.errorCodes = new ErrorCodes();756: ^757: java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal758: public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {759: ^760: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal761: ErrorCodes errorCodes = new ErrorCodes();762: ^763: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal764: ErrorCodes errorCodes = new ErrorCodes();765: ^766: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal767: response.setStatus(ErrorCodes.SUCCESS);768: ^769: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal770: response.setState(ErrorCodes.SUCCESS_STRING);771: ^772: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal773: new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));774: ^775: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal776: new ErrorCodes().getExceptionType((String) rawError);777: ^778: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal779: private final ErrorCodes errorCodes = new ErrorCodes();780: ^781: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal782: private final ErrorCodes errorCodes = new ErrorCodes();783: ^784: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:55: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal785: int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;786: ^787: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:101: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal788: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);789: ^790: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:103: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal791: response.setStatus(ErrorCodes.UNHANDLED_ERROR);792: ^793: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:117: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal794: response.setStatus(ErrorCodes.SUCCESS);795: ^796: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:118: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal797: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));798: ^799: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:124: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal800: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));801: ^802: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal803: private final ErrorCodes errorCodes = new ErrorCodes();804: ^805: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal806: private final ErrorCodes errorCodes = new ErrorCodes();807: ^808: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:93: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal809: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);810: ^811: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:98: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal812: response.setStatus(ErrorCodes.UNHANDLED_ERROR);813: ^814: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:145: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal815: response.setStatus(ErrorCodes.SUCCESS);
    ...
    1014: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 182s local, disk-cache ... (4 actions, 2 running)1015: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 185s local, disk-cache ... (4 actions, 2 running)1016: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 189s local, disk-cache ... (4 actions, 2 running)1017: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 190s local, disk-cache ... (4 actions, 1 running)1018: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 201s local, disk-cache ... (4 actions, 1 running)1019: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 204s local, disk-cache ... (4 actions, 1 running)1020: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 219s local, disk-cache ... (4 actions, 2 running)1021: �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (see D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log)1022: �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (Summary)
    ...
    1033: platform: windows1034: ci: github1035: rbe: false1036: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1037: Selenium::WebDriver::Edge::Options1038: passes emulated device correctly1039: passes emulated user agent correctly1040: passes args correctly1041: enables bidi (FAILED - 1)1042: enables BiDi on initialization (FAILED - 2)1043: Failures:1044: 1) Selenium::WebDriver::Edge::Options enables bidi1045: Failure/Error: options = Selenium::WebDriver::Options.chrome1046: LoadError:1047: cannot load such file -- selenium/webdriver/chrome1048: Did you mean? selenium/webdriver/chromium1049: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1050: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1051: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1052: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1053: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1054: LoadError:
    ...
    1059: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1060: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1061: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1062: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1063: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1064: # ./rb/lib/selenium/webdriver.rb:89:in `for'1065: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1066: Finished in 24.51 seconds (files took 1.11 seconds to load)1067: 5 examples, 2 failures1068: Failed examples:
    ...
    1078: platform: windows1079: ci: github1080: rbe: false1081: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1082: Selenium::WebDriver::Edge::Options1083: passes emulated device correctly1084: passes emulated user agent correctly1085: passes args correctly1086: enables bidi (FAILED - 1)1087: enables BiDi on initialization (FAILED - 2)1088: Failures:1089: 1) Selenium::WebDriver::Edge::Options enables bidi1090: Failure/Error: options = Selenium::WebDriver::Options.chrome1091: LoadError:1092: cannot load such file -- selenium/webdriver/chrome1093: Did you mean? selenium/webdriver/chromium1094: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1095: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1096: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1097: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1098: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1099: LoadError:
    ...
    1104: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1105: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1106: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1107: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1108: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1109: # ./rb/lib/selenium/webdriver.rb:89:in `for'1110: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1111: Finished in 21.49 seconds (files took 1.01 seconds to load)1112: 5 examples, 2 failures1113: Failed examples:
    ...
    1123: platform: windows1124: ci: github1125: rbe: false1126: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1127: Selenium::WebDriver::Edge::Options1128: passes emulated device correctly1129: passes emulated user agent correctly1130: passes args correctly1131: enables bidi (FAILED - 1)1132: enables BiDi on initialization (FAILED - 2)1133: Failures:1134: 1) Selenium::WebDriver::Edge::Options enables bidi1135: Failure/Error: options = Selenium::WebDriver::Options.chrome1136: LoadError:1137: cannot load such file -- selenium/webdriver/chrome1138: Did you mean? selenium/webdriver/chromium1139: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1140: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1141: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1142: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1143: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1144: LoadError:
    ...
    1149: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1150: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1151: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1152: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1153: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1154: # ./rb/lib/selenium/webdriver.rb:89:in `for'1155: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1156: Finished in 21.76 seconds (files took 1.06 seconds to load)1157: 5 examples, 2 failures1158: Failed examples:1159: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:47 # Selenium::WebDriver::Edge::Options enables bidi1160: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:65 # Selenium::WebDriver::Edge::Options enables BiDi on initialization1161: ================================================================================1162: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 36s ... (4 actions, 1 running)1163: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 46s ... (4 actions, 1 running)1164: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 49s ... (4 actions, 1 running)1165: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 33s ... (4 actions, 2 running)1166: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 35s ... (4 actions, 1 running)1167: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 46s ... (4 actions, 1 running)1168: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 47s ... (4 actions, 1 running)1169: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 33s ... (4 actions, 2 running)1170: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 35s ... (4 actions, 1 running)1171: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 45s ... (4 actions, 1 running)1172: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 47s ... (4 actions, 1 running)1173: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 38s ... (4 actions, 2 running)1174: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 39s ... (4 actions, 1 running)1175: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 49s ... (4 actions, 1 running)1176: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 52s ... (4 actions, 1 running)1177: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 43s ... (4 actions, 2 running)1178: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 44s ... (4 actions, 1 running)1179: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 54s ... (4 actions, 1 running)1180: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 58s ... (4 actions, 1 running)1181: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 38s ... (4 actions, 2 running)1182: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 39s ... (4 actions, 1 running)1183: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 50s ... (4 actions, 1 running)1184: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 54s ... (4 actions, 1 running)1185: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 32s ... (4 actions, 2 running)1186: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 33s ... (4 actions, 1 running)1187: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 44s ... (4 actions, 1 running)1188: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 46s ... (4 actions, 1 running)1189: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 37s ... (4 actions, 2 running)1190: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 39s ... (4 actions, 1 running)1191: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 49s ... (4 actions, 1 running)1192: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 52s ... (4 actions, 1 running)1193: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 27s ... (4 actions, 2 running)1194: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 29s ... (3 actions, 1 running)1195: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 39s ... (3 actions, 1 running)1196: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 18s ... (3 actions, 2 running)1197: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 20s ... (2 actions, 1 running)1198: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 30s ... (2 actions, 1 running)1199: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 15s local, disk-cache ... (2 actions running)1200: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 1s local, disk-cache1201: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 11s local, disk-cache1202: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 16s local, disk-cache1203: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 0s disk-cache1204: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote1205: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 1s local, disk-cache1206: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 15s local, disk-cache1207: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 0s disk-cache1208: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote1209: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 1s local, disk-cache1210: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 15s local, disk-cache1211: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 0s disk-cache1212: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote1213: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 1s local, disk-cache1214: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 87s local, disk-cache1215: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s disk-cache1216: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote1217: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s local, disk-cache1218: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 14s local, disk-cache1219: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 0s disk-cache1220: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote1221: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 1s local, disk-cache1222: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 15s local, disk-cache1223: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 0s disk-cache1224: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote1225: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s local, disk-cache1226: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 15s local, disk-cache1227: �[32mINFO: �[0mFound 31 test targets...1228: �[32mINFO: �[0mElapsed time: 1597.229s, Critical Path: 687.20s1229: �[32mINFO: �[0m2877 processes: 1429 disk cache hit, 1172 internal, 276 local.1230: �[32mINFO: �[0mBuild completed, 1 test FAILED, 2877 total actions1231: //rb/spec/integration/selenium/webdriver:action_builder-edge-remote �[0m�[32mPASSED�[0m in 29.1s1232: //rb/spec/integration/selenium/webdriver:bidi-edge-remote �[0m�[32mPASSED�[0m in 15.0s1233: //rb/spec/integration/selenium/webdriver:devtools-edge-remote �[0m�[32mPASSED�[0m in 87.9s1234: //rb/spec/integration/selenium/webdriver:driver-edge-remote �[0m�[32mPASSED�[0m in 34.3s1235: //rb/spec/integration/selenium/webdriver:element-edge-remote �[0m�[32mPASSED�[0m in 29.8s1236: //rb/spec/integration/selenium/webdriver:error-edge-remote �[0m�[32mPASSED�[0m in 14.6s
    ...
    1253: //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote �[0m�[32mPASSED�[0m in 15.5s1254: //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote �[0m�[32mPASSED�[0m in 15.1s1255: //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote �[0m�[32mPASSED�[0m in 15.1s1256: //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote �[0m�[32mPASSED�[0m in 34.2s1257: //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote �[0m�[32mPASSED�[0m in 15.3s1258: //rb/spec/integration/selenium/webdriver/edge:service-edge-remote �[0m�[32mPASSED�[0m in 22.2s1259: //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote �[0m�[32mPASSED�[0m in 31.3s1260: //rb/spec/integration/selenium/webdriver/remote:element-edge-remote �[0m�[32mPASSED�[0m in 17.2s1261: //rb/spec/integration/selenium/webdriver/edge:options-edge-remote �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 32.4s1262: Stats over 3 runs: max = 32.4s, min = 29.3s, avg = 30.5s, dev = 1.4s1263: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log1264: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_1.log1265: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_2.log1266: Executed 31 out of 31 tests: 30 tests pass and �[0m�[31m�[1m1 fails locally�[0m.1267: There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.1268: �[0m1269: ##[error]Process completed with exit code 1.

    ✨ CI feedback usage guide:

    The CI feedback tool (/checks) automatically triggers when a PR has a failed check.
    The tool analyzes the failed checks and provides several feedbacks:

    • Failed stage
    • Failed test name
    • Failure summary
    • Relevant error logs

    In addition to being automatically triggered, the tool can also be invoked manually by commenting on a PR:

    /checks "https://github.com/{repo_name}/actions/runs/{run_number}/job/{job_number}"
    

    where {repo_name} is the name of the repository, {run_number} is the run number of the failed check, and {job_number} is the job number of the failed check.

    Configuration options

    • enable_auto_checks_feedback - if set to true, the tool will automatically provide feedback when a check is failed. Default is true.
    • excluded_checks_list - a list of checks to exclude from the feedback, for example: ["check1", "check2"]. Default is an empty list.
    • enable_help_text - if set to true, the tool will provide a help message with the feedback. Default is true.
    • persistent_comment - if set to true, the tool will overwrite a previous checks comment with the new feedback. Default is true.
    • final_update_message - if persistent_comment is true and updating a previous checks message, the tool will also create a new message: "Persistent checks updated to latest commit". Default is true.

    See more information about the checks tool in the docs.

    Comment threadrb/lib/selenium/webdriver/common/options.rb
    PhilipWoulfe pushed a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.Support](https://github.com/SeleniumHQ/selenium) from
    4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.Support's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images…
    PhilipWoulfe added a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Selenium.WebDriver&package-manager=nuget&previous-version=4.31.0&new-version=4.41.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    ---
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    </details>
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: PhilipWoulfe <philip.woulfe@gmail.com>
    Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    C-rbRuby BindingsP-enhancementPR with a new featureReview effort [1-5]: 2

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    5 participants

    @titusfortner@p0deje@aguspe@pujagani@diemol
    , 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
    Skip to content

    [rb] create user-friendly method for enabling bidi - #14284

    Merged
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi
    Dec 10, 2025
    Merged

    [rb] create user-friendly method for enabling bidi#14284
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi

    Conversation

    @titusfortner

    @titusfortnertitusfortner commented Jul 19, 2024

    Copy link
    Copy Markdown
    Member

    User description

    This matches what is being done in other languages (#13991)

    In general it isn't user friendly that that web_socket_url value to the driver is a boolean, but the response is a string. This provides a more obvious name for users to set the property.

    This allows Options class to use #enable_bidi! and #bidi? as the booleans for the options.
    Capabilities will return driver.capabilities[:web_socket_url] with either nil or the value of the url.

    We ok with my use of bang and predicate here?


    PR Type

    Enhancement, Tests


    Description

    • Added enable_bidi! method to Selenium::WebDriver::Options to set web_socket_url to true.
    • Added bidi? method to check if web_socket_url is enabled.
    • Added integration test for enabling bidi in Chrome options, verifying web_socket_url and bidi? method behavior.
    • Added unit test for enable_bidi! method, verifying setting and querying of bidi option.

    Changes walkthrough 📝

    Relevant files
    Enhancement
    options.rb
    Add methods to enable and check bidi in options

    rb/lib/selenium/webdriver/common/options.rb

  • Added enable_bidi! method to set web_socket_url to true.
  • Added bidi? method to check if web_socket_url is enabled.
  • +8/-0
    Tests
    options_spec.rb
    Add integration test for enabling bidi in Chrome options

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb

  • Added integration test for enabling bidi in Chrome options.
  • Verified web_socket_url and bidi? method behavior.
  • +18/-0
    options_spec.rb
    Add unit test for enable_bidi! method in Chrome options

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb

  • Added unit test for enable_bidi! method.
  • Verified setting and querying of bidi option.
  • +12/-0

    💡 PR-Agent usage:
    Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    @qodo-code-review

    Copy link
    Copy Markdown
    Contributor

    PR Reviewer Guide 🔍

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Key issues to review

    Code Clarity
    The use of the bang (!) in enable_bidi! suggests that the method could raise an exception or has a dangerous side effect, which does not seem to be the case here. Consider renaming to enable_bidi if there are no such implications.

    Redundant Code
    The double negation in !!@options[:web_socket_url] is redundant. Ruby implicitly treats nil as false in boolean contexts, so @options[:web_socket_url] is sufficient.

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    PR Code Suggestions ✨

    CategorySuggestion Score
    Possible bug
    Update the enable_bidi! method to accept and set a URL instead of a boolean

    The method enable_bidi! sets @options[:web_socket_url] to true, which seems
    incorrect as it should likely store a WebSocket URL string instead of a boolean.
    Consider updating this method to accept a URL parameter or fetch it from a
    configuration.

    rb/lib/selenium/webdriver/common/options.rb [95]

    -def enable_bidi!- @options[:web_socket_url] = true+def enable_bidi!(url)+ @options[:web_socket_url] = url
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: This suggestion addresses a potential bug by ensuring that the enable_bidi! method sets a WebSocket URL instead of a boolean, which aligns with the expected behavior of handling a URL.

    9
    Enhancement
    Modify the bidi? method to correctly handle URL strings

    The bidi? method uses a double negation (!!) to convert the value to a boolean. This
    is unnecessary if @options[:web_socket_url] is always a boolean. If
    @options[:web_socket_url] is intended to be a URL string, adjust the method to check
    for nil or an empty string instead.

    rb/lib/selenium/webdriver/common/options.rb [99]

     def bidi?
    - !!@options[:web_socket_url]+ !@options[:web_socket_url].nil? && !@options[:web_socket_url].empty?
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This enhancement ensures that the bidi? method correctly checks for the presence of a WebSocket URL, improving the robustness of the code.

    8
    Possible issue
    Update the test to check for a valid WebSocket URL format

    The test case for enable_bidi! assumes web_socket_url to be a boolean, which
    contradicts the expected behavior of handling a URL. Update the test to check for a
    valid URL format instead of a boolean.

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb [56]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion improves the test case by ensuring it checks for a valid WebSocket URL format, which aligns with the expected behavior of the enable_bidi! method.

    8
    Adjust the unit test to validate that web_socket_url is a properly formatted URL

    Similar to the integration test, the unit test for enable_bidi! should verify that
    web_socket_url is set to a valid URL, not just a boolean. Adjust the expectation to
    validate the format of the URL.

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb [152]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion enhances the unit test by verifying that web_socket_url is a valid URL, ensuring consistency with the expected behavior of the enable_bidi! method.

    8

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    CI Failure Feedback 🧐

    (Checks updated until commit ceaa988)

    Action: Ruby / Remote Tests (edge, windows) / Remote Tests (edge, windows)

    Failed stage:Run Bazel [❌]

    Failed test name: Selenium::WebDriver::Edge::Options enables bidi

    Failure summary:

    The action failed due to two specific test failures in the Selenium WebDriver integration tests for
    Edge:

  • The test Selenium::WebDriver::Edge::Options enables bidi failed because it attempted to load a
    non-existent file selenium/webdriver/chrome, which resulted in a LoadError. The correct file might
    be selenium/webdriver/chromium.
  • The test Selenium::WebDriver::Edge::Options enables BiDi on initialization also failed due to a
    LoadError when trying to initialize the WebDriver for Edge with certain options.

  • Relevant error logs:
    1: ##[group]Operating System2: Microsoft Windows Server 2022
    ...
    743: �[32m[1,847 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/helpers.cc [for tool]; 5s local, disk-cache ... (4 actions running)744: �[32m[1,848 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 2s local, disk-cache ... (4 actions running)745: �[32m[1,849 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 4s local, disk-cache ... (4 actions, 3 running)746: �[32m[1,852 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 1s local, disk-cache ... (4 actions running)747: �[32m[1,865 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 2s local, disk-cache ... (4 actions, 3 running)748: �[32m[1,892 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 3s local, disk-cache ... (4 actions, 3 running)749: �[32m[2,058 / 3,107]�[0m Compiling src/google/protobuf/compiler/command_line_interface.cc [for tool]; 4s local, disk-cache ... (3 actions, 1 running)750: �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (71 source files):751: java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal752: private final ErrorCodes errorCodes;753: ^754: java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal755: this.errorCodes = new ErrorCodes();756: ^757: java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal758: public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {759: ^760: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal761: ErrorCodes errorCodes = new ErrorCodes();762: ^763: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal764: ErrorCodes errorCodes = new ErrorCodes();765: ^766: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal767: response.setStatus(ErrorCodes.SUCCESS);768: ^769: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal770: response.setState(ErrorCodes.SUCCESS_STRING);771: ^772: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal773: new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));774: ^775: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal776: new ErrorCodes().getExceptionType((String) rawError);777: ^778: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal779: private final ErrorCodes errorCodes = new ErrorCodes();780: ^781: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal782: private final ErrorCodes errorCodes = new ErrorCodes();783: ^784: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:55: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal785: int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;786: ^787: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:101: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal788: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);789: ^790: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:103: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal791: response.setStatus(ErrorCodes.UNHANDLED_ERROR);792: ^793: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:117: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal794: response.setStatus(ErrorCodes.SUCCESS);795: ^796: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:118: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal797: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));798: ^799: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:124: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal800: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));801: ^802: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal803: private final ErrorCodes errorCodes = new ErrorCodes();804: ^805: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal806: private final ErrorCodes errorCodes = new ErrorCodes();807: ^808: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:93: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal809: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);810: ^811: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:98: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal812: response.setStatus(ErrorCodes.UNHANDLED_ERROR);813: ^814: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:145: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal815: response.setStatus(ErrorCodes.SUCCESS);
    ...
    1014: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 182s local, disk-cache ... (4 actions, 2 running)1015: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 185s local, disk-cache ... (4 actions, 2 running)1016: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 189s local, disk-cache ... (4 actions, 2 running)1017: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 190s local, disk-cache ... (4 actions, 1 running)1018: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 201s local, disk-cache ... (4 actions, 1 running)1019: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 204s local, disk-cache ... (4 actions, 1 running)1020: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 219s local, disk-cache ... (4 actions, 2 running)1021: �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (see D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log)1022: �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (Summary)
    ...
    1033: platform: windows1034: ci: github1035: rbe: false1036: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1037: Selenium::WebDriver::Edge::Options1038: passes emulated device correctly1039: passes emulated user agent correctly1040: passes args correctly1041: enables bidi (FAILED - 1)1042: enables BiDi on initialization (FAILED - 2)1043: Failures:1044: 1) Selenium::WebDriver::Edge::Options enables bidi1045: Failure/Error: options = Selenium::WebDriver::Options.chrome1046: LoadError:1047: cannot load such file -- selenium/webdriver/chrome1048: Did you mean? selenium/webdriver/chromium1049: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1050: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1051: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1052: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1053: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1054: LoadError:
    ...
    1059: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1060: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1061: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1062: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1063: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1064: # ./rb/lib/selenium/webdriver.rb:89:in `for'1065: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1066: Finished in 24.51 seconds (files took 1.11 seconds to load)1067: 5 examples, 2 failures1068: Failed examples:
    ...
    1078: platform: windows1079: ci: github1080: rbe: false1081: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1082: Selenium::WebDriver::Edge::Options1083: passes emulated device correctly1084: passes emulated user agent correctly1085: passes args correctly1086: enables bidi (FAILED - 1)1087: enables BiDi on initialization (FAILED - 2)1088: Failures:1089: 1) Selenium::WebDriver::Edge::Options enables bidi1090: Failure/Error: options = Selenium::WebDriver::Options.chrome1091: LoadError:1092: cannot load such file -- selenium/webdriver/chrome1093: Did you mean? selenium/webdriver/chromium1094: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1095: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1096: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1097: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1098: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1099: LoadError:
    ...
    1104: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1105: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1106: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1107: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1108: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1109: # ./rb/lib/selenium/webdriver.rb:89:in `for'1110: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1111: Finished in 21.49 seconds (files took 1.01 seconds to load)1112: 5 examples, 2 failures1113: Failed examples:
    ...
    1123: platform: windows1124: ci: github1125: rbe: false1126: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1127: Selenium::WebDriver::Edge::Options1128: passes emulated device correctly1129: passes emulated user agent correctly1130: passes args correctly1131: enables bidi (FAILED - 1)1132: enables BiDi on initialization (FAILED - 2)1133: Failures:1134: 1) Selenium::WebDriver::Edge::Options enables bidi1135: Failure/Error: options = Selenium::WebDriver::Options.chrome1136: LoadError:1137: cannot load such file -- selenium/webdriver/chrome1138: Did you mean? selenium/webdriver/chromium1139: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1140: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1141: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1142: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1143: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1144: LoadError:
    ...
    1149: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1150: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1151: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1152: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1153: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1154: # ./rb/lib/selenium/webdriver.rb:89:in `for'1155: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1156: Finished in 21.76 seconds (files took 1.06 seconds to load)1157: 5 examples, 2 failures1158: Failed examples:1159: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:47 # Selenium::WebDriver::Edge::Options enables bidi1160: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:65 # Selenium::WebDriver::Edge::Options enables BiDi on initialization1161: ================================================================================1162: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 36s ... (4 actions, 1 running)1163: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 46s ... (4 actions, 1 running)1164: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 49s ... (4 actions, 1 running)1165: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 33s ... (4 actions, 2 running)1166: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 35s ... (4 actions, 1 running)1167: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 46s ... (4 actions, 1 running)1168: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 47s ... (4 actions, 1 running)1169: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 33s ... (4 actions, 2 running)1170: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 35s ... (4 actions, 1 running)1171: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 45s ... (4 actions, 1 running)1172: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 47s ... (4 actions, 1 running)1173: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 38s ... (4 actions, 2 running)1174: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 39s ... (4 actions, 1 running)1175: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 49s ... (4 actions, 1 running)1176: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 52s ... (4 actions, 1 running)1177: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 43s ... (4 actions, 2 running)1178: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 44s ... (4 actions, 1 running)1179: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 54s ... (4 actions, 1 running)1180: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 58s ... (4 actions, 1 running)1181: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 38s ... (4 actions, 2 running)1182: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 39s ... (4 actions, 1 running)1183: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 50s ... (4 actions, 1 running)1184: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 54s ... (4 actions, 1 running)1185: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 32s ... (4 actions, 2 running)1186: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 33s ... (4 actions, 1 running)1187: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 44s ... (4 actions, 1 running)1188: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 46s ... (4 actions, 1 running)1189: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 37s ... (4 actions, 2 running)1190: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 39s ... (4 actions, 1 running)1191: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 49s ... (4 actions, 1 running)1192: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 52s ... (4 actions, 1 running)1193: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 27s ... (4 actions, 2 running)1194: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 29s ... (3 actions, 1 running)1195: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 39s ... (3 actions, 1 running)1196: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 18s ... (3 actions, 2 running)1197: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 20s ... (2 actions, 1 running)1198: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 30s ... (2 actions, 1 running)1199: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 15s local, disk-cache ... (2 actions running)1200: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 1s local, disk-cache1201: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 11s local, disk-cache1202: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 16s local, disk-cache1203: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 0s disk-cache1204: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote1205: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 1s local, disk-cache1206: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 15s local, disk-cache1207: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 0s disk-cache1208: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote1209: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 1s local, disk-cache1210: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 15s local, disk-cache1211: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 0s disk-cache1212: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote1213: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 1s local, disk-cache1214: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 87s local, disk-cache1215: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s disk-cache1216: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote1217: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s local, disk-cache1218: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 14s local, disk-cache1219: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 0s disk-cache1220: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote1221: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 1s local, disk-cache1222: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 15s local, disk-cache1223: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 0s disk-cache1224: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote1225: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s local, disk-cache1226: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 15s local, disk-cache1227: �[32mINFO: �[0mFound 31 test targets...1228: �[32mINFO: �[0mElapsed time: 1597.229s, Critical Path: 687.20s1229: �[32mINFO: �[0m2877 processes: 1429 disk cache hit, 1172 internal, 276 local.1230: �[32mINFO: �[0mBuild completed, 1 test FAILED, 2877 total actions1231: //rb/spec/integration/selenium/webdriver:action_builder-edge-remote �[0m�[32mPASSED�[0m in 29.1s1232: //rb/spec/integration/selenium/webdriver:bidi-edge-remote �[0m�[32mPASSED�[0m in 15.0s1233: //rb/spec/integration/selenium/webdriver:devtools-edge-remote �[0m�[32mPASSED�[0m in 87.9s1234: //rb/spec/integration/selenium/webdriver:driver-edge-remote �[0m�[32mPASSED�[0m in 34.3s1235: //rb/spec/integration/selenium/webdriver:element-edge-remote �[0m�[32mPASSED�[0m in 29.8s1236: //rb/spec/integration/selenium/webdriver:error-edge-remote �[0m�[32mPASSED�[0m in 14.6s
    ...
    1253: //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote �[0m�[32mPASSED�[0m in 15.5s1254: //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote �[0m�[32mPASSED�[0m in 15.1s1255: //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote �[0m�[32mPASSED�[0m in 15.1s1256: //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote �[0m�[32mPASSED�[0m in 34.2s1257: //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote �[0m�[32mPASSED�[0m in 15.3s1258: //rb/spec/integration/selenium/webdriver/edge:service-edge-remote �[0m�[32mPASSED�[0m in 22.2s1259: //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote �[0m�[32mPASSED�[0m in 31.3s1260: //rb/spec/integration/selenium/webdriver/remote:element-edge-remote �[0m�[32mPASSED�[0m in 17.2s1261: //rb/spec/integration/selenium/webdriver/edge:options-edge-remote �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 32.4s1262: Stats over 3 runs: max = 32.4s, min = 29.3s, avg = 30.5s, dev = 1.4s1263: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log1264: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_1.log1265: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_2.log1266: Executed 31 out of 31 tests: 30 tests pass and �[0m�[31m�[1m1 fails locally�[0m.1267: There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.1268: �[0m1269: ##[error]Process completed with exit code 1.

    ✨ CI feedback usage guide:

    The CI feedback tool (/checks) automatically triggers when a PR has a failed check.
    The tool analyzes the failed checks and provides several feedbacks:

    • Failed stage
    • Failed test name
    • Failure summary
    • Relevant error logs

    In addition to being automatically triggered, the tool can also be invoked manually by commenting on a PR:

    /checks "https://github.com/{repo_name}/actions/runs/{run_number}/job/{job_number}"
    

    where {repo_name} is the name of the repository, {run_number} is the run number of the failed check, and {job_number} is the job number of the failed check.

    Configuration options

    • enable_auto_checks_feedback - if set to true, the tool will automatically provide feedback when a check is failed. Default is true.
    • excluded_checks_list - a list of checks to exclude from the feedback, for example: ["check1", "check2"]. Default is an empty list.
    • enable_help_text - if set to true, the tool will provide a help message with the feedback. Default is true.
    • persistent_comment - if set to true, the tool will overwrite a previous checks comment with the new feedback. Default is true.
    • final_update_message - if persistent_comment is true and updating a previous checks message, the tool will also create a new message: "Persistent checks updated to latest commit". Default is true.

    See more information about the checks tool in the docs.

    Comment threadrb/lib/selenium/webdriver/common/options.rb
    PhilipWoulfe pushed a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.Support](https://github.com/SeleniumHQ/selenium) from
    4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.Support's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images…
    PhilipWoulfe added a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Selenium.WebDriver&package-manager=nuget&previous-version=4.31.0&new-version=4.41.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    ---
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    </details>
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: PhilipWoulfe <philip.woulfe@gmail.com>
    Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    C-rbRuby BindingsP-enhancementPR with a new featureReview effort [1-5]: 2

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    5 participants

    @titusfortner@p0deje@aguspe@pujagani@diemol
    , 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
    Skip to content

    [rb] create user-friendly method for enabling bidi - #14284

    Merged
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi
    Dec 10, 2025
    Merged

    [rb] create user-friendly method for enabling bidi#14284
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi

    Conversation

    @titusfortner

    @titusfortnertitusfortner commented Jul 19, 2024

    Copy link
    Copy Markdown
    Member

    User description

    This matches what is being done in other languages (#13991)

    In general it isn't user friendly that that web_socket_url value to the driver is a boolean, but the response is a string. This provides a more obvious name for users to set the property.

    This allows Options class to use #enable_bidi! and #bidi? as the booleans for the options.
    Capabilities will return driver.capabilities[:web_socket_url] with either nil or the value of the url.

    We ok with my use of bang and predicate here?


    PR Type

    Enhancement, Tests


    Description

    • Added enable_bidi! method to Selenium::WebDriver::Options to set web_socket_url to true.
    • Added bidi? method to check if web_socket_url is enabled.
    • Added integration test for enabling bidi in Chrome options, verifying web_socket_url and bidi? method behavior.
    • Added unit test for enable_bidi! method, verifying setting and querying of bidi option.

    Changes walkthrough 📝

    Relevant files
    Enhancement
    options.rb
    Add methods to enable and check bidi in options

    rb/lib/selenium/webdriver/common/options.rb

  • Added enable_bidi! method to set web_socket_url to true.
  • Added bidi? method to check if web_socket_url is enabled.
  • +8/-0
    Tests
    options_spec.rb
    Add integration test for enabling bidi in Chrome options

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb

  • Added integration test for enabling bidi in Chrome options.
  • Verified web_socket_url and bidi? method behavior.
  • +18/-0
    options_spec.rb
    Add unit test for enable_bidi! method in Chrome options

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb

  • Added unit test for enable_bidi! method.
  • Verified setting and querying of bidi option.
  • +12/-0

    💡 PR-Agent usage:
    Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    @qodo-code-review

    Copy link
    Copy Markdown
    Contributor

    PR Reviewer Guide 🔍

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Key issues to review

    Code Clarity
    The use of the bang (!) in enable_bidi! suggests that the method could raise an exception or has a dangerous side effect, which does not seem to be the case here. Consider renaming to enable_bidi if there are no such implications.

    Redundant Code
    The double negation in !!@options[:web_socket_url] is redundant. Ruby implicitly treats nil as false in boolean contexts, so @options[:web_socket_url] is sufficient.

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    PR Code Suggestions ✨

    CategorySuggestion Score
    Possible bug
    Update the enable_bidi! method to accept and set a URL instead of a boolean

    The method enable_bidi! sets @options[:web_socket_url] to true, which seems
    incorrect as it should likely store a WebSocket URL string instead of a boolean.
    Consider updating this method to accept a URL parameter or fetch it from a
    configuration.

    rb/lib/selenium/webdriver/common/options.rb [95]

    -def enable_bidi!- @options[:web_socket_url] = true+def enable_bidi!(url)+ @options[:web_socket_url] = url
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: This suggestion addresses a potential bug by ensuring that the enable_bidi! method sets a WebSocket URL instead of a boolean, which aligns with the expected behavior of handling a URL.

    9
    Enhancement
    Modify the bidi? method to correctly handle URL strings

    The bidi? method uses a double negation (!!) to convert the value to a boolean. This
    is unnecessary if @options[:web_socket_url] is always a boolean. If
    @options[:web_socket_url] is intended to be a URL string, adjust the method to check
    for nil or an empty string instead.

    rb/lib/selenium/webdriver/common/options.rb [99]

     def bidi?
    - !!@options[:web_socket_url]+ !@options[:web_socket_url].nil? && !@options[:web_socket_url].empty?
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This enhancement ensures that the bidi? method correctly checks for the presence of a WebSocket URL, improving the robustness of the code.

    8
    Possible issue
    Update the test to check for a valid WebSocket URL format

    The test case for enable_bidi! assumes web_socket_url to be a boolean, which
    contradicts the expected behavior of handling a URL. Update the test to check for a
    valid URL format instead of a boolean.

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb [56]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion improves the test case by ensuring it checks for a valid WebSocket URL format, which aligns with the expected behavior of the enable_bidi! method.

    8
    Adjust the unit test to validate that web_socket_url is a properly formatted URL

    Similar to the integration test, the unit test for enable_bidi! should verify that
    web_socket_url is set to a valid URL, not just a boolean. Adjust the expectation to
    validate the format of the URL.

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb [152]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion enhances the unit test by verifying that web_socket_url is a valid URL, ensuring consistency with the expected behavior of the enable_bidi! method.

    8

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    CI Failure Feedback 🧐

    (Checks updated until commit ceaa988)

    Action: Ruby / Remote Tests (edge, windows) / Remote Tests (edge, windows)

    Failed stage:Run Bazel [❌]

    Failed test name: Selenium::WebDriver::Edge::Options enables bidi

    Failure summary:

    The action failed due to two specific test failures in the Selenium WebDriver integration tests for
    Edge:

  • The test Selenium::WebDriver::Edge::Options enables bidi failed because it attempted to load a
    non-existent file selenium/webdriver/chrome, which resulted in a LoadError. The correct file might
    be selenium/webdriver/chromium.
  • The test Selenium::WebDriver::Edge::Options enables BiDi on initialization also failed due to a
    LoadError when trying to initialize the WebDriver for Edge with certain options.

  • Relevant error logs:
    1: ##[group]Operating System2: Microsoft Windows Server 2022
    ...
    743: �[32m[1,847 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/helpers.cc [for tool]; 5s local, disk-cache ... (4 actions running)744: �[32m[1,848 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 2s local, disk-cache ... (4 actions running)745: �[32m[1,849 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 4s local, disk-cache ... (4 actions, 3 running)746: �[32m[1,852 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 1s local, disk-cache ... (4 actions running)747: �[32m[1,865 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 2s local, disk-cache ... (4 actions, 3 running)748: �[32m[1,892 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 3s local, disk-cache ... (4 actions, 3 running)749: �[32m[2,058 / 3,107]�[0m Compiling src/google/protobuf/compiler/command_line_interface.cc [for tool]; 4s local, disk-cache ... (3 actions, 1 running)750: �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (71 source files):751: java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal752: private final ErrorCodes errorCodes;753: ^754: java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal755: this.errorCodes = new ErrorCodes();756: ^757: java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal758: public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {759: ^760: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal761: ErrorCodes errorCodes = new ErrorCodes();762: ^763: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal764: ErrorCodes errorCodes = new ErrorCodes();765: ^766: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal767: response.setStatus(ErrorCodes.SUCCESS);768: ^769: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal770: response.setState(ErrorCodes.SUCCESS_STRING);771: ^772: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal773: new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));774: ^775: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal776: new ErrorCodes().getExceptionType((String) rawError);777: ^778: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal779: private final ErrorCodes errorCodes = new ErrorCodes();780: ^781: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal782: private final ErrorCodes errorCodes = new ErrorCodes();783: ^784: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:55: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal785: int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;786: ^787: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:101: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal788: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);789: ^790: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:103: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal791: response.setStatus(ErrorCodes.UNHANDLED_ERROR);792: ^793: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:117: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal794: response.setStatus(ErrorCodes.SUCCESS);795: ^796: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:118: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal797: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));798: ^799: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:124: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal800: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));801: ^802: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal803: private final ErrorCodes errorCodes = new ErrorCodes();804: ^805: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal806: private final ErrorCodes errorCodes = new ErrorCodes();807: ^808: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:93: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal809: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);810: ^811: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:98: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal812: response.setStatus(ErrorCodes.UNHANDLED_ERROR);813: ^814: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:145: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal815: response.setStatus(ErrorCodes.SUCCESS);
    ...
    1014: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 182s local, disk-cache ... (4 actions, 2 running)1015: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 185s local, disk-cache ... (4 actions, 2 running)1016: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 189s local, disk-cache ... (4 actions, 2 running)1017: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 190s local, disk-cache ... (4 actions, 1 running)1018: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 201s local, disk-cache ... (4 actions, 1 running)1019: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 204s local, disk-cache ... (4 actions, 1 running)1020: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 219s local, disk-cache ... (4 actions, 2 running)1021: �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (see D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log)1022: �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (Summary)
    ...
    1033: platform: windows1034: ci: github1035: rbe: false1036: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1037: Selenium::WebDriver::Edge::Options1038: passes emulated device correctly1039: passes emulated user agent correctly1040: passes args correctly1041: enables bidi (FAILED - 1)1042: enables BiDi on initialization (FAILED - 2)1043: Failures:1044: 1) Selenium::WebDriver::Edge::Options enables bidi1045: Failure/Error: options = Selenium::WebDriver::Options.chrome1046: LoadError:1047: cannot load such file -- selenium/webdriver/chrome1048: Did you mean? selenium/webdriver/chromium1049: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1050: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1051: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1052: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1053: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1054: LoadError:
    ...
    1059: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1060: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1061: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1062: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1063: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1064: # ./rb/lib/selenium/webdriver.rb:89:in `for'1065: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1066: Finished in 24.51 seconds (files took 1.11 seconds to load)1067: 5 examples, 2 failures1068: Failed examples:
    ...
    1078: platform: windows1079: ci: github1080: rbe: false1081: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1082: Selenium::WebDriver::Edge::Options1083: passes emulated device correctly1084: passes emulated user agent correctly1085: passes args correctly1086: enables bidi (FAILED - 1)1087: enables BiDi on initialization (FAILED - 2)1088: Failures:1089: 1) Selenium::WebDriver::Edge::Options enables bidi1090: Failure/Error: options = Selenium::WebDriver::Options.chrome1091: LoadError:1092: cannot load such file -- selenium/webdriver/chrome1093: Did you mean? selenium/webdriver/chromium1094: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1095: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1096: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1097: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1098: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1099: LoadError:
    ...
    1104: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1105: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1106: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1107: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1108: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1109: # ./rb/lib/selenium/webdriver.rb:89:in `for'1110: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1111: Finished in 21.49 seconds (files took 1.01 seconds to load)1112: 5 examples, 2 failures1113: Failed examples:
    ...
    1123: platform: windows1124: ci: github1125: rbe: false1126: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1127: Selenium::WebDriver::Edge::Options1128: passes emulated device correctly1129: passes emulated user agent correctly1130: passes args correctly1131: enables bidi (FAILED - 1)1132: enables BiDi on initialization (FAILED - 2)1133: Failures:1134: 1) Selenium::WebDriver::Edge::Options enables bidi1135: Failure/Error: options = Selenium::WebDriver::Options.chrome1136: LoadError:1137: cannot load such file -- selenium/webdriver/chrome1138: Did you mean? selenium/webdriver/chromium1139: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1140: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1141: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1142: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1143: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1144: LoadError:
    ...
    1149: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1150: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1151: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1152: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1153: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1154: # ./rb/lib/selenium/webdriver.rb:89:in `for'1155: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1156: Finished in 21.76 seconds (files took 1.06 seconds to load)1157: 5 examples, 2 failures1158: Failed examples:1159: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:47 # Selenium::WebDriver::Edge::Options enables bidi1160: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:65 # Selenium::WebDriver::Edge::Options enables BiDi on initialization1161: ================================================================================1162: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 36s ... (4 actions, 1 running)1163: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 46s ... (4 actions, 1 running)1164: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 49s ... (4 actions, 1 running)1165: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 33s ... (4 actions, 2 running)1166: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 35s ... (4 actions, 1 running)1167: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 46s ... (4 actions, 1 running)1168: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 47s ... (4 actions, 1 running)1169: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 33s ... (4 actions, 2 running)1170: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 35s ... (4 actions, 1 running)1171: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 45s ... (4 actions, 1 running)1172: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 47s ... (4 actions, 1 running)1173: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 38s ... (4 actions, 2 running)1174: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 39s ... (4 actions, 1 running)1175: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 49s ... (4 actions, 1 running)1176: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 52s ... (4 actions, 1 running)1177: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 43s ... (4 actions, 2 running)1178: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 44s ... (4 actions, 1 running)1179: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 54s ... (4 actions, 1 running)1180: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 58s ... (4 actions, 1 running)1181: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 38s ... (4 actions, 2 running)1182: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 39s ... (4 actions, 1 running)1183: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 50s ... (4 actions, 1 running)1184: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 54s ... (4 actions, 1 running)1185: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 32s ... (4 actions, 2 running)1186: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 33s ... (4 actions, 1 running)1187: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 44s ... (4 actions, 1 running)1188: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 46s ... (4 actions, 1 running)1189: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 37s ... (4 actions, 2 running)1190: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 39s ... (4 actions, 1 running)1191: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 49s ... (4 actions, 1 running)1192: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 52s ... (4 actions, 1 running)1193: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 27s ... (4 actions, 2 running)1194: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 29s ... (3 actions, 1 running)1195: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 39s ... (3 actions, 1 running)1196: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 18s ... (3 actions, 2 running)1197: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 20s ... (2 actions, 1 running)1198: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 30s ... (2 actions, 1 running)1199: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 15s local, disk-cache ... (2 actions running)1200: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 1s local, disk-cache1201: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 11s local, disk-cache1202: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 16s local, disk-cache1203: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 0s disk-cache1204: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote1205: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 1s local, disk-cache1206: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 15s local, disk-cache1207: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 0s disk-cache1208: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote1209: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 1s local, disk-cache1210: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 15s local, disk-cache1211: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 0s disk-cache1212: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote1213: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 1s local, disk-cache1214: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 87s local, disk-cache1215: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s disk-cache1216: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote1217: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s local, disk-cache1218: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 14s local, disk-cache1219: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 0s disk-cache1220: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote1221: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 1s local, disk-cache1222: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 15s local, disk-cache1223: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 0s disk-cache1224: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote1225: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s local, disk-cache1226: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 15s local, disk-cache1227: �[32mINFO: �[0mFound 31 test targets...1228: �[32mINFO: �[0mElapsed time: 1597.229s, Critical Path: 687.20s1229: �[32mINFO: �[0m2877 processes: 1429 disk cache hit, 1172 internal, 276 local.1230: �[32mINFO: �[0mBuild completed, 1 test FAILED, 2877 total actions1231: //rb/spec/integration/selenium/webdriver:action_builder-edge-remote �[0m�[32mPASSED�[0m in 29.1s1232: //rb/spec/integration/selenium/webdriver:bidi-edge-remote �[0m�[32mPASSED�[0m in 15.0s1233: //rb/spec/integration/selenium/webdriver:devtools-edge-remote �[0m�[32mPASSED�[0m in 87.9s1234: //rb/spec/integration/selenium/webdriver:driver-edge-remote �[0m�[32mPASSED�[0m in 34.3s1235: //rb/spec/integration/selenium/webdriver:element-edge-remote �[0m�[32mPASSED�[0m in 29.8s1236: //rb/spec/integration/selenium/webdriver:error-edge-remote �[0m�[32mPASSED�[0m in 14.6s
    ...
    1253: //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote �[0m�[32mPASSED�[0m in 15.5s1254: //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote �[0m�[32mPASSED�[0m in 15.1s1255: //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote �[0m�[32mPASSED�[0m in 15.1s1256: //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote �[0m�[32mPASSED�[0m in 34.2s1257: //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote �[0m�[32mPASSED�[0m in 15.3s1258: //rb/spec/integration/selenium/webdriver/edge:service-edge-remote �[0m�[32mPASSED�[0m in 22.2s1259: //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote �[0m�[32mPASSED�[0m in 31.3s1260: //rb/spec/integration/selenium/webdriver/remote:element-edge-remote �[0m�[32mPASSED�[0m in 17.2s1261: //rb/spec/integration/selenium/webdriver/edge:options-edge-remote �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 32.4s1262: Stats over 3 runs: max = 32.4s, min = 29.3s, avg = 30.5s, dev = 1.4s1263: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log1264: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_1.log1265: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_2.log1266: Executed 31 out of 31 tests: 30 tests pass and �[0m�[31m�[1m1 fails locally�[0m.1267: There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.1268: �[0m1269: ##[error]Process completed with exit code 1.

    ✨ CI feedback usage guide:

    The CI feedback tool (/checks) automatically triggers when a PR has a failed check.
    The tool analyzes the failed checks and provides several feedbacks:

    • Failed stage
    • Failed test name
    • Failure summary
    • Relevant error logs

    In addition to being automatically triggered, the tool can also be invoked manually by commenting on a PR:

    /checks "https://github.com/{repo_name}/actions/runs/{run_number}/job/{job_number}"
    

    where {repo_name} is the name of the repository, {run_number} is the run number of the failed check, and {job_number} is the job number of the failed check.

    Configuration options

    • enable_auto_checks_feedback - if set to true, the tool will automatically provide feedback when a check is failed. Default is true.
    • excluded_checks_list - a list of checks to exclude from the feedback, for example: ["check1", "check2"]. Default is an empty list.
    • enable_help_text - if set to true, the tool will provide a help message with the feedback. Default is true.
    • persistent_comment - if set to true, the tool will overwrite a previous checks comment with the new feedback. Default is true.
    • final_update_message - if persistent_comment is true and updating a previous checks message, the tool will also create a new message: "Persistent checks updated to latest commit". Default is true.

    See more information about the checks tool in the docs.

    Comment threadrb/lib/selenium/webdriver/common/options.rb
    PhilipWoulfe pushed a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.Support](https://github.com/SeleniumHQ/selenium) from
    4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.Support's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images…
    PhilipWoulfe added a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Selenium.WebDriver&package-manager=nuget&previous-version=4.31.0&new-version=4.41.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    ---
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    </details>
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: PhilipWoulfe <philip.woulfe@gmail.com>
    Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    C-rbRuby BindingsP-enhancementPR with a new featureReview effort [1-5]: 2

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    5 participants

    @titusfortner@p0deje@aguspe@pujagani@diemol
    , 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
    Skip to content

    [rb] create user-friendly method for enabling bidi - #14284

    Merged
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi
    Dec 10, 2025
    Merged

    [rb] create user-friendly method for enabling bidi#14284
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi

    Conversation

    @titusfortner

    @titusfortnertitusfortner commented Jul 19, 2024

    Copy link
    Copy Markdown
    Member

    User description

    This matches what is being done in other languages (#13991)

    In general it isn't user friendly that that web_socket_url value to the driver is a boolean, but the response is a string. This provides a more obvious name for users to set the property.

    This allows Options class to use #enable_bidi! and #bidi? as the booleans for the options.
    Capabilities will return driver.capabilities[:web_socket_url] with either nil or the value of the url.

    We ok with my use of bang and predicate here?


    PR Type

    Enhancement, Tests


    Description

    • Added enable_bidi! method to Selenium::WebDriver::Options to set web_socket_url to true.
    • Added bidi? method to check if web_socket_url is enabled.
    • Added integration test for enabling bidi in Chrome options, verifying web_socket_url and bidi? method behavior.
    • Added unit test for enable_bidi! method, verifying setting and querying of bidi option.

    Changes walkthrough 📝

    Relevant files
    Enhancement
    options.rb
    Add methods to enable and check bidi in options

    rb/lib/selenium/webdriver/common/options.rb

  • Added enable_bidi! method to set web_socket_url to true.
  • Added bidi? method to check if web_socket_url is enabled.
  • +8/-0
    Tests
    options_spec.rb
    Add integration test for enabling bidi in Chrome options

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb

  • Added integration test for enabling bidi in Chrome options.
  • Verified web_socket_url and bidi? method behavior.
  • +18/-0
    options_spec.rb
    Add unit test for enable_bidi! method in Chrome options

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb

  • Added unit test for enable_bidi! method.
  • Verified setting and querying of bidi option.
  • +12/-0

    💡 PR-Agent usage:
    Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    @qodo-code-review

    Copy link
    Copy Markdown
    Contributor

    PR Reviewer Guide 🔍

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Key issues to review

    Code Clarity
    The use of the bang (!) in enable_bidi! suggests that the method could raise an exception or has a dangerous side effect, which does not seem to be the case here. Consider renaming to enable_bidi if there are no such implications.

    Redundant Code
    The double negation in !!@options[:web_socket_url] is redundant. Ruby implicitly treats nil as false in boolean contexts, so @options[:web_socket_url] is sufficient.

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    PR Code Suggestions ✨

    CategorySuggestion Score
    Possible bug
    Update the enable_bidi! method to accept and set a URL instead of a boolean

    The method enable_bidi! sets @options[:web_socket_url] to true, which seems
    incorrect as it should likely store a WebSocket URL string instead of a boolean.
    Consider updating this method to accept a URL parameter or fetch it from a
    configuration.

    rb/lib/selenium/webdriver/common/options.rb [95]

    -def enable_bidi!- @options[:web_socket_url] = true+def enable_bidi!(url)+ @options[:web_socket_url] = url
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: This suggestion addresses a potential bug by ensuring that the enable_bidi! method sets a WebSocket URL instead of a boolean, which aligns with the expected behavior of handling a URL.

    9
    Enhancement
    Modify the bidi? method to correctly handle URL strings

    The bidi? method uses a double negation (!!) to convert the value to a boolean. This
    is unnecessary if @options[:web_socket_url] is always a boolean. If
    @options[:web_socket_url] is intended to be a URL string, adjust the method to check
    for nil or an empty string instead.

    rb/lib/selenium/webdriver/common/options.rb [99]

     def bidi?
    - !!@options[:web_socket_url]+ !@options[:web_socket_url].nil? && !@options[:web_socket_url].empty?
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This enhancement ensures that the bidi? method correctly checks for the presence of a WebSocket URL, improving the robustness of the code.

    8
    Possible issue
    Update the test to check for a valid WebSocket URL format

    The test case for enable_bidi! assumes web_socket_url to be a boolean, which
    contradicts the expected behavior of handling a URL. Update the test to check for a
    valid URL format instead of a boolean.

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb [56]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion improves the test case by ensuring it checks for a valid WebSocket URL format, which aligns with the expected behavior of the enable_bidi! method.

    8
    Adjust the unit test to validate that web_socket_url is a properly formatted URL

    Similar to the integration test, the unit test for enable_bidi! should verify that
    web_socket_url is set to a valid URL, not just a boolean. Adjust the expectation to
    validate the format of the URL.

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb [152]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion enhances the unit test by verifying that web_socket_url is a valid URL, ensuring consistency with the expected behavior of the enable_bidi! method.

    8

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    CI Failure Feedback 🧐

    (Checks updated until commit ceaa988)

    Action: Ruby / Remote Tests (edge, windows) / Remote Tests (edge, windows)

    Failed stage:Run Bazel [❌]

    Failed test name: Selenium::WebDriver::Edge::Options enables bidi

    Failure summary:

    The action failed due to two specific test failures in the Selenium WebDriver integration tests for
    Edge:

  • The test Selenium::WebDriver::Edge::Options enables bidi failed because it attempted to load a
    non-existent file selenium/webdriver/chrome, which resulted in a LoadError. The correct file might
    be selenium/webdriver/chromium.
  • The test Selenium::WebDriver::Edge::Options enables BiDi on initialization also failed due to a
    LoadError when trying to initialize the WebDriver for Edge with certain options.

  • Relevant error logs:
    1: ##[group]Operating System2: Microsoft Windows Server 2022
    ...
    743: �[32m[1,847 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/helpers.cc [for tool]; 5s local, disk-cache ... (4 actions running)744: �[32m[1,848 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 2s local, disk-cache ... (4 actions running)745: �[32m[1,849 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 4s local, disk-cache ... (4 actions, 3 running)746: �[32m[1,852 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 1s local, disk-cache ... (4 actions running)747: �[32m[1,865 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 2s local, disk-cache ... (4 actions, 3 running)748: �[32m[1,892 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 3s local, disk-cache ... (4 actions, 3 running)749: �[32m[2,058 / 3,107]�[0m Compiling src/google/protobuf/compiler/command_line_interface.cc [for tool]; 4s local, disk-cache ... (3 actions, 1 running)750: �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (71 source files):751: java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal752: private final ErrorCodes errorCodes;753: ^754: java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal755: this.errorCodes = new ErrorCodes();756: ^757: java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal758: public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {759: ^760: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal761: ErrorCodes errorCodes = new ErrorCodes();762: ^763: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal764: ErrorCodes errorCodes = new ErrorCodes();765: ^766: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal767: response.setStatus(ErrorCodes.SUCCESS);768: ^769: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal770: response.setState(ErrorCodes.SUCCESS_STRING);771: ^772: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal773: new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));774: ^775: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal776: new ErrorCodes().getExceptionType((String) rawError);777: ^778: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal779: private final ErrorCodes errorCodes = new ErrorCodes();780: ^781: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal782: private final ErrorCodes errorCodes = new ErrorCodes();783: ^784: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:55: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal785: int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;786: ^787: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:101: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal788: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);789: ^790: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:103: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal791: response.setStatus(ErrorCodes.UNHANDLED_ERROR);792: ^793: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:117: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal794: response.setStatus(ErrorCodes.SUCCESS);795: ^796: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:118: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal797: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));798: ^799: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:124: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal800: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));801: ^802: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal803: private final ErrorCodes errorCodes = new ErrorCodes();804: ^805: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal806: private final ErrorCodes errorCodes = new ErrorCodes();807: ^808: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:93: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal809: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);810: ^811: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:98: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal812: response.setStatus(ErrorCodes.UNHANDLED_ERROR);813: ^814: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:145: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal815: response.setStatus(ErrorCodes.SUCCESS);
    ...
    1014: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 182s local, disk-cache ... (4 actions, 2 running)1015: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 185s local, disk-cache ... (4 actions, 2 running)1016: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 189s local, disk-cache ... (4 actions, 2 running)1017: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 190s local, disk-cache ... (4 actions, 1 running)1018: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 201s local, disk-cache ... (4 actions, 1 running)1019: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 204s local, disk-cache ... (4 actions, 1 running)1020: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 219s local, disk-cache ... (4 actions, 2 running)1021: �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (see D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log)1022: �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (Summary)
    ...
    1033: platform: windows1034: ci: github1035: rbe: false1036: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1037: Selenium::WebDriver::Edge::Options1038: passes emulated device correctly1039: passes emulated user agent correctly1040: passes args correctly1041: enables bidi (FAILED - 1)1042: enables BiDi on initialization (FAILED - 2)1043: Failures:1044: 1) Selenium::WebDriver::Edge::Options enables bidi1045: Failure/Error: options = Selenium::WebDriver::Options.chrome1046: LoadError:1047: cannot load such file -- selenium/webdriver/chrome1048: Did you mean? selenium/webdriver/chromium1049: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1050: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1051: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1052: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1053: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1054: LoadError:
    ...
    1059: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1060: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1061: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1062: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1063: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1064: # ./rb/lib/selenium/webdriver.rb:89:in `for'1065: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1066: Finished in 24.51 seconds (files took 1.11 seconds to load)1067: 5 examples, 2 failures1068: Failed examples:
    ...
    1078: platform: windows1079: ci: github1080: rbe: false1081: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1082: Selenium::WebDriver::Edge::Options1083: passes emulated device correctly1084: passes emulated user agent correctly1085: passes args correctly1086: enables bidi (FAILED - 1)1087: enables BiDi on initialization (FAILED - 2)1088: Failures:1089: 1) Selenium::WebDriver::Edge::Options enables bidi1090: Failure/Error: options = Selenium::WebDriver::Options.chrome1091: LoadError:1092: cannot load such file -- selenium/webdriver/chrome1093: Did you mean? selenium/webdriver/chromium1094: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1095: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1096: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1097: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1098: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1099: LoadError:
    ...
    1104: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1105: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1106: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1107: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1108: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1109: # ./rb/lib/selenium/webdriver.rb:89:in `for'1110: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1111: Finished in 21.49 seconds (files took 1.01 seconds to load)1112: 5 examples, 2 failures1113: Failed examples:
    ...
    1123: platform: windows1124: ci: github1125: rbe: false1126: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1127: Selenium::WebDriver::Edge::Options1128: passes emulated device correctly1129: passes emulated user agent correctly1130: passes args correctly1131: enables bidi (FAILED - 1)1132: enables BiDi on initialization (FAILED - 2)1133: Failures:1134: 1) Selenium::WebDriver::Edge::Options enables bidi1135: Failure/Error: options = Selenium::WebDriver::Options.chrome1136: LoadError:1137: cannot load such file -- selenium/webdriver/chrome1138: Did you mean? selenium/webdriver/chromium1139: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1140: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1141: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1142: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1143: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1144: LoadError:
    ...
    1149: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1150: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1151: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1152: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1153: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1154: # ./rb/lib/selenium/webdriver.rb:89:in `for'1155: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1156: Finished in 21.76 seconds (files took 1.06 seconds to load)1157: 5 examples, 2 failures1158: Failed examples:1159: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:47 # Selenium::WebDriver::Edge::Options enables bidi1160: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:65 # Selenium::WebDriver::Edge::Options enables BiDi on initialization1161: ================================================================================1162: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 36s ... (4 actions, 1 running)1163: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 46s ... (4 actions, 1 running)1164: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 49s ... (4 actions, 1 running)1165: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 33s ... (4 actions, 2 running)1166: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 35s ... (4 actions, 1 running)1167: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 46s ... (4 actions, 1 running)1168: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 47s ... (4 actions, 1 running)1169: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 33s ... (4 actions, 2 running)1170: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 35s ... (4 actions, 1 running)1171: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 45s ... (4 actions, 1 running)1172: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 47s ... (4 actions, 1 running)1173: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 38s ... (4 actions, 2 running)1174: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 39s ... (4 actions, 1 running)1175: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 49s ... (4 actions, 1 running)1176: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 52s ... (4 actions, 1 running)1177: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 43s ... (4 actions, 2 running)1178: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 44s ... (4 actions, 1 running)1179: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 54s ... (4 actions, 1 running)1180: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 58s ... (4 actions, 1 running)1181: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 38s ... (4 actions, 2 running)1182: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 39s ... (4 actions, 1 running)1183: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 50s ... (4 actions, 1 running)1184: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 54s ... (4 actions, 1 running)1185: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 32s ... (4 actions, 2 running)1186: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 33s ... (4 actions, 1 running)1187: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 44s ... (4 actions, 1 running)1188: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 46s ... (4 actions, 1 running)1189: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 37s ... (4 actions, 2 running)1190: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 39s ... (4 actions, 1 running)1191: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 49s ... (4 actions, 1 running)1192: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 52s ... (4 actions, 1 running)1193: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 27s ... (4 actions, 2 running)1194: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 29s ... (3 actions, 1 running)1195: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 39s ... (3 actions, 1 running)1196: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 18s ... (3 actions, 2 running)1197: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 20s ... (2 actions, 1 running)1198: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 30s ... (2 actions, 1 running)1199: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 15s local, disk-cache ... (2 actions running)1200: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 1s local, disk-cache1201: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 11s local, disk-cache1202: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 16s local, disk-cache1203: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 0s disk-cache1204: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote1205: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 1s local, disk-cache1206: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 15s local, disk-cache1207: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 0s disk-cache1208: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote1209: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 1s local, disk-cache1210: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 15s local, disk-cache1211: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 0s disk-cache1212: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote1213: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 1s local, disk-cache1214: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 87s local, disk-cache1215: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s disk-cache1216: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote1217: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s local, disk-cache1218: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 14s local, disk-cache1219: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 0s disk-cache1220: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote1221: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 1s local, disk-cache1222: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 15s local, disk-cache1223: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 0s disk-cache1224: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote1225: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s local, disk-cache1226: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 15s local, disk-cache1227: �[32mINFO: �[0mFound 31 test targets...1228: �[32mINFO: �[0mElapsed time: 1597.229s, Critical Path: 687.20s1229: �[32mINFO: �[0m2877 processes: 1429 disk cache hit, 1172 internal, 276 local.1230: �[32mINFO: �[0mBuild completed, 1 test FAILED, 2877 total actions1231: //rb/spec/integration/selenium/webdriver:action_builder-edge-remote �[0m�[32mPASSED�[0m in 29.1s1232: //rb/spec/integration/selenium/webdriver:bidi-edge-remote �[0m�[32mPASSED�[0m in 15.0s1233: //rb/spec/integration/selenium/webdriver:devtools-edge-remote �[0m�[32mPASSED�[0m in 87.9s1234: //rb/spec/integration/selenium/webdriver:driver-edge-remote �[0m�[32mPASSED�[0m in 34.3s1235: //rb/spec/integration/selenium/webdriver:element-edge-remote �[0m�[32mPASSED�[0m in 29.8s1236: //rb/spec/integration/selenium/webdriver:error-edge-remote �[0m�[32mPASSED�[0m in 14.6s
    ...
    1253: //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote �[0m�[32mPASSED�[0m in 15.5s1254: //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote �[0m�[32mPASSED�[0m in 15.1s1255: //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote �[0m�[32mPASSED�[0m in 15.1s1256: //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote �[0m�[32mPASSED�[0m in 34.2s1257: //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote �[0m�[32mPASSED�[0m in 15.3s1258: //rb/spec/integration/selenium/webdriver/edge:service-edge-remote �[0m�[32mPASSED�[0m in 22.2s1259: //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote �[0m�[32mPASSED�[0m in 31.3s1260: //rb/spec/integration/selenium/webdriver/remote:element-edge-remote �[0m�[32mPASSED�[0m in 17.2s1261: //rb/spec/integration/selenium/webdriver/edge:options-edge-remote �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 32.4s1262: Stats over 3 runs: max = 32.4s, min = 29.3s, avg = 30.5s, dev = 1.4s1263: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log1264: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_1.log1265: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_2.log1266: Executed 31 out of 31 tests: 30 tests pass and �[0m�[31m�[1m1 fails locally�[0m.1267: There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.1268: �[0m1269: ##[error]Process completed with exit code 1.

    ✨ CI feedback usage guide:

    The CI feedback tool (/checks) automatically triggers when a PR has a failed check.
    The tool analyzes the failed checks and provides several feedbacks:

    • Failed stage
    • Failed test name
    • Failure summary
    • Relevant error logs

    In addition to being automatically triggered, the tool can also be invoked manually by commenting on a PR:

    /checks "https://github.com/{repo_name}/actions/runs/{run_number}/job/{job_number}"
    

    where {repo_name} is the name of the repository, {run_number} is the run number of the failed check, and {job_number} is the job number of the failed check.

    Configuration options

    • enable_auto_checks_feedback - if set to true, the tool will automatically provide feedback when a check is failed. Default is true.
    • excluded_checks_list - a list of checks to exclude from the feedback, for example: ["check1", "check2"]. Default is an empty list.
    • enable_help_text - if set to true, the tool will provide a help message with the feedback. Default is true.
    • persistent_comment - if set to true, the tool will overwrite a previous checks comment with the new feedback. Default is true.
    • final_update_message - if persistent_comment is true and updating a previous checks message, the tool will also create a new message: "Persistent checks updated to latest commit". Default is true.

    See more information about the checks tool in the docs.

    Comment threadrb/lib/selenium/webdriver/common/options.rb
    PhilipWoulfe pushed a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.Support](https://github.com/SeleniumHQ/selenium) from
    4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.Support's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images…
    PhilipWoulfe added a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Selenium.WebDriver&package-manager=nuget&previous-version=4.31.0&new-version=4.41.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    ---
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    </details>
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: PhilipWoulfe <philip.woulfe@gmail.com>
    Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    C-rbRuby BindingsP-enhancementPR with a new featureReview effort [1-5]: 2

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    5 participants

    @titusfortner@p0deje@aguspe@pujagani@diemol
    , 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
    Skip to content

    [rb] create user-friendly method for enabling bidi - #14284

    Merged
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi
    Dec 10, 2025
    Merged

    [rb] create user-friendly method for enabling bidi#14284
    titusfortner merged 14 commits into
    trunkfrom
    rb_enable_bidi

    Conversation

    @titusfortner

    @titusfortnertitusfortner commented Jul 19, 2024

    Copy link
    Copy Markdown
    Member

    User description

    This matches what is being done in other languages (#13991)

    In general it isn't user friendly that that web_socket_url value to the driver is a boolean, but the response is a string. This provides a more obvious name for users to set the property.

    This allows Options class to use #enable_bidi! and #bidi? as the booleans for the options.
    Capabilities will return driver.capabilities[:web_socket_url] with either nil or the value of the url.

    We ok with my use of bang and predicate here?


    PR Type

    Enhancement, Tests


    Description

    • Added enable_bidi! method to Selenium::WebDriver::Options to set web_socket_url to true.
    • Added bidi? method to check if web_socket_url is enabled.
    • Added integration test for enabling bidi in Chrome options, verifying web_socket_url and bidi? method behavior.
    • Added unit test for enable_bidi! method, verifying setting and querying of bidi option.

    Changes walkthrough 📝

    Relevant files
    Enhancement
    options.rb
    Add methods to enable and check bidi in options

    rb/lib/selenium/webdriver/common/options.rb

  • Added enable_bidi! method to set web_socket_url to true.
  • Added bidi? method to check if web_socket_url is enabled.
  • +8/-0
    Tests
    options_spec.rb
    Add integration test for enabling bidi in Chrome options

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb

  • Added integration test for enabling bidi in Chrome options.
  • Verified web_socket_url and bidi? method behavior.
  • +18/-0
    options_spec.rb
    Add unit test for enable_bidi! method in Chrome options

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb

  • Added unit test for enable_bidi! method.
  • Verified setting and querying of bidi option.
  • +12/-0

    💡 PR-Agent usage:
    Comment /help on the PR to get a list of all available PR-Agent tools and their descriptions

    @qodo-code-review

    Copy link
    Copy Markdown
    Contributor

    PR Reviewer Guide 🔍

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 PR contains tests
    🔒 No security concerns identified
    ⚡ Key issues to review

    Code Clarity
    The use of the bang (!) in enable_bidi! suggests that the method could raise an exception or has a dangerous side effect, which does not seem to be the case here. Consider renaming to enable_bidi if there are no such implications.

    Redundant Code
    The double negation in !!@options[:web_socket_url] is redundant. Ruby implicitly treats nil as false in boolean contexts, so @options[:web_socket_url] is sufficient.

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    PR Code Suggestions ✨

    CategorySuggestion Score
    Possible bug
    Update the enable_bidi! method to accept and set a URL instead of a boolean

    The method enable_bidi! sets @options[:web_socket_url] to true, which seems
    incorrect as it should likely store a WebSocket URL string instead of a boolean.
    Consider updating this method to accept a URL parameter or fetch it from a
    configuration.

    rb/lib/selenium/webdriver/common/options.rb [95]

    -def enable_bidi!- @options[:web_socket_url] = true+def enable_bidi!(url)+ @options[:web_socket_url] = url
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: This suggestion addresses a potential bug by ensuring that the enable_bidi! method sets a WebSocket URL instead of a boolean, which aligns with the expected behavior of handling a URL.

    9
    Enhancement
    Modify the bidi? method to correctly handle URL strings

    The bidi? method uses a double negation (!!) to convert the value to a boolean. This
    is unnecessary if @options[:web_socket_url] is always a boolean. If
    @options[:web_socket_url] is intended to be a URL string, adjust the method to check
    for nil or an empty string instead.

    rb/lib/selenium/webdriver/common/options.rb [99]

     def bidi?
    - !!@options[:web_socket_url]+ !@options[:web_socket_url].nil? && !@options[:web_socket_url].empty?
    end
    
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This enhancement ensures that the bidi? method correctly checks for the presence of a WebSocket URL, improving the robustness of the code.

    8
    Possible issue
    Update the test to check for a valid WebSocket URL format

    The test case for enable_bidi! assumes web_socket_url to be a boolean, which
    contradicts the expected behavior of handling a URL. Update the test to check for a
    valid URL format instead of a boolean.

    rb/spec/integration/selenium/webdriver/chrome/options_spec.rb [56]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion improves the test case by ensuring it checks for a valid WebSocket URL format, which aligns with the expected behavior of the enable_bidi! method.

    8
    Adjust the unit test to validate that web_socket_url is a properly formatted URL

    Similar to the integration test, the unit test for enable_bidi! should verify that
    web_socket_url is set to a valid URL, not just a boolean. Adjust the expectation to
    validate the format of the URL.

    rb/spec/unit/selenium/webdriver/chrome/options_spec.rb [152]

    -expect(options.web_socket_url).to be true+expect(options.web_socket_url).to match(/\Aws:\/\/.+/)
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: This suggestion enhances the unit test by verifying that web_socket_url is a valid URL, ensuring consistency with the expected behavior of the enable_bidi! method.

    8

    @qodo-code-review

    qodo-code-reviewBot commented Jul 19, 2024

    Copy link
    Copy Markdown
    Contributor

    CI Failure Feedback 🧐

    (Checks updated until commit ceaa988)

    Action: Ruby / Remote Tests (edge, windows) / Remote Tests (edge, windows)

    Failed stage:Run Bazel [❌]

    Failed test name: Selenium::WebDriver::Edge::Options enables bidi

    Failure summary:

    The action failed due to two specific test failures in the Selenium WebDriver integration tests for
    Edge:

  • The test Selenium::WebDriver::Edge::Options enables bidi failed because it attempted to load a
    non-existent file selenium/webdriver/chrome, which resulted in a LoadError. The correct file might
    be selenium/webdriver/chromium.
  • The test Selenium::WebDriver::Edge::Options enables BiDi on initialization also failed due to a
    LoadError when trying to initialize the WebDriver for Edge with certain options.

  • Relevant error logs:
    1: ##[group]Operating System2: Microsoft Windows Server 2022
    ...
    743: �[32m[1,847 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/helpers.cc [for tool]; 5s local, disk-cache ... (4 actions running)744: �[32m[1,848 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 2s local, disk-cache ... (4 actions running)745: �[32m[1,849 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/file.cc [for tool]; 4s local, disk-cache ... (4 actions, 3 running)746: �[32m[1,852 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 1s local, disk-cache ... (4 actions running)747: �[32m[1,865 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 2s local, disk-cache ... (4 actions, 3 running)748: �[32m[1,892 / 3,107]�[0m Compiling src/google/protobuf/compiler/cpp/enum.cc [for tool]; 3s local, disk-cache ... (4 actions, 3 running)749: �[32m[2,058 / 3,107]�[0m Compiling src/google/protobuf/compiler/command_line_interface.cc [for tool]; 4s local, disk-cache ... (3 actions, 1 running)750: �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (71 source files):751: java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal752: private final ErrorCodes errorCodes;753: ^754: java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal755: this.errorCodes = new ErrorCodes();756: ^757: java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal758: public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {759: ^760: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal761: ErrorCodes errorCodes = new ErrorCodes();762: ^763: java\src\org\openqa\selenium\remote\Response.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal764: ErrorCodes errorCodes = new ErrorCodes();765: ^766: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal767: response.setStatus(ErrorCodes.SUCCESS);768: ^769: java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal770: response.setState(ErrorCodes.SUCCESS_STRING);771: ^772: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal773: new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));774: ^775: java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal776: new ErrorCodes().getExceptionType((String) rawError);777: ^778: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal779: private final ErrorCodes errorCodes = new ErrorCodes();780: ^781: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal782: private final ErrorCodes errorCodes = new ErrorCodes();783: ^784: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:55: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal785: int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;786: ^787: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:101: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal788: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);789: ^790: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:103: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal791: response.setStatus(ErrorCodes.UNHANDLED_ERROR);792: ^793: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:117: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal794: response.setStatus(ErrorCodes.SUCCESS);795: ^796: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:118: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal797: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));798: ^799: java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:124: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal800: response.setState(errorCodes.toState(ErrorCodes.SUCCESS));801: ^802: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal803: private final ErrorCodes errorCodes = new ErrorCodes();804: ^805: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:70: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal806: private final ErrorCodes errorCodes = new ErrorCodes();807: ^808: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:93: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal809: response.setStatus(ErrorCodes.UNKNOWN_COMMAND);810: ^811: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:98: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal812: response.setStatus(ErrorCodes.UNHANDLED_ERROR);813: ^814: java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:145: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal815: response.setStatus(ErrorCodes.SUCCESS);
    ...
    1014: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 182s local, disk-cache ... (4 actions, 2 running)1015: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 185s local, disk-cache ... (4 actions, 2 running)1016: �[32m[3,119 / 3,132]�[0m 12 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 189s local, disk-cache ... (4 actions, 2 running)1017: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 190s local, disk-cache ... (4 actions, 1 running)1018: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 201s local, disk-cache ... (4 actions, 1 running)1019: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 204s local, disk-cache ... (4 actions, 1 running)1020: �[32m[3,120 / 3,132]�[0m 13 / 31 tests;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:options-edge-remote; 219s local, disk-cache ... (4 actions, 2 running)1021: �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (see D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log)1022: �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver/edge:options-edge-remote (Summary)
    ...
    1033: platform: windows1034: ci: github1035: rbe: false1036: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1037: Selenium::WebDriver::Edge::Options1038: passes emulated device correctly1039: passes emulated user agent correctly1040: passes args correctly1041: enables bidi (FAILED - 1)1042: enables BiDi on initialization (FAILED - 2)1043: Failures:1044: 1) Selenium::WebDriver::Edge::Options enables bidi1045: Failure/Error: options = Selenium::WebDriver::Options.chrome1046: LoadError:1047: cannot load such file -- selenium/webdriver/chrome1048: Did you mean? selenium/webdriver/chromium1049: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1050: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1051: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1052: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1053: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1054: LoadError:
    ...
    1059: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1060: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1061: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1062: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1063: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1064: # ./rb/lib/selenium/webdriver.rb:89:in `for'1065: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1066: Finished in 24.51 seconds (files took 1.11 seconds to load)1067: 5 examples, 2 failures1068: Failed examples:
    ...
    1078: platform: windows1079: ci: github1080: rbe: false1081: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1082: Selenium::WebDriver::Edge::Options1083: passes emulated device correctly1084: passes emulated user agent correctly1085: passes args correctly1086: enables bidi (FAILED - 1)1087: enables BiDi on initialization (FAILED - 2)1088: Failures:1089: 1) Selenium::WebDriver::Edge::Options enables bidi1090: Failure/Error: options = Selenium::WebDriver::Options.chrome1091: LoadError:1092: cannot load such file -- selenium/webdriver/chrome1093: Did you mean? selenium/webdriver/chromium1094: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1095: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1096: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1097: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1098: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1099: LoadError:
    ...
    1104: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1105: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1106: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1107: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1108: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1109: # ./rb/lib/selenium/webdriver.rb:89:in `for'1110: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1111: Finished in 21.49 seconds (files took 1.01 seconds to load)1112: 5 examples, 2 failures1113: Failed examples:
    ...
    1123: platform: windows1124: ci: github1125: rbe: false1126: ruby: ruby 3.1.6p260 (2024-05-29 revision a777087be6) [x64-mingw-ucrt]1127: Selenium::WebDriver::Edge::Options1128: passes emulated device correctly1129: passes emulated user agent correctly1130: passes args correctly1131: enables bidi (FAILED - 1)1132: enables BiDi on initialization (FAILED - 2)1133: Failures:1134: 1) Selenium::WebDriver::Edge::Options enables bidi1135: Failure/Error: options = Selenium::WebDriver::Options.chrome1136: LoadError:1137: cannot load such file -- selenium/webdriver/chrome1138: Did you mean? selenium/webdriver/chromium1139: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `require'1140: # ./rb/lib/selenium/webdriver/common/options.rb:33:in `chrome'1141: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:50:in `block (2 levels) in <module:Edge>'1142: 2) Selenium::WebDriver::Edge::Options enables BiDi on initialization1143: Failure/Error: driver = Selenium::WebDriver.for :edge, options: options1144: LoadError:
    ...
    1149: # ./rb/lib/selenium/webdriver/common/driver.rb:331:in `create_bridge'1150: # ./rb/lib/selenium/webdriver/common/driver.rb:73:in `initialize'1151: # ./rb/lib/selenium/webdriver/edge/driver.rb:35:in `initialize'1152: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `new'1153: # ./rb/lib/selenium/webdriver/common/driver.rb:55:in `for'1154: # ./rb/lib/selenium/webdriver.rb:89:in `for'1155: # ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:72:in `block (2 levels) in <module:Edge>'1156: Finished in 21.76 seconds (files took 1.06 seconds to load)1157: 5 examples, 2 failures1158: Failed examples:1159: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:47 # Selenium::WebDriver::Edge::Options enables bidi1160: rspec ./rb/spec/integration/selenium/webdriver/edge/options_spec.rb:65 # Selenium::WebDriver::Edge::Options enables BiDi on initialization1161: ================================================================================1162: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 36s ... (4 actions, 1 running)1163: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 46s ... (4 actions, 1 running)1164: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:element-edge-remote; 49s ... (4 actions, 1 running)1165: �[32m[3,121 / 3,132]�[0m 14 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 33s ... (4 actions, 2 running)1166: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 35s ... (4 actions, 1 running)1167: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 46s ... (4 actions, 1 running)1168: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:service-edge-remote; 47s ... (4 actions, 1 running)1169: �[32m[3,122 / 3,132]�[0m 15 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 33s ... (4 actions, 2 running)1170: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 35s ... (4 actions, 1 running)1171: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 45s ... (4 actions, 1 running)1172: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:driver-edge-remote; 47s ... (4 actions, 1 running)1173: �[32m[3,123 / 3,132]�[0m 16 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 38s ... (4 actions, 2 running)1174: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 39s ... (4 actions, 1 running)1175: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 49s ... (4 actions, 1 running)1176: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:manager-edge-remote; 52s ... (4 actions, 1 running)1177: �[32m[3,124 / 3,132]�[0m 17 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 43s ... (4 actions, 2 running)1178: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 44s ... (4 actions, 1 running)1179: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 54s ... (4 actions, 1 running)1180: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:action_builder-edge-remote; 58s ... (4 actions, 1 running)1181: �[32m[3,125 / 3,132]�[0m 18 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 38s ... (4 actions, 2 running)1182: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 39s ... (4 actions, 1 running)1183: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 50s ... (4 actions, 1 running)1184: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:timeout-edge-remote; 54s ... (4 actions, 1 running)1185: �[32m[3,126 / 3,132]�[0m 19 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 32s ... (4 actions, 2 running)1186: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 33s ... (4 actions, 1 running)1187: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 44s ... (4 actions, 1 running)1188: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:virtual_authenticator-edge-remote; 46s ... (4 actions, 1 running)1189: �[32m[3,127 / 3,132]�[0m 20 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 37s ... (4 actions, 2 running)1190: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 39s ... (4 actions, 1 running)1191: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 49s ... (4 actions, 1 running)1192: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:guard-edge-remote; 52s ... (4 actions, 1 running)1193: �[32m[3,128 / 3,132]�[0m 21 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 27s ... (4 actions, 2 running)1194: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 29s ... (3 actions, 1 running)1195: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 39s ... (3 actions, 1 running)1196: �[32m[3,129 / 3,132]�[0m 22 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 18s ... (3 actions, 2 running)1197: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 20s ... (2 actions, 1 running)1198: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 30s ... (2 actions, 1 running)1199: �[32m[3,130 / 3,132]�[0m 23 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote; 15s local, disk-cache ... (2 actions running)1200: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 1s local, disk-cache1201: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 11s local, disk-cache1202: �[32m[3,131 / 3,132]�[0m 24 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:navigation-edge-remote; 16s local, disk-cache1203: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 0s disk-cache1204: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote1205: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 1s local, disk-cache1206: �[32m[3,132 / 3,133]�[0m 25 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote; 15s local, disk-cache1207: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 0s disk-cache1208: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote1209: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 1s local, disk-cache1210: �[32m[3,133 / 3,134]�[0m 26 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote; 15s local, disk-cache1211: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 0s disk-cache1212: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote1213: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 1s local, disk-cache1214: �[32m[3,134 / 3,135]�[0m 27 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:devtools-edge-remote; 87s local, disk-cache1215: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s disk-cache1216: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote1217: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 1s local, disk-cache1218: �[32m[3,135 / 3,136]�[0m 28 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:browsing_context-edge-remote; 14s local, disk-cache1219: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 0s disk-cache1220: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote1221: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 1s local, disk-cache1222: �[32m[3,136 / 3,137]�[0m 29 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote; 15s local, disk-cache1223: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 0s disk-cache1224: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m [Sched] Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote1225: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 1s local, disk-cache1226: �[32m[3,137 / 3,138]�[0m 30 / 31 tests, �[31m�[1m1 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:bidi-edge-remote; 15s local, disk-cache1227: �[32mINFO: �[0mFound 31 test targets...1228: �[32mINFO: �[0mElapsed time: 1597.229s, Critical Path: 687.20s1229: �[32mINFO: �[0m2877 processes: 1429 disk cache hit, 1172 internal, 276 local.1230: �[32mINFO: �[0mBuild completed, 1 test FAILED, 2877 total actions1231: //rb/spec/integration/selenium/webdriver:action_builder-edge-remote �[0m�[32mPASSED�[0m in 29.1s1232: //rb/spec/integration/selenium/webdriver:bidi-edge-remote �[0m�[32mPASSED�[0m in 15.0s1233: //rb/spec/integration/selenium/webdriver:devtools-edge-remote �[0m�[32mPASSED�[0m in 87.9s1234: //rb/spec/integration/selenium/webdriver:driver-edge-remote �[0m�[32mPASSED�[0m in 34.3s1235: //rb/spec/integration/selenium/webdriver:element-edge-remote �[0m�[32mPASSED�[0m in 29.8s1236: //rb/spec/integration/selenium/webdriver:error-edge-remote �[0m�[32mPASSED�[0m in 14.6s
    ...
    1253: //rb/spec/integration/selenium/webdriver/bidi:log_inspector-edge-remote �[0m�[32mPASSED�[0m in 15.5s1254: //rb/spec/integration/selenium/webdriver/bidi:network-edge-remote �[0m�[32mPASSED�[0m in 15.1s1255: //rb/spec/integration/selenium/webdriver/bidi:script-edge-remote �[0m�[32mPASSED�[0m in 15.1s1256: //rb/spec/integration/selenium/webdriver/edge:driver-edge-remote �[0m�[32mPASSED�[0m in 34.2s1257: //rb/spec/integration/selenium/webdriver/edge:profile-edge-remote �[0m�[32mPASSED�[0m in 15.3s1258: //rb/spec/integration/selenium/webdriver/edge:service-edge-remote �[0m�[32mPASSED�[0m in 22.2s1259: //rb/spec/integration/selenium/webdriver/remote:driver-edge-remote �[0m�[32mPASSED�[0m in 31.3s1260: //rb/spec/integration/selenium/webdriver/remote:element-edge-remote �[0m�[32mPASSED�[0m in 17.2s1261: //rb/spec/integration/selenium/webdriver/edge:options-edge-remote �[0m�[31m�[1mFAILED�[0m in 3 out of 3 in 32.4s1262: Stats over 3 runs: max = 32.4s, min = 29.3s, avg = 30.5s, dev = 1.4s1263: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test.log1264: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_1.log1265: D:/_bazel/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/edge/options-edge-remote/test_attempts/attempt_2.log1266: Executed 31 out of 31 tests: 30 tests pass and �[0m�[31m�[1m1 fails locally�[0m.1267: There were tests whose specified size is too big. Use the --test_verbose_timeout_warnings command line option to see which ones these are.1268: �[0m1269: ##[error]Process completed with exit code 1.

    ✨ CI feedback usage guide:

    The CI feedback tool (/checks) automatically triggers when a PR has a failed check.
    The tool analyzes the failed checks and provides several feedbacks:

    • Failed stage
    • Failed test name
    • Failure summary
    • Relevant error logs

    In addition to being automatically triggered, the tool can also be invoked manually by commenting on a PR:

    /checks "https://github.com/{repo_name}/actions/runs/{run_number}/job/{job_number}"
    

    where {repo_name} is the name of the repository, {run_number} is the run number of the failed check, and {job_number} is the job number of the failed check.

    Configuration options

    • enable_auto_checks_feedback - if set to true, the tool will automatically provide feedback when a check is failed. Default is true.
    • excluded_checks_list - a list of checks to exclude from the feedback, for example: ["check1", "check2"]. Default is an empty list.
    • enable_help_text - if set to true, the tool will provide a help message with the feedback. Default is true.
    • persistent_comment - if set to true, the tool will overwrite a previous checks comment with the new feedback. Default is true.
    • final_update_message - if persistent_comment is true and updating a previous checks message, the tool will also create a new message: "Persistent checks updated to latest commit". Default is true.

    See more information about the checks tool in the docs.

    Comment threadrb/lib/selenium/webdriver/common/options.rb
    PhilipWoulfe pushed a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.Support](https://github.com/SeleniumHQ/selenium) from
    4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.Support's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images…
    PhilipWoulfe added a commit to PhilipWoulfe/F1Competition that referenced this pull request Mar 16, 2026
    Updated [Selenium.WebDriver](https://github.com/SeleniumHQ/selenium)
    from 4.31.0 to 4.41.0.
    <details>
    <summary>Release notes</summary>
    _Sourced from [Selenium.WebDriver's
    releases](https://github.com/SeleniumHQ/selenium/releases)._
    ## 4.41.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at selenium-4.41.0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.40.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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
    ... (truncated)
    ## 4.39.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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/SeleniumHQ/selenium/pull/16551
    * [java][BiDi] implement `emulation.setTimezoneOverride` by @​Delta456
    in https://github.com/SeleniumHQ/selenium/pull/16530
    * [grid] Minimum Docker API 1.44 for Docker Engine v29+ in Dynamic Grid
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16591
    * Show file modification time by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16589
    * [py][bidi]: add emulation command `set_user_agent_override` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16595
    * [grid] Improve Docker client for Dynamic Grid by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/16596
    * [py]: reuse driver in case of bidi tests by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16597
    * [grid] Improve browser container labels and naming in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16599
    * [build] Upgrade rules_dotnet to 0.20.5 by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16592
    * [dotnet] [bidi] Simplify namespace for communications by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16602
    * [py] Improve type hints with union syntax and native types by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16590
    * [py] Use double quotes in generate.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/16607
    * [ci] Use pagination in mirror workflow to get all Selenium releases by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/16605
    * [dotnet] Generate atoms statically by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16608
    * [nodejs] Update dev dependencies to fix vulnerabilities by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16610
    * [java][BiDi] emulation: allow passing null to GeolocationOverride by
    @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/16594
    * [grid] Update container label `compose.oneoff` in Dynamic Grid by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16613
    ... (truncated)
    ## 4.38.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [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://github.com/SeleniumHQ/selenium/pull/16502
    * [rust] Fixe Edge version test by @​bonigarcia in
    https://github.com/SeleniumHQ/selenium/pull/16501
    * [py][bidi]: add `set_timezone_override` command in emulation by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16500
    * [py] Cleanup and convert more doctrings to google-style by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/16503
    * [build] fix update-documentation workflow by @​titusfortner in
    https://github.com/SeleniumHQ/selenium/pull/16505
    * fix workflows for updating documentation from stage release by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/16506
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.37.0...selenium-4.38.0
    ## 4.37.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Re-add defaults for Chromium kwargs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16372
    * Splitting stress tests by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16374
    * [rb] Update Chrome/Edge args for test environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16376
    * [dotnet] [bidi] Emulation module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16380
    * [py] Remove old test xfail markers from Travis CI by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16377
    * [dotnet] [bidi] Implement browsing context download events by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16382
    * [dotnet] [bidi] Support browser SetDownloadBehaviour command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16383
    * [dotnet] [bidi] Support network SetExtraHeaders command by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16384
    * [py][build] Python CI - add unit test job and windows integration
    tests to GH runners by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16362
    * [java] Linux ARM "os.arch" system property is "aarch64" by @​mkurz in
    https://github.com/SeleniumHQ/selenium/pull/16381
    * [dotnet] [bidi] AOT safe enums serialization by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16386
    * [dotnet] Handle negative zero BiDi response by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15898
    * [dotnet] Move JSON converter attributes from centralized options into
    their respective types by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16393
    * [py] Fix Selenium Manager tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16391
    * [py] Fix chromedriver/msedgedriver service tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16395
    * [dotnet] [bidi] Modules as extensions by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16392
    * [dotnet] [bidi] Provide type info immediately when serializing by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16397
    * [bidi] [dotnet] Use events JsonTypeInfo for deserialization by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16402
    * [dotnet] Replace lazy caching mechanism in BiDi's constructor with
    simple initialization by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/16399
    * [py][build] Re-add Windows to CI workflows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16396
    * [dotnet] Help more .NETFramework projects to copy SM binaries to
    output by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16406
    * [dotnet] [bidi] Specific result type for any command by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16405
    * [dotnet] [bidi] Deserialize message fast instead of defer it by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16403
    * [dotnet] [bidi] Remove IEnumerable of command results by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/16219
    * [dotnet] Remove obsoleted FtpProxy by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16411
    * [py] Configure WebSocket timeout and wait interval via ClientConfig by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16248
    * [java] Rescuing the remote cause for session creation errors by
    @​diemol in https://github.com/SeleniumHQ/selenium/pull/16418
    * [py] Add test for BiDi request handlers with classic navigation by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16421
    * [java] NullAway added by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/16416
    * [java] feat: Add native Java 11 HTTP client methods to HttpClient
    interface by @​manuelsblanco in
    https://github.com/SeleniumHQ/selenium/pull/16412
    * [py] Raise NotImplementedError when deleting downloads in driver
    subclass by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16423
    * [java] refactor(remote/command): Merge overload's business logic by
    @​nnnnoel in https://github.com/SeleniumHQ/selenium/pull/14469
    * [py] Fix default rpId in virtual authenticator by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16428
    * make augmentation of HasBiDi/HasDevTools lazy-loaded by @​asolntsev in
    https://github.com/SeleniumHQ/selenium/pull/16338
    * [py] Update docstrings style by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16427
    * [py] Support Python 3.14 and drop Python 3.9 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16342
    * Removing FF guard for canListenToDownloadWillBeginEvent by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16439
    * Adapting the browser_protocol file fetching to the file structure
    change. by @​diemol in https://github.com/SeleniumHQ/selenium/pull/16440
    ... (truncated)
    ## 4.36.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at trunk -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py]: close ipv6 port in case of error by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16165
    * [docs] Update issue label in CONTRIBUTING.md by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/16169
    * [py][docs]: update dead API docs link to API reference in `index.rst`
    by @​navin772 in https://github.com/SeleniumHQ/selenium/pull/16170
    * [grid] close the HttpClient after the session is gone by @​joerg1985
    in https://github.com/SeleniumHQ/selenium/pull/16182
    * [py] Update docstring and comments in keys.py by @​Aidoni0797 in
    https://github.com/SeleniumHQ/selenium/pull/16187
    * [dotnet] [bidi] Simplify type naming of internal command parameters by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16188
    * [py] Fix formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16189
    * [dotnet] [bidi] Support WebExtension module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15850
    * [rb][BiDi] Create browser module, added user context related methods
    by @​aguspe in https://github.com/SeleniumHQ/selenium/pull/15371
    * [docs] Update bug report section in CONTRIBUTING.md by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/16191
    * [dotnet] Adding flag to enable SafariDriver logging. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/16196
    * [java] extend the scope of the properties of the HttpCommandExecutor
    class by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16186
    * [dotnet] [bidi] Serialize base64 encoded string directly to bytes by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16203
    * [dotnet] [bidi] Make cookie expiry as TimeSpan by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16204
    * [grid] Improve readTimeout in handle session between Router and Node
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16163
    * [py] Fix type annotation error and raise clearer error message by
    @​Paresh-0007 in https://github.com/SeleniumHQ/selenium/pull/16174
    * [java] Unifying select class by @​vicky-iv in
    https://github.com/SeleniumHQ/selenium/pull/16220
    * [rust] Update dependency rules_cc to v0.2.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16198
    * [js] Update testing-library monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16173
    * [js] Update dependency tmp to ^0.2.5 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16172
    * [dotnet] Update dependency System.Text.Json to 8.0.6 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16171
    * [js] Update dependency react-router-dom to v6.30.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16076
    * [js] Update material-ui monorepo to v5.18.0 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16062
    * [js] Update dependency ws to ^8.18.3 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16009
    * [js] Update react monorepo by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15949
    * [java] Update dependency net.bytebuddy:byte-buddy to v1.17.7 by
    @​renovate[bot] in https://github.com/SeleniumHQ/selenium/pull/16237
    * [py] Update dependency charset-normalizer to v3.4.3 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/16239
    * [py] Update dependency cryptography to v45.0.6 by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/16240
    * Revert "[py] Update dependency charset-normalizer to v3.4.3" by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16242
    * Revert "[py] Update dependency cryptography to v45.0.6" by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16243
    * [py] Bump dependencies for dev and fix script by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16244
    * [dotnet] Help old .net framework copy selenium manager to output by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/16228
    * [java] Add hooks around getScreenshotAs in WebDriverListener #​16232
    by @​giulong in https://github.com/SeleniumHQ/selenium/pull/16233
    * [py][bidi]: enable `history_updated` event test by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/16236
    * [py] Bump ruff version for linting/formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16254
    * [py][bidi]: use bidi `navigate` command in network tests by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/16251
    * [dotnet] Fix find port for IPv4 only environments by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16216
    * [dotnet] [bidi] Adjust cookie expiry type according spec (unix
    seconds) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16218
    ... (truncated)
    ## 4.35.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 1c58e5028bc5eaa94b12b856c2d4a87efa5363f5 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [dotnet] [bidi] Get tree command returns GetTreeResult object by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15978
    * [dotnet] [bidi] Initialize internal modules without Lazy by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15979
    * [py] Bump dependencies for building distribution wheel by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15977
    * bump zip version 2.6.1 -> 4.2.0 by @​MRTamalampudi in
    https://github.com/SeleniumHQ/selenium/pull/15980
    * [py][bidi]: add note for `enable_webextensions = False` by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15981
    * [py][bidi]: add high level API for script module - `pin`, `unpin` and
    `execute` by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15936
    * [py][java][rb][ci]: use pinned browsers in CI by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15987
    * [java] Remove deprecated AppCacheStatus enum from the HTML5 package by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15973
    * [java] Feat 14291/jspecify nullable annotation edge driver service by
    @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15972
    * [java] Fix Unicode value for OPTION key in Keys enum by @​iampopovich
    in https://github.com/SeleniumHQ/selenium/pull/15966
    * [dotnet][java][js][py][rb][rust] Update rules_jvm_external digest to
    aca619b by @​renovate[bot] in
    https://github.com/SeleniumHQ/selenium/pull/15951
    * [java] Removing old stream collectors required by Java 8 by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15523
    * [java] Use static Patterns for regex-matching by @​zodac in
    https://github.com/SeleniumHQ/selenium/pull/15499
    * [java] Point made as immutable by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/15511
    * [java] Feat 14291/jspecify nullable annotation chrome driver såervice
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15998
    * [py] Bump dev dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16002
    * [grid] Add "URI" to the list of sort-by choices on Overview UI by
    @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/16004
    * [java] Add @​Nullable annotations to Firefox and Gecko driver service
    by @​iampopovich in https://github.com/SeleniumHQ/selenium/pull/15999
    * [java] Add JSpecify nullable annotations to SafariDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16000
    * [java] Add @​Nullable annotations to InternetExplorerDriverService
    parameters by @​iampopovich in
    https://github.com/SeleniumHQ/selenium/pull/16001
    * use generics for AbstractFindByBuilder to avoid excessive casting by
    @​asolntsev in https://github.com/SeleniumHQ/selenium/pull/15526
    * [js] Update dependency @​emotion/styled to v11.14.1 by @​renovate[bot]
    in https://github.com/SeleniumHQ/selenium/pull/15997
    * [rust] Update which from 7.0.3 to 8.0.0 by @​musicinmybrain in
    https://github.com/SeleniumHQ/selenium/pull/15965
    * Fix various typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16012
    * [java] JSpecify annotations for By locators by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14372
    * Fix email address in .mailmap by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/16017
    * Fix typos in javascript & rb by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16019
    * [java] JSpecify annotations for capabilities by @​mk868 in
    https://github.com/SeleniumHQ/selenium/pull/14397
    * Fix various typos in comments by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16022
    * [dotnet] Fix typos by @​noritaka1166 in
    https://github.com/SeleniumHQ/selenium/pull/16032
    * [dotnet] [bidi] Add UnhandledPromptBehavior option to create User
    Context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16034
    * [py] Fix path in unit test so it works cross-platform by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/16033
    * [py][bidi]: implement bidi module - emulation by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15819
    * [py] Fix API doc generation script and include BiDi Emulation docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16037
    * [py] Allow free_port() to bind to IPv6 if IPv4 is unavailable by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/16003
    * [build] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16057
    * [rust] Update base URL for Edge web driver by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/16056
    ... (truncated)
    ## 4.34.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2a4c61c498207b17cdb2f5f987c7c71dca146c2d -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [ci] Clear warning from Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15783
    * [py] Fix pytest_ignore_collect hook to respect --ignore by @​mgorny in
    https://github.com/SeleniumHQ/selenium/pull/15787
    * [py] Increase timeout in devtools test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15793
    * [py] Upgrade type hints by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15784
    * [dotnet] [bidi] Add AcceptInsecureCerts and Proxy options when create
    new user context by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15795
    * [grid] Silent fail on invalid log level by @​Oxilod in
    https://github.com/SeleniumHQ/selenium/pull/15796
    * Bump setup-bazel action by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15802
    * Don't silence stderr in format.sh by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15804
    * [dotnet] [bidi] Declare allowed nullable objects in constructors type
    by @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15809
    * Fix type error for attribute in remote_connection.py by @​Bradltr95 in
    https://github.com/SeleniumHQ/selenium/pull/15810
    * [py] Lint Python with ruff by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15811
    * fixed error in selenium/webdriver/common/bidi/common.py:19 by
    @​pallavigitwork in https://github.com/SeleniumHQ/selenium/pull/15814
    * [py] Fix import for type hint by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15817
    * [py] Bump ruff version by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15818
    * [dotnet] [bidi] Simplify modules namespace for end users (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15820
    * [dotnet] Remove unnecessary stylecop files by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15824
    * [py] Lint and format all python files by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15828
    * [py][bidi]: add `enable_webextensions` option for chromium-based
    browsers by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15794
    * [py] Auto-generate Python API docs from code by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15822
    * [py] Fix python API docs publishing at readthedocs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15832
    * Change flag for Chrome/Edge headless mode in tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15831
    * [py] Cleanup tox config by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15833
    * [rb] Add support for beta chrome by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15417
    * Revert "[rb] Add support for beta chrome" by @​aguspe in
    https://github.com/SeleniumHQ/selenium/pull/15837
    * [py] Fix: Mypy type annotation errors by @​ShauryaDusht in
    https://github.com/SeleniumHQ/selenium/pull/15841
    * [py] New script to update Python dependencies by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15845
    * fixed errors in browser.py for 15697 by @​pallavigitwork in
    https://github.com/SeleniumHQ/selenium/pull/15847
    * [py][bidi]: implement bidi permissions module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15830
    * [py] Regeneratee py/docs/source/api.rst by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15856
    * [dotnet] Align CS projects name to understand the editing context by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15843
    * [py][bidi]: enable edge bidi storage test - `test_get_all_cookies` by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15859
    * Caching the size/length in loops to slightly improve performance by
    @​LuisOsv in https://github.com/SeleniumHQ/selenium/pull/15852
    * Update exceptions.py by @​adolfoarmas in
    https://github.com/SeleniumHQ/selenium/pull/15862
    * Revert "Update exceptions.py" by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15864
    * [py] Re-apply #​15862 by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15865
    * [py] fix driver_element_finding_tests.py by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15863
    * [py] Fix another broken test by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15866
    ... (truncated)
    ## 4.33.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at 2c6aaad03a575cd93e4f063f91404e3ae66a7470 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Exclude devtools directory from type checking by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15695
    * [py] Add clean_options fixture and remove all Python tests from
    .skipped-tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15696
    * [java][bidi]: enable tests for storage module for edge by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15667
    * [py][bidi]: add bidi storage module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15669
    * [build] allow GitHub Actions runner to use 4GB for JVM Heap by
    @​titusfortner in https://github.com/SeleniumHQ/selenium/pull/15692
    * update old freenode channel link to libera by @​t7ru in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * fixing mypy error from #​15693 by @​bandophahita in
    https://github.com/SeleniumHQ/selenium/pull/15705
    * [java] Removing deprecated items in Require.java by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15711
    * [java] Removing RemoteStatus as it was deprecated. by @​diemol in
    https://github.com/SeleniumHQ/selenium/pull/15712
    * [rb] move all guard and zipper tests to unit tests by @​titusfortner
    in https://github.com/SeleniumHQ/selenium/pull/15717
    * [rust] Replace WMIC commands (deprecated) by WinAPI in Windows by
    @​bonigarcia in https://github.com/SeleniumHQ/selenium/pull/15363
    * [py][BiDi] use constant for LogLevel by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15677
    * Let firefox choose the bidi port by default by @​tomhughes in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * [rb] Upgrade to Ruby 3.2 by @​p0deje in
    https://github.com/SeleniumHQ/selenium/pull/15714
    * [py] Missing Headers Assignment in Network Class’s _on_request() by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/15736
    * [py] correct type annotations of default-None params by
    @​DeflateAwning in https://github.com/SeleniumHQ/selenium/pull/15341
    * [py] Add missing 'id' property to ShadowRoot class by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15739
    * [py] Bump Python package requirements to latest versions by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15731
    * [py] Use ruff for linting and code formatting by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15746
    * [py]: return `message` as part of exception in `execute` method by
    @​navin772 in https://github.com/SeleniumHQ/selenium/pull/15751
    * [py][tests]: check for .txt file in remote download test by @​navin772
    in https://github.com/SeleniumHQ/selenium/pull/15758
    * [java] Removing deprecated `setScriptTimeout` and `pageLoadTimeout`.
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15764
    * [py][bidi]: add bidi webExtension module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15749
    * [py] Better error for downloads on local webdrivers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15756
    * [py] Add missing modules to python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15779
    * [ci] Workflow for Grid UI component tests by @​VietND96 in
    https://github.com/SeleniumHQ/selenium/pull/15778
    * [grid] UI Sessions capability fields to display as additional columns
    by @​VietND96 in https://github.com/SeleniumHQ/selenium/pull/15759
    * [grid] UI Overview is able to see live preview per Node by @​VietND96
    in https://github.com/SeleniumHQ/selenium/pull/15777
    ## New Contributors
    * @​t7ru made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15698
    * @​tomhughes made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15727
    * @​DeflateAwning made their first contribution in
    https://github.com/SeleniumHQ/selenium/pull/15341
    </details>
    **Full Changelog**:
    https://github.com/SeleniumHQ/selenium/compare/selenium-4.32.0...selenium-4.33.0
    ## 4.32.0
    ## Detailed Changelogs by Component
    <img src="https://www.selenium.dev/images/programming/java.svg"
    width="20" height="20">
    **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/python.svg" width="20"
    height="20">
    **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/dotnet.svg" width="20"
    height="20">
    **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/ruby.svg" width="20"
    height="20">
    **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**
    &nbsp;&nbsp;&nbsp; | &nbsp;&nbsp;&nbsp;<img
    src="https://www.selenium.dev/images/programming/javascript.svg"
    width="20" height="20">
    **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/selenium-webdriver/CHANGES.md)**
    <br>
    <!-- Release notes generated using configuration in .github/release.yml
    at d17c8aa95092dc25ae64f12e7abdc844cf3503f0 -->
    ## What's Changed
    <details>
    <summary>Click to see all the changes included in this release</summary>
    * [py] Fix test args for --headless and --bidi by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15567
    * [py] Only skip WebKit tests on Windows by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15470
    * [dotnet] [bidi] Revisit some core functionality to deserialize without
    intermediate `JsonElement` allocation by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15575
    * [py] Fix broken test for chromedriver logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15579
    * [py] Fix test for w3c touch pointer properties by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15580
    * [py] Fix FedCM tests leaking state by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15583
    * [dotnet] [bidi] Address BiDi's JSON converter AOT warnings by
    @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15390
    * [dotnet] [bidi] Added missing GenericLogEntry log entry type in Script
    module by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15591
    * [grid] Ignored options when they are prefixed, safari specif as well
    by @​diemol in https://github.com/SeleniumHQ/selenium/pull/15574
    * [py] Remove broken logo from Sphinx generated API docs by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15597
    * [py] Fix PyTest configuration for WPEWebKit by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15602
    * [py] Fix failing test for Edge logging by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15605
    * [rb] Add PrintOptions Implementation for Ruby WebDriver by @​yvsvarma
    in https://github.com/SeleniumHQ/selenium/pull/15158
    * [py] BiDi Network implementation of Intercepts and Auth in Python by
    @​shbenzer in https://github.com/SeleniumHQ/selenium/pull/14592
    * [py] Use XWayland for internal Python Firefox tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15601
    * [py] Use mock.patch for environment variables in tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15607
    * [ruby] fix lint for print_options.rb by @​Delta456 in
    https://github.com/SeleniumHQ/selenium/pull/15608
    * [py] Configure readthedocs publishing for Python API docs by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15614
    * [py] Fix select being able to select options hidden by css rules by
    @​FFederi in https://github.com/SeleniumHQ/selenium/pull/15135
    * [py][bidi]: Implement BiDi browser module by @​navin772 in
    https://github.com/SeleniumHQ/selenium/pull/15616
    * [dotnet] [bidi] Combine network interception to apply rules (breaking
    change) by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15603
    * [dotnet] [bidi] Add strongly-typed `LocalValue.ConvertFrom` overloads
    by @​RenderMichael in https://github.com/SeleniumHQ/selenium/pull/15532
    * [py] Add missing modules to Python API docs by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15624
    * [dotnet] [bidi] Do not throw when CallFunction or Evaluate return
    exceptional result (breaking change) by @​RenderMichael in
    https://github.com/SeleniumHQ/selenium/pull/15521
    * [py] Skip bidi tests on browsers that don't support bidi by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15625
    * [py] complete
    `test_should_throw_an_exception_if_an_alert_has_not_been_dealt_with_and_dismiss_the_alert`
    by @​Delta456 in https://github.com/SeleniumHQ/selenium/pull/15559
    * [py] Remove unused xfail on chrome/edge service tests by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15637
    * [py] Adjust xfail markers for window size/position tests by
    @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15638
    * [py] Call service.stop() when session can't be started by @​cgoldberg
    in https://github.com/SeleniumHQ/selenium/pull/15636
    * [dotnet] [bidi] Reuse memory when receiving websocket messages by
    @​nvborisenko in https://github.com/SeleniumHQ/selenium/pull/15640
    * [py] Remove logging API for non-Chromium browsers by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15641
    * [py] Raise TypeError when creating webdriver.Remote() without options
    by @​cgoldberg in https://github.com/SeleniumHQ/selenium/pull/15619
    * [py] Upgrade dependencies for mypy tox environment by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15642
    * [py] Fix Remote Firefox tests on Linux/Wayland by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15648
    * [dotnet] Enhance Selenium Manager platform detection by @​nvborisenko
    in https://github.com/SeleniumHQ/selenium/pull/15649
    * [dotnet] Use namespace file scoped by @​nvborisenko in
    https://github.com/SeleniumHQ/selenium/pull/15651
    * [py] Fix flaky WebDriverWait tests by @​cgoldberg in
    https://github.com/SeleniumHQ/selenium/pull/15650
    ... (truncated)
    Commits viewable in [compare
    view](https://github.com/SeleniumHQ/selenium/compare/selenium-4.31.0...selenium-4.41.0).
    </details>
    [![Dependabot compatibility
    score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=Selenium.WebDriver&package-manager=nuget&previous-version=4.31.0&new-version=4.41.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    Dependabot will resolve any conflicts with this PR as long as you don't
    alter it yourself. You can also trigger a rebase manually by commenting
    `@dependabot rebase`.
    [//]: # (dependabot-automerge-start)
    [//]: # (dependabot-automerge-end)
    ---
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits
    that have been made to it
    - `@dependabot show <dependency name> ignore conditions` will show all
    of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop
    Dependabot creating any more for this major version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop
    Dependabot creating any more for this minor version (unless you reopen
    the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop
    Dependabot creating any more for this dependency (unless you reopen the
    PR or upgrade to it yourself)
    </details>
    Signed-off-by: dependabot[bot] <support@github.com>
    Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
    Co-authored-by: PhilipWoulfe <philip.woulfe@gmail.com>
    Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    C-rbRuby BindingsP-enhancementPR with a new featureReview effort [1-5]: 2

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    5 participants

    @titusfortner@p0deje@aguspe@pujagani@diemol