Skip to content

[grid] Router WebSocket handle dropped close frames, idle disconnects, high-latency proxying#17197

Merged
VietND96 merged 1 commit intotrunkfrom
improve-router-websocket
Mar 11, 2026
Merged

[grid] Router WebSocket handle dropped close frames, idle disconnects, high-latency proxying#17197
VietND96 merged 1 commit intotrunkfrom
improve-router-websocket

Conversation

@VietND96
Copy link
Member

🔗 Related Issues

💥 What does this PR do?

Improve three user-visible problems with WebSocket connections (BiDi, CDP) routed through Selenium Grid:

  • BiDi/CDP sessions hang after the browser crashes or the Node kills the session. When the Node closed the WebSocket, the client was never notified — it would sit open until the next keepalive cycle (up to 30 s) rather than receiving a clean close.

  • Cloud load balancers (AWS ALB, GCP, k8s ingress-nginx) silently drop idle WebSocket connections mid-session. These LBs have a 60 s idle timeout and ignore OS-level TCP keepalives. Long-running Playwright or BiDi tests that go quiet for more than 60 s would have their connection dropped without any signal. Fixed by sending application-level WebSocket pings every 30 s.

  • Every BiDi/CDP message was parsed and repackaged by the Router even though the Router has nothing to do with the message content. This added latency and CPU overhead proportional to message rate. The Router now bridges the connection at the TCP level, removing itself from the data path entirely after the initial handshake. Falls back to the old message-proxying path for network topologies where a direct TCP connection to the Node is not possible (e.g. Kubernetes port-forward).

🔧 Implementation Notes

💡 Additional Considerations

🔄 Types of changes

  • Cleanup (formatting, renaming)
  • Bug fix (backwards compatible)
  • New feature (non-breaking change which adds functionality and tests!)
  • Breaking change (fix or feature that would cause existing functionality to change)

… high-latency proxying

Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
@selenium-ci selenium-ci added B-grid Everything grid and server related C-java Java Bindings B-build Includes scripting, bazel and CI integrations labels Mar 10, 2026
@qodo-code-review
Copy link
Contributor

Review Summary by Qodo

Improve Grid Router WebSocket handling with TCP tunneling, keepalive pings, and idle detection

✨ Enhancement 🐞 Bug fix

Grey Divider

Walkthroughs

Description
• Implement direct TCP tunneling for WebSocket connections to eliminate message parsing overhead
• Add application-level WebSocket pings every 30s to prevent cloud load balancer idle timeouts
• Handle node-initiated close frames and upstream errors with proper client channel closure
• Install idle-state detection on tunnel channels to detect silently dropped connections
• Add configurable --tcp-tunnel flag to disable direct tunneling for restricted network topologies

Grey Divider

File Changes

1. java/src/org/openqa/selenium/grid/router/ProxyWebsocketsIntoGrid.java ✨ Enhancement +200/-35

Refactor WebSocket proxying with frame-level forwarding and error handling

java/src/org/openqa/selenium/grid/router/ProxyWebsocketsIntoGrid.java


2. java/src/org/openqa/selenium/grid/router/httpd/RouterFlags.java ⚙️ Configuration changes +12/-0

Add --tcp-tunnel configuration flag for WebSocket routing

java/src/org/openqa/selenium/grid/router/httpd/RouterFlags.java


3. java/src/org/openqa/selenium/grid/router/httpd/RouterOptions.java ⚙️ Configuration changes +4/-0

Add tcpTunnel() method to access tunnel configuration

java/src/org/openqa/selenium/grid/router/httpd/RouterOptions.java


View more (9)
4. java/src/org/openqa/selenium/grid/router/httpd/RouterServer.java ✨ Enhancement +15/-11

Conditionally enable TCP tunnel resolver based on configuration

java/src/org/openqa/selenium/grid/router/httpd/RouterServer.java


5. java/src/org/openqa/selenium/netty/server/NettyServer.java ✨ Enhancement +5/-0

Enable SO_KEEPALIVE and TCP_NODELAY socket options

java/src/org/openqa/selenium/netty/server/NettyServer.java


6. java/src/org/openqa/selenium/netty/server/PostUpgradeHook.java ✨ Enhancement +39/-0

New interface for post-handshake pipeline rewiring callbacks

java/src/org/openqa/selenium/netty/server/PostUpgradeHook.java


7. java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java ✨ Enhancement +65/-0

Add idle-state detection and automatic channel closure on timeout

java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java


8. java/src/org/openqa/selenium/netty/server/WebSocketFrameProxy.java ✨ Enhancement +166/-0

New handler for direct WebSocket frame forwarding without message conversion

java/src/org/openqa/selenium/netty/server/WebSocketFrameProxy.java


9. java/src/org/openqa/selenium/netty/server/WebSocketKeepAliveHandler.java ✨ Enhancement +69/-0

New handler for sending periodic WebSocket ping frames

java/src/org/openqa/selenium/netty/server/WebSocketKeepAliveHandler.java


10. java/src/org/openqa/selenium/netty/server/WebSocketUpgradeHandler.java ✨ Enhancement +24/-1

Install keepalive handler and invoke PostUpgradeHook after handshake

java/src/org/openqa/selenium/netty/server/WebSocketUpgradeHandler.java


11. java/test/org/openqa/selenium/grid/router/TunnelWebsocketTest.java 🧪 Tests +252/-0

Add comprehensive tests for proxy path WebSocket forwarding

java/test/org/openqa/selenium/grid/router/TunnelWebsocketTest.java


12. java/src/org/openqa/selenium/grid/router/BUILD.bazel Dependencies +3/-0

Add Netty dependencies for WebSocket frame handling

java/src/org/openqa/selenium/grid/router/BUILD.bazel


Grey Divider

Qodo Logo

@qodo-code-review
Copy link
Contributor

qodo-code-review bot commented Mar 10, 2026

Code Review by Qodo

🐞 Bugs (3) 📘 Rule violations (1) 📎 Requirement gaps (0)

Grey Divider


Action required

1. Tunnel hard idle timeout 🐞 Bug ⛯ Reliability
Description
TcpUpgradeTunnelHandler installs a read-idle timeout on both legs of the TCP tunnel and
unconditionally closes both channels when it fires, which will disconnect otherwise-healthy but
quiet WebSocket sessions after ~120 seconds without inbound bytes. This changes semantics vs the
non-tunnel path (which uses keepalive pings) and can break long idle periods.
Code

java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java[R320-336]

+                  int idleSeconds = WebSocketKeepAliveHandler.PING_INTERVAL_SECONDS * 4;
+                  nodeChannel
+                      .pipeline()
+                      .addBefore(
+                          "tunnel",
+                          "node-idle",
+                          new IdleStateHandler(idleSeconds, 0, 0, TimeUnit.SECONDS));
+                  nodeChannel
+                      .pipeline()
+                      .addAfter(
+                          "node-idle", "node-idle-close", new IdleCloseHandler(clientChannel));
+                  cp.addBefore(
+                      "tunnel",
+                      "client-idle",
+                      new IdleStateHandler(idleSeconds, 0, 0, TimeUnit.SECONDS));
+                  cp.addAfter(
+                      "client-idle", "client-idle-close", new IdleCloseHandler(nodeChannel));
Evidence
The tunnel path adds an IdleStateHandler configured for reader-idle and then closes both tunnel
channels on any IdleStateEvent; this triggers even when the connection is healthy but idle. In
contrast, the non-tunnel WebSocket path installs a writer-idle ping keepalive rather than
disconnecting on idle.

java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java[292-336]
java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java[367-394]
java/src/org/openqa/selenium/netty/server/WebSocketUpgradeHandler.java[166-177]

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

## Issue description
The TCP tunnel path closes both ends when no bytes are *received* for ~120s, which disconnects legitimate quiet sessions even when the connection is healthy. This is inconsistent with the non-tunnel path where idle is handled via periodic WebSocket pings.

## Issue Context
The tunnel rewires the client pipeline to a raw byte tunnel and then installs `IdleStateHandler(readerIdle=idleSeconds)` + `IdleCloseHandler` that always closes on `IdleStateEvent`.

## Fix Focus Areas
- java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java[315-336]
- java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java[367-394]
- java/src/org/openqa/selenium/netty/server/WebSocketUpgradeHandler.java[166-177]

## Notes
Consider making the timeout configurable (or disabled by default) and/or implement an explicit keepalive mechanism for tunnel connections instead of disconnecting on read-idle.

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



Remediation recommended

2. WebSocketKeepAliveHandler lacks tests 📘 Rule violation ⛯ Reliability
Description
The PR adds new WebSocket keepalive ping behavior and TCP-tunnel read-idle disconnect logic, but no
tests validate ping emission or idle-timeout disconnect behavior. This increases regression risk for
a user-visible reliability feature (preventing silent LB disconnects).
Code

java/src/org/openqa/selenium/netty/server/WebSocketUpgradeHandler.java[R166-177]

+                  // Install application-level keepalive for all WebSocket connections.
+                  // Cloud LBs (AWS ALB: 60 s, k8s ingress-nginx: 60 s) silently drop idle
+                  // TCP connections; OS-level SO_KEEPALIVE alone is not enough because
+                  // most LBs ignore TCP keepalive probes. A WS ping every 30 s resets
+                  // the LB's idle timer at the application level.
+                  ChannelPipeline pipeline = ctx.pipeline();
+                  pipeline.addAfter(
+                      "ws-protocol",
+                      "ws-idle",
+                      new IdleStateHandler(
+                          0, WebSocketKeepAliveHandler.PING_INTERVAL_SECONDS, 0, TimeUnit.SECONDS));
+                  pipeline.addAfter("ws-idle", "ws-keepalive", new WebSocketKeepAliveHandler());
Evidence
PR Compliance ID 6 requires tests for behavioral changes when feasible. The new code unconditionally
installs a writer-idle ping keepalive and adds tunnel read-idle closure, but the added/updated test
coverage shown focuses on message forwarding and close propagation rather than validating keepalive
pings or idle-timeout disconnects.

AGENTS.md
java/src/org/openqa/selenium/netty/server/WebSocketUpgradeHandler.java[166-177]
java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java[315-336]
java/test/org/openqa/selenium/grid/router/TunnelWebsocketTest.java[637-643]

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

## Issue description
New WebSocket keepalive ping and TCP-tunnel idle-close behaviors were added, but there are no tests asserting these behaviors.

## Issue Context
- WebSocket upgrades now install a writer-idle `IdleStateHandler` and `WebSocketKeepAliveHandler` to send `PingWebSocketFrame`s.
- The TCP tunnel installs read-idle handlers on both channels and closes both ends on idle.

## Fix Focus Areas
- java/src/org/openqa/selenium/netty/server/WebSocketUpgradeHandler.java[166-183]
- java/src/org/openqa/selenium/netty/server/WebSocketKeepAliveHandler.java[1-69]
- java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java[315-340]
- java/test/org/openqa/selenium/grid/router/TunnelWebsocketTest.java[520-887]

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


3. Binary buffer handling regression 🐞 Bug ✓ Correctness
Description
WebSocketFrameProxy forwards final binary frames using binary.content().nioBuffer() unconditionally,
removing the fallback handling present in MessageInboundConverter. This can reduce compatibility
with ByteBuf implementations that don’t provide a single NIO buffer and can cause forwarding to fail
for some binary frames.
Code

java/src/org/openqa/selenium/netty/server/WebSocketFrameProxy.java[R107-111]

+    } else if (frame instanceof BinaryWebSocketFrame) {
+      BinaryWebSocketFrame binary = (BinaryWebSocketFrame) frame;
+      if (binary.isFinalFragment()) {
+        upstream.send(new BinaryMessage(binary.content().nioBuffer()));
+      } else {
Evidence
The previous inbound conversion logic explicitly handled multiple ByteBuf cases (NIO buffer vs
array-backed vs unsupported). The new frame-level proxy only uses nioBuffer() for final binary
frames, which removes those compatibility branches and can fail where the prior implementation would
succeed.

java/src/org/openqa/selenium/netty/server/WebSocketFrameProxy.java[97-115]
java/src/org/openqa/selenium/netty/server/MessageInboundConverter.java[108-117]

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

## Issue description
`WebSocketFrameProxy` forwards final binary frames using `binary.content().nioBuffer()` without any fallback, reducing compatibility vs the prior `MessageInboundConverter` which handled additional ByteBuf cases.

## Issue Context
Binary frames can be backed by different ByteBuf implementations; the previous code had explicit branches to handle them. The new proxy path removed those branches.

## Fix Focus Areas
- java/src/org/openqa/selenium/netty/server/WebSocketFrameProxy.java[97-115]
- java/src/org/openqa/selenium/netty/server/MessageInboundConverter.java[108-117]

## Notes
Prefer copying `readableBytes()` into a byte[] when a direct NIO buffer is unavailable or when the content spans multiple NIO buffers.

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


4. Insecure node TLS trust 🐞 Bug ⛨ Security
Description
TcpUpgradeTunnelHandler uses InsecureTrustManagerFactory for HTTPS node connections, meaning the
Router will trust any certificate presented by the Node endpoint. This weakens transport security
for Router→Node connections and enables MITM if the internal network path is compromised.
Code

↗ java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java

                    }
Evidence
When the tunnel connects to an https Node URI, it builds a client SSL context that explicitly trusts
all certificates. This bypasses certificate validation entirely for the Router→Node hop.

java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java[118-126]
java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java[194-205]

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

## Issue description
The TCP tunnel HTTPS client context trusts all node certificates, disabling certificate validation for Router→Node TLS.

## Issue Context
This is currently unconditional for `https` node URIs via `InsecureTrustManagerFactory.INSTANCE`.

## Fix Focus Areas
- java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java[118-126]
- java/src/org/openqa/selenium/netty/server/TcpUpgradeTunnelHandler.java[194-205]

## Notes
Consider an opt-in config flag for insecure trust, and default to JVM trust store / configurable trust material for secure environments.

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


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

@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: Test / All RBE tests

Failed stage: Run Bazel [❌]

Failed test name: //java/src/org/openqa/selenium:core-lib-spotbugs

Failure summary:

The GitHub Action failed because the Bazel CI run completed with exit code 1 due to a combination of
build failures and test failures:

- Java build failures (missing direct deps / strict dependency enforcement):
-
java/test/org/openqa/selenium/grid/distributor/package-info.java fails to compile because
org.jspecify.annotations.NullMarked is not on the direct deps of
//java/test/org/openqa/selenium/grid/distributor:medium-tests-test-lib.
- Error points to
java/test/org/openqa/selenium/grid/distributor/package-info.java:21 and reports: “Using type
org.jspecify.annotations.NullMarked from an indirect dependency”.
- Bazel suggests adding
@maven//:org_jspecify_jspecify.
-
java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java fails to compile because it
uses package org.openqa.selenium.grid.router from an indirect dependency.
- Error at
java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java:18.
- Bazel suggests
adding //java/src/org/openqa/selenium/grid:grid-module to the relevant test targets’ deps (e.g.,
RemoteWebDriverBiDiTest-edge, RemoteWebDriverBiDiTest-chrome-beta, etc.).
- These compile errors
lead to multiple test targets being reported as FAILED TO BUILD (e.g., several
//java/test/org/openqa/selenium/grid/distributor:* tests).

- Deterministic test failure in SpotBugs:
- //java/src/org/openqa/selenium:core-lib-spotbugs
fails in both runs.
- SpotBugs reports: H X LG: Changes to logger could be lost in
org.openqa.selenium.internal.Debug.configureLogger() At Debug.java:[line 67].

- Multiple runtime test failures (not exhaustive), mostly Firefox-related timeouts / behavior:

- Ruby integration spec //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta fails
with 6 alert-related examples timing out waiting for an alert (e.g.
rb/spec/integration/selenium/webdriver/target_locator_spec.rb:268, :279, :290, :302, :314, :332).

- Python BiDi input test //py:test/selenium/webdriver/common/bidi_input_tests-firefox-bidi fails
because Firefox reports unknown error: Error: Unimplemented pointerMove for pointerType pen in
test_perform_actions_pointer_pen_type[firefox].
- Additional Java Firefox-beta test failures are
shown (e.g., FormHandlingTest waiting for alert, WebScriptTest assertion mismatch,
BrowsingContextInspectorTest “no such alert”, etc.).

In short, the workflow fails because the CI run includes (1) Java targets that fail to compile
under strict deps
and (2) multiple failing tests, including a repeated failure of
//java/src/org/openqa/selenium:core-lib-spotbugs.

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

305:  "enabled": true,
306:  "files": [
307:  "./MODULE.bazel",
308:  "./WORKSPACE.bazel",
309:  "./WORKSPACE.bzlmod",
310:  "./WORKSPACE"
311:  ],
312:  "name": "repository",
313:  "paths": [
314:  "/home/runner/.cache/bazel-repo"
315:  ]
316:  }
317:  }
318:  ##[endgroup]
319:  ##[group]Restore cache for bazelisk
320:  Failed to restore bazelisk cache
321:  ##[endgroup]
322:  ##[group]Restore cache for repository
323:  Failed to restore repository cache
324:  ##[endgroup]
325:  ##[group]Restore cache for external-ci---rbe-bazel-manifest
326:  Failed to restore external-ci---rbe-bazel-manifest cache
327:  ##[endgroup]
...

465:  currently loading:  ... (15 packages)
466:  (20:23:38) �[32mLoading:�[0m 306 packages loaded
467:  currently loading:  ... (6 packages)
468:  (20:23:43) �[32mLoading:�[0m 310 packages loaded
469:  currently loading: rust/tests ... (2 packages)
470:  (20:23:48) �[32mLoading:�[0m 310 packages loaded
471:  currently loading: rust/tests ... (2 packages)
472:  (20:23:53) �[32mAnalyzing:�[0m 2921 targets (312 packages loaded, 0 targets configured)
473:  (20:23:53) �[32mAnalyzing:�[0m 2921 targets (312 packages loaded, 0 targets configured)
474:  (20:23:58) �[32mAnalyzing:�[0m 2921 targets (437 packages loaded, 52 targets configured)
475:  (20:24:01) �[33mDEBUG: �[0m/home/runner/.bazel/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:
476:  org.seleniumhq.selenium:selenium-api
477:  org.seleniumhq.selenium:selenium-remote-driver
478:  (20:24:01) �[33mDEBUG: �[0m/home/runner/.bazel/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:
479:  com.google.code.findbugs:jsr305
480:  com.google.errorprone:error_prone_annotations
481:  com.google.guava:guava (versions: 30.1.1-jre, 31.0.1-android)
482:  (20:24:02) �[33mDEBUG: �[0m/home/runner/.bazel/external/rules_jvm_external+/private/rules/coursier.bzl:777:18: Found duplicate artifact versions
483:  com.google.guava:guava has multiple versions 30.1.1-jre, 31.0.1-android
484:  Please remove duplicate artifacts from the artifact list so you do not get unexpected artifact versions
485:  (20:24:03) �[32mAnalyzing:�[0m 2921 targets (498 packages loaded, 10782 targets configured)
486:  (20:24:08) �[32mAnalyzing:�[0m 2921 targets (557 packages loaded, 11119 targets configured)
487:  (20:24:13) �[32mAnalyzing:�[0m 2921 targets (560 packages loaded, 11141 targets configured)
488:  (20:24:18) �[32mAnalyzing:�[0m 2921 targets (578 packages loaded, 17087 targets configured)
489:  (20:24:23) �[32mAnalyzing:�[0m 2921 targets (579 packages loaded, 17088 targets configured)
490:  (20:24:28) �[32mAnalyzing:�[0m 2921 targets (583 packages loaded, 17156 targets configured)
491:  (20:24:34) �[32mAnalyzing:�[0m 2921 targets (587 packages loaded, 17213 targets configured)
492:  (20:24:39) �[32mAnalyzing:�[0m 2921 targets (618 packages loaded, 17975 targets configured)
493:  (20:24:44) �[32mAnalyzing:�[0m 2921 targets (793 packages loaded, 19031 targets configured)
494:  (20:24:49) �[32mAnalyzing:�[0m 2921 targets (1110 packages loaded, 24697 targets configured)
495:  (20:24:54) �[32mAnalyzing:�[0m 2921 targets (1440 packages loaded, 33836 targets configured)
496:  (20:24:59) �[32mAnalyzing:�[0m 2921 targets (1669 packages loaded, 40331 targets configured)
497:  (20:25:00) �[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
498:  (20:25:00) �[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
499:  (20:25:00) �[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
500:  (20:25:00) �[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
501:  (20:25:00) �[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
502:  (20:25:00) �[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
503:  (20:25:01) �[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
504:  (20:25:02) �[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
505:  (20:25:02) �[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
506:  (20:25:02) �[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
507:  (20:25:02) �[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
508:  (20:25:02) �[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
509:  (20:25:03) �[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
510:  (20:25:03) �[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
511:  (20:25:03) �[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
512:  (20:25:03) �[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
513:  (20:25:04) �[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
514:  (20:25:04) �[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
515:  (20:25:04) �[32mAnalyzing:�[0m 2921 targets (1829 packages loaded, 46133 targets configured)
...

629:  java/src/org/openqa/selenium/remote/RemoteWebDriver.java:270: warning: [removal] LocalLogs in org.openqa.selenium.logging has been deprecated and marked for removal
630:  LocalLogs performanceLogger = LocalLogs.getStoringLoggerInstance(logTypesToIgnore);
631:  ^
632:  java/src/org/openqa/selenium/remote/RemoteWebDriver.java:271: warning: [removal] LocalLogs in org.openqa.selenium.logging has been deprecated and marked for removal
633:  LocalLogs clientLogs =
634:  ^
635:  java/src/org/openqa/selenium/remote/RemoteWebDriver.java:272: warning: [removal] LocalLogs in org.openqa.selenium.logging has been deprecated and marked for removal
636:  LocalLogs.getHandlerBasedLoggerInstance(LoggingHandler.getInstance(), logTypesToIgnore);
637:  ^
638:  java/src/org/openqa/selenium/remote/RemoteWebDriver.java:272: warning: [removal] LoggingHandler in org.openqa.selenium.logging has been deprecated and marked for removal
639:  LocalLogs.getHandlerBasedLoggerInstance(LoggingHandler.getInstance(), logTypesToIgnore);
640:  ^
641:  java/src/org/openqa/selenium/remote/RemoteWebDriver.java:273: warning: [removal] LocalLogs in org.openqa.selenium.logging has been deprecated and marked for removal
642:  localLogs = LocalLogs.getCombinedLogsHolder(clientLogs, performanceLogger);
643:  ^
644:  java/src/org/openqa/selenium/remote/ErrorHandler.java:46: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
645:  private final ErrorCodes errorCodes;
646:  ^
647:  java/src/org/openqa/selenium/remote/ErrorHandler.java:60: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
648:  this.errorCodes = new ErrorCodes();
649:  ^
650:  java/src/org/openqa/selenium/remote/ErrorHandler.java:68: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
651:  public ErrorHandler(ErrorCodes codes, boolean includeServerErrors) {
652:  ^
653:  java/src/org/openqa/selenium/remote/Response.java:101: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
654:  ErrorCodes errorCodes = new ErrorCodes();
655:  ^
656:  java/src/org/openqa/selenium/remote/Response.java:101: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
657:  ErrorCodes errorCodes = new ErrorCodes();
658:  ^
659:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:181: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
660:  response.setStatus(ErrorCodes.SUCCESS);
661:  ^
662:  java/src/org/openqa/selenium/remote/ProtocolHandshake.java:182: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
663:  response.setState(ErrorCodes.SUCCESS_STRING);
664:  ^
...

716:  java/src/org/openqa/selenium/remote/RemoteLogs.java:99: warning: [removal] SERVER in LogType has been deprecated and marked for removal
717:  if (LogType.SERVER.equals(logType)) {
718:  ^
719:  java/src/org/openqa/selenium/remote/TracedCommandExecutor.java:28: warning: [removal] NeedsLocalLogs in org.openqa.selenium.logging has been deprecated and marked for removal
720:  public class TracedCommandExecutor implements CommandExecutor, NeedsLocalLogs {
721:  ^
722:  java/src/org/openqa/selenium/remote/TracedCommandExecutor.java:63: warning: [removal] LocalLogs in org.openqa.selenium.logging has been deprecated and marked for removal
723:  public void setLocalLogs(LocalLogs logs) {
724:  ^
725:  java/src/org/openqa/selenium/remote/TracedCommandExecutor.java:64: warning: [removal] NeedsLocalLogs in org.openqa.selenium.logging has been deprecated and marked for removal
726:  if (delegate instanceof NeedsLocalLogs) {
727:  ^
728:  java/src/org/openqa/selenium/remote/TracedCommandExecutor.java:65: warning: [removal] NeedsLocalLogs in org.openqa.selenium.logging has been deprecated and marked for removal
729:  ((NeedsLocalLogs) delegate).setLocalLogs(logs);
730:  ^
731:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:53: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
732:  new ErrorCodes().toStatus((String) rawError, Optional.of(tuple.getStatusCode())));
733:  ^
734:  java/src/org/openqa/selenium/remote/W3CHandshakeResponse.java:56: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
735:  new ErrorCodes().getExceptionType((String) rawError);
736:  ^
737:  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
738:  private final ErrorCodes errorCodes = new ErrorCodes();
739:  ^
740:  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
741:  private final ErrorCodes errorCodes = new ErrorCodes();
742:  ^
743:  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
744:  int status = response.getStatus() == ErrorCodes.SUCCESS ? HTTP_OK : HTTP_INTERNAL_ERROR;
745:  ^
746:  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
747:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
748:  ^
749:  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
750:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
751:  ^
752:  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
753:  response.setStatus(ErrorCodes.SUCCESS);
754:  ^
755:  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
756:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
757:  ^
758:  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
759:  response.setState(errorCodes.toState(ErrorCodes.SUCCESS));
760:  ^
761:  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
762:  private final ErrorCodes errorCodes = new ErrorCodes();
763:  ^
764:  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
765:  private final ErrorCodes errorCodes = new ErrorCodes();
766:  ^
767:  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
768:  response.setStatus(ErrorCodes.UNKNOWN_COMMAND);
769:  ^
770:  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
771:  response.setStatus(ErrorCodes.UNHANDLED_ERROR);
772:  ^
773:  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
774:  response.setStatus(ErrorCodes.SUCCESS);
775:  ^
...

1066:  (20:26:00) �[32mAnalyzing:�[0m 2921 targets (2104 packages loaded, 78272 targets configured)
1067:  �[32m[14,321 / 15,797]�[0m 156 / 2032 tests;�[0m [Sched] Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 45s ... (49 actions, 1 running)
1068:  (20:26:03) �[32mINFO: �[0mFrom Compiling BiDi/Session/SessionTests-firefox:
1069:  dotnet/test/common/BiDi/Session/SessionTests.cs(39,23): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
1070:  dotnet/test/common/BiDi/Session/SessionTests.cs(47,23): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
1071:  (20:26:05) �[32mAnalyzing:�[0m 2921 targets (2104 packages loaded, 78429 targets configured)
1072:  �[32m[14,468 / 16,117]�[0m 174 / 2125 tests;�[0m [Sched] Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 50s ... (49 actions, 0 running)
1073:  (20:26:08) �[32mINFO: �[0mFrom Compiling BiDi/Session/SessionTests-edge:
1074:  dotnet/test/common/BiDi/Session/SessionTests.cs(39,23): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
1075:  dotnet/test/common/BiDi/Session/SessionTests.cs(47,23): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
1076:  (20:26:10) �[32mAnalyzing:�[0m 2921 targets (2104 packages loaded, 78563 targets configured)
1077:  �[32m[14,584 / 16,918]�[0m 188 / 2507 tests;�[0m [Sched] Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 55s ... (50 actions, 1 running)
1078:  (20:26:15) �[32mAnalyzing:�[0m 2921 targets (2104 packages loaded, 78669 targets configured)
1079:  �[32m[14,792 / 17,664]�[0m 225 / 2876 tests;�[0m [Sched] Compiling Java headers java/src/org/openqa/selenium/netty/server/libserver-hjar.jar (17 source files); 19s ... (49 actions, 2 running)
1080:  (20:26:19) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/RemotableByTest.jar (1 source file) and running annotation processors (AutoServiceProcessor):
1081:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
1082:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
1083:  ^
1084:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
1085:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
1086:  ^
1087:  java/test/org/openqa/selenium/remote/RemotableByTest.java:23: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
1088:  import static org.openqa.selenium.remote.ErrorCodes.SUCCESS_STRING;
1089:  ^
1090:  java/test/org/openqa/selenium/remote/RemotableByTest.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
1091:  private final ErrorCodes errorCodes = new ErrorCodes();
1092:  ^
1093:  java/test/org/openqa/selenium/remote/RemotableByTest.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
1094:  private final ErrorCodes errorCodes = new ErrorCodes();
1095:  ^
1096:  java/test/org/openqa/selenium/remote/RemotableByTest.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
1097:  private final ErrorCodes errorCodes = new ErrorCodes();
1098:  ^
1099:  java/test/org/openqa/selenium/remote/RemotableByTest.java:44: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
1100:  private final ErrorCodes errorCodes = new ErrorCodes();
1101:  ^
1102:  (20:26:19) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/libsmall-tests-test-lib.jar (5 source files) and running annotation processors (AutoServiceProcessor):
1103:  java/test/org/openqa/selenium/remote/WebDriverFixture.java:170: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
1104:  response.setStatus(new ErrorCodes().toStatus(state, Optional.of(400)));
1105:  ^
...

1173:  java/test/org/openqa/selenium/json/JsonOutputTest.java:497: warning: [removal] SERVER in LogType has been deprecated and marked for removal
1174:  prefs.enable(LogType.SERVER, Level.OFF);
1175:  ^
1176:  java/test/org/openqa/selenium/json/JsonOutputTest.java:504: warning: [removal] CLIENT in LogType has been deprecated and marked for removal
1177:  assertThat(converted.get(CLIENT).getAsString()).isEqualTo("DEBUG");
1178:  ^
1179:  java/test/org/openqa/selenium/json/JsonOutputTest.java:506: warning: [removal] SERVER in LogType has been deprecated and marked for removal
1180:  assertThat(converted.get(SERVER).getAsString()).isEqualTo("OFF");
1181:  ^
1182:  (20:26:25) �[32mAnalyzing:�[0m 2921 targets (2105 packages loaded, 78776 targets configured)
1183:  �[32m[15,691 / 18,215]�[0m 498 / 2920 tests;�[0m [Sched] Compiling Java headers java/src/org/openqa/selenium/netty/server/libserver-hjar.jar (17 source files); 29s ... (50 actions, 2 running)
1184:  (20:26:25) �[32mINFO: �[0mAnalyzed 2921 targets (2105 packages loaded, 78776 targets configured).
1185:  (20:26:30) �[32m[16,461 / 18,745]�[0m 637 / 2921 tests;�[0m [Sched] Compiling Java headers java/src/org/openqa/selenium/netty/server/libserver-hjar.jar (17 source files); 34s ... (48 actions, 6 running)
1186:  (20:26:35) �[32m[18,020 / 19,978]�[0m 754 / 2921 tests;�[0m [Sched] Compiling Java headers java/src/org/openqa/selenium/netty/server/libserver-hjar.jar (17 source files); 39s ... (48 actions, 5 running)
1187:  (20:26:36) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.jar (1 source file):
1188:  java/test/org/openqa/selenium/remote/codec/w3c/W3CHttpResponseCodecTest.java:26: warning: [removal] ErrorCodes in org.openqa.selenium.remote has been deprecated and marked for removal
1189:  import static org.openqa.selenium.remote.ErrorCodes.METHOD_NOT_ALLOWED;
1190:  ^
1191:  (20:26:39) �[32mINFO: �[0mFrom Compiling BiDi/Session/SessionTests-chrome:
1192:  dotnet/test/common/BiDi/Session/SessionTests.cs(39,23): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
1193:  dotnet/test/common/BiDi/Session/SessionTests.cs(47,23): warning CS1998: This async method lacks 'await' operators and will run synchronously. Consider using the 'await' operator to await non-blocking API calls, or 'await Task.Run(...)' to do CPU-bound work on a background thread.
1194:  (20:26:40) �[32m[19,594 / 21,142]�[0m 889 / 2921 tests;�[0m [Sched] Compiling Java headers java/src/org/openqa/selenium/netty/server/libserver-hjar.jar (17 source files); 44s ... (50 actions, 7 running)
1195:  (20:26:43) �[32mINFO: �[0mFrom Compiling Rust bin rustfmt_test (1 files) [for tool]:
1196:  �[0m�[1m�[33mwarning�[0m�[0m�[1m: the gold linker is deprecated and has known bugs with Rust�[0m
1197:  �[0m  �[0m�[0m�[1m�[38;5;12m|�[0m
1198:  �[0m  �[0m�[0m�[1m�[38;5;12m= �[0m�[0m�[1mhelp�[0m�[0m: consider using LLD or ld from GNU binutils instead�[0m
1199:  �[0m�[1m�[33mwarning�[0m�[0m�[1m: 1 warning emitted�[0m
1200:  (20:26:45) �[32m[20,392 / 21,449]�[0m 1085 / 2921 tests;�[0m [Sched] Compiling Java headers java/src/org/openqa/selenium/netty/server/libserver-hjar.jar (17 source files); 49s ... (46 actions, 2 running)
1201:  (20:26:50) �[32m[20,451 / 21,468]�[0m 1136 / 2921 tests;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 35s remote, remote-cache ... (8 actions, 3 running)
1202:  (20:26:58) �[32m[20,451 / 21,468]�[0m 1136 / 2921 tests;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 43s remote, remote-cache ... (13 actions, 3 running)
1203:  (20:27:03) �[31m�[1mERROR: �[0m/home/runner/work/selenium/selenium/java/test/org/openqa/selenium/grid/distributor/BUILD.bazel:44:16: Compiling Java headers java/test/org/openqa/selenium/grid/distributor/libmedium-tests-test-lib-hjar.jar (2 source files) failed: (Exit 1): turbine_direct_graal failed: error executing Turbine command (from target //java/test/org/openqa/selenium/grid/distributor:medium-tests-test-lib) 
1204:  (cd /home/runner/.bazel/execroot/_main && \
1205:  exec env - \
1206:  BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 \
1207:  HOME=/home/dev \
1208:  JRUBY_OPTS=--dev \
1209:  LC_CTYPE=en_US.UTF-8 \
1210:  PATH=/bin:/usr/bin:/usr/local/bin \
1211:  external/rules_java++toolchains+remote_java_tools_linux/java_tools/turbine_direct_graal '-Dturbine.ctSymPath=external/rules_java++toolchains+remotejdk21_linux/lib/ct.sym' --output bazel-out/k8-fastbuild/bin/java/test/org/openqa/selenium/grid/distributor/libmedium-tests-test-lib-hjar.jar --output_deps bazel-out/k8-fastbuild/bin/java/test/org/openqa/selenium/grid/distributor/libmedium-tests-test-lib-hjar.jdeps --bootclasspath bazel-out/k8-fastbuild/bin/external/rules_java+/toolchains/platformclasspath.jar --sources java/test/org/openqa/selenium/grid/distributor/DistributorTestBase.java java/test/org/openqa/selenium/grid/distributor/package-info.java --javacopts -source 21 -target 21 '-XDskipDuplicateBridges=true' '-XDcompilePolicy=simple' '--should-stop=ifError=FLOW' -g -parameters -Xep:ReturnValueIgnored:OFF -Xep:IgnoredPureGetter:OFF -Xep:EmptyTopLevelDeclaration:OFF -Xep:LenientFormatStringValidation:OFF -Xep:ReturnMissingNullable:OFF -Xep:UseCorrectAssertInTests:OFF --release 11 -Xep:ImpossibleNullComparison:OFF -Xep:WildcardImport:ERROR --release 17 -- --target_label //java/test/org/openqa/selenium/grid/distributor:medium-tests-test-lib --classpath bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/libcore-module-ijar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/events/libevents-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/events/local/liblocal-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/events/zeromq/libzeromq-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/component/libcomponent-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/data/libdata-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/distributor/libdistributor-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/status/libstatus-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/distributor/local/liblocal-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/distributor/remote/libremote-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/distributor/selector/libselector-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/node/libnode-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/node/local/liblocal-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/security/libsecurity-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/sessionmap/libsessionmap-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/sessionmap/local/liblocal-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/sessionqueue/libsessionqueue-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/sessionqueue/local/liblocal-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/grid/web/libweb-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/json/libjson-module-ijar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/remote/libremote-module-ijar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/remote/libapi-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/bidi/libbidi-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/bidi/libaugmenter-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/bidi/browsingcontext/libbrowsingcontext-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/bidi/emulation/libemulation-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/bidi/log/liblog-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/bidi/module/libmodule-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/bidi/network/libnetwork-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/bidi/permissions/libpermissions-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/bidi/script/libscript-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/bidi/storage/libstorage-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/bidi/webextension/libwebextension-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/devtools/libdevtools-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/devtools/libdevtools-prototypes-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/devtools/libaugmenter-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/os/libos-module-ijar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/remote/http/libhttp-module-ijar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/remote/locators/liblocators-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/remote/tracing/libtracing-lib-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/remote/tracing/empty/libempty-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/remote/tracing/opentelemetry/libopentelemetry-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/support/libsupport-module-ijar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/support/libpage-factory-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/support/decorators/libdecorators-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/support/events/libevents-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/support/locators/liblocators-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/support/ui/libclock-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/support/ui/libcomponents-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/support/ui/libelements-hjar.jar bazel-out/k8-fastbuild/bin/java/src/org/openqa/selenium/support/ui/libwait-hjar.jar bazel-out/k8-fastbuild/bin/java/test/org/openqa/selenium/grid/testing/libtesting-hjar.jar bazel-out/k8-fastbuild/bin/java/test/org/openqa/selenium/remote/tracing/libtracing-support-hjar.jar bazel-out/k8-fastbuild/bin/external/rules_jvm_external++maven+maven/com/google/guava/guava/33.5.0-jre/header_guava-33.5.0-jre.jar bazel-out/k8-fastbuild/bin/external/rules_jvm_external++maven+maven/io/opentelemetry/opentelemetry-api/1.59.0/header_opentelemetry-api-1.59.0.jar bazel-out/k8-fastbuild/bin/external/rules_jvm_external++maven+maven/org/junit/jupiter/junit-jupiter-api/6.0.3/header_junit-jupiter-api-6.0.3.jar bazel-out/k8-fastbuild/bin/external/rules_jvm_external++maven+maven/org/assertj/assertj-core/3.27.7/header_assertj-core-3.27.7.jar bazel-out/k8-fastbuild/bin/external/rules_jvm_external++maven+maven/org/zeromq/jeromq/0.6.0/header_jeromq-0.6.0.jar bazel-out/k8-fastbuild/bin/external/rules_jvm_external++maven+maven/org/junit/jupiter/junit-jupiter-engine/6.0.3/header_junit-jupiter-engine-6.0.3.jar bazel-out/k8-fastbuild/bin/external/rules_jvm_external++maven+maven/org/junit/platform/junit-platform-launcher/6.0.3/header_junit-platform-launcher-6.0.3.jar bazel-out/k8-fastbuild/bin/external/rules_jvm_external++maven+maven/org/junit/platform/junit-platform-reporting/6.0.3/header_junit-platform-reporting-6.0.3.jar --reduce_classpath_mode NONE)
1212:  # Configuration: 8671359e2eb43ae7cbe4f45cf01ecaf930b875d73d8779543a80f8f00ad8bf48
1213:  # Execution platform: //common/remote-build:platform
1214:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChDmeX-90wlUA5Ny75TqA3lfEgdkZWZhdWx0GiUKICzDQTH0Z9Ie_VnMvIgHH_eDbfepFh3-IU08JUlHVNNjELcD
1215:  java/test/org/openqa/selenium/grid/distributor/package-info.java:21: error: symbol not found org.jspecify.annotations.NullMarked
1216:  import org.jspecify.annotations.NullMarked;
1217:  ^
1218:  java/test/org/openqa/selenium/grid/distributor/package-info.java:1: error: could not resolve NullMarked
1219:  // Licensed to the Software Freedom Conservancy (SFC) under one
1220:  ^
1221:  (20:27:08) �[32m[20,459 / 21,469]�[0m 1142 / 2921 tests, �[31m�[1m6 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 53s remote, remote-cache ... (12 actions, 3 running)
1222:  (20:27:12) �[31m�[1mERROR: �[0m/home/runner/work/selenium/selenium/java/test/org/openqa/selenium/grid/distributor/BUILD.bazel:44:16: Building java/test/org/openqa/selenium/grid/distributor/libmedium-tests-test-lib.jar (2 source files) failed: (Exit 1): java failed: error executing Javac command (from target //java/test/org/openqa/selenium/grid/distributor:medium-tests-test-lib) 
1223:  (cd /home/runner/.bazel/execroot/_main && \
1224:  exec env - \
1225:  BAZEL_DO_NOT_DETECT_CPP_TOOLCHAIN=1 \
1226:  HOME=/home/dev \
1227:  JRUBY_OPTS=--dev \
1228:  LC_CTYPE=en_US.UTF-8 \
1229:  PATH=/bin:/usr/bin:/usr/local/bin \
1230:  external/rules_java++toolchains+remotejdk21_linux/bin/java '--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.main=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.processing=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.resources=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED' '--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.comp=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED' '--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED' '--add-opens=java.base/java.nio=ALL-UNNAMED' '--add-opens=java.base/java.lang=ALL-UNNAMED' '-Dsun.io.useCanonCaches=false' -XX:-CompactStrings -Xlog:disable '-Xlog:all=warning:stderr:uptime,level,tags' -jar external/rules_java++toolchains+remote_java_tools/java_tools/JavaBuilder_deploy.jar @bazel-out/k8-fastbuild/bin/java/test/org/openqa/selenium/grid/distributor/libmedium-tests-test-lib.jar-0.params @bazel-out/k8-fastbuild/bin/java/test/org/openqa/selenium/grid/distributor/libmedium-tests-test-lib.jar-1.params)
1231:  # Configuration: 8671359e2eb43ae7cbe4f45cf01ecaf930b875d73d8779543a80f8f00ad8bf48
1232:  # Execution platform: //common/remote-build:platform
1233:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChD1biO5Rh5cBJL2GkJ3IvvTEgdkZWZhdWx0GiUKIICw29tHCGvRQbsiGUB2ijyWmb-B72DON3hnL8Ip4bbQELcD
1234:  java/test/org/openqa/selenium/grid/distributor/package-info.java:18: error: [strict] Using type org.jspecify.annotations.NullMarked from an indirect dependency (TOOL_INFO: "@maven//:org_jspecify_jspecify"). See command below **
1235:  @NullMarked
1236:  ^
1237:  �[35m�[1m ** Please add the following dependencies:�[0m 
1238:  @maven//:org_jspecify_jspecify to //java/test/org/openqa/selenium/grid/distributor:medium-tests-test-lib 
1239:  �[35m�[1m ** You can use the following buildozer command:�[0m 
1240:  buildozer 'add deps @maven//:org_jspecify_jspecify' //java/test/org/openqa/selenium/grid/distributor:medium-tests-test-lib 
1241:  (20:27:12) �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:target_locator-firefox-beta (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/target_locator-firefox-beta/test_attempts/attempt_1.log)
1242:  (20:27:15) �[32m[20,460 / 21,469]�[0m 1149 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 60s remote, remote-cache ... (11 actions, 3 running)
1243:  (20:27:17) �[31m�[1mFAIL: �[0m//java/src/org/openqa/selenium:core-lib-spotbugs (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/java/src/org/openqa/selenium/core-lib-spotbugs/test_attempts/attempt_1.log)
1244:  (20:27:22) �[32m[20,460 / 21,469]�[0m 1149 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 67s remote, remote-cache ... (11 actions, 6 running)
1245:  (20:27:28) �[32m[20,461 / 21,469]�[0m 1149 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 73s remote, remote-cache ... (15 actions, 8 running)
1246:  (20:27:33) �[32m[20,467 / 21,469]�[0m 1149 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 78s remote, remote-cache ... (50 actions, 7 running)
1247:  (20:27:38) �[32m[20,467 / 21,469]�[0m 1149 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 83s remote, remote-cache ... (50 actions, 8 running)
1248:  (20:27:45) �[32m[20,469 / 21,471]�[0m 1149 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 90s remote, remote-cache ... (50 actions, 6 running)
1249:  (20:27:53) �[32m[20,470 / 21,473]�[0m 1149 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 98s remote, remote-cache ... (50 actions, 6 running)
1250:  (20:28:00) �[32m[20,472 / 21,785]�[0m 1149 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 105s remote, remote-cache ... (50 actions, 6 running)
1251:  (20:28:07) �[32m[20,473 / 21,786]�[0m 1149 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 112s remote, remote-cache ... (50 actions, 7 running)
1252:  (20:28:12) �[32m[20,474 / 21,787]�[0m 1149 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 117s remote, remote-cache ... (50 actions, 8 running)
1253:  (20:28:18) �[32m[20,477 / 21,789]�[0m 1149 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 123s remote, remote-cache ... (50 actions, 8 running)
1254:  (20:28:23) �[32m[20,479 / 21,791]�[0m 1149 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 128s remote, remote-cache ... (50 actions, 8 running)
1255:  (20:28:33) �[32m[20,485 / 21,806]�[0m 1150 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 137s remote, remote-cache ... (50 actions, 9 running)
1256:  (20:28:38) �[32m[20,489 / 21,810]�[0m 1150 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 143s remote, remote-cache ... (50 actions, 8 running)
1257:  (20:28:43) �[32m[20,493 / 21,817]�[0m 1150 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 148s remote, remote-cache ... (50 actions, 8 running)
1258:  (20:28:48) �[32m[20,495 / 21,821]�[0m 1150 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 153s remote, remote-cache ... (50 actions, 9 running)
1259:  (20:28:54) �[32m[20,497 / 21,824]�[0m 1150 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 159s remote, remote-cache ... (50 actions, 9 running)
1260:  (20:29:00) �[32m[20,501 / 21,831]�[0m 1150 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 165s remote, remote-cache ... (50 actions, 10 running)
1261:  (20:29:08) �[32m[20,507 / 21,840]�[0m 1151 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 173s remote, remote-cache ... (50 actions, 11 running)
1262:  (20:29:13) �[32m[20,512 / 21,848]�[0m 1151 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 178s remote, remote-cache ... (50 actions, 10 running)
1263:  (20:29:18) �[32m[20,519 / 21,853]�[0m 1154 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 183s remote, remote-cache ... (50 actions, 8 running)
1264:  (20:29:24) �[32m[20,523 / 21,857]�[0m 1154 / 2921 tests, �[31m�[1m13 failed�[0m;�[0m Testing //java/src/org/openqa/selenium:core-lib-spotbugs; 189s remote, remote-cache ... (50 actions, 10 running)
1265:  (20:29:28) �[31m�[1mFAIL: �[0m//java/src/org/openqa/selenium:core-lib-spotbugs (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/java/src/org/openqa/selenium/core-lib-spotbugs/test.log)
1266:  �[31m�[1mFAILED: �[0m//java/src/org/openqa/selenium:core-lib-spotbugs (Summary)
1267:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/java/src/org/openqa/selenium/core-lib-spotbugs/test.log
1268:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/java/src/org/openqa/selenium/core-lib-spotbugs/test_attempts/attempt_1.log
1269:  (20:29:28) �[32mINFO: �[0mFrom Testing //java/src/org/openqa/selenium:core-lib-spotbugs:
1270:  ==================== Test output for //java/src/org/openqa/selenium:core-lib-spotbugs:
1271:  H X LG: Changes to logger could be lost in org.openqa.selenium.internal.Debug.configureLogger()  At Debug.java:[line 67]
1272:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChD1Mi_7KQRcZ4gowcIGm8CVEgdkZWZhdWx0GiUKIFjxdU6YKlzGdrDEbYnw0wBidVHRH4hM19un66iKrtO5ELwD
1273:  ================================================================================
1274:  ==================== Test output for //java/src/org/openqa/selenium:core-lib-spotbugs:
1275:  H X LG: Changes to logger could be lost in org.openqa.selenium.internal.Debug.configureLogger()  At Debug.java:[line 67]
1276:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChD1Mi_7KQRcZ4gowcIGm8CVEgdkZWZhdWx0GiUKIFjxdU6YKlzGdrDEbYnw0wBidVHRH4hM19un66iKrtO5ELwD
1277:  ================================================================================
1278:  (20:29:29) �[32m[20,528 / 21,860]�[0m 1156 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 189s remote, remote-cache ... (50 actions, 9 running)
1279:  (20:29:30) �[31m�[1mFAIL: �[0m//py:test/selenium/webdriver/common/bidi_input_tests-firefox-bidi (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/py/test/selenium/webdriver/common/bidi_input_tests-firefox-bidi/test_attempts/attempt_1.log)
1280:  (20:29:35) �[32m[20,532 / 21,865]�[0m 1156 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 195s remote, remote-cache ... (50 actions, 11 running)
1281:  (20:29:40) �[32m[20,536 / 21,868]�[0m 1157 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 200s remote, remote-cache ... (50 actions, 12 running)
1282:  (20:29:48) �[32m[20,540 / 21,873]�[0m 1157 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 208s remote, remote-cache ... (50 actions, 14 running)
1283:  (20:29:53) �[32m[20,549 / 21,883]�[0m 1157 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 213s remote, remote-cache ... (50 actions, 14 running)
1284:  (20:29:58) �[32m[20,552 / 21,884]�[0m 1157 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 218s remote, remote-cache ... (50 actions, 16 running)
1285:  (20:30:04) �[32m[20,557 / 21,888]�[0m 1157 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 224s remote, remote-cache ... (50 actions, 16 running)
1286:  (20:30:09) �[32m[20,564 / 21,894]�[0m 1160 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 229s remote, remote-cache ... (50 actions, 17 running)
1287:  (20:30:14) �[32m[20,569 / 21,895]�[0m 1160 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 234s remote, remote-cache ... (50 actions, 16 running)
1288:  (20:30:19) �[32m[20,572 / 21,895]�[0m 1161 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 239s remote, remote-cache ... (50 actions, 17 running)
1289:  (20:30:25) �[32m[20,576 / 21,900]�[0m 1161 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 245s remote, remote-cache ... (50 actions, 18 running)
1290:  (20:30:32) �[32m[20,584 / 21,905]�[0m 1164 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 252s remote, remote-cache ... (50 actions, 19 running)
1291:  (20:30:38) �[32m[20,591 / 21,912]�[0m 1164 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 258s remote, remote-cache ... (50 actions, 19 running)
1292:  (20:30:43) �[32m[20,596 / 21,917]�[0m 1164 / 2921 tests, �[31m�[1m14 failed�[0m;�[0m Testing //rb/spec/integration/selenium/webdriver:target_locator-firefox-beta; 263s remote, remote-cache ... (50 actions, 21 running)
1293:  (20:30:44) �[31m�[1mFAIL: �[0m//rb/spec/integration/selenium/webdriver:target_locator-firefox-beta (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/target_locator-firefox-beta/test.log)
1294:  �[31m�[1mFAILED: �[0m//rb/spec/integration/selenium/webdriver:target_locator-firefox-beta (Summary)
1295:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/rb/spec/integration/selenium/webdriver/target_locator-firefox-beta/test.log
...

1309:  switches to a frame directly
1310:  switches to a frame by Element
1311:  switches to parent frame
1312:  switches to a window and execute a block when current window is closed
1313:  switches to default content
1314:  when switching windows
1315:  switches to a window and back when given a block
1316:  handles exceptions inside the block
1317:  switches to a window without a block
1318:  uses the original window if the block closes the popup
1319:  #new_window
1320:  switches to a new window
1321:  switches to a new tab
1322:  raises exception when the new window type is not recognized
1323:  switches to the new window then close it when given a block
1324:  does not error if switching to a new window with a block that closes window
1325:  with more than two windows
1326:  closes current window via block
1327:  closes another window
1328:  iterates over open windows when current window is not closed
1329:  iterates over open windows when current window is closed
1330:  alerts
1331:  allows the user to accept an alert (FAILED - 1)
1332:  allows the user to dismiss an alert (FAILED - 2)
1333:  allows the user to set the value of a prompt (FAILED - 3)
1334:  allows the user to get the text of an alert (FAILED - 4)
1335:  raises when calling #text on a closed alert (FAILED - 5)
1336:  raises NoAlertOpenError if no alert is present
1337:  unhandled alert error
1338:  raises an UnexpectedAlertOpenError if an alert has not been dealt with (FAILED - 6)
1339:  Failures:
1340:  1) Selenium::WebDriver::TargetLocator alerts allows the user to accept an alert
1341:  Failure/Error: alert = wait_for_alert
1342:  Selenium::WebDriver::Error::TimeoutError:
1343:  timed out after 5 seconds ()
1344:  # ./rb/lib/selenium/webdriver/common/wait.rb:76:in 'until'
1345:  # ./rb/spec/integration/selenium/webdriver/spec_support/helpers.rb:79:in 'wait_for_alert'
1346:  # ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:272:in 'block in WebDriver'
1347:  2) Selenium::WebDriver::TargetLocator alerts allows the user to dismiss an alert
1348:  Failure/Error: alert = wait_for_alert
1349:  Selenium::WebDriver::Error::TimeoutError:
1350:  timed out after 5 seconds ()
1351:  # ./rb/lib/selenium/webdriver/common/wait.rb:76:in 'until'
1352:  # ./rb/spec/integration/selenium/webdriver/spec_support/helpers.rb:79:in 'wait_for_alert'
1353:  # ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:283:in 'block in WebDriver'
1354:  3) Selenium::WebDriver::TargetLocator alerts allows the user to set the value of a prompt
1355:  Failure/Error: alert = wait_for_alert
1356:  Selenium::WebDriver::Error::TimeoutError:
1357:  timed out after 5 seconds ()
1358:  # ./rb/lib/selenium/webdriver/common/wait.rb:76:in 'until'
1359:  # ./rb/spec/integration/selenium/webdriver/spec_support/helpers.rb:79:in 'wait_for_alert'
1360:  # ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:294:in 'block in WebDriver'
1361:  4) Selenium::WebDriver::TargetLocator alerts allows the user to get the text of an alert
1362:  Failure/Error: alert = wait_for_alert
1363:  Selenium::WebDriver::Error::TimeoutError:
1364:  timed out after 5 seconds ()
1365:  # ./rb/lib/selenium/webdriver/common/wait.rb:76:in 'until'
1366:  # ./rb/spec/integration/selenium/webdriver/spec_support/helpers.rb:79:in 'wait_for_alert'
1367:  # ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:306:in 'block in WebDriver'
1368:  5) Selenium::WebDriver::TargetLocator alerts raises when calling #text on a closed alert
1369:  Failure/Error: alert = wait_for_alert
1370:  Selenium::WebDriver::Error::TimeoutError:
1371:  timed out after 5 seconds ()
1372:  # ./rb/lib/selenium/webdriver/common/wait.rb:76:in 'until'
1373:  # ./rb/spec/integration/selenium/webdriver/spec_support/helpers.rb:79:in 'wait_for_alert'
1374:  # ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:320:in 'block in WebDriver'
1375:  6) Selenium::WebDriver::TargetLocator alerts unhandled alert error raises an UnexpectedAlertOpenError if an alert has not been dealt with
1376:  Failure/Error: wait_for_alert
1377:  Selenium::WebDriver::Error::TimeoutError:
1378:  timed out after 5 seconds ()
1379:  # ./rb/lib/selenium/webdriver/common/wait.rb:76:in 'until'
1380:  # ./rb/spec/integration/selenium/webdriver/spec_support/helpers.rb:79:in 'wait_for_alert'
1381:  # ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:335:in 'block in WebDriver'
1382:  Finished in 1 minute 56.13 seconds (files took 2.63 seconds to load)
1383:  26 examples, 6 failures
1384:  Failed examples:
1385:  rspec ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:268 # Selenium::WebDriver::TargetLocator alerts allows the user to accept an alert
1386:  rspec ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:279 # Selenium::WebDriver::TargetLocator alerts allows the user to dismiss an alert
1387:  rspec ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:290 # Selenium::WebDriver::TargetLocator alerts allows the user to set the value of a prompt
1388:  rspec ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:302 # Selenium::WebDriver::TargetLocator alerts allows the user to get the text of an alert
1389:  rspec ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:314 # Selenium::WebDriver::TargetLocator alerts raises when calling #text on a closed alert
1390:  rspec ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:332 # Selenium::WebDriver::TargetLocator alerts unhandled alert error raises an UnexpectedAlertOpenError if an alert has not been dealt with
1391:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChAPnxlqq1NecbJT0SsEwnMlEgdkZWZhdWx0GiUKIPPsijXfnJUqCioWkhcVwLF2NzDm2x7VesZsIZIPRzkxELwD
...

1404:  switches to a frame directly
1405:  switches to a frame by Element
1406:  switches to parent frame
1407:  switches to a window and execute a block when current window is closed
1408:  switches to default content
1409:  when switching windows
1410:  switches to a window and back when given a block
1411:  handles exceptions inside the block
1412:  switches to a window without a block
1413:  uses the original window if the block closes the popup
1414:  #new_window
1415:  switches to a new window
1416:  switches to a new tab
1417:  raises exception when the new window type is not recognized
1418:  switches to the new window then close it when given a block
1419:  does not error if switching to a new window with a block that closes window
1420:  with more than two windows
1421:  closes current window via block
1422:  closes another window
1423:  iterates over open windows when current window is not closed
1424:  iterates over open windows when current window is closed
1425:  alerts
1426:  allows the user to accept an alert (FAILED - 1)
1427:  allows the user to dismiss an alert (FAILED - 2)
1428:  allows the user to set the value of a prompt (FAILED - 3)
1429:  allows the user to get the text of an alert (FAILED - 4)
1430:  raises when calling #text on a closed alert (FAILED - 5)
1431:  raises NoAlertOpenError if no alert is present
1432:  unhandled alert error
1433:  raises an UnexpectedAlertOpenError if an alert has not been dealt with (FAILED - 6)
1434:  Failures:
1435:  1) Selenium::WebDriver::TargetLocator alerts allows the user to accept an alert
1436:  Failure/Error: alert = wait_for_alert
1437:  Selenium::WebDriver::Error::TimeoutError:
1438:  timed out after 5 seconds ()
1439:  # ./rb/lib/selenium/webdriver/common/wait.rb:76:in 'until'
1440:  # ./rb/spec/integration/selenium/webdriver/spec_support/helpers.rb:79:in 'wait_for_alert'
1441:  # ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:272:in 'block in WebDriver'
1442:  2) Selenium::WebDriver::TargetLocator alerts allows the user to dismiss an alert
1443:  Failure/Error: alert = wait_for_alert
1444:  Selenium::WebDriver::Error::TimeoutError:
1445:  timed out after 5 seconds ()
1446:  # ./rb/lib/selenium/webdriver/common/wait.rb:76:in 'until'
1447:  # ./rb/spec/integration/selenium/webdriver/spec_support/helpers.rb:79:in 'wait_for_alert'
1448:  # ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:283:in 'block in WebDriver'
1449:  3) Selenium::WebDriver::TargetLocator alerts allows the user to set the value of a prompt
1450:  Failure/Error: alert = wait_for_alert
1451:  Selenium::WebDriver::Error::TimeoutError:
1452:  timed out after 5 seconds ()
1453:  # ./rb/lib/selenium/webdriver/common/wait.rb:76:in 'until'
1454:  # ./rb/spec/integration/selenium/webdriver/spec_support/helpers.rb:79:in 'wait_for_alert'
1455:  # ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:294:in 'block in WebDriver'
1456:  4) Selenium::WebDriver::TargetLocator alerts allows the user to get the text of an alert
1457:  Failure/Error: alert = wait_for_alert
1458:  Selenium::WebDriver::Error::TimeoutError:
1459:  timed out after 5 seconds ()
1460:  # ./rb/lib/selenium/webdriver/common/wait.rb:76:in 'until'
1461:  # ./rb/spec/integration/selenium/webdriver/spec_support/helpers.rb:79:in 'wait_for_alert'
1462:  # ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:306:in 'block in WebDriver'
1463:  5) Selenium::WebDriver::TargetLocator alerts raises when calling #text on a closed alert
1464:  Failure/Error: alert = wait_for_alert
1465:  Selenium::WebDriver::Error::TimeoutError:
1466:  timed out after 5 seconds ()
1467:  # ./rb/lib/selenium/webdriver/common/wait.rb:76:in 'until'
1468:  # ./rb/spec/integration/selenium/webdriver/spec_support/helpers.rb:79:in 'wait_for_alert'
1469:  # ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:320:in 'block in WebDriver'
1470:  6) Selenium::WebDriver::TargetLocator alerts unhandled alert error raises an UnexpectedAlertOpenError if an alert has not been dealt with
1471:  Failure/Error: wait_for_alert
1472:  Selenium::WebDriver::Error::TimeoutError:
1473:  timed out after 5 seconds ()
1474:  # ./rb/lib/selenium/webdriver/common/wait.rb:76:in 'until'
1475:  # ./rb/spec/integration/selenium/webdriver/spec_support/helpers.rb:79:in 'wait_for_alert'
1476:  # ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:335:in 'block in WebDriver'
1477:  Finished in 1 minute 54.91 seconds (files took 4.55 seconds to load)
1478:  26 examples, 6 failures
1479:  Failed examples:
1480:  rspec ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:268 # Selenium::WebDriver::TargetLocator alerts allows the user to accept an alert
1481:  rspec ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:279 # Selenium::WebDriver::TargetLocator alerts allows the user to dismiss an alert
1482:  rspec ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:290 # Selenium::WebDriver::TargetLocator alerts allows the user to set the value of a prompt
1483:  rspec ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:302 # Selenium::WebDriver::TargetLocator alerts allows the user to get the text of an alert
1484:  rspec ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:314 # Selenium::WebDriver::TargetLocator alerts raises when calling #text on a closed alert
1485:  rspec ./rb/spec/integration/selenium/webdriver/target_locator_spec.rb:332 # Selenium::WebDriver::TargetLocator alerts unhandled alert error raises an UnexpectedAlertOpenError if an alert has not been dealt with
1486:  Execution result: https://gypsum.cluster.engflow.com/actions/executions/ChAPnxlqq1NecbJT0SsEwnMlEgdkZWZhdWx0GiUKIPPsijXfnJUqCioWkhcVwLF2NzDm2x7VesZsIZIPRzkxELwD
1487:  ================================================================================
1488:  (20:30:49) �[32m[20,602 / 21,921]�[0m 1165 / 2921 tests, �[31m�[1m15 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_input_tests-firefox-bidi; 193s remote, remote-cache ... (50 actions, 19 running)
1489:  (20:30:54) �[32m[20,612 / 21,929]�[0m 1167 / 2921 tests, �[31m�[1m15 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_input_tests-firefox-bidi; 199s remote, remote-cache ... (50 actions, 17 running)
1490:  (20:30:59) �[32m[20,618 / 21,931]�[0m 1169 / 2921 tests, �[31m�[1m15 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_input_tests-firefox-bidi; 204s remote, remote-cache ... (50 actions, 16 running)
1491:  (20:31:06) �[32m[20,624 / 21,932]�[0m 1171 / 2921 tests, �[31m�[1m15 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_input_tests-firefox-bidi; 211s remote, remote-cache ... (50 actions, 16 running)
1492:  (20:31:09) �[32mINFO: �[0mFrom Building java/test/org/openqa/selenium/logging/PerformanceLoggingTest.jar (1 source file):
1493:  java/test/org/openqa/selenium/logging/PerformanceLoggingTest.java:47: warning: [removal] PROFILER in LogType has been deprecated and marked for removal
1494:  return driver.manage().logs().get(LogType.PROFILER);
1495:  ^
1496:  (20:31:11) �[32m[20,633 / 21,940]�[0m 1172 / 2921 tests, �[31m�[1m15 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_input_tests-firefox-bidi; 216s remote, remote-cache ... (50 actions, 14 running)
1497:  (20:31:16) �[32m[20,644 / 21,944]�[0m 1177 / 2921 tests, �[31m�[1m15 failed�[0m;�[0m Testing //py:test/selenium/webdriver/common/bidi_input_tests-firefox-bidi; 221s remote, remote-cache ... (50 actions, 16 running)
1498:  (20:31:19) �[31m�[1mFAIL: �[0m//py:test/selenium/webdriver/common/bidi_input_tests-firefox-bidi (see /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/py/test/selenium/webdriver/common/bidi_input_tests-firefox-bidi/test.log)
1499:  �[31m�[1mFAILED: �[0m//py:test/selenium/webdriver/common/bidi_input_tests-firefox-bidi (Summary)
1500:  /home/runner/.bazel/execroot/_main/bazel-out/k8-fastbuild/testlogs/py/test/selenium/webdriver/common/bidi_input_tests-firefox-bidi/test.log
...

1519:  py/test/selenium/webdriver/common/bidi_input_tests.py::test_set_multiple_files[firefox] PASSED
1520:  py/test/selenium/webdriver/common/bidi_input_tests.py::test_release_actions[firefox] PASSED
1521:  py/test/selenium/webdriver/common/bidi_input_tests.py::test_file_dialog_event_handler_multiple[firefox-True] 
1522:  ╭────────────────────────────────────────────── Traceback (most recent call la...

@VietND96 VietND96 merged commit db9b07a into trunk Mar 11, 2026
55 of 57 checks passed
@VietND96 VietND96 deleted the improve-router-websocket branch March 11, 2026 04:59
AutomatedTester pushed a commit that referenced this pull request Mar 11, 2026
…, high-latency proxying (#17197)

Signed-off-by: Viet Nguyen Duc <nguyenducviet4496@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

B-build Includes scripting, bazel and CI integrations B-grid Everything grid and server related C-java Java Bindings

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants