Skip to content

[πŸš€ Feature]: No binding runs its BiDi tests against GridΒ #17978

Description

@AutomatedTester

Feature and motivation

Every binding has BiDi tests, and most have tests that run against a Grid server, but no binding runs BiDi tests through Grid. So the path where a client speaks BiDi over Grid's websocket proxy (/session/<id>/se/bidi) has no automated coverage in any language, even though the Grid side has supported it for a long time.

The server side works: LocalNode rewrites the returned webSocketUrl to ws://<grid>/session/<id>/se/bidi, keeps the node's real socket as se:gridWebSocketUrl, and ProxyNodeWebsockets.findBiDiEndpoint tunnels it. Node enable-bidi defaults to true.

Verified per binding:

Binding Status
Python Now covered. test-<browser>-remote-bidi targets added for chrome and firefox
Java Not covered β€” BIDI_BROWSERS in java/defs.bzl is chrome/chrome-beta/edge/firefox/firefox-beta, no remote entry
Ruby Not covered β€” rb/spec/tests.bzl generates -remote and -bidi targets in separate branches, never combined
JavaScript Needs checking β€” there is a remote/*.js glob and a test/bidi/ directory; whether they intersect was not established
.NET Needs checking β€” there is a remote browser config (ActiveDriverConfig=Remote, tagged skip-rbe) and 29 BiDi test files, but whether the BiDi tests run under that config was not established

Usage example

On the Python side this needed no client or conftest change at all β€” only a Bazel target combining the existing BiDi test sources with the existing Grid test wiring. The suite then passed with zero remote-specific failures across 26 targets on both chrome and firefox; the only two failures reproduced identically without Grid (a headless-Chromium window-focus artifact and a wheel-scroll timing flake, both since fixed).

That suggests the same is likely cheap for the other bindings, and that the coverage gap is a wiring oversight rather than a missing capability. Worth confirming per binding, since each has its own websocket client and the Python one, for example, does not forward ClientConfig auth/TLS settings onto the BiDi socket β€” a gap this kind of test would eventually expose.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

A-needs-triagingA Selenium member will evaluate this soon!I-enhancementSomething could be better

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions