Skip to content

test: CI smoke test — Electron app packages and launches #159

@icebear0828

Description

@icebear0828

Goal

GitHub Actions workflow that packages the Electron app and verifies it launches without crashing.

Workflow file

.github/workflows/electron-smoke-test.yml

Trigger

on:
  push:
    branches: [master]
    paths: [packages/electron/**]
  pull_request:
    branches: [master]
    paths: [packages/electron/**]

Steps

  1. npm ci (root — installs workspaces)
  2. cd web && npm ci (web frontend deps)
  3. cd packages/electron/desktop && npm ci (desktop frontend deps)
  4. npm run build (builds web + tsc)
  5. cd packages/electron/desktop && npx vite build (desktop UI)
  6. cd packages/electron && npm run build (esbuild bundle)
  7. cd packages/electron && node electron/prepare-pack.mjs (copy root resources)
  8. cd packages/electron && npx electron-builder --config electron-builder.yml --linux --dir --publish never
  9. Launch with xvfb-run + Playwright `_electron.launch()`, assert window opens, close cleanly

Test file

packages/electron/__tests__/launch-smoke.test.ts (inside electron package, tracked by git)

Hard constraints — violations = auto-reject

  • Branch is master, NOT main
  • Package manager is npm — no pnpm/yarn
  • Do NOT modify .gitignore or electron-builder.yml
  • Do NOT bump electron version (keep ^35.7.5)
  • Do NOT add dependencies to root package.json — Playwright deps go in packages/electron/package.json only
  • TypeScript: no any
  • ESM project — use import.meta.dirname not __dirname
  • Runner: ubuntu-latest
  • Install Playwright deps: npx playwright install --with-deps
  • The test ONLY verifies: app launches → window appears → clean exit. No feature testing.

Reference

  • electron-builder config: packages/electron/electron-builder.yml
  • productName: "Codex Proxy" → Linux unpacked binary is at packages/electron/release/linux-unpacked/codex-proxy
  • Existing 40+ tests in packages/electron/__tests__/ use vitest
  • Build scripts: electron/build.mjs, electron/prepare-pack.mjs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions