Skip to content

Conversation

selenium-ci
Copy link
Member

@selenium-ci selenium-ci commented Oct 16, 2025

User description

Warning: Manually update the changelogs before merging

This PR:

  • Updates Pinned browser version to coincide with new CDP release
  • Adds support for new CDP version and removes old CDP version
  • Selenium Manager references the new Selenium Manager release
  • Updates Maven Dependencies
  • Adds new authors to authors file
  • Updates all versions for all bindings
  • Generates rough change logs for each bindings (please tidy them up before merging this)
    • Not all commits need to be in the change log — users do not need to see anything about building or testing Selenium
    • Remove references to updating versions including nightly
    • The code now outputs the complete body of the commit message; make sure the changelog message is complete and correct

PR Type

Enhancement


Description

  • Update Chrome DevTools Protocol from v138 to v141

  • Bump all Selenium bindings versions to 4.37.0

  • Update Selenium Manager to latest release version

  • Update Maven dependencies and Java build tools

  • Add new contributors to AUTHORS file


Diagram Walkthrough

flowchart LR
  A["CDP v138"] -->|"Update to"| B["CDP v141"]
  C["Version 4.36.0"] -->|"Bump to"| D["Version 4.37.0"]
  E["Selenium Manager"] -->|"Update"| F["Latest Release"]
  G["Maven Dependencies"] -->|"Update"| H["Latest Versions"]
  B --> I["Java/Python/Ruby/JS/DotNet"]
  D --> I
  F --> I
  H --> I
Loading

File Walkthrough

Relevant files
Enhancement
21 files
v141Target.java
Update package and class names from v138 to v141                 
+12/-12 
v141Network.java
Update package and class names from v138 to v141                 
+10/-10 
v141Events.java
Update package and class names from v138 to v141                 
+9/-9     
v141Domains.java
Update package and class names from v138 to v141                 
+13/-13 
v141Javascript.java
Update package and class names from v138 to v141                 
+7/-7     
v141Log.java
Update package and class names from v138 to v141                 
+5/-5     
v141CdpInfo.java
Update CDP version number from 138 to 141                               
+4/-4     
V141Domains.cs
Update namespace and class names from V138 to V141             
+11/-11 
V141Network.cs
Update namespace and class names from V138 to V141             
+12/-12 
V141JavaScript.cs
Update namespace and class names from V138 to V141             
+8/-8     
V141Target.cs
Update namespace and class names from V138 to V141             
+7/-7     
V141Log.cs
Update namespace and class names from V138 to V141             
+7/-7     
DevToolsDomains.cs
Update supported DevTools version from v138 to v141           
+2/-2     
DevToolsTargetTest.cs
Update current CDP version reference to v141                         
+2/-2     
DevToolsTabsTest.cs
Update current CDP version reference to v141                         
+1/-1     
DevToolsPerformanceTest.cs
Update current CDP version reference to v141                         
+1/-1     
DevToolsProfilerTest.cs
Update current CDP version reference to v141                         
+1/-1     
DevToolsConsoleTest.cs
Update current CDP version reference to v141                         
+1/-1     
DevToolsLogTest.cs
Update current CDP version reference to v141                         
+1/-1     
DevToolsNetworkTest.cs
Update current CDP version reference to v141                         
+1/-1     
DevToolsSecurityTest.cs
Update current CDP version reference to v141                         
+1/-1     
Dependencies
3 files
selenium_manager.bzl
Update Selenium Manager release artifacts and checksums   
+6/-6     
maven_install.json
Update Maven dependencies and artifact hashes                       
+218/-218
MODULE.bazel
Update Maven dependencies to latest versions                         
+15/-15 
Configuration changes
16 files
__init__.py
Update Python version to 4.37.0 release                                   
+1/-1     
__init__.py
Update Python version to 4.37.0 release                                   
+1/-1     
selenium-dotnet-version.bzl
Update .NET version and CDP versions list                               
+2/-2     
versions.bzl
Update Java CDP versions list to include v141                       
+1/-1     
version.bzl
Update Java version to 4.37.0 release                                       
+1/-1     
version.rb
Update Ruby version to 4.37.0 release                                       
+1/-1     
version.rb
Update Ruby DevTools version to 0.141.0                                   
+1/-1     
Rakefile
Update Java release targets from v138 to v141                       
+1/-1     
BUILD.bazel
Update Python version and CDP versions list                           
+2/-2     
BUILD.bazel
Update JavaScript version and CDP versions list                   
+2/-2     
BUILD.bazel
Update CDP version variable from v138 to v141                       
+1/-1     
Cargo.toml
Update Rust Selenium Manager version to 0.4.37                     
+1/-1     
pyproject.toml
Update Python project version to 4.37.0                                   
+1/-1     
package.json
Update JavaScript package version to 4.37.0                           
+1/-1     
BUILD.bazel
Update Rust Selenium Manager version to 0.4.37                     
+1/-1     
BUILD.bazel
Update Ruby CDP versions list to include v141                       
+1/-1     
Documentation
9 files
conf.py
Update Python documentation version to 4.37.0                       
+1/-1     
CHANGELOG
Add v4.37.0 release notes with CDP v141 changes                   
+20/-0   
AUTHORS
Add new contributors Matthias Kurz and Noel Kim                   
+2/-0     
CHANGELOG
Add v4.37.0 release notes with CDP v141 changes                   
+12/-0   
CHANGES
Add Python 4.37.0 release notes with CDP v141 changes       
+9/-0     
bug-report.yml
Update latest Selenium version reference to 4.37                 
+1/-1     
CHANGES
Add Ruby 4.37.0 release notes with CDP v141 changes           
+7/-0     
CHANGELOG.md
Add Rust Selenium Manager 0.4.37 release notes                     
+6/-0     
CHANGES.md
Add JavaScript 4.37.0 release notes with CDP v141               
+4/-0     
Additional files
3 files
BUILD.bazel [link]   
browser_protocol.pdl +9093/-8565
js_protocol.pdl [link]   

@selenium-ci selenium-ci added C-build C-py Python Bindings C-rb Ruby Bindings C-dotnet .NET Bindings C-java Java Bindings C-nodejs JavaScript Bindings B-build Includes scripting, bazel and CI integrations B-devtools Includes everything BiDi or Chrome DevTools related C-rust Rust code is mostly Selenium Manager B-manager Selenium Manager labels Oct 16, 2025
@diemol diemol marked this pull request as ready for review October 17, 2025 07:47
Copy link
Contributor

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🎫 No ticket provided
- [ ] Create ticket/issue <!-- /create_ticket --create_ticket=true -->

</details></td></tr>
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
No custom compliance provided

Follow the guide to enable custom compliance check.

Compliance status legend 🟢 - Fully Compliant
🟡 - Partial Compliant
🔴 - Not Compliant
⚪ - Requires Further Human Verification
🏷️ - Compliance label

Copy link
Contributor

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
High-level
Automate CDP version support generation

The current method of adding support for new CDP versions by duplicating and
renaming entire packages is inefficient. It is suggested to improve the code
generation process to create these version-specific classes from a common
template, reducing code duplication and maintenance.

Examples:

java/src/org/openqa/selenium/devtools/v141/v141Target.java [18-46]
package org.openqa.selenium.devtools.v141;

import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
import org.openqa.selenium.devtools.Command;
import org.openqa.selenium.devtools.ConverterFunctions;
import org.openqa.selenium.devtools.Event;

 ... (clipped 19 lines)
dotnet/src/webdriver/DevTools/v141/V141Domains.cs [22-70]
namespace OpenQA.Selenium.DevTools.V141;

/// <summary>
/// Class containing the domain implementation for version 141 of the DevTools Protocol.
/// </summary>
public class V141Domains : DevToolsDomains
{
    private readonly DevToolsSessionDomains domains;

    /// <summary>

 ... (clipped 39 lines)

Solution Walkthrough:

Before:

// File: java/src/org/openqa/selenium/devtools/v138/v138Target.java
package org.openqa.selenium.devtools.v138;
import org.openqa.selenium.devtools.v138.target.Target;
// ...
public class v138Target implements org.openqa.selenium.devtools.idealized.target.Target {
  // ... implementation using v138 types
}

// File: java/src/org/openqa/selenium/devtools/v141/v141Target.java
package org.openqa.selenium.devtools.v141;
import org.openqa.selenium.devtools.v141.target.Target;
// ...
public class v141Target implements org.openqa.selenium.devtools.idealized.target.Target {
  // ... implementation using v141 types (mostly identical to v138)
}

After:

// Template file (e.g., IdealizedTarget.java.template)
package org.openqa.selenium.devtools.v${cdp_version};
import org.openqa.selenium.devtools.v${cdp_version}.target.Target;
// ...
public class v${cdp_version}Target implements org.openqa.selenium.devtools.idealized.target.Target {
  // ... implementation using v${cdp_version} types
}

// --- Build Process ---
// A script would generate v141Target.java, v140Target.java, etc.
// from the template by replacing ${cdp_version} with the correct version number.
// This eliminates the need to manually copy and paste files for each new version.
Suggestion importance[1-10]: 9

__

Why: This is a critical architectural suggestion that correctly identifies massive code duplication for CDP versioning, and proposing a code generation approach would significantly reduce maintenance overhead and streamline future updates.

High
Possible issue
Remove incorrect dependency conflict resolution

Remove the incorrect conflict resolution rule for commons-io which downgrades it
to a much older and potentially vulnerable version.

java/maven_install.json [870]

-"commons-io:commons-io:2.20.0": "commons-io:commons-io:2.5",
 
+
  • Apply / Chat
Suggestion importance[1-10]: 8

__

Why: The suggestion correctly identifies a problematic dependency conflict resolution that downgrades commons-io to a very old version, which could introduce security risks.

Medium
Learned
best practice
Sort and document version mappings

Keep supported version arrays and switch mappings sorted or clearly documented
to avoid maintenance errors; consider ordering and adding comments for removed
versions.

dotnet/src/webdriver/DevTools/DevToolsDomains.cs [37-50]

+// Supported DevTools protocol versions (sorted descending). v138 removed; v141 added.
 private static int[] SupportedDevToolsVersions =>
 [
-    139,
     141,
     140,
+    139,
 ];
 
 private static DevToolsDomains? CreateDevToolsDomain(int protocolVersion, DevToolsSession session) => protocolVersion switch
 {
-    139 => new V139.V139Domains(session),
     141 => new V141.V141Domains(session),
     140 => new V140.V140Domains(session),
+    139 => new V139.V139Domains(session),
     _ => null
 };
  • Apply / Chat
Suggestion importance[1-10]: 6

__

Why:
Relevant best practice - Use correct and consistent version lists and switch mappings when updating supported protocol versions to prevent logic gaps and mismatches.

Low
General
Update comment with valid bug link

Remove the invalid or private bug tracker link from the comment for the
highlightRect command. The current link crbug.com/437807128 does not resolve to
a public issue.

common/devtools/chromium/v141/browser_protocol.pdl [9422-9439]

 # Highlights given rectangle. Coordinates are absolute with respect to the main frame viewport.
 # Issue: the method does not handle device pixel ratio (DPR) correctly.
 # The coordinates currently have to be adjusted by the client
-# if DPR is not 1 (see crbug.com/437807128).
+# if DPR is not 1.
 command highlightRect
   parameters
     # X coordinate
     integer x
     # Y coordinate
     integer y
     # Rectangle width
     integer width
     # Rectangle height
     integer height
     # The highlight fill color (default: transparent).
     optional DOM.RGBA color
     # The highlight outline color (default: transparent).
     optional DOM.RGBA outlineColor
  • Apply / Chat
Suggestion importance[1-10]: 3

__

Why: The suggestion correctly identifies that the bug tracker link in the comment is likely invalid, and removing it improves the comment's accuracy, which is a minor quality improvement.

Low
Fix typo in a comment

Fix a typo in the comment for InterestTarget by changing "for for a given
element" to "for a given element".

common/devtools/chromium/v141/browser_protocol.pdl [3786-3788]

 # Get the interestfor target (the attribute used to be named
-# `interesttarget`) for for a given element.
+# `interesttarget`) for a given element.
 InterestTarget
  • Apply / Chat
Suggestion importance[1-10]: 2

__

Why: The suggestion correctly points out a minor typo ("for for") in a comment, and fixing it slightly improves readability.

Low
  • More

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

B-build Includes scripting, bazel and CI integrations B-devtools Includes everything BiDi or Chrome DevTools related B-manager Selenium Manager C-build C-dotnet .NET Bindings C-java Java Bindings C-nodejs JavaScript Bindings C-py Python Bindings C-rb Ruby Bindings C-rust Rust code is mostly Selenium Manager Review effort 3/5

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants