Skip to content

Selenium compatibility

What works when you point a Selenium client at WebSummoner instead of Selenium Grid, and what does not.

Checked against Selenium 4.49.0 (released 9 September 2026). Selenium adds capabilities faster than it changes the protocol, so this page is re-checked each time we take a release; the date above is what it was last verified against.

Legend: Yes works today · Partial works differently · No not implemented. This page records what the current release does; it is not a statement about what will or will not be built.

The hub proxies /session/<id>/... straight to the real driver, so the W3C surface is whatever your driver implements — not something WebSummoner can lag behind on.

AreaWebSummoner
W3C WebDriver endpoints (navigation, elements, cookies, alerts, frames, actions)Yes — proxied to the driver untouched
Print to PDF, screenshots, executeScriptYes — driver-level
Timeouts, unhandledPromptBehavior, strictFileInteractabilityYes — driver-level
Legacy JSONWP clients (Selenium 2/3)Yes — response is wrapped in the W3C envelope
CapabilityPurposeWebSummoner
se:cdp, se:cdpVersionChrome DevTools endpoint returned to the clientYes — rewritten to the hub’s own /devtools/<id>/ address
webSocketUrlOpt in to WebDriver BiDiYes — rewritten to the hub’s own /bidi/<id> address, see BiDi
se:downloadsEnabledEnable Grid-managed downloadsNo — WebSummoner has downloads under its own URL, see Downloads
se:vnc, se:noVncUrlAdvertise a live-view URL in the returned capabilitiesNo — VNC works, it is simply not advertised
selenoid:options / websummoner:optionsVideo, VNC, logs, timeouts, container tuningYes — see Capabilities

se:cdp is deliberately withheld for Firefox and Safari: neither has a CDP endpoint, and advertising one makes clients fail their first WebSocket handshake.

EndpointGridWebSummoner
/statusYesYes — plus queue, per-browser usage and live sessions
/session lifecycleYesYes
GET /session/<id>/se/filesLists downloadable filesNo — see below
/graphqlGrid’s own query APINo — /status and /metrics cover similar ground
/metricsNot built inYes — Prometheus, always on
/video/, /logs/, /vnc/, /clipboard/, /download/Partly, and newerYes
/bidi/<session-id>Grid proxies BiDi on its own routesYes
FeatureWebSummoner
One container per session, discarded afterwardsYes — the core model
Session queue with timeoutsYes — and load-shedding, see Session queue
Video recordingYes
Live view (VNC)Yes
Session logsYes
Docker backendYes
Kubernetes backendNo
Node registration / multi-node routingNo in the hub — put ggr in front of several hubs
Relay to Appium or a cloud providerNo

Set webSocketUrl: true and the hub rewrites the address the driver returns to its own /bidi/<session-id>, then proxies the socket. No extra flag, and no capability is invented: a driver that does not answer with a webSocketUrl leaves the client correctly seeing none.

Measured against the latest image of every browser:

BrowserVersion testedBiDi
chrome153.0Yes
MicrosoftEdge153.0Yes
opera136.0Yes
brave1.95Yes
yandex26.8Yes
firefox156.0Yes
safari2.54.0No — WebKit has no BiDi, and none is advertised

Chromium-based drivers serve BiDi on the same port as WebDriver, so the hub reaches it the moment a session exists.

Firefox is different: geckodriver reports ws://127.0.0.1:9222/session/<id> and Firefox binds that port to loopback inside the container, so the image relays it on the container address. Firefox also validates the Host header, so the hub dials the relay while presenting the address the driver reported.

Selenium 4.8+ clients call driver.get_downloadable_files(), which issues GET /session/<id>/se/files and expects the file names back under names.

WebSummoner has the same capability behind a different URL: a per-session file server at /download/<session-id>/<file>, also reachable as /session/<id>/websummoner/download/<file>. The feature is there, but stock Selenium download code does not find it.

VNC works and is reachable at /vnc/<session-id>, but the URL is not returned in the new-session capabilities, so tooling that discovers live view from se:vnc or se:noVncUrl cannot find it automatically.

Per-session video, logs and VNC with no extra componentsBuilt in rather than an add-on
Prometheus /metricsAlways available, no flag
Load-shedding admission controlSession queue
Browser discovery from image labelsDiscovery
Memory footprintA single Go binary rather than a JVM per node

For a broader comparison including Moon, Playwright and the commercial clouds, see Comparing WebSummoner.