Skip to content

[build] add reusable commit-changes.yml workflow#16965

Merged
titusfortner merged 7 commits intotrunkfrom
add-commit-changes-workflow
Jan 23, 2026
Merged

[build] add reusable commit-changes.yml workflow#16965
titusfortner merged 7 commits intotrunkfrom
add-commit-changes-workflow

Conversation

@titusfortner
Copy link
Copy Markdown
Member

@titusfortner titusfortner commented Jan 20, 2026

User description

Repeated pattern with our bazel.yml approach. Bazel workflow generates a patch, then calling workflow does:

  • checkout
  • download patch
  • apply patch
  • commit change
  • push commit

💥 What does this PR do?

Adds a reusable commit-changes.yml workflow to manage this flow

Refactors the following workflows to use it:

  • ci-lint.yml (commit-fixes job)
  • ci-renovate-rbe.yml
  • pin-browsers.yml
  • pre-release.yml (push-rust-version job)
  • release.yml (update-version job)

🔧 Implementation Notes

This pattern was duplicated across 5 workflows with minor variations. The reusable workflow supports:

  • Custom artifact name and commit message
  • Optional target ref to checkout
  • Optional push-branch for force-pushing to a different branch (selenium manager job)

💡 Additional Considerations

More tweaks to simplify incoming

🔄 Types of changes

  • Cleanup (formatting, renaming)

PR Type

Enhancement


Description

  • Introduces reusable commit-changes.yml workflow for standardized patch application

  • Refactors 5 workflows to use centralized commit-changes workflow

  • Supports custom artifact names, commit messages, and optional branch pushing

  • Eliminates duplicated patch-apply-commit-push logic across workflows


Diagram Walkthrough

flowchart LR
  A["Artifact Generation<br/>bazel.yml"] -- "artifact-name" --> B["commit-changes.yml<br/>Reusable Workflow"]
  B -- "applies patch" --> C["Git Commit<br/>& Push"]
  D["ci-lint.yml"] -- "uses" --> B
  E["ci-renovate-rbe.yml"] -- "uses" --> B
  F["pin-browsers.yml"] -- "uses" --> B
  G["pre-release.yml"] -- "uses" --> B
  H["release.yml"] -- "uses" --> B
Loading

File Walkthrough

Relevant files
Enhancement
commit-changes.yml
New reusable workflow for patch management                             

.github/workflows/commit-changes.yml

  • New reusable workflow that handles patch application, git
    configuration, and commit/push operations
  • Accepts inputs for artifact name, commit message, optional ref, and
    optional push-branch
  • Supports force-push to alternate branches via push-branch parameter
  • Outputs changes-committed flag to indicate success/failure
  • Supports optional SELENIUM_CI_TOKEN secret for authenticated
    operations
+72/-0   
pin-browsers.yml
Refactor to use commit-changes and gh CLI                               

.github/workflows/pin-browsers.yml

  • Refactors pull-request job into two separate jobs: push-changes and
    create-pr
  • push-changes job now uses commit-changes.yml with force-push to
    pinned-browser-updates branch
  • create-pr job uses GitHub CLI to create PR, checking for existing PRs
    to avoid duplicates
  • Replaces peter-evans/create-pull-request action with native gh pr
    create command
+30/-29 
Cleanup
ci-lint.yml
Refactor to use commit-changes workflow                                   

.github/workflows/ci-lint.yml

  • Replaces 31 lines of inline patch-apply-commit-push logic with call to
    commit-changes.yml
  • Simplifies commit-fixes job to use reusable workflow with
    artifact-name and commit-message inputs
  • Moves fork check to job-level condition instead of step-level check
+6/-37   
ci-renovate-rbe.yml
Refactor to use commit-changes workflow                                   

.github/workflows/ci-renovate-rbe.yml

  • Replaces 18 lines of inline patch-apply-commit-push logic with
    commit-changes.yml call
  • Simplifies commit-repins job configuration
  • Removes manual git configuration and error handling steps
+4/-22   
pre-release.yml
Refactor to use commit-changes workflow                                   

.github/workflows/pre-release.yml

  • Replaces 27 lines of inline patch-apply-commit-push logic in
    push-rust-version job with commit-changes.yml call
  • Adds force-push to rust-release-${{ inputs.version }} branch via
    push-branch parameter
  • Passes SELENIUM_CI_TOKEN secret to reusable workflow
  • Minor comment fix: "Run rust jobs" instead of "Rust jobs"
+8/-24   
release.yml
Refactor to use commit-changes workflow                                   

.github/workflows/release.yml

  • Replaces 27 lines of inline patch-apply-commit-push logic in
    update-version job with commit-changes.yml call
  • Simplifies version reset workflow by delegating to reusable workflow
  • Passes SELENIUM_CI_TOKEN secret for authenticated git operations
+6/-23   

@titusfortner titusfortner requested a review from Copilot January 20, 2026 22:02
@selenium-ci selenium-ci added the B-build Includes scripting, bazel and CI integrations label Jan 20, 2026
@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review bot commented Jan 20, 2026

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
Untrusted patch push

Description: The reusable workflow downloads an artifact-produced changes.patch and applies it (git
apply --index changes.patch) before pushing with contents: write, which can allow a
compromised or attacker-influenced patch artifact to commit and push arbitrary repository
changes (including .github/workflows/*) and, when push-branch is set, force-push them to a
target branch.
commit-changes.yml [41-63]

Referred Code
- name: Checkout
  uses: actions/checkout@v4
  with:
    ref: ${{ inputs.ref || github.ref }}
    token: ${{ secrets.SELENIUM_CI_TOKEN || github.token }}
- name: Download patch
  uses: actions/download-artifact@v4
  with:
    name: ${{ inputs.artifact-name }}
  continue-on-error: true
- name: Apply and commit
  id: commit
  run: |
    if [ -f changes.patch ] && [ -s changes.patch ]; then
      git apply --index changes.patch
      git config --local user.email "[email protected]"
      git config --local user.name "Selenium CI Bot"
      git commit -m "$COMMIT_MESSAGE"
      if [ -n "$PUSH_BRANCH" ]; then
        git push origin HEAD:"$PUSH_BRANCH" --force
      else


 ... (clipped 2 lines)
Force-push risk

Description: Allowing push-branch to trigger git push origin HEAD:"$PUSH_BRANCH" --force can enable
destructive overwrites of the remote branch history if misconfigured or invoked with an
unintended branch name, potentially bypassing normal safeguards depending on branch
protection settings and token privileges.
commit-changes.yml [59-62]

Referred Code
if [ -n "$PUSH_BRANCH" ]; then
  git push origin HEAD:"$PUSH_BRANCH" --force
else
  git push
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: Comprehensive Audit Trails

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

Status: Passed

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

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: Robust Error Handling and Edge Case Management

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

Status:
Missing failure checks: The workflow can silently proceed after patch download/apply/commit/push failures (e.g.,
continue-on-error: true on download and no explicit handling of git apply, git commit, or
git push exit codes), reducing reliability and diagnosability.

Referred Code
- name: Download patch
  uses: actions/download-artifact@v4
  with:
    name: ${{ inputs.artifact-name }}
  continue-on-error: true
- name: Apply and commit
  id: commit
  run: |
    if [ -f changes.patch ] && [ -s changes.patch ]; then
      git apply --index changes.patch
      git config --local user.email "[email protected]"
      git config --local user.name "Selenium CI Bot"
      git commit -m "$COMMIT_MESSAGE"
      if [ -n "$PUSH_BRANCH" ]; then
        git push origin HEAD:"$PUSH_BRANCH" --force
      else
        git push
      fi
      echo "::notice::Changes committed and pushed"
      echo "committed=true" >> "$GITHUB_OUTPUT"
    else


 ... (clipped 3 lines)

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:
Unvalidated force-push target: The reusable workflow accepts push-branch and performs a force push to the provided branch
without validating/allowlisting the target, which could be risky depending on who can call
the workflow and with what inputs.

Referred Code
      push-branch:
        description: Branch to push to (defaults to current branch, uses force push)
        required: false
        type: string
        default: ''
    outputs:
      changes-committed:
        description: Whether changes were committed and pushed
        value: ${{ jobs.commit.outputs.committed }}
    secrets:
      SELENIUM_CI_TOKEN:
        required: false

jobs:
  commit:
    name: Commit Changes
    runs-on: ubuntu-latest
    outputs:
      committed: ${{ steps.commit.outputs.committed }}
    permissions:
      contents: write


 ... (clipped 24 lines)

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

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

@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review bot commented Jan 20, 2026

PR Code Suggestions ✨

Latest suggestions up to 4e296c3

CategorySuggestion                                                                                                                                    Impact
Security
Restrict workflow to intended repo

Add an if condition to the commit job to ensure the workflow only runs within
the SeleniumHQ/selenium repository, enhancing security.

.github/workflows/commit-changes.yml [32-46]

 jobs:
   commit:
     name: Commit Changes
+    if: github.repository == 'SeleniumHQ/selenium'
     runs-on: ubuntu-latest
     outputs:
       committed: ${{ steps.commit.outputs.committed }}
     permissions:
       contents: write
       actions: read
     steps:
       - name: Checkout
         uses: actions/checkout@v4
         with:
           ref: ${{ inputs.ref || github.ref }}
           token: ${{ secrets.SELENIUM_CI_TOKEN || github.token }}
  • Apply / Chat
Suggestion importance[1-10]: 8

__

Why: This is a valuable security hardening measure that restricts the powerful reusable workflow to its intended repository, SeleniumHQ/selenium, preventing potential misuse in other contexts.

Medium
Possible issue
Push explicitly to a branch

To prevent git push from failing in detached HEAD states, explicitly push to the
checked-out ref name instead of relying on implicit upstream configuration.

.github/workflows/commit-changes.yml [53-92]

 - name: Apply and commit
   id: commit
   run: |
     if [ "$DOWNLOAD_OUTCOME" != "success" ]; then
       echo "::notice::Artifact not found (may not have been uploaded)"
       echo "committed=false" >> "$GITHUB_OUTPUT"
       exit 0
     fi
     if [ -f changes.patch ] && [ -s changes.patch ]; then
       if ! git apply --index changes.patch; then
         echo "::error::Failed to apply patch"
         echo "committed=false" >> "$GITHUB_OUTPUT"
         exit 1
       fi
       git config --local user.email "[email protected]"
       git config --local user.name "Selenium CI Bot"
       if ! git commit -m "$COMMIT_MESSAGE"; then
         echo "::error::Failed to commit changes"
         echo "committed=false" >> "$GITHUB_OUTPUT"
         exit 1
       fi
       if [ -n "$PUSH_BRANCH" ]; then
         if ! git push origin HEAD:"$PUSH_BRANCH" --force; then
           echo "::error::Failed to push to $PUSH_BRANCH"
           echo "committed=false" >> "$GITHUB_OUTPUT"
           exit 1
         fi
       else
-        if ! git push; then
+        if ! git push origin HEAD:"$REF_NAME"; then
           echo "::error::Failed to push"
           echo "committed=false" >> "$GITHUB_OUTPUT"
           exit 1
         fi
       fi
       echo "::notice::Changes committed and pushed"
       echo "committed=true" >> "$GITHUB_OUTPUT"
     else
       echo "::notice::No changes to commit"
       echo "committed=false" >> "$GITHUB_OUTPUT"
     fi
+  env:
+    DOWNLOAD_OUTCOME: ${{ steps.download.outcome }}
+    COMMIT_MESSAGE: ${{ inputs.commit-message }}
+    PUSH_BRANCH: ${{ inputs.push-branch }}
+    REF_NAME: ${{ inputs.ref || github.ref_name }}
  • Apply / Chat
Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies that git push can fail in a detached HEAD state, but the proposed fix of pushing to github.ref_name is not universally correct, as it would fail when trying to push to a tag.

Medium
  • More

Previous suggestions

✅ Suggestions up to commit 5e09c2c
CategorySuggestion                                                                                                                                    Impact
Security
Avoid unsafe force pushes

Replace git push --force with the safer git push --force-with-lease to prevent
overwriting remote changes in case of race conditions.

.github/workflows/commit-changes.yml [67-79]

 if [ -n "$PUSH_BRANCH" ]; then
-  if ! git push origin HEAD:"$PUSH_BRANCH" --force; then
+  if ! git push origin HEAD:"$PUSH_BRANCH" --force-with-lease; then
     echo "::error::Failed to push to $PUSH_BRANCH"
     echo "committed=false" >> "$GITHUB_OUTPUT"
     exit 1
   fi
 else
   if ! git push; then
     echo "::error::Failed to push"
     echo "committed=false" >> "$GITHUB_OUTPUT"
     exit 1
   fi
 fi
Suggestion importance[1-10]: 8

__

Why: The suggestion correctly points out the risk of using git push --force and proposes using --force-with-lease as a safer alternative to prevent race conditions and accidental overwrites, which is a critical improvement for an automated CI workflow.

Medium
Possible issue
Allow artifact downloads permission
Suggestion Impact:The workflow job permissions were updated to include `actions: read`, matching the suggestion to allow reliable artifact downloads.

code diff:

     permissions:
       contents: write
+      actions: read

Add actions: read permission to the commit job to ensure the download-artifact
step can reliably fetch artifacts in restricted environments.

.github/workflows/commit-changes.yml [38-39]

 permissions:
   contents: write
+  actions: read

[Suggestion processed]

Suggestion importance[1-10]: 6

__

Why: The suggestion correctly identifies that actions: read permission might be necessary for actions/download-artifact@v4 in repositories with restricted permissions, improving the workflow's robustness and preventing silent failures.

Low
✅ Suggestions up to commit 8d46d3a
CategorySuggestion                                                                                                                                    Impact
Possible issue
Fail on missing artifact
Suggestion Impact:The commit added explicit failure handling and clearer error messages for `git apply`, `git commit`, and `git push` (exiting with errors and setting `committed=false`), aligning with the suggestion’s goal of not masking failures. However, it did not remove `continue-on-error: true` from the artifact download step nor add an explicit "missing changes.patch" check.

code diff:

           if [ -f changes.patch ] && [ -s changes.patch ]; then
-            git apply --index changes.patch
+            if ! git apply --index changes.patch; then
+              echo "::error::Failed to apply patch"
+              echo "committed=false" >> "$GITHUB_OUTPUT"
+              exit 1
+            fi
             git config --local user.email "[email protected]"
             git config --local user.name "Selenium CI Bot"
-            git commit -m "$COMMIT_MESSAGE"
+            if ! git commit -m "$COMMIT_MESSAGE"; then
+              echo "::error::Failed to commit changes"
+              echo "committed=false" >> "$GITHUB_OUTPUT"
+              exit 1
+            fi
             if [ -n "$PUSH_BRANCH" ]; then
-              git push origin HEAD:"$PUSH_BRANCH" --force
+              if ! git push origin HEAD:"$PUSH_BRANCH" --force; then
+                echo "::error::Failed to push to $PUSH_BRANCH"
+                echo "committed=false" >> "$GITHUB_OUTPUT"
+                exit 1
+              fi
             else
-              git push
+              if ! git push; then
+                echo "::error::Failed to push"
+                echo "committed=false" >> "$GITHUB_OUTPUT"
+                exit 1
+              fi

Remove continue-on-error: true from the artifact download step and add an
explicit check for the patch file's existence to avoid masking failures and
provide clearer error messages.

.github/workflows/commit-changes.yml [46-88]

 - name: Download patch
   uses: actions/download-artifact@v4
   with:
     name: ${{ inputs.artifact-name }}
-  continue-on-error: true
 - name: Apply and commit
   id: commit
   run: |
-    if [ -f changes.patch ] && [ -s changes.patch ]; then
+    if [ ! -f changes.patch ]; then
+      echo "::error::Expected changes.patch artifact but it was not downloaded"
+      echo "committed=false" >> "$GITHUB_OUTPUT"
+      exit 1
+    fi
+
+    if [ -s changes.patch ]; then
       if ! git apply --index changes.patch; then
         echo "::error::Failed to apply patch"
         echo "committed=false" >> "$GITHUB_OUTPUT"
         exit 1
       fi
       git config --local user.email "[email protected]"
       git config --local user.name "Selenium CI Bot"
       if ! git commit -m "$COMMIT_MESSAGE"; then
         echo "::error::Failed to commit changes"
         echo "committed=false" >> "$GITHUB_OUTPUT"
         exit 1
       fi
       if [ -n "$PUSH_BRANCH" ]; then
         if ! git push origin HEAD:"$PUSH_BRANCH" --force; then
           echo "::error::Failed to push to $PUSH_BRANCH"
           echo "committed=false" >> "$GITHUB_OUTPUT"
           exit 1
         fi
       else
         if ! git push; then
           echo "::error::Failed to push"
           echo "committed=false" >> "$GITHUB_OUTPUT"
           exit 1
         fi
       fi
       echo "::notice::Changes committed and pushed"
       echo "committed=true" >> "$GITHUB_OUTPUT"
     else
       echo "::notice::No changes to commit"
       echo "committed=false" >> "$GITHUB_OUTPUT"
     fi
   env:
     COMMIT_MESSAGE: ${{ inputs.commit-message }}
     PUSH_BRANCH: ${{ inputs.push-branch }}

[Suggestion processed]

Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies that continue-on-error: true can mask failures, and improving the robustness of this new reusable workflow by providing clearer failure states is a valuable improvement.

Medium
Learned
best practice
Validate inputs and fail fast
Suggestion Impact:The commit implemented fail-fast/guarded command execution by wrapping `git apply`, `git commit`, and `git push` in `if ! ...; then` blocks that emit GitHub Actions errors and exit non-zero. However, it did not add `set -euo pipefail`, did not validate/trim `COMMIT_MESSAGE`, and did not change the PUSH_BRANCH check to use `${PUSH_BRANCH:-}`.

code diff:

           if [ -f changes.patch ] && [ -s changes.patch ]; then
-            git apply --index changes.patch
+            if ! git apply --index changes.patch; then
+              echo "::error::Failed to apply patch"
+              echo "committed=false" >> "$GITHUB_OUTPUT"
+              exit 1
+            fi
             git config --local user.email "[email protected]"
             git config --local user.name "Selenium CI Bot"
-            git commit -m "$COMMIT_MESSAGE"
+            if ! git commit -m "$COMMIT_MESSAGE"; then
+              echo "::error::Failed to commit changes"
+              echo "committed=false" >> "$GITHUB_OUTPUT"
+              exit 1
+            fi
             if [ -n "$PUSH_BRANCH" ]; then
-              git push origin HEAD:"$PUSH_BRANCH" --force
+              if ! git push origin HEAD:"$PUSH_BRANCH" --force; then
+                echo "::error::Failed to push to $PUSH_BRANCH"
+                echo "committed=false" >> "$GITHUB_OUTPUT"
+                exit 1
+              fi
             else
-              git push
+              if ! git push; then
+                echo "::error::Failed to push"
+                echo "committed=false" >> "$GITHUB_OUTPUT"
+                exit 1
+              fi
             fi

Validate that COMMIT_MESSAGE is non-empty (and optionally trim it) and enable
strict shell options to prevent unexpected behavior from empty inputs or failing
commands.

.github/workflows/commit-changes.yml [51-85]

 - name: Apply and commit
   id: commit
   run: |
+    set -euo pipefail
+
     if [ -f changes.patch ] && [ -s changes.patch ]; then
+      if [ -z "${COMMIT_MESSAGE//[[:space:]]/}" ]; then
+        echo "::error::Commit message is required"
+        echo "committed=false" >> "$GITHUB_OUTPUT"
+        exit 1
+      fi
+
       if ! git apply --index changes.patch; then
         echo "::error::Failed to apply patch"
         echo "committed=false" >> "$GITHUB_OUTPUT"
         exit 1
       fi
       git config --local user.email "[email protected]"
       git config --local user.name "Selenium CI Bot"
       if ! git commit -m "$COMMIT_MESSAGE"; then
         echo "::error::Failed to commit changes"
         echo "committed=false" >> "$GITHUB_OUTPUT"
         exit 1
       fi
-      if [ -n "$PUSH_BRANCH" ]; then
+      if [ -n "${PUSH_BRANCH:-}" ]; then
         if ! git push origin HEAD:"$PUSH_BRANCH" --force; then
           echo "::error::Failed to push to $PUSH_BRANCH"
           echo "committed=false" >> "$GITHUB_OUTPUT"
           exit 1
         fi
       else
         if ! git push; then
           echo "::error::Failed to push"
           echo "committed=false" >> "$GITHUB_OUTPUT"
           exit 1
         fi
       fi
       echo "::notice::Changes committed and pushed"
       echo "committed=true" >> "$GITHUB_OUTPUT"
     else
       echo "::notice::No changes to commit"
       echo "committed=false" >> "$GITHUB_OUTPUT"
     fi

[Suggestion processed]

Suggestion importance[1-10]: 6

__

Why:
Relevant best practice - Add explicit validation/guards at integration boundaries (workflow inputs/env) by trimming/checking presence before use.

Low
✅ Suggestions up to commit 83eac7c
CategorySuggestion                                                                                                                                    Impact
Possible issue
Grant permissions to create PRs

Add permissions: { pull-requests: write } to the create-pr job to allow it to
create pull requests.

.github/workflows/pin-browsers.yml [31-54]

 create-pr:
   name: Create Pull Request
   needs: push-changes
   if: github.event.repository.fork == false && needs.push-changes.outputs.changes-committed == 'true'
   runs-on: ubuntu-latest
+  permissions:
+    contents: read
+    pull-requests: write
   steps:
     - name: Checkout
       uses: actions/checkout@v4
     - name: Create Pull Request
       env:
         GH_TOKEN: ${{ secrets.SELENIUM_CI_TOKEN }}
       run: |
         existing=$(gh pr list --head pinned-browser-updates --json number --jq '.[0].number // empty')
         if [ -n "$existing" ]; then
           echo "::notice::PR #$existing already exists"
         else
           gh pr create \
             --head pinned-browser-updates \
             --base trunk \
             --title "[dotnet][rb][java][js][py] Automated Browser Version Update" \
             --body "This is an automated pull request to update pinned browsers and drivers
 
         Merge after verify the new browser versions properly passing the tests and no bugs need to be filed"
         fi
Suggestion importance[1-10]: 8

__

Why: The suggestion correctly identifies that the create-pr job is missing the necessary pull-requests: write permission, which would cause the gh pr create command to fail. This is a critical fix for the workflow's functionality.

Medium
Safer force pushes to branches

Use git push --force-with-lease instead of --force to prevent accidentally
overwriting concurrent changes on the remote branch.

.github/workflows/commit-changes.yml [60-64]

 if [ -n "$PUSH_BRANCH" ]; then
-  git push origin HEAD:"$PUSH_BRANCH" --force
+  git push origin HEAD:"$PUSH_BRANCH" --force-with-lease
 else
   git push
 fi
Suggestion importance[1-10]: 7

__

Why: The suggestion correctly identifies a potential race condition and proposes using --force-with-lease for a safer force push, which is a best practice in CI/CD pipelines to prevent data loss.

Medium
Learned
best practice
Declare required artifact permissions
Suggestion Impact:The workflow job permissions were updated to include `actions: read`, matching the suggestion to avoid relying on implicit artifact access permissions.

code diff:

     permissions:
       contents: write
+      actions: read

Add actions: read to the job permissions because the workflow downloads
artifacts; this avoids relying on implicit/default permissions that may differ
across repos/settings.

.github/workflows/commit-changes.yml [38-39]

 permissions:
   contents: write
+  actions: read
Suggestion importance[1-10]: 6

__

Why:
Relevant best practice - Request least privileges explicitly; ensure required permissions (like artifact read) are declared for jobs that download artifacts.

Low
Avoid brittle multiline CLI quoting
Suggestion Impact:The commit incorporated the suggested robustness improvement to the `gh pr list` jq expression by adding `// empty` so the `existing` variable becomes empty instead of `null` when no PR exists. It did not implement the main heredoc/`--body-file` change.

code diff:

-          existing=$(gh pr list --head pinned-browser-updates --json number --jq '.[0].number')
+          existing=$(gh pr list --head pinned-browser-updates --json number --jq '.[0].number // empty')

Avoid embedding a multi-line --body string directly in the command; write the
body via a heredoc and pass it using --body-file to prevent quoting/indentation
issues.

.github/workflows/pin-browsers.yml [42-54]

 run: |
   existing=$(gh pr list --head pinned-browser-updates --json number --jq '.[0].number // empty')
   if [ -n "$existing" ]; then
     echo "::notice::PR #$existing already exists"
   else
+    cat > pr-body.txt <<'EOF'
+This is an automated pull request to update pinned browsers and drivers
+
+Merge after verify the new browser versions properly passing the tests and no bugs need to be filed
+EOF
     gh pr create \
       --head pinned-browser-updates \
       --base trunk \
       --title "[dotnet][rb][java][js][py] Automated Browser Version Update" \
-      --body "This is an automated pull request to update pinned browsers and drivers
-
-  Merge after verify the new browser versions properly passing the tests and no bugs need to be filed"
+      --body-file pr-body.txt
   fi
Suggestion importance[1-10]: 5

__

Why:
Relevant best practice - Prefer robust input handling at integration boundaries; avoid brittle multi-line shell quoting when building API/CLI payloads.

Low
✅ Suggestions up to commit af68a41
CategorySuggestion                                                                                                                                    Impact
Security
Fix command injection in commit

To prevent command injection, pass the commit message to git commit via standard
input using echo "$COMMIT_MESSAGE" | git commit --file - instead of using the -m
flag.

.github/workflows/commit-changes.yml [58]

-git commit -m "$COMMIT_MESSAGE"
+echo "$COMMIT_MESSAGE" | git commit --file -
Suggestion importance[1-10]: 9

__

Why: The suggestion correctly identifies a command injection vulnerability and provides a standard, effective mitigation, significantly improving the security of the new workflow.

High
Possible issue
Fail on patch application errors
Suggestion Impact:The workflow step's run block was updated to include `set -e`, ensuring the script exits on errors such as a failed `git apply`.

code diff:

         run: |
+          set -e
           if [ -f changes.patch ] && [ -s changes.patch ]; then

Add set -e to the beginning of the run block to ensure the script exits
immediately if any command, such as git apply, fails.

.github/workflows/commit-changes.yml [54-69]

-if [ -f changes.patch ] && [ -s changes.patch ]; then
-  git apply --index changes.patch
-  git config --local user.email "[email protected]"
-  git config --local user.name "Selenium CI Bot"
-  git commit -m "$COMMIT_MESSAGE"
-  […]
-else
-  echo "::notice::No changes to commit"
-  echo "committed=false" >> "$GITHUB_OUTPUT"
-fi
+run: |
+  set -e
+  if [ -f changes.patch ] && [ -s changes.patch ]; then
+    git apply --index changes.patch
+    […]
+  else
+    echo "::notice::No changes to commit"
+    echo "committed=false" >> "$GITHUB_OUTPUT"
+  fi

[Suggestion processed]

Suggestion importance[1-10]: 8

__

Why: The suggestion correctly identifies that the script would silently continue if git apply fails; adding set -e is a crucial change to ensure the job fails immediately on error.

Medium
Allow workflow to error on missing patch

Add a fail-if-no-changes boolean input to the reusable workflow to allow callers
to specify whether the job should fail if no patch is found, preserving the
behavior of the original workflows.

.github/workflows/commit-changes.yml [3-23]

 on:
   workflow_call:
     inputs:
       artifact-name:
-        description: Name of artifact containing changes.patch
-        required: true
-        type: string
+
       commit-message:
-        description: Commit message
-        required: true
-        type: string
+
       ref:
         …
       push-branch:
         …
+      fail-if-no-changes:
+        description: Whether to fail the job if no changes.patch is found
+        required: false
+        type: boolean
+        default: false
+
+steps:
+  - name: Apply and commit
+    id: commit
+    run: |
+      set -e
+      if [ -f changes.patch ] && [ -s changes.patch ]; then
+        git apply --index changes.patch
+        […]
+        echo "committed=true" >> "$GITHUB_OUTPUT"
+      else
+        echo "::notice::No changes to commit"
+        echo "committed=false" >> "$GITHUB_OUTPUT"
+        if [ "${FAIL_IF_NO_CHANGES}" = "true" ]; then
+          echo "::error::No patch applied"; exit 1
+        fi
+      fi
+    env:
+      COMMIT_MESSAGE: ${{ inputs.commit-message }}
+      PUSH_BRANCH: ${{ inputs.push-branch }}
+      FAIL_IF_NO_CHANGES: ${{ inputs.fail-if-no-changes }}
Suggestion importance[1-10]: 7

__

Why: This suggestion correctly identifies a semantic difference between the old and new workflows and proposes a flexible solution to restore the original behavior where needed, improving the reusability and correctness of the new workflow.

Medium
General
Enable full git fetch

Add fetch-depth: 0 to the actions/checkout step to ensure the full git history
is fetched, which is necessary for force-pushing.

.github/workflows/commit-changes.yml [41-45]

 - name: Checkout
   uses: actions/checkout@v4
   with:
     ref: ${{ inputs.ref || github.ref }}
     token: ${{ secrets.SELENIUM_CI_TOKEN || github.token }}
+    fetch-depth: 0
Suggestion importance[1-10]: 6

__

Why: Adding fetch-depth: 0 ensures the full git history is available, preventing potential errors during the git push --force operation and increasing the workflow's robustness.

Low
Exit early if PR exists

Modify the script to exit with a success code immediately after finding an
existing pull request, rather than silently finishing the step.

.github/workflows/pin-browsers.yml [43-54]

-existing=$(gh pr list --head pinned-browser-updates --json number --jq '.[0].number')
-if [ -n "$existing" ]; then
-  echo "::notice::PR #$existing already exists"
-else
-  gh pr create \
-    --head pinned-browser-updates \
-    --base trunk \
-    --title "[dotnet][rb][java][js][py] Automated Browser Version Update" \
-    --body "This is an automated pull request to update pinned browsers and drivers
+if gh pr view --json number --jq .number pinned-browser-updates > /dev/null 2>&1; then
+  echo "::notice::PR from pinned-browser-updates already exists."
+  exit 0
+fi
+gh pr create \
+  --head pinned-browser-updates \
+  --base trunk \
+  --title "[dotnet][rb][java][js][py] Automated Browser Version Update" \
+  --body "This is an automated pull request to update pinned browsers and drivers
 
 Merge after verify the new browser versions properly passing the tests and no bugs need to be filed"
-fi
Suggestion importance[1-10]: 5

__

Why: The suggestion improves the script's clarity by exiting explicitly if a pull request already exists, making the workflow's behavior more transparent and robust.

Low
Learned
best practice
Validate workflow inputs before use
Suggestion Impact:The commit adopted part of the suggestion by adding a shell safety setting (`set -e`) at the start of the "Apply and commit" step. It did not implement the proposed input trimming/validation nor `set -euo pipefail`.

code diff:

@@ -51,6 +51,7 @@
       - name: Apply and commit
         id: commit
         run: |
+          set -e
           if [ -f changes.patch ] && [ -s changes.patch ]; then

Validate/sanitize COMMIT_MESSAGE and PUSH_BRANCH (non-empty, trimmed, and
restricted charset) before using them, to avoid unexpected behavior or refspec
injection.

.github/workflows/commit-changes.yml [51-72]

 - name: Apply and commit
   id: commit
   run: |
+    set -euo pipefail
+
+    COMMIT_MESSAGE="${COMMIT_MESSAGE#"${COMMIT_MESSAGE%%[![:space:]]*}"}"
+    COMMIT_MESSAGE="${COMMIT_MESSAGE%"${COMMIT_MESSAGE##*[![:space:]]}"}"
+    if [ -z "$COMMIT_MESSAGE" ]; then
+      echo "::error::commit-message must be non-empty"
+      exit 1
+    fi
+
+    if [ -n "${PUSH_BRANCH:-}" ] && ! [[ "$PUSH_BRANCH" =~ ^[A-Za-z0-9._/-]+$ ]]; then
+      echo "::error::push-branch contains invalid characters"
+      exit 1
+    fi
+
     if [ -f changes.patch ] && [ -s changes.patch ]; then
       git apply --index changes.patch
       git config --local user.email "[email protected]"
       git config --local user.name "Selenium CI Bot"
       git commit -m "$COMMIT_MESSAGE"
-      if [ -n "$PUSH_BRANCH" ]; then
+      if [ -n "${PUSH_BRANCH:-}" ]; then
         git push origin HEAD:"$PUSH_BRANCH" --force
       else
         git push
       fi
       echo "::notice::Changes committed and pushed"
       echo "committed=true" >> "$GITHUB_OUTPUT"
     else
       echo "::notice::No changes to commit"
       echo "committed=false" >> "$GITHUB_OUTPUT"
     fi
   env:
     COMMIT_MESSAGE: ${{ inputs.commit-message }}
     PUSH_BRANCH: ${{ inputs.push-branch }}

[Suggestion processed]

Suggestion importance[1-10]: 6

__

Why:
Relevant best practice - Add explicit validation/guards at integration boundaries (workflow inputs/env) before using them in shell commands.

Low
Guard against null CLI output
Suggestion Impact:Updated the `gh pr list` jq expression to `.[0].number // empty`, ensuring an empty string is returned when no PR exists before the `-n` check.

code diff:

-          existing=$(gh pr list --head pinned-browser-updates --json number --jq '.[0].number')
+          existing=$(gh pr list --head pinned-browser-updates --json number --jq '.[0].number // empty')

Make the gh pr list parsing robust by returning an empty string when no PR
exists (instead of null) before checking -n.

.github/workflows/pin-browsers.yml [39-54]

 - name: Create Pull Request
   env:
     GH_TOKEN: ${{ secrets.SELENIUM_CI_TOKEN }}
   run: |
-    existing=$(gh pr list --head pinned-browser-updates --json number --jq '.[0].number')
+    existing=$(gh pr list --head pinned-browser-updates --json number --jq '.[0].number // empty')
     if [ -n "$existing" ]; then
       echo "::notice::PR #$existing already exists"
     else
       gh pr create \
         --head pinned-browser-updates \
         --base trunk \
         --title "[dotnet][rb][java][js][py] Automated Browser Version Update" \
         --body "This is an automated pull request to update pinned browsers and drivers
 
     Merge after verify the new browser versions properly passing the tests and no bugs need to be filed"
     fi

[Suggestion processed]

Suggestion importance[1-10]: 5

__

Why:
Relevant best practice - Add explicit validation/guards at integration boundaries (CLI/JSON outputs) before using values.

Low

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces a reusable workflow commit-changes.yml to eliminate code duplication across multiple CI workflows that follow a common pattern: generate changes, download a patch artifact, apply the patch, commit, and push.

Changes:

  • Added new reusable workflow .github/workflows/commit-changes.yml with configurable inputs for artifact name, commit message, git ref, and push branch
  • Refactored 5 existing workflows to use the new reusable workflow: release.yml, pre-release.yml, pin-browsers.yml, ci-renovate-rbe.yml, and ci-lint.yml
  • Simplified pin-browsers.yml to use gh CLI for PR creation instead of peter-evans/create-pull-request action

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
.github/workflows/commit-changes.yml New reusable workflow that handles downloading patch artifacts, applying changes, committing, and pushing to a branch with configurable parameters
.github/workflows/release.yml Refactored update-version job to use the new reusable workflow
.github/workflows/pre-release.yml Refactored push-rust-version job to use the new reusable workflow; updated comment on line 33
.github/workflows/pin-browsers.yml Split logic into push-changes (using reusable workflow) and create-pr jobs; switched from peter-evans/create-pull-request to gh CLI
.github/workflows/ci-renovate-rbe.yml Refactored commit-repins job to use the new reusable workflow
.github/workflows/ci-lint.yml Refactored commit-fixes job to use the new reusable workflow; moved fork check to job-level condition

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

@titusfortner titusfortner force-pushed the add-commit-changes-workflow branch from e6c02f7 to 51a500e Compare January 22, 2026 20:34
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 2 comments.

titusfortner and others added 3 commits January 22, 2026 15:29
- Fix typo in pre-release.yml comment ("Run rust jobs run" -> "Run rust jobs")
- Improve error handling in commit-changes.yml: replace set -e with explicit
  error checking to ensure committed output is always set before exit

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Use heredoc to avoid YAML indentation issues in multi-line string.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.

- Add actions: read permission for reliable artifact access
- Check download outcome to distinguish between "artifact not found"
  and "patch was empty"

Co-Authored-By: Claude Opus 4.5 <[email protected]>
This was referenced Feb 22, 2026
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] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: PhilipWoulfe <[email protected]>
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 Review effort 3/5

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants