- `LIVE_RELOAD=false npm run dev` keeps the renderer alive across a machine suspend; the reload client otherwise destroys the session under test. - `dev-peer.sh` plus a separate userdata dir runs a second local peer. - `tools/voice-probe.js` samples peer state and RTP counters from a live window, persisting to localStorage so a renderer reload cannot erase it. - e2e helpers for voice pairs, peer-role election, and a TURN relay. - Electron single-instance and dev-client-load decisions move into rules files with colocated specs.
End-to-End Tests
Playwright suite for the MetoYou / Toju product client. The tests exercise browser flows such as authentication, chat, voice, screen sharing, and settings with reusable page objects and helpers.
Commands
Run these from the repository root:
npm run test:e2eruns the full Playwright suite.npm run test:e2e:uiopens Playwright UI mode.npm run test:e2e:debugruns the suite in debug mode.npm run test:e2e:reportopens the HTML report intest-results/html-report.
You can also run npx playwright test from e2e/ directly.
Runtime
playwright.config.tsstartscd ../toju-app && npx ng serveas the test web server.- The suite targets
http://localhost:4200. - Tests currently run with a single Chromium worker.
- The browser launches with fake media-device flags and grants microphone/camera permissions.
- Artifacts are written to
../test-results/artifacts, and the HTML report is written to../test-results/html-report.
Structure
| Path | Description |
|---|---|
tests/ |
Test specs grouped by feature area such as auth/, chat/, voice/, screen-share/, and settings/ |
pages/ |
Reusable Playwright page objects |
helpers/ |
Test helpers, fake-server utilities, and WebRTC helpers |
fixtures/ |
Shared test fixtures |
Notes
- The suite is product-client focused; it does not currently spin up the marketing website.
- Keep reusable browser flows in
pages/and cross-test utilities inhelpers/.