Skip to content

Electrobun: track upstream CEF fixes (Linux/Windows, multiremote, multi-window, deeplink) #320

@goosewobbler

Description

@goosewobbler

Summary

The 0.1.0 release of @wdio/electrobun-service ships macOS-only with several documented feature gaps, all rooted in upstream Electrobun/CEF limitations (see #316 where they surfaced, and the package README's Known limitations). This issue tracks the CEF-side road to 1.0 from our repo: which upstream fix unblocks which service surface, why each is required, and the consumer-side re-fold work to do as each lands.

It is the sibling of #317 (the non-CEF / native-renderer track). The two tracks have independent upstream dependency sets and are both additive — a CEF-app user still needs every fix below even after #317 lands.

Upstream umbrella issue: to be filed against blackboardsh/electrobun post-0.1.0 (one umbrella linking their existing issues, not N duplicates). Link it here once filed: TBD.

Upstream fixes → what each unblocks

# Upstream fix Existing upstream refs Unblocks in @wdio/electrobun-service
1 Profile isolation — make the failed-persist:default fallback ephemeral-per-webview, or expose a per-window partition (BrowserWindow currently forces persist:default, which the CEF chrome-runtime cannot create as a non-global profile) blackboardsh/electrobun#380 (open, proper fix), #448 (open, identical Linux error), #278 (closed — the GetGlobalContext() band-aid that is why macOS recovers) The big one. Reliable multi-window (switchWindow/listWindows → re-fold the window e2e suite); de-flakes the macOS standard gate (drop specFileRetries: 3); reliable single-window target exposure (today a lone CEF window doesn't reliably appear in /json, so the fixtures open a staggered second window as a workaround); prerequisite for Windows /json
2 Linux: enable remote_debugging_port (currently commented out in linux/nativeWrapper.cpp) blackboardsh/electrobun#445 (open, but framed macOS-only — Linux is disabled entirely, not opt-in) Any Linux CDP at all (together with fix 1) → re-add the Linux build + e2e CI legs
3 Per-instance root_cache_path override (env/flag — currently hard-fixed, so ≥2 app processes share one cache root and CEF folds them) blackboardsh/electrobun#380 (same custom-cache-path theme) multiremote / parallel workers (maxInstances > 1) — a mandatory convergence feature
4 Single-instance lock + open-url routing to the running/cloned instance none — net-new upstream ask Reliable triggerDeeplink → re-fold the deeplink e2e suite

Windows native-mode support needs fix 1 (its global-context fallback serves no /json, unlike macOS); Linux needs fixes 1 and 2.

Consumer-side re-fold checklist (as each fix lands)

  • Re-add the Linux/Windows fixture-build + e2e CI jobs (removed in feat(electrobun): E2E suite + CI build/test wiring (PR4) #316, not allow-failure)
  • Re-fold the window and deeplink suites into the CI matrix (currently local-only via TEST_TYPE=window|deeplink)
  • Relax/remove the launcher's Linux/Windows native-mode SevereServiceError guard (renderer-framed; see errors.ts)
  • Lift maxInstances: 1 and validate multiremote
  • Drop the fixtures' staggered-second-window workaround + the single-window caveat in the README
  • Drop specFileRetries: 3 in e2e/wdio.electrobun.conf.ts once the macOS CEF race is gone
  • Lift the matching README/docs limitation rows; minor-bump on the 0.x line per landed gap
  • Graduate to 1.0.0 at full parity (all intended platforms + the full convergent surface)

Why a repo-side issue

The upstream umbrella tracks the electrobun changes; this issue tracks both sets of changes from our side — the mapping from upstream fix → service surface, and the re-fold work that is ours regardless of where the fixes land. #317 deliberately scopes these out; this is where they live.

Metadata

Metadata

Assignees

No one assigned

    Labels

    os:linuxLinux-specific issuesos:macosMacOS-specific issuesos:windowsWindows-specific issuesscope:electrobunElectrobun service and CDP bridgestatus:blockedWork cannot start until something is resolvedtype:taskTask(s) to complete

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions