Skip to content

[build] Prepare for release of selenium-4.46.0#17763

Merged
diemol merged 13 commits into
trunkfrom
release-preparation-selenium-4.46.0
Jul 11, 2026
Merged

[build] Prepare for release of selenium-4.46.0#17763
diemol merged 13 commits into
trunkfrom
release-preparation-selenium-4.46.0

Conversation

@selenium-ci

Copy link
Copy Markdown
Member

Release Info

Tag selenium-4.46.0
Version 4.46.0
Language all

Updates Applied

Component Status
Versions ✅ Updated
CDP version ✅ Updated
CDDL spec files ✅ Updated
Binding Dependencies ✅ Updated
Changelogs ✅ Updated
Rust Changelogs ✅ Updated
Pinned Browsers ✅ Updated
Selenium Manager ✅ Updated
Multitool binaries ✅ Updated
Authors ✅ Updated

Auto-generated by release-preparation workflow

@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 Jul 10, 2026
@qodo-code-review

qodo-code-review Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (2) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 42 rules

Grey Divider


Action required

1. Public v150 constructors lack Javadoc 📘 Rule violation ✧ Quality
Description
Several modified public constructors in the Java DevTools v150 package have no Javadoc block, so
they are missing required description text and (when applicable) @param tags. This violates the
requirement to keep public API methods/constructors fully documented for consumers and generated API
docs.
Code

java/src/org/openqa/selenium/devtools/v150/v150Domains.java[R29-44]

