Match incoming direct-call events against every local identity alias - home id, entity id, peer id, and each provisioned signal-server actor id - instead of only oderId||id. A caller who met the callee through a room on the caller's signal server addresses the ring by the callee's provisioned actor id, so the old admission check silently dropped it: the caller went "In Voice" while the callee saw no modal, no ring audio, and no rail entry. Incoming self aliases are normalized onto the canonical local id (normalizeDirectCallPayloadSelfAliases) so they never appear as a phantom third participant, and remoteParticipantIds / the DM-header peer lookup skip all self aliases. Adds a DM-header call ring e2e including the cross-signal topology (callee homed on a secondary signal server) that fails on the old code. Co-authored-by: Cursor <cursoragent@cursor.com>
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/.