- Status: Proposed
- Date: 2026-06-11
- Discussion: PR pending, #17628
Bindings use WebDriver BiDi to implement and extend the Selenium API. This record settles BiDi's relationship to the public API: what users program against, and where protocol code lives. CDP was managed differently across the bindings, but all of them resulted in users needing to understand CDP implementation details to work with it to one extent or another. This is happening in BiDi the same way.
BiDi is an implementation mechanism, not a public API. New capabilities are exposed as high-level, protocol-neutral APIs, idiomatic per language, subject to our standard deprecation policy. Everything in a BiDi namespace is internal: still reachable for anything not yet wrapped, but not documented and subject to change without warning.
A binding conforms when:
- The supported API never references BiDi — no types, methods, properties, or entry points.
- BiDi implementation code (including everything generated from CDDL) is visibly internal — marked per language convention as not intended for public consumption.
This includes removing/renaming:
HasBiDiinterfacebidi_connection,bidi,getBidi,AsBiDiAsyncmethodsenable_bidimethods in options
- Expose the whole protocol as a public API (Rejected)
- not user-friendly syntax
- A supported-but-separate public protocol namespace (Rejected)
- multiple implementations are confusing
- Allow methods and classes to reference BiDi
- users shouldn't need to know the underlying implementation mechanism, things should just work without additional ceremony
- Internal implementation mechanism only (Accepted)
- Users never need to know which protocol services a command.
- Each new capability requires API design work across bindings before it ships.
- Existing public surfaces that fail the conformance tests are brought in line per the deprecation policy, tracked below.
| Binding | Status | Notes / tracking link |
|---|---|---|
| Java | pending | |
| Python | pending | |
| Ruby | pending | |
| .NET | pending | |
| JavaScript | pending |