+public class v150Domains implements Domains {

-  private final v147Javascript js;
-  private final v147Events events;
-  private final v147Log log;
-  private final v147Network network;
-  private final v147Target target;
+  private final v150Javascript js;
+  private final v150Events events;
+  private final v150Log log;
+  private final v150Network network;
+  private final v150Target target;

-  public v147Domains(DevTools devtools) {
+  public v150Domains(DevTools devtools) {
    Require.nonNull("DevTools", devtools);
-    events = new v147Events(devtools);
-    js = new v147Javascript(devtools);
-    log = new v147Log();
-    network = new v147Network(devtools);
-    target = new v147Target();
+    events = new v150Events(devtools);
+    js = new v150Javascript(devtools);
+    log = new v150Log();
+    network = new v150Network(devtools);
+    target = new v150Target();
  }
Evidence
PR Compliance ID 330201 requires every changed public method/constructor to have a Javadoc block
with a purpose sentence and complete tags (including @param for each parameter). In the cited
files, the public constructors (including public v150Domains(DevTools devtools)) appear without
any preceding Javadoc block, so required documentation and parameter tags are missing.

Rule 330201: Require complete Javadoc on public API methods
java/src/org/openqa/selenium/devtools/v150/v150Domains.java[29-44]
java/src/org/openqa/selenium/devtools/v150/v150Events.java[37-41]
java/src/org/openqa/selenium/devtools/v150/v150CdpInfo.java[23-28]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Modified public Java constructors in the DevTools v150 API were updated/introduced without Javadoc. Public API constructors/methods must have a `/** ... */` Javadoc block with at least one descriptive sentence, and when parameters exist, a matching `@param` tag for each parameter.

## Issue Context
This PR updates the DevTools protocol versioned classes (e.g., `v150Domains`, `v150Events`, `v150CdpInfo`). The constructors are `public` and therefore part of the public API surface, but they currently lack Javadoc.

## Fix Focus Areas
- java/src/org/openqa/selenium/devtools/v150/v150Domains.java[29-44]
- java/src/org/openqa/selenium/devtools/v150/v150Events.java[37-41]
- java/src/org/openqa/selenium/devtools/v150/v150CdpInfo.java[23-28]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. New start_screencast lacks tests 📘 Rule violation ▣ Testability ⭐ New
Description
The new BiDi start_screencast/stop_screencast commands were added without any corresponding
automated test updates, so regressions in command wiring/serialization may go undetected. This
violates the requirement to add tests for new functionality.
Code

rb/lib/selenium/webdriver/bidi/protocol/browsing_context.rb[R657-682]

+          # @api private
+          # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
+          def start_screencast(
+            context:,
+            mime_type: Serialization::UNSET,
+            video: Serialization::UNSET,
+            audio: Serialization::UNSET
+          )
+            params = StartScreencastParameters.new(context: context, mime_type: mime_type, video: video, audio: audio)
+            execute(
+              cmd: 'browsingContext.startScreencast',
+              params: params,
+              result: BrowsingContext::StartScreencastResult
+            )
+          end
+
+          # @api private
+          # @see https://www.selenium.dev/documentation/warnings/bidi-implementation/
+          def stop_screencast(screencast:)
+            params = StopScreencastParameters.new(screencast: screencast)
+            execute(
+              cmd: 'browsingContext.stopScreencast',
+              params: params,
+              result: BrowsingContext::StopScreencastResult
+            )
+          end
Evidence
PR Compliance ID 389273 requires tests for new functionality. The diff adds new start_screencast
and stop_screencast methods, but no tests were added/updated to exercise these new code paths.

Rule 389273: Require tests for all new functionality and bug fixes
rb/lib/selenium/webdriver/bidi/protocol/browsing_context.rb[657-682]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
New BiDi protocol methods `start_screencast` and `stop_screencast` were introduced without accompanying tests.

## Issue Context
These methods add new user-callable behavior (even if `@api private`) and should be validated to ensure the correct command name and parameters are sent and the expected result type is handled.

## Fix Focus Areas
- rb/lib/selenium/webdriver/bidi/protocol/browsing_context.rb[657-682]
- rb/spec/integration/selenium/webdriver/bidi/protocol_browsing_context_spec.rb[39-132]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Unchecked track constraint types 🐞 Bug ☼ Reliability ⭐ New
Description
BrowsingContext::MediaTrackConstraints defines width/height/frameRate without a primitive type, so
deserialization will not enforce numeric types for these fields and malformed values can pass
through unchecked. This is inconsistent with nearby numeric fields that declare a primitive (e.g.,
PrintPageParameters).
Code

rb/lib/selenium/webdriver/bidi/protocol/browsing_context.rb[R387-391]

+          MediaTrackConstraints = Serialization::Record.define(
+            width: {wire_key: 'width', required: false},
+            height: {wire_key: 'height', required: false},
+            frame_rate: {wire_key: 'frameRate', required: false}
+          )
Evidence
The new MediaTrackConstraints record has no primitive metadata for its numeric fields. In
Serialization::Record, primitive validation only occurs when a primitive descriptor is present;
otherwise it is skipped. This differs from other numeric records in the same file (e.g.,
PrintPageParameters) that do declare primitive: 'number'.

rb/lib/selenium/webdriver/bidi/protocol/browsing_context.rb[387-391]
rb/lib/selenium/webdriver/bidi/serialization/record.rb[164-178]
rb/lib/selenium/webdriver/bidi/protocol/browsing_context.rb[338-341]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`BrowsingContext::MediaTrackConstraints` omits `primitive:` for `width`, `height`, and `frame_rate`, which means `Serialization::Record.from_json` will not type-check these fields (primitive checks are conditional on `field.primitive`).

## Issue Context
Nearby numeric records (e.g., `PrintPageParameters`) specify `primitive: 'number'`, suggesting these were accidentally left unannotated.

## Fix Focus Areas
- rb/lib/selenium/webdriver/bidi/protocol/browsing_context.rb[387-391]
- rb/lib/selenium/webdriver/bidi/serialization/record.rb[164-178]
- rb/sig/lib/selenium/webdriver/bidi/protocol/browsing_context.rbs[290-295]

## Suggested fix
- Add `primitive: 'number'` (or `'integer'` if that’s the intended protocol type) to `width`, `height`, and `frame_rate`.
- Update the RBS constructor types to match the chosen primitive (`Numeric` for `number`, `Integer` for `integer`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

Previous review results

Review updated until commit a0842f2

Results up to commit f022099


🐞 Bugs (0) 📘 Rule violations (1) 📎 Requirement gaps (0) 🎨 UX issues (0) 🔗 Cross-repo conflicts (0) 📜 Skill insights (0)


Action required
1. Public v150 constructors lack Javadoc 📘 Rule violation ✧ Quality
Description
Several modified public constructors in the Java DevTools v150 package have no Javadoc block, so
they are missing required description text and (when applicable) @param tags. This violates the
requirement to keep public API methods/constructors fully documented for consumers and generated API
docs.
Code

java/src/org/openqa/selenium/devtools/v150/v150Domains.java[R29-44]

+public class v150Domains implements Domains {

-  private final v147Javascript js;
-  private final v147Events events;
-  private final v147Log log;
-  private final v147Network network;
-  private final v147Target target;
+  private final v150Javascript js;
+  private final v150Events events;
+  private final v150Log log;
+  private final v150Network network;
+  private final v150Target target;

-  public v147Domains(DevTools devtools) {
+  public v150Domains(DevTools devtools) {
    Require.nonNull("DevTools", devtools);
-    events = new v147Events(devtools);
-    js = new v147Javascript(devtools);
-    log = new v147Log();
-    network = new v147Network(devtools);
-    target = new v147Target();
+    events = new v150Events(devtools);
+    js = new v150Javascript(devtools);
+    log = new v150Log();
+    network = new v150Network(devtools);
+    target = new v150Target();
  }
Evidence
PR Compliance ID 330201 requires every changed public method/constructor to have a Javadoc block
with a purpose sentence and complete tags (including @param for each parameter). In the cited
files, the public constructors (including public v150Domains(DevTools devtools)) appear without
any preceding Javadoc block, so required documentation and parameter tags are missing.

Rule 330201: Require complete Javadoc on public API methods
java/src/org/openqa/selenium/devtools/v150/v150Domains.java[29-44]
java/src/org/openqa/selenium/devtools/v150/v150Events.java[37-41]
java/src/org/openqa/selenium/devtools/v150/v150CdpInfo.java[23-28]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Modified public Java constructors in the DevTools v150 API were updated/introduced without Javadoc. Public API constructors/methods must have a `/** ... */` Javadoc block with at least one descriptive sentence, and when parameters exist, a matching `@param` tag for each parameter.

## Issue Context
This PR updates the DevTools protocol versioned classes (e.g., `v150Domains`, `v150Events`, `v150CdpInfo`). The constructors are `public` and therefore part of the public API surface, but they currently lack Javadoc.

## Fix Focus Areas
- java/src/org/openqa/selenium/devtools/v150/v150Domains.java[29-44]
- java/src/org/openqa/selenium/devtools/v150/v150Events.java[37-41]
- java/src/org/openqa/selenium/devtools/v150/v150CdpInfo.java[23-28]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Qodo Logo

Comment thread java/src/org/openqa/selenium/devtools/v150/v150Domains.java
Comment thread rb/lib/selenium/webdriver/bidi/protocol/browsing_context.rb
Comment thread rb/lib/selenium/webdriver/bidi/protocol/browsing_context.rb
@qodo-code-review

Copy link
Copy Markdown
Contributor

Code review by qodo was updated up to the latest commit a0842f2

@diemol diemol merged commit df5a634 into trunk Jul 11, 2026
63 checks passed
@diemol diemol deleted the release-preparation-selenium-4.46.0 branch July 11, 2026 00:36
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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants