Skip to content

Conversation

@selenium-ci
Copy link
Member

@selenium-ci selenium-ci commented Dec 3, 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 v140 to v143

  • Bump all Selenium binding versions to 4.39.0

  • Update Maven dependencies and Selenium Manager artifacts

  • Add new authors and update changelogs for release


File Walkthrough

Relevant files
Configuration changes
37 files
v143Target.java
Update package and class names from v140 to v143                 
+12/-12 
v143Network.java
Update package and class names from v140 to v143                 
+10/-10 
v143Events.java
Update package and class names from v140 to v143                 
+9/-9     
v143Domains.java
Update package and class names from v140 to v143                 
+13/-13 
v143Javascript.java
Update package and class names from v140 to v143                 
+7/-7     
v143Log.java
Update package and class names from v140 to v143                 
+5/-5     
v143CdpInfo.java
Update CDP version number from 140 to 143                               
+4/-4     
V143Domains.cs
Update namespace and class names from V140 to V143             
+11/-11 
V143Network.cs
Update namespace and class names from V140 to V143             
+12/-12 
V143JavaScript.cs
Update namespace and class names from V140 to V143             
+8/-8     
V143Target.cs
Update namespace and class names from V140 to V143             
+7/-7     
V143Log.cs
Update namespace and class names from V140 to V143             
+7/-7     
DevToolsDomains.cs
Update supported CDP version from 140 to 143                         
+2/-2     
DevToolsTargetTest.cs
Update current CDP version reference to V143                         
+2/-2     
DevToolsTabsTest.cs
Update current CDP version reference to V143                         
+1/-1     
DevToolsPerformanceTest.cs
Update current CDP version reference to V143                         
+1/-1     
DevToolsProfilerTest.cs
Update current CDP version reference to V143                         
+1/-1     
DevToolsConsoleTest.cs
Update current CDP version reference to V143                         
+1/-1     
DevToolsLogTest.cs
Update current CDP version reference to V143                         
+1/-1     
DevToolsNetworkTest.cs
Update current CDP version reference to V143                         
+1/-1     
DevToolsSecurityTest.cs
Update current CDP version reference to V143                         
+1/-1     
__init__.py
Update Python version to 4.39.0 release                                   
+1/-1     
__init__.py
Update Python version to 4.39.0 release                                   
+1/-1     
selenium-dotnet-version.bzl
Update .NET version and CDP versions list                               
+2/-2     
versions.bzl
Update CDP versions list from v140 to v143                             
+1/-1     
version.bzl
Update Java version to 4.39.0 release                                       
+1/-1     
version.rb
Update Ruby version to 4.39.0 release                                       
+1/-1     
version.rb
Update Ruby DevTools version to 0.143.0                                   
+1/-1     
Rakefile
Update Java release target from v140 to v143                         
+1/-1     
BUILD.bazel
Update Python version and CDP versions list                           
+2/-2     
BUILD.bazel
Update CDP version variable from v140 to v143                       
+1/-1     
BUILD.bazel
Update JavaScript version and CDP versions list                   
+2/-2     
Cargo.toml
Update Rust Selenium Manager version to 0.4.39                     
+1/-1     
pyproject.toml
Update Python project version to 4.39.0                                   
+1/-1     
package.json
Update JavaScript package version to 4.39.0                           
+1/-1     
BUILD.bazel
Update CDP versions list from v140 to v143                             
+1/-1     
BUILD.bazel
Update Rust Selenium Manager version to 0.4.39                     
+1/-1     
Dependencies
3 files
selenium_manager.bzl
Update Selenium Manager artifact URLs and checksums           
+6/-6     
maven_install.json
Update Maven dependencies and artifact hashes                       
+109/-101
MODULE.bazel
Update Maven dependency versions and checksums                     
+13/-13 
Documentation
8 files
conf.py
Update documentation version to 4.39.0                                     
+1/-1     
CHANGELOG
Add v4.39.0 changelog with CDP and feature updates             
+22/-1   
CHANGELOG
Add v4.39.0 changelog with CDP and feature updates             
+27/-0   
CHANGES
Add v4.39.0 changelog with CDP and feature updates             
+19/-1   
CHANGES
Add v4.39.0 changelog with CDP update                                       
+5/-1     
bug-report.yml
Update latest Selenium version reference to 4.39                 
+1/-1     
CHANGES.md
Add v4.39.0 changelog with CDP update                                       
+6/-1     
CHANGELOG.md
Add v0.4.39 changelog entry                                                           
+5/-1     
Enhancement
1 files
js_protocol.pdl
Add new CDP protocol fields for v143                                         
+8/-0     
Miscellaneous
1 files
AUTHORS
Add github-actions bot as contributor                                       
+1/-0     
Additional files
2 files
BUILD.bazel [link]   
browser_protocol.pdl +9152/-8648

@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 Dec 3, 2025
@diemol diemol marked this pull request as ready for review December 6, 2025 22:14
@qodo-code-review
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
Codebase Duplication Compliance
Codebase context is not defined

Follow the guide to enable codebase context checks.

Custom Compliance
🟢
Generic: Meaningful Naming and Self-Documenting Code

Objective: Ensure all identifiers clearly express their purpose and intent, making code
self-documenting

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Error Handling

Objective: To prevent the leakage of sensitive system information through error messages while
providing sufficient detail for internal debugging.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Secure Logging Practices

Objective: To ensure logs are useful for debugging and auditing without exposing sensitive
information like PII, PHI, or cardholder data.

Status: Passed

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Comprehensive Audit Trails

Objective: To create a detailed and reliable record of critical system actions for security analysis
and compliance.

Status:
No audit logging: The new DevTools v143 network integration adds/updates command wiring without introducing
any explicit audit logging for critical actions, which may be acceptable if logging is
handled centrally elsewhere.

Referred Code
  return org.openqa.selenium.devtools.v143.network.Network.setUserAgentOverride(
      userAgent.userAgent(), userAgent.acceptLanguage(), userAgent.platform(), Optional.empty());
}

@Override
protected Command<Void> enableNetworkCaching() {
  return org.openqa.selenium.devtools.v143.network.Network.setCacheDisabled(false);
}

@Override
protected Command<Void> disableNetworkCaching() {
  return org.openqa.selenium.devtools.v143.network.Network.setCacheDisabled(true);
}

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Robust Error Handling and Edge Case Management

Objective: Ensure comprehensive error handling that provides meaningful context and graceful
degradation

Status:
Missing error handling: New methods and constructor wiring for v143 network and auth flows do not show explicit
error handling or null/edge case validation in the diff, which might be handled at
adapters but is not visible here.

Referred Code
/// Initializes a new instance of the <see cref="V143Network"/> class.
/// </summary>
/// <param name="network">The adapter for the Network domain.</param>
/// <param name="fetch">The adapter for the Fetch domain.</param>
/// <exception cref="ArgumentNullException">If <paramref name="network"/> or <paramref name="fetch"/> are <see langword="null"/>.</exception>
public V143Network(NetworkAdapter network, FetchAdapter fetch)
{
    this.network = network ?? throw new ArgumentNullException(nameof(network));
    this.fetch = fetch ?? throw new ArgumentNullException(nameof(fetch));

Learn more about managing compliance generic rules or creating your own custom rules

Generic: Security-First Input Validation and Data Handling

Objective: Ensure all data inputs are validated, sanitized, and handled securely to prevent
vulnerabilities

Status:
Credential handling: The code constructs authentication responses with username and password but does not show
sanitization or secure handling in logs; likely safe given adapters, yet warrants
verification.

Referred Code
await fetch.ContinueWithAuth(new ContinueWithAuthCommandSettings()
{
    RequestId = requestId,
    AuthChallengeResponse = new V143.Fetch.AuthChallengeResponse()
    {
        Response = V143.Fetch.AuthChallengeResponseResponseValues.ProvideCredentials,
        Username = userName,
        Password = password
    }

Learn more about managing compliance generic rules or creating your own custom rules

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

@qodo-code-review
Copy link
Contributor

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Correct dependency conflict resolution logic

Reverse the key and value for the error_prone_annotations conflict resolution to
ensure the older version is resolved to the newer version, not the other way
around.

java/maven_install.json [868-872]

 "conflict_resolution": {
-  "com.google.errorprone:error_prone_annotations:2.43.0": "com.google.errorprone:error_prone_annotations:2.41.0",
+  "com.google.errorprone:error_prone_annotations:2.41.0": "com.google.errorprone:error_prone_annotations:2.43.0",
   "commons-io:commons-io:2.20.0": "commons-io:commons-io:2.5",
   "io.projectreactor:reactor-core:3.6.2": "io.projectreactor:reactor-core:3.6.6",
   "net.bytebuddy:byte-buddy-agent:1.17.4": "net.bytebuddy:byte-buddy-agent:1.17.7",
  • Apply / Chat
Suggestion importance[1-10]: 8

__

Why: The suggestion correctly identifies a bug in the dependency conflict resolution where a newer version is resolved to an older one, which could lead to unexpected behavior or bugs.

Medium
Sort supported versions in descending order

Sort the SupportedDevToolsVersions array in descending order to ensure the
latest version is prioritized during version selection.

dotnet/src/webdriver/DevTools/DevToolsDomains.cs [38-42]

 public static readonly int[] SupportedDevToolsVersions =
 [
+    143,
     142,
     141,
-    143,
 ];

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies that the SupportedDevToolsVersions array is unsorted, which could lead to selecting an older DevTools version; sorting it ensures the latest supported version is always chosen first.

Medium
Mark nullable property as optional

Mark the expires property in the Cookie type as optional to align with its
comment, which states the value can be null.

common/devtools/chromium/v143/browser_protocol.pdl [7687-7691]

 # Cookie expiration date as the number of seconds since the UNIX epoch.
 # The value is set to -1 if the expiry date is not set.
 # The value can be null for values that cannot be represented in
 # JSON (±Inf).
-number expires
+optional number expires
  • Apply / Chat
Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies a discrepancy between the comment (which states the value can be null) and the type definition for expires. Making the field optional aligns the definition with the documentation, improving protocol correctness and preventing potential client-side errors.

Medium
Enforce mutually exclusive properties

Use a oneof block to enforce the mutual exclusivity of the card and address
properties, which is currently only documented in comments.

common/devtools/chromium/v143/browser_protocol.pdl [1364-1367]

-# Credit card information to fill out the form. Credit card data is not saved.  Mutually exclusive with `address`.
-optional CreditCard card
-# Address to fill out the form. Address data is not saved. Mutually exclusive with `card`.
-optional Address address
+oneof
+  # Credit card information to fill out the form. Credit card data is not saved.
+  CreditCard card
+  # Address to fill out the form. Address data is not saved.
+  Address address
  • Apply / Chat
Suggestion importance[1-10]: 6

__

Why: The suggestion correctly identifies that the mutual exclusivity of card and address is only documented in comments and proposes using a oneof block to enforce it at the protocol level, which improves API robustness and correctness.

Low
Learned
best practice
Constrain numeric input ranges

Add explicit value constraints and defaults for numeric fields (non-negative
width/height, allowed rotation set, min/max DPR) and clarify units to prevent
invalid inputs. Include brief validation notes or ranges in comments.

common/devtools/chromium/v143/browser_protocol.pdl [5344-5365]

 command addScreen
   parameters
-    # Offset of the left edge of the screen in pixels.
+    # Offset of the left edge of the screen in pixels (can be negative for multi-screen layouts).
     integer left
-    # Offset of the top edge of the screen in pixels.
+    # Offset of the top edge of the screen in pixels (can be negative for multi-screen layouts).
     integer top
-    # The width of the screen in pixels.
+    # The width of the screen in pixels (must be > 0).
     integer width
-    # The height of the screen in pixels.
+    # The height of the screen in pixels (must be > 0).
     integer height
-    # Specifies the screen's work area. Default is entire screen.
+    # Specifies the screen's work area. Default is entire screen. Insets must be >= 0.
     optional WorkAreaInsets workAreaInsets
-    # Specifies the screen's device pixel ratio. Default is 1.
+    # Specifies the screen's device pixel ratio. Default is 1. Must be > 0 (e.g., 0.5–10).
     optional number devicePixelRatio
-    # Specifies the screen's rotation angle. Available values are 0, 90, 180 and 270. Default is 0.
+    # Specifies the screen's rotation angle. Allowed values: 0, 90, 180, 270. Default is 0.
     optional integer rotation
-    # Specifies the screen's color depth in bits. Default is 24.
+    # Specifies the screen's color depth in bits. Default is 24. Must be one of 16, 24, 30.
     optional integer colorDepth
-    # Specifies the descriptive label for the screen. Default is none.
+    # Specifies the descriptive label for the screen. Max length 256 UTF-8 chars.
     optional string label
     # Indicates whether the screen is internal to the device or external, attached to the device. Default is false.
     optional boolean isInternal

[To ensure code accuracy, apply this suggestion manually]

Suggestion importance[1-10]: 6

__

Why:
Relevant best practice - Validate and sanitize external inputs; document and constrain parameters to avoid invalid requests (Pattern 3).

Low
  • More

@diemol diemol merged commit 126f156 into trunk Dec 6, 2025
11 checks passed
@diemol diemol deleted the release-preparation-4.39.0 branch December 6, 2025 22:19
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 2/5

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants