You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The initial 0.1.0 release of @wdio/electrobun-service supports CEF-rendered apps only, and (per the upstream CEF profile catch-22) ships macOS-only. But Electrobun's defaultRenderer is "native" — most shipped apps use the system webview, not CEF. This issue tracks the follow-up to support non-CEF (native-renderer) Electrobun apps where the platform's webview is drivable, to fill the Linux/Windows gaps the CEF path can't.
The service is intentionally pre-1.0 (0.1.0) because of these gaps — 1.0 is the full release once they're filled. This work is therefore part of the road to 1.0 (a minor-bump item on the 0.x line, e.g. 0.2.0), landing after the 0.1.0 ship (PR5). It does not gate the 0.1.0 release. This is the consumer-side track; the upstream CEF fixes are tracked separately (see "Out of scope").
Background
0.1.0 forces the CEF renderer for a uniform Chromium/CDP target model. CEF's chrome-runtime can't create the persist:default profile its BrowserWindow forces and falls back to a global browser context — macOS recovers (serves /json), Linux/Windows don't → 0.1.0 is macOS-only CEF (see #316). Since most apps ship the native renderer, a CEF-only service tests something users largely don't ship; supporting native renderers both broadens coverage and fills the OS gaps. Filling them (alongside the upstream CEF fixes) is part of what graduates the service from 0.x to 1.0.
Per-renderer feasibility (verified against the electrobun source)
OS
Native renderer
Remote surface
Transport
Feasibility
Windows
WebView2 (Chromium)
CDP
CDP-attach (existing bridge)
✅ likely service-side only — set WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS=--remote-debugging-port=N on the spawned app; no upstream dependency. Start here.
Linux
WebKitGTK
W3C WebDriver (WebKitWebDriver)
external-driver archetype (as Tauri/Dioxus Linux)
⚠️ needs upstream (webkit_web_context_set_automation_allowed + automation-started; Electrobun wires only the local inspector) plus a second transport
It does not reduce the CEF-app upstream asks — a CEF-app user still needs every one of them.
It brings its own, separate upstream gap (Linux WebKitGTK automation-allow).
→ two independent upstream dependency sets. macOS must remain CEF regardless.
Proposed sequencing
Windows / WebView2 + CDP — highest leverage, no upstream dependency. Validate WebView2 /json discovery; reuse the existing CDP bridge + multi-target model.
Linux / WebKitGTK + W3C WebDriver — gated on the upstream automation-allow change; adds the external-driver archetype to the service.
macOS — no action; stays CEF.
Each landed renderer should re-add the matching CI leg, lift the corresponding docs limitation, and bump the minor version — converging on 1.0.
Out of scope
Upstream electrobun CEF fixes (profile fallback, Linux remote_debugging_port, root_cache_path override, single-instance/open-url) — tracked repo-side in Electrobun: track upstream CEF fixes (Linux/Windows, multiremote, multi-window, deeplink) #320 (which maps each upstream fix to what it unblocks); the upstream umbrella issue against blackboardsh/electrobun will be linked from there.
macOS native (WKWebView) automation — WKWebView exposes no remote automation surface, but an embedded WebDriver server we ship ourselves is feasible without upstream changes: a Bun-side package the app registers (the tauri-plugin-wdio-webdriver / wdio-dioxus-embedded-driver model), serving W3C WebDriver from the Bun process and driving webviews via executeJavascript plus the existing webview→Bun RPC channel for result return. A separate archetype with its own caveats (JS-synthesised input, no screenshot API exposed) — file its own issue if/when prioritised.
Summary
The initial
0.1.0release of@wdio/electrobun-servicesupports CEF-rendered apps only, and (per the upstream CEF profile catch-22) ships macOS-only. But Electrobun'sdefaultRendereris"native"— most shipped apps use the system webview, not CEF. This issue tracks the follow-up to support non-CEF (native-renderer) Electrobun apps where the platform's webview is drivable, to fill the Linux/Windows gaps the CEF path can't.Background
0.1.0forces the CEF renderer for a uniform Chromium/CDP target model. CEF's chrome-runtime can't create thepersist:defaultprofile itsBrowserWindowforces and falls back to a global browser context — macOS recovers (serves/json), Linux/Windows don't →0.1.0is macOS-only CEF (see #316). Since most apps ship the native renderer, a CEF-only service tests something users largely don't ship; supporting native renderers both broadens coverage and fills the OS gaps. Filling them (alongside the upstream CEF fixes) is part of what graduates the service from0.xto1.0.Per-renderer feasibility (verified against the electrobun source)
WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS=--remote-debugging-port=Non the spawned app; no upstream dependency. Start here.WebKitWebDriver)webkit_web_context_set_automation_allowed+automation-started; Electrobun wires only the local inspector) plus a second transportSource refs:
package/src/native/win/nativeWrapper.cpp(WebView2put_AdditionalBrowserArguments);linux/nativeWrapper.cpp(onlywebkit_web_view_get_inspector, no automation-allow);macos/nativeWrapper.mm(developerExtrasEnabled+ private_inspector, no remote surface);bun/core/BuildConfig.ts(defaultRenderer: "native").Key principle: additive, not a substitute
Proposed sequencing
/jsondiscovery; reuse the existing CDP bridge + multi-target model.Each landed renderer should re-add the matching CI leg, lift the corresponding docs limitation, and bump the minor version — converging on
1.0.Out of scope
remote_debugging_port,root_cache_pathoverride, single-instance/open-url) — tracked repo-side in Electrobun: track upstream CEF fixes (Linux/Windows, multiremote, multi-window, deeplink) #320 (which maps each upstream fix to what it unblocks); the upstream umbrella issue againstblackboardsh/electrobunwill be linked from there.tauri-plugin-wdio-webdriver/wdio-dioxus-embedded-drivermodel), serving W3C WebDriver from the Bun process and driving webviews viaexecuteJavascriptplus the existing webview→Bun RPC channel for result return. A separate archetype with its own caveats (JS-synthesised input, no screenshot API exposed) — file its own issue if/when prioritised.