Gate the "Shared from your device" label and the hidden download affordance on whether this device actually holds the file bytes, not on whether the current user uploaded it. uploaderPeerId is the user id, so the old check claimed ownership on every device of the uploader, blocking view/download on second devices that only synced metadata. Also include attachment metadata in the account_sync chat-sync-batch so sibling devices learn about synced attachments at all. 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/.