Summary
Browser mode (#260) shipped for Tauri, Electron, and Dioxus, but test coverage is asymmetric. Electron has the full pyramid (unit → integration → E2E → package); Tauri and Dioxus only have unit tests + package fixtures. This issue brings Tauri and Dioxus up to the Electron template so all three are gated equally.
Current state
| Tier |
Electron |
Tauri |
Dioxus |
| Unit |
✅ |
✅ |
✅ |
| Integration |
✅ test/integration/browser-mode.integration.spec.ts, launcher.browser.integration.spec.ts |
❌ none |
❌ none |
| E2E |
✅ e2e/wdio.electron-browser.conf.ts + e2e/test/electron-browser/mock.spec.ts |
❌ no config |
❌ no config |
| Package |
✅ (CJS+ESM, mocking exercised) |
✅ but mocking only |
⚠️ fixtures/package-tests/dioxus-app/test-browser/browser.spec.ts only checks page load + service presence — no mocking |
Tasks
Notes
- Reuse the Electron integration/E2E specs as the canonical template — the worker flow (navigate → inject → patch
url() → single-context mock) is identical across frameworks.
- Dioxus has no event bus, so there's intentionally no events tier to test (unlike Tauri/Electron).
Follow-up to #260.
Summary
Browser mode (#260) shipped for Tauri, Electron, and Dioxus, but test coverage is asymmetric. Electron has the full pyramid (unit → integration → E2E → package); Tauri and Dioxus only have unit tests + package fixtures. This issue brings Tauri and Dioxus up to the Electron template so all three are gated equally.
Current state
test/integration/browser-mode.integration.spec.ts,launcher.browser.integration.spec.tse2e/wdio.electron-browser.conf.ts+e2e/test/electron-browser/mock.spec.tsfixtures/package-tests/dioxus-app/test-browser/browser.spec.tsonly checks page load + service presence — no mockingTasks
browser-mode.integration.spec.ts/launcher.browser.integration.spec.ts: launcher→worker handshake, capability transformation, no-driver assertion, navigation re-injection, mock lifecycle across navigation.e2e/wdio.tauri-browser.conf.ts+ a browser-mode spec (real Chrome, IPC mock,ps-based process-absence check that notauri-driver/msedgedriverstarted).fixtures/package-tests/dioxus-app/test-browser/browser.spec.tsto actually exercisebrowser.dioxus.mock()+mock.update(), matching the Tauri/Electron fixtures.packages/dioxus-service/docs/browser-mode.mdthat events are unsupported (no native event bus; seenative-types/src/dioxus.ts), so the docs match Tauri/Electron's events sections by explicit omission.electron-browserE2E + the three:browserpackage tests are wired separately as part of closing Browser-only test mode for Tauri and Electron services #260).Notes
url()→ single-context mock) is identical across frameworks.Follow-up to #260.