Orbit currently has no automated cross-platform deployment testing.
A renderer-init bug like the recent DOMPurify regression (#36) would
ship to whichever platform we didn't manually launch on. Wire up a
GitHub Actions matrix so every push gets validated on all three OSes.
Scope
Phase 1 — matrix build (small, high-value):
.github/workflows/build.yml with runs-on: [macos-latest, windows-latest, ubuntu-latest]
- On each:
npm install, cd app && npm install, npm run typecheck, cd app && npx tsc --noEmit, npm test, cd app && npx electron-forge package
- Verifies build succeeds and packages on every supported OS
Phase 2 — Electron smoke test:
- Playwright's Electron driver:
_electron.launch() against the packaged app (or app/ dev mode with xvfb-run on Linux)
- Assert: renderer loads,
#agent-status updates from initial state, no uncaught errors in renderer console
- Catches today's-class bugs (module-init throws killing the renderer)
Out of scope for now:
- Full UI interaction testing across OSes — GitHub macOS/Windows runners have weak display-server support, expensive to maintain. Manual QA + Phase 2 smoke covers ~80% of regressions.
Logistics
- Land on `main`, not on `notebook-rewire-pure-md` — every future branch should inherit CI.
- Once `notebook-rewire-pure-md` is merged, rebase/merge `main` back so it benefits.
References
Orbit currently has no automated cross-platform deployment testing.
A renderer-init bug like the recent DOMPurify regression (#36) would
ship to whichever platform we didn't manually launch on. Wire up a
GitHub Actions matrix so every push gets validated on all three OSes.
Scope
Phase 1 — matrix build (small, high-value):
.github/workflows/build.ymlwithruns-on: [macos-latest, windows-latest, ubuntu-latest]npm install,cd app && npm install,npm run typecheck,cd app && npx tsc --noEmit,npm test,cd app && npx electron-forge packagePhase 2 — Electron smoke test:
_electron.launch()against the packaged app (orapp/dev mode withxvfb-runon Linux)#agent-statusupdates from initial state, no uncaught errors in renderer consoleOut of scope for now:
Logistics
References