Skip to content

Conversation

@titusfortner
Copy link
Member

@titusfortner titusfortner commented Dec 30, 2025

User description

🔗 Related Issues

Ruby implementation of #16809

We are mostly relying on RBE to tell us if there is a problem, this is supposed to be extra information that strikes a good balance between information and execution time.

💥 What does this PR do?

  • ci.yml kicks off on every commit. It runs the new and improved check-bazel-targets.sh

  • Instead of just checking to see if there are any rb targets and running the whole ci-ruby workflow, the unique set of applicable test targets are passed from the script to ci-ruby.yml and browser tests are only run on those

  • Additionally, docs/steep/unit tests are only run if the PR includes "[rb]" or is executed manually (passed into ci-ruby.yml from ci.yml with a run-full-suite argument.

  • Even if tagged [rb], if only a subset of ruby tests are matched, only those will be run

  • Removed build instead of gating all tests on it. Most of the build is executed by the applicable tests as necessary. If there is something weird that breaks building, it'll get detected in nightly run

  • It's now 2 jobs instead of 6, but effective changes are:

    • Changes firefox/windows to firefox-beta/windows
    • Changes chrome/windows to chrome-beta/windows
    • Adds chrome-beta-remote/windows
    • Adds firefox-beta-remote/windows
    • Removes Edge Windows
    • Removes Edge Remote Windows
    • Removes Chrome Mac
    • Removes Chrome Firefox

Update: fixed so it run edge remote like previously and doesn't run chrome/firefox remote

🔧 Implementation Notes

I'm picking betas instead of production browsers as a way to get additional information earlier. Failures in new browser versions will still be managed in a PR updating them, not in trunk.

💡 Additional Considerations

This probably doesn't decrease the total amount of Ruby testing by enough, so we probably need to add more filters, but I think this is a good place to start.


PR Type

Enhancement, Tests


Description

  • Implement selective Ruby test filtering based on changed files

  • Limit test universe to binding roots for faster CI execution

  • Remove build job and consolidate to two browser test jobs

  • Filter test targets by [rb] tag and file changes


Diagram Walkthrough

flowchart LR
  A["Changed Files"] -->|"bazel query"| B["Affected Targets"]
  B -->|"Filter to //rb"| C["Ruby Targets"]
  C -->|"Check [rb] tag"| D["Run Full Suite"]
  D -->|"Yes"| E["Docs + Steep + Unit Tests"]
  D -->|"No"| F["Browser Tests Only"]
  E --> G["Filter Targets Job"]
  F --> G
  G -->|"//rb targets"| H["Browser Tests<br/>chrome-beta/firefox-beta"]
Loading

File Walkthrough

Relevant files
Enhancement
check-bazel-targets.sh
Restrict target universe and improve query logic                 

scripts/github-actions/check-bazel-targets.sh

  • Add strict error handling with set -euo pipefail
  • Limit bazel query universe to binding roots only
  • Filter out manual test tags from results
  • Return unique sorted set of test targets
  • Fix bazel query syntax to properly handle file-to-target mapping
+23/-14 
Configuration changes
ci-ruby.yml
Refactor workflow with selective test filtering                   

.github/workflows/ci-ruby.yml

  • Remove build job dependency from all test jobs
  • Add workflow inputs for targets and run-full-suite parameters
  • Introduce new filter-targets job to filter Ruby-specific targets
  • Consolidate browser tests to chrome-beta and firefox-beta on Windows
    only
  • Gate docs, steep, and unit tests on run-full-suite input
  • Update integration tests to use filtered targets output
+40/-52 
ci.yml
Wire target filtering to Ruby workflow inputs                       

.github/workflows/ci.yml

  • Pass filtered targets from check job to Ruby workflow
  • Add run-full-suite logic based on [rb] tag and event type
  • Remove commit message check for [rb] tag
  • Enable full suite for scheduled, manual, and workflow_call events
+9/-1     

@selenium-ci selenium-ci added the B-build Includes scripting, bazel and CI integrations label Dec 30, 2025
@qodo-code-review
Copy link
Contributor

qodo-code-review bot commented Dec 30, 2025

PR Compliance Guide 🔍

Below is a summary of compliance checks for this PR:

Security Compliance
🟢
No security concerns identified No security vulnerabilities detected by AI analysis. Human verification advised for critical code.
Ticket Compliance
🟡
🎫 #5678
🔴 Investigate and fix the repeated ChromeDriver instantiation issue that results in "Error:
ConnectFailure (Connection refused)" on subsequent driver creations (Ubuntu 16.04 /
Selenium 3.9.0 / Chrome 65 / ChromeDriver 2.35).
🟡
🎫 #1234
🔴 Restore/ensure that click() triggers JavaScript in a link's href for Firefox (regression
from 2.47.1 to 2.48.x) as shown in the provided reproduction.
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:
Incorrect query input: The script attempts to map changed files to Bazel targets but calls bazel query with the
literal string file (and suppresses errors), which can silently produce incorrect/empty
target sets and cause missed test execution.

Referred Code
for file in $affected_files; do
  if query_output=$(bazel query --keep_going --noshow_progress "file" 2>/dev/null); then
    bazel_targets+=(${query_output})
  fi

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 workflow input: The workflow accepts inputs.targets and passes it into a shell loop without validation or
strict parsing, which may allow unexpected values to influence which Bazel targets are
executed.

Referred Code
targets="${{ inputs.targets }}"
filtered=()

for t in $targets; do
  [[ "$t" == //rb* ]] && filtered+=("$t")
done

if [ ${#filtered[@]} -eq 0 ]; then
  echo "targets=//rb/spec/..." >> "$GITHUB_OUTPUT"
else
  echo "targets=${filtered[*]}" >> "$GITHUB_OUTPUT"
fi

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
Contributor

qodo-code-review bot commented Dec 30, 2025

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Fix bazel query variable use

Fix the bazel query by using the $file variable to query the correct changed
file, instead of the literal string "file".

scripts/github-actions/check-bazel-targets.sh [18]

-if query_output=$(bazel query --keep_going --noshow_progress "file" 2>/dev/null); then
+if query_output=$(bazel query --keep_going --noshow_progress "${file}" 2>/dev/null); then
  • Apply / Chat
Suggestion importance[1-10]: 10

__

Why: This suggestion identifies a critical bug where the script queries the literal string "file" instead of the filename variable, which would cause the target detection to fail.

High
Fix incorrect GitHub Actions output

Remove the single quotes when setting the bazel-targets output to prevent it
from being treated as a single string by downstream jobs.

scripts/github-actions/check-bazel-targets.sh [44]

-echo "bazel-targets='${bazel_targets[*]}'" | tee -a "$GITHUB_OUTPUT"
+echo "bazel-targets=${bazel_targets[*]}" >> "$GITHUB_OUTPUT"
  • Apply / Chat
Suggestion importance[1-10]: 9

__

Why: This suggestion correctly identifies and fixes a critical bug where single quotes in the GitHub Action output would break downstream jobs by passing the target list as a single string.

High
Consolidate and quote query string

Consolidate the multi-line bazel query into a single variable before execution
to improve readability and prevent potential syntax issues.

scripts/github-actions/check-bazel-targets.sh [33-37]

-if query_output=$(bazel query \
-  --keep_going \
-  --noshow_progress \
-  "kind(test, rdeps(${BINDINGS_UNIVERSE}, set(${bazel_targets[@]}))) \
-   except attr('tags','manual', ${BINDINGS_UNIVERSE})" 2>/dev/null); then
+query_expr="kind(test, rdeps(${BINDINGS_UNIVERSE}, set(${bazel_targets[*]}))) except attr('tags','manual', ${BINDINGS_UNIVERSE})"
+if query_output=$(bazel query --keep_going --noshow_progress "$query_expr" 2>/dev/null); then
  • Apply / Chat
Suggestion importance[1-10]: 3

__

Why: The suggestion improves code readability by consolidating a multi-line bazel query into a variable, but the original code is functionally correct.

Low
Learned
best practice
Validate and normalize workflow input

Normalize and validate inputs.targets before iterating (trim, handle newlines,
and avoid unsafe word-splitting) so empty/odd input formats don’t break
filtering.

.github/workflows/ci-ruby.yml [90-102]

 run: |
   targets="${{ inputs.targets }}"
   filtered=()
+
+  # Normalize whitespace/newlines into spaces
+  targets="$(printf '%s' "$targets" | tr '\n\t' '  ')"
 
   for t in $targets; do
     [[ "$t" == //rb* ]] && filtered+=("$t")
   done
 
   if [ ${#filtered[@]} -eq 0 ]; then
     echo "targets=//rb/spec/..." >> "$GITHUB_OUTPUT"
   else
     echo "targets=${filtered[*]}" >> "$GITHUB_OUTPUT"
   fi
  • Apply / Chat
Suggestion importance[1-10]: 5

__

Why:
Relevant best practice - Add explicit validation and null/availability guards at integration boundaries by trimming inputs and checking presence before use.

Low
  • Update

@titusfortner titusfortner force-pushed the rb_filter_tests branch 3 times, most recently from 311fdeb to eb0f5e2 Compare January 5, 2026 18:49
@qodo-code-review
Copy link
Contributor

CI Feedback 🧐

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: Ruby / Unit Tests (3.2.8, windows) / Unit Tests (3.2.8, windows)

Failed stage: Run Bazel [❌]

Failed test name: //rb/spec/unit/selenium/webdriver/common:service

Failure summary:

The action failed because a Bazel test timed out on Windows:
- The test target
//rb/spec/unit/selenium/webdriver/common:service hit a hard timeout (TIMEOUT ... in 1800.0s),
resulting in 1 test FAILED and the Bazel command exiting with code 3.
- After the timeout, a
follow-up step attempted to parse build/bazel-console.log but the file did not exist (awk: fatal:
cannot open file </code>build/bazel-console.log<code> ... No such file or directory), causing an additional
failure with exit code 2.

Relevant error logs:
1:  ##[group]Runner Image Provisioner
2:  Hosted Compute Agent
...

674:  �[32mAnalyzing:�[0m 593 targets (151 packages loaded, 267 targets configured)
675:  �[32m[1 / 1]�[0m no actions running
676:  �[32mAnalyzing:�[0m 593 targets (193 packages loaded, 774 targets configured)
677:  �[32m[1 / 1]�[0m no actions running
678:  �[32mAnalyzing:�[0m 593 targets (207 packages loaded, 2533 targets configured)
679:  �[32m[1 / 1]�[0m no actions running
680:  �[32mAnalyzing:�[0m 593 targets (207 packages loaded, 4749 targets configured)
681:  �[32m[1 / 1]�[0m no actions running
682:  �[32mAnalyzing:�[0m 593 targets (220 packages loaded, 5265 targets configured)
683:  �[32m[1 / 1]�[0m no actions running
684:  �[33mDEBUG: �[0mD:/b/external/rules_jvm_external+/private/extensions/maven.bzl:295:14: WARNING: The following maven modules appear in multiple sub-modules with potentially different versions. Consider adding one of these to your root module to ensure consistent versions:
685:  org.seleniumhq.selenium:selenium-api
686:  org.seleniumhq.selenium:selenium-remote-driver
687:  �[33mDEBUG: �[0mD:/b/external/rules_jvm_external+/private/extensions/maven.bzl:295:14: WARNING: The following maven modules appear in multiple sub-modules with potentially different versions. Consider adding one of these to your root module to ensure consistent versions:
688:  com.google.code.findbugs:jsr305
689:  com.google.errorprone:error_prone_annotations
690:  com.google.guava:guava (versions: 30.1.1-jre, 31.0.1-android)
691:  �[32mAnalyzing:�[0m 593 targets (232 packages loaded, 5803 targets configured)
692:  �[32m[1 / 1]�[0m no actions running
693:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/auto/value/auto-value/1.10.4/auto-value-1.10.4.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
694:  �[32mAnalyzing:�[0m 593 targets (262 packages loaded, 9429 targets configured)
695:  �[32m[1 / 1]�[0m no actions running
696:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/auto/value/auto-value-annotations/1.11.0/auto-value-annotations-1.11.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
697:  �[32mAnalyzing:�[0m 593 targets (264 packages loaded, 9453 targets configured)
698:  �[32m[1 / 1]�[0m no actions running
699:  �[32mAnalyzing:�[0m 593 targets (264 packages loaded, 9453 targets configured)
700:  �[32m[1 / 1]�[0m no actions running
701:  �[32mAnalyzing:�[0m 593 targets (264 packages loaded, 9453 targets configured)
702:  �[32m[1 / 1]�[0m no actions running
703:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/jetbrains/kotlinx/kotlinx-metadata-jvm/0.5.0/kotlinx-metadata-jvm-0.5.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
704:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.8.0/kotlin-stdlib-jdk7-1.8.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
705:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.8.0/kotlin-stdlib-jdk8-1.8.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
706:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/jetbrains/annotations/13.0/annotations-13.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
707:  �[32mAnalyzing:�[0m 593 targets (282 packages loaded, 9527 targets configured)
708:  �[32m[1 / 1]�[0m no actions running
709:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-stdlib-common/1.8.0/kotlin-stdlib-common-1.8.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
710:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/jetbrains/kotlin/kotlin-stdlib/1.8.0/kotlin-stdlib-1.8.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
711:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/guava/guava-beta-checker/1.0/guava-beta-checker-1.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
712:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/guava/guava/33.4.0-jre/guava-33.4.0-jre.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
713:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/guava/failureaccess/1.0.2/failureaccess-1.0.2.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
714:  �[32mAnalyzing:�[0m 593 targets (315 packages loaded, 9699 targets configured)
715:  �[32m[1 / 1]�[0m no actions running
716:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/org/checkerframework/checker-qual/3.43.0/checker-qual-3.43.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
717:  �[32mAnalyzing:�[0m 593 targets (396 packages loaded, 10416 targets configured)
718:  �[32m[1 / 1]�[0m no actions running
719:  �[32mAnalyzing:�[0m 593 targets (428 packages loaded, 10544 targets configured)
720:  �[32m[1 / 1]�[0m no actions running
721:  �[32mAnalyzing:�[0m 593 targets (454 packages loaded, 10698 targets configured)
722:  �[32m[1 / 2]�[0m checking cached actions
723:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/dagger/dagger-compiler/2.43.2/dagger-compiler-2.43.2.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
724:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/dagger/dagger-spi/2.43.2/dagger-spi-2.43.2.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
725:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/devtools/ksp/symbol-processing-api/1.7.0-1.0.6/symbol-processing-api-1.7.0-1.0.6.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
726:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/google/googlejavaformat/google-java-format/1.18.1/google-java-format-1.18.1.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
727:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/com/squareup/javapoet/1.13.0/javapoet-1.13.0.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
728:  �[35mWARNING: �[0mDownload from https://bazel-mirror.storage.googleapis.com/repo1.maven.org/maven2/net/ltgt/gradle/incap/incap/0.2/incap-0.2.jar failed: class java.io.FileNotFoundException GET returned 404 Not Found
729:  �[32mAnalyzing:�[0m 593 targets (492 packages loaded, 10921 targets configured)
...

781:  ==> Locally signing trusted keys in keyring...
782:  -> Locally signed 5 keys.
783:  ==> Importing owner trust values...
784:  gpg: setting ownertrust to 4
785:  gpg: setting ownertrust to 4
786:  gpg: setting ownertrust to 4
787:  gpg: setting ownertrust to 4
788:  gpg: setting ownertrust to 4
789:  ==> Disabling revoked keys in keyring...
790:  -> Disabled 4 keys.
791:  ==> Updating trust database...
792:  gpg: marginals needed: 3  completes needed: 1  trust model: pgp
793:  gpg: depth: 0  valid:   1  signed:   5  trust: 0-, 0q, 0n, 0m, 0f, 1u
794:  gpg: depth: 1  valid:   5  signed:   6  trust: 0-, 0q, 0n, 5m, 0f, 0u
795:  gpg: depth: 2  valid:   3  signed:   2  trust: 3-, 0q, 0n, 0m, 0f, 0u
796:  gpg: error retrieving 'alexey.pawlow@gmail.com' via WKD: No data
797:  gpg: error reading key: No data
798:  gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
799:  gpg: key F40D263ECA25678A: "Alexey Pavlov (Alexpux) <alexey.pawlow@gmail.com>" not changed
800:  gpg: Total number processed: 1
801:  gpg:              unchanged: 1
802:  gpg: error retrieving 'david.macek.0@gmail.com' via WKD: Try again later
803:  gpg: error reading key: Try again later
804:  gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
805:  gpg: key 790AE56A1D3CFDDC: "David Macek (MSYS2 master key) <david.macek.0@gmail.com>" not changed
806:  gpg: Total number processed: 1
807:  gpg:              unchanged: 1
808:  gpg: error retrieving 'martellmalone@gmail.com' via WKD: Try again later
809:  gpg: error reading key: Try again later
810:  gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
811:  gpg: key DA7EF2ABAEEA755C: "Martell Malone (martell) <martellmalone@gmail.com>" not changed
812:  gpg: Total number processed: 1
813:  gpg:              unchanged: 1
814:  gpg: error retrieving 'reiter.christoph@gmail.com' via WKD: Try again later
815:  gpg: error reading key: Try again later
816:  gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
817:  gpg: key 755B8182ACD22879: "Christoph Reiter (MSYS2 master key) <reiter.christoph@gmail.com>" not changed
818:  gpg: Total number processed: 1
819:  gpg:              unchanged: 1
820:  gpg: error retrieving 'icquinteiro@gmail.com' via WKD: Try again later
821:  gpg: error reading key: Try again later
822:  gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
823:  gpg: key 9F418C233E652008: "Ignacio Casal Quinteiro <icquinteiro@gmail.com>" not changed
824:  gpg: Total number processed: 1
825:  gpg:              unchanged: 1
826:  gpg: error retrieving 'mingw.android@gmail.com' via WKD: Try again later
827:  gpg: error reading key: Try again later
828:  gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
829:  gpg: key BBE514E53E0D0813: "Ray Donnelly (MSYS2 Developer - master key) <mingw.android@gmail.com>" not changed
830:  gpg: Total number processed: 1
831:  gpg:              unchanged: 1
832:  gpg: error retrieving 'alexpux@gmail.com' via WKD: No data
833:  gpg: error reading key: No data
834:  gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
835:  gpg: key 5F92EFC1A47D45A1: "Alexey Pavlov (Alexpux) <alexpux@gmail.com>" not changed
836:  gpg: Total number processed: 1
837:  gpg:              unchanged: 1
838:  gpg: error retrieving 'david.macek.0@gmail.com' via WKD: Try again later
839:  gpg: error reading key: Try again later
840:  gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
841:  gpg: key 974C8BE49078F532: "David Macek <david.macek.0@gmail.com>" 3 new signatures
842:  gpg: key 974C8BE49078F532: "David Macek <david.macek.0@gmail.com>" 1 signature cleaned
843:  gpg: Total number processed: 1
844:  gpg:         new signatures: 3
845:  gpg:     signatures cleaned: 1
846:  gpg: marginals needed: 3  completes needed: 1  trust model: pgp
847:  gpg: depth: 0  valid:   1  signed:   5  trust: 0-, 0q, 0n, 0m, 0f, 1u
848:  gpg: depth: 1  valid:   5  signed:   7  trust: 0-, 0q, 0n, 5m, 0f, 0u
849:  gpg: depth: 2  valid:   4  signed:   2  trust: 4-, 0q, 0n, 0m, 0f, 0u
850:  gpg: next trustdb check due at 2026-04-10
851:  gpg: error retrieving 'reiter.christoph@gmail.com' via WKD: Try again later
852:  gpg: error reading key: Try again later
853:  gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
854:  gpg: key FA11531AA0AA7F57: "Christoph Reiter (MSYS2 development key) <reiter.christoph@gmail.com>" not changed
855:  gpg: Total number processed: 1
856:  gpg:              unchanged: 1
857:  gpg: error retrieving 'me@martellmalone.com' via WKD: Unknown host
858:  gpg: error reading key: Unknown host
859:  gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
860:  gpg: key 794DCF97F93FC717: "Martell Malone (martell) <me@martellmalone.com>" not changed
861:  gpg: Total number processed: 1
862:  gpg:              unchanged: 1
863:  gpg: error retrieving 'martellmalone@gmail.com' via WKD: Try again later
864:  gpg: error reading key: Try again later
865:  gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
866:  gpg: key D595C9AB2C51581E: "Martell Malone (MSYS2 Developer) <martellmalone@gmail.com>" not changed
867:  gpg: Total number processed: 1
868:  gpg:              unchanged: 1
869:  gpg: error retrieving 'mingw.android@gmail.com' via WKD: No data
870:  gpg: error reading key: No data
871:  gpg: refreshing 1 key from hkps://keyserver.ubuntu.com
...

1453:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
1454:  �[32m[1,353 / 2,534]�[0m Compiling src/google/protobuf/compiler/cpp/helpers.cc [for tool]; 13s local ... (4 actions running)
1455:  �[32mINFO: �[0mFrom Compiling src/google/protobuf/compiler/cpp/helpers.cc [for tool]:
1456:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
1457:  �[32mINFO: �[0mFrom Compiling absl/log/log_sink.cc [for tool]:
1458:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
1459:  �[32m[1,357 / 2,534]�[0m Compiling src/google/protobuf/compiler/rust/accessors/unsupported_field.cc [for tool]; 3s local ... (4 actions running)
1460:  �[32mINFO: �[0mFrom Compiling absl/log/internal/vlog_config.cc [for tool]:
1461:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
1462:  �[32m[1,359 / 2,534]�[0m Compiling src/google/protobuf/compiler/rust/accessors/unsupported_field.cc [for tool]; 4s local ... (4 actions running)
1463:  �[32mINFO: �[0mFrom Compiling absl/log/globals.cc [for tool]:
1464:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
1465:  �[32m[1,360 / 2,534]�[0m Compiling src/google/protobuf/compiler/rust/accessors/unsupported_field.cc [for tool]; 5s local ... (4 actions, 3 running)
1466:  �[32mINFO: �[0mFrom Compiling absl/log/internal/log_sink_set.cc [for tool]:
1467:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
1468:  �[32mINFO: �[0mFrom Compiling absl/base/internal/strerror.cc [for tool]:
1469:  cl : Command line warning D9002 : ignoring unknown option '-std=c++17'
...

5182:  �[32m[3,618 / 3,782]�[0m Running bundle install (@bundle//:bundle); 277s local ... (4 actions, 3 running)
5183:  �[32m[3,628 / 3,782]�[0m Running bundle install (@bundle//:bundle); 278s local ... (4 actions running)
5184:  �[32m[3,632 / 3,782]�[0m Running bundle install (@bundle//:bundle); 279s local ... (4 actions running)
5185:  �[32m[3,634 / 3,782]�[0m Running bundle install (@bundle//:bundle); 280s local ... (4 actions, 3 running)
5186:  �[32m[3,637 / 3,782]�[0m Running bundle install (@bundle//:bundle); 281s local ... (4 actions running)
5187:  �[32m[3,639 / 3,782]�[0m Running bundle install (@bundle//:bundle); 282s local ... (4 actions running)
5188:  �[32m[3,643 / 3,782]�[0m Running bundle install (@bundle//:bundle); 283s local ... (4 actions running)
5189:  �[32m[3,647 / 3,782]�[0m Running bundle install (@bundle//:bundle); 284s local ... (4 actions running)
5190:  �[32m[3,651 / 3,782]�[0m Running bundle install (@bundle//:bundle); 285s local ... (4 actions running)
5191:  �[32m[3,660 / 3,782]�[0m Running bundle install (@bundle//:bundle); 286s local ... (3 actions running)
5192:  �[32m[3,661 / 3,782]�[0m Running bundle install (@bundle//:bundle); 287s local ... (2 actions running)
5193:  �[32m[3,662 / 3,782]�[0m Running bundle install (@bundle//:bundle); 288s local ... (2 actions running)
5194:  �[32m[3,663 / 3,782]�[0m Running bundle install (@bundle//:bundle); 291s local ... (2 actions, 1 running)
5195:  �[32m[3,669 / 3,782]�[0m Running bundle install (@bundle//:bundle); 292s local ... (2 actions running)
5196:  �[32mINFO: �[0mFrom Building java/src/org/openqa/selenium/remote/libapi-class.jar (64 source files):
5197:  java\src\org\openqa\selenium\remote\ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5198:  private final ErrorCodes errorCodes;
5199:  ^
5200:  java\src\org\openqa\selenium\remote\ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5201:  this.errorCodes = new ErrorCodes();
5202:  ^
5203:  java\src\org\openqa\selenium\remote\ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5204:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
5205:  ^
5206:  java\src\org\openqa\selenium\remote\Response.java:100: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5207:  ErrorCodes errorCodes = new ErrorCodes();
5208:  ^
5209:  java\src\org\openqa\selenium\remote\Response.java:100: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5210:  ErrorCodes errorCodes = new ErrorCodes();
5211:  ^
5212:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5213:  response.setStatus(ErrorCodes.SUCCESS);
5214:  ^
5215:  java\src\org\openqa\selenium\remote\ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5216:  response.setState(ErrorCodes.SUCCESS_STRING);
5217:  ^
5218:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5219:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
5220:  ^
5221:  java\src\org\openqa\selenium\remote\W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5222:  new ErrorCodes().getExceptionType((String) rawError);
5223:  ^
5224:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5225:  private final ErrorCodes errorCodes = new ErrorCodes();
5226:  ^
5227:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5228:  private final ErrorCodes errorCodes = new ErrorCodes();
5229:  ^
5230:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:55: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5231:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
5232:  ^
5233:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:101: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5234:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
5235:  ^
5236:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:103: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5237:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
5238:  ^
5239:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:117: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5240:  response.setStatus(ErrorCodes.SUCCESS);
5241:  ^
5242:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:118: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5243:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
5244:  ^
5245:  java\src\org\openqa\selenium\remote\codec\AbstractHttpResponseCodec.java:124: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5246:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
5247:  ^
5248:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:69: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5249:  private final ErrorCodes errorCodes = new ErrorCodes();
5250:  ^
5251:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:69: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5252:  private final ErrorCodes errorCodes = new ErrorCodes();
5253:  ^
5254:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:97: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5255:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
5256:  ^
5257:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:102: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5258:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
5259:  ^
5260:  java\src\org\openqa\selenium\remote\codec\w3c\W3CHttpResponseCodec.java:149: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
5261:  response.setStatus(ErrorCodes.SUCCESS);
5262:  ^
...

5563:  �[32m[3,848 / 3,849]�[0m 66 / 67 tests;�[0m Testing //rb/spec/unit/selenium/webdriver/common:service; 1325s local
5564:  �[32m[3,848 / 3,849]�[0m 66 / 67 tests;�[0m Testing //rb/spec/unit/selenium/webdriver/common:service; 1385s local
5565:  �[32m[3,848 / 3,849]�[0m 66 / 67 tests;�[0m Testing //rb/spec/unit/selenium/webdriver/common:service; 1445s local
5566:  �[32m[3,848 / 3,849]�[0m 66 / 67 tests;�[0m Testing //rb/spec/unit/selenium/webdriver/common:service; 1506s local
5567:  �[32m[3,848 / 3,849]�[0m 66 / 67 tests;�[0m Testing //rb/spec/unit/selenium/webdriver/common:service; 1566s local
5568:  �[32m[3,848 / 3,849]�[0m 66 / 67 tests;�[0m Testing //rb/spec/unit/selenium/webdriver/common:service; 1626s local
5569:  �[32m[3,848 / 3,849]�[0m 66 / 67 tests;�[0m Testing //rb/spec/unit/selenium/webdriver/common:service; 1687s local
5570:  �[32m[3,848 / 3,849]�[0m 66 / 67 tests;�[0m Testing //rb/spec/unit/selenium/webdriver/common:service; 1747s local
5571:  �[32m[3,848 / 3,849]�[0m 66 / 67 tests;�[0m Testing //rb/spec/unit/selenium/webdriver/common:service; 1800s local
5572:  �[31m�[1mTIMEOUT: �[0m//rb/spec/unit/selenium/webdriver/common:service (Summary)
5573:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/unit/selenium/webdriver/common/service/test.log
5574:  �[32mINFO: �[0mFrom Testing //rb/spec/unit/selenium/webdriver/common:service:
5575:  ==================== Test output for //rb/spec/unit/selenium/webdriver/common:service:
5576:  ================================================================================
5577:  �[32mINFO: �[0mFound 526 targets and 67 test targets...
5578:  �[32m[3,849 / 3,849]�[0m 67 / 67 tests, �[31m�[1m1 failed�[0m;�[0m no actions running
5579:  �[32mINFO: �[0mElapsed time: 3079.968s, Critical Path: 2382.52s
5580:  �[32mINFO: �[0m3545 processes: 2084 internal, 1282 local, 179 worker.
5581:  �[32mINFO: �[0mBuild completed, 1 test FAILED, 3545 total actions
5582:  //rb/spec/unit/selenium:devtools                                         �[0m�[32mPASSED�[0m in 6.3s
...

5635:  //rb/spec/unit/selenium/webdriver/ie:service                             �[0m�[32mPASSED�[0m in 5.7s
5636:  //rb/spec/unit/selenium/webdriver/remote:bridge                          �[0m�[32mPASSED�[0m in 5.7s
5637:  //rb/spec/unit/selenium/webdriver/remote:capabilities                    �[0m�[32mPASSED�[0m in 5.2s
5638:  //rb/spec/unit/selenium/webdriver/remote:driver                          �[0m�[32mPASSED�[0m in 6.2s
5639:  //rb/spec/unit/selenium/webdriver/remote/http:common                     �[0m�[32mPASSED�[0m in 4.6s
5640:  //rb/spec/unit/selenium/webdriver/remote/http:curb                       �[0m�[32mPASSED�[0m in 6.3s
5641:  //rb/spec/unit/selenium/webdriver/remote/http:default                    �[0m�[32mPASSED�[0m in 5.8s
5642:  //rb/spec/unit/selenium/webdriver/safari:driver                          �[0m�[32mPASSED�[0m in 4.7s
5643:  //rb/spec/unit/selenium/webdriver/safari:options                         �[0m�[32mPASSED�[0m in 5.1s
5644:  //rb/spec/unit/selenium/webdriver/safari:service                         �[0m�[32mPASSED�[0m in 6.4s
5645:  //rb/spec/unit/selenium/webdriver/support:color                          �[0m�[32mPASSED�[0m in 6.2s
5646:  //rb/spec/unit/selenium/webdriver/support:event_firing                   �[0m�[32mPASSED�[0m in 5.6s
5647:  //rb/spec/unit/selenium/webdriver/support:select                         �[0m�[32mPASSED�[0m in 6.1s
5648:  //rb/spec/unit/selenium/webdriver/common:service                        �[0m�[31m�[1mTIMEOUT�[0m in 1800.0s
5649:  D:/b/execroot/_main/bazel-out/x64_windows-fastbuild/testlogs/rb/spec/unit/selenium/webdriver/common/service/test.log
5650:  Executed 67 out of 67 tests: 66 tests pass and �[0m�[31m�[1m1 fails locally�[0m.
5651:  �[0m
5652:  ##[error]Process completed with exit code 3.
5653:  ##[group]Run awk '
5654:  �[36;1mawk '�[0m
5655:  �[36;1m  /PASSED in/ {n=0; delete a; next}�[0m
5656:  �[36;1m  /FAILED in/ {a[++n]=$1}�[0m
5657:  �[36;1m  END {for (i=1; i<=n; i++) print a[i]}�[0m
5658:  �[36;1m' build/bazel-console.log > build/bazel-failures.txt�[0m
5659:  shell: C:\Program Files\Git\bin\bash.EXE --noprofile --norc -e -o pipefail {0}
5660:  env:
5661:  GITHUB_TOKEN: ***
5662:  SEL_M2_USER: 
5663:  SEL_M2_PASS: 
5664:  TWINE_PASSWORD: 
5665:  TWINE_USERNAME: 
5666:  NODE_AUTH_TOKEN: ***
5667:  SE_AVOID_STATS: true
5668:  BAZELISK_GITHUB_TOKEN: ***
5669:  ##[endgroup]
5670:  awk: fatal: cannot open file `build/bazel-console.log' for reading: No such file or directory
5671:  ##[error]Process completed with exit code 2.
5672:  ##[group]Run actions/upload-artifact@v5
...

5700:  Finished uploading artifact content to blob storage!
5701:  SHA256 digest of uploaded artifact zip is 82ada721f0548075d1b658107c4a8d92e9a5d3081aa106fa2c467c5bcce6c8a2
5702:  Finalizing artifact upload
5703:  Artifact test-logs-windows-Unit Tests (3.2.8, windows)-.zip successfully finalized. Artifact ID 5039615429
5704:  Artifact test-logs-windows-Unit Tests (3.2.8, windows)- has been successfully uploaded! Final size is 92184 bytes. Artifact ID is 5039615429
5705:  Artifact download URL: https://github.com/SeleniumHQ/selenium/actions/runs/20754560363/artifacts/5039615429
5706:  Post job cleanup.
5707:  ##[group]Save cache for external-rules_nodejs++node+nodejs_windows_amd64
5708:  [command]"C:\Program Files\Git\usr\bin\tar.exe" --posix -cf cache.tzst --exclude cache.tzst -P -C D:/a/selenium/selenium --files-from manifest.txt --force-local --use-compress-program "zstd -T0"
5709:  Sent 3473408 of 28251524 (12.3%), 3.3 MBs/sec
5710:  Sent 28251524 of 28251524 (100.0%), 14.7 MBs/sec
5711:  Successfully saved cache
5712:  ##[endgroup]
5713:  ##[group]Save cache for external-rules_ruby++ruby+bundle
5714:  [command]"C:\Program Files\Git\usr\bin\tar.exe" --posix -cf cache.tzst --exclude cache.tzst -P -C D:/a/selenium/selenium --files-from manifest.txt --force-local --use-compress-program "zstd -T0"
5715:  Failed to save: Unable to reserve cache with key setup-bazel-2-win32-external-rules_ruby++ruby+bundle-9074690a9c06274d69ff94f9d6c77117163dcdd17e628fd7125d632c738fd8e4, another job may be creating this cache.
5716:  Successfully saved cache
5717:  ##[endgroup]
5718:  ##[group]Save cache for external-rules_ruby++ruby+ruby
5719:  [command]"C:\Program Files\Git\usr\bin\tar.exe" --posix -cf cache.tzst --exclude cache.tzst -P -C D:/a/selenium/selenium --files-from manifest.txt --force-local --use-compress-program "zstd -T0"
5720:  Failed to save: Unable to reserve cache with key setup-bazel-2-win32-external-rules_ruby++ruby+ruby-d86bb374255504e559cc6f0b205fe5913370b7124f62e4c6f822fb536d6d7e4b, another job may be creating this cache.
5721:  Successfully saved cache

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.

5 participants