- `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.
12 KiB
12 KiB
E2E Playwright run — emergency-fix baseline
- Started (UTC): 2026-08-12T10:58:08Z
- Finished (UTC): 2026-08-12T11:11:34Z
- Wall duration: 804.6s (~13.4 min)
- Command:
npm run test:e2e -- --reporter=list --reporter=json - Result: 65 passed, 0 failed, 0 flaky, 0 skipped
Verdict
No hard errors. The suite completed green: 65/65 expected, 0 unexpected, 0 timeouts, 0 flakes.
There is nothing to triage as a failing assertion in this run. Slow cases below are the only signals worth watching if “timeouts shouldn’t happen / app should be fast.”
Errors / failures
None in this run.
Stale note: test-results/.last-run.json and test-results/html-report/ still show an old July failure; this run overrode reporters with list+json and did not refresh those artifacts.
Slow tests (≥30s) — soft concern
| Duration | File | Test |
|---|---|---|
| 128.2s | voice/mixed-signal-config-voice.spec.ts |
8 users with different signal configs can voice, mute, deafen, and chat concurrently |
| 125.1s | voice/multi-signal-eight-user-voice.spec.ts |
keeps 8 users on 2 signal apis while voice, mute, and deafen stay consistent for 20+ seconds |
| 53.4s | auth/user-session-data-isolation.spec.ts |
gives a new user a blank slate and restores only that user local data after account switches |
| 33.7s | chat/chat-message-features.spec.ts |
shows per-server channel lists on first saved-server click |
| 30.3s | chat/multi-client-chat-sync.spec.ts |
syncs messages between same-user devices and late-joining users after offline gaps |
These passed, but they are the closest thing to “timeout risk” in a green suite. Multi-user voice specs dominate wall time.
Per-file totals
| File | Tests | Total | Max |
|---|---|---|---|
voice/mixed-signal-config-voice.spec.ts |
1 | 128.2s | 128.2s |
voice/multi-signal-eight-user-voice.spec.ts |
1 | 125.1s | 125.1s |
chat/chat-message-features.spec.ts |
9 | 84.2s | 33.7s |
auth/user-session-data-isolation.spec.ts |
2 | 73.2s | 53.4s |
screen-share/screen-share.spec.ts |
3 | 49.8s | 23.4s |
voice/direct-call.spec.ts |
3 | 31.8s | 17.5s |
chat/multi-client-chat-sync.spec.ts |
1 | 30.3s | 30.3s |
plugins/plugin-api-two-users.spec.ts |
1 | 27.4s | 27.4s |
chat/notifications.spec.ts |
2 | 25.6s | 20.9s |
voice/data-channel-recovery.spec.ts |
2 | 22.1s | 12.1s |
chat/profile-avatar-sync.spec.ts |
2 | 21.5s | 11.9s |
settings/connectivity-warning.spec.ts |
1 | 21.3s | 21.3s |
voice/voice-full-journey.spec.ts |
1 | 21.1s | 21.1s |
chat/server-icon-sync.spec.ts |
1 | 14.2s | 14.2s |
chat/dm-flow.spec.ts |
3 | 11.8s | 4.0s |
settings/stun-turn-fallback.spec.ts |
1 | 11.5s | 11.5s |
auth/login-return-url.spec.ts |
3 | 9.4s | 3.5s |
voice/dm-header-call-ring.spec.ts |
2 | 9.1s | 4.8s |
auth/multi-device-session.spec.ts |
1 | 8.6s | 8.6s |
chat/multi-device-attachment-sharing.spec.ts |
2 | 8.6s | 4.3s |
voice/voice-mute-state-reset.spec.ts |
1 | 6.9s | 6.9s |
servers/server-discovery-default.spec.ts |
2 | 6.3s | 3.1s |
settings/ice-server-settings.spec.ts |
2 | 6.2s | 3.9s |
chat/large-generic-file-transfer.spec.ts |
1 | 5.7s | 5.7s |
plugins/plugin-manager-ui.spec.ts |
1 | 4.6s | 4.6s |
chat/custom-emoji-user-binding.spec.ts |
1 | 3.9s | 3.9s |
auth/multi-signal-server-auth.spec.ts |
1 | 3.8s | 3.8s |
auth/offline-signal-server-no-login-loop.spec.ts |
1 | 3.7s | 3.7s |
chat/local-attachment-persistence.spec.ts |
1 | 2.8s | 2.8s |
chat/attachment-only-message-grouping.spec.ts |
1 | 2.5s | 2.5s |
mobile/mobile-login-on-startup.spec.ts |
2 | 2.4s | 1.2s |
chat/multi-image-gallery.spec.ts |
1 | 2.3s | 2.3s |
plugins/plugin-support-api.spec.ts |
1 | 1.9s | 1.9s |
mobile/mobile-settings-logout.spec.ts |
1 | 1.7s | 1.7s |
mobile/android-app-icon.spec.ts |
6 | 0.0s | 0.0s |
All tests by duration
| Duration | Status | File | Test |
|---|---|---|---|
| 128.2s | passed | voice/mixed-signal-config-voice.spec.ts |
8 users with different signal configs can voice, mute, deafen, and chat concurrently |
| 125.1s | passed | voice/multi-signal-eight-user-voice.spec.ts |
keeps 8 users on 2 signal apis while voice, mute, and deafen stay consistent for 20+ seconds |
| 53.4s | passed | auth/user-session-data-isolation.spec.ts |
gives a new user a blank slate and restores only that user local data after account switches |
| 33.7s | passed | chat/chat-message-features.spec.ts |
shows per-server channel lists on first saved-server click |
| 30.3s | passed | chat/multi-client-chat-sync.spec.ts |
syncs messages between same-user devices and late-joining users after offline gaps |
| 27.4s | passed | plugins/plugin-api-two-users.spec.ts |
runs chat, embed, soundboard, and profile APIs between two users |
| 23.4s | passed | screen-share/screen-share.spec.ts |
screen share connection stays stable for 10+ seconds |
| 21.3s | passed | settings/connectivity-warning.spec.ts |
shows warning icon when a peer loses all connections |
| 21.1s | passed | voice/voice-full-journey.spec.ts |
two users register, create server, join voice, and stay connected 10+ seconds with audio |
| 20.9s | passed | chat/notifications.spec.ts |
keeps unread badges visible when a muted channel suppresses desktop popups |
| 19.7s | passed | auth/user-session-data-isolation.spec.ts |
preserves a user saved rooms and local history across app restarts |
| 19.6s | passed | chat/chat-message-features.spec.ts |
syncs messages in a newly created text channel |
| 17.5s | passed | voice/direct-call.spec.ts |
two users can ring, answer, chat, see self voice indicators, and exchange audio |
| 15.4s | passed | screen-share/screen-share.spec.ts |
single user screen share: video and audio flow to receiver, voice audio continues |
| 14.2s | passed | chat/server-icon-sync.spec.ts |
loads the chat-server image for online, late-joining, restarted, and discovery users |
| 12.1s | passed | voice/data-channel-recovery.spec.ts |
heals a three-user voice mesh when one client loses every data channel |
| 11.9s | passed | chat/profile-avatar-sync.spec.ts |
syncs display name and description changes for online and late-joining users and persists after restart |
| 11.5s | passed | settings/stun-turn-fallback.spec.ts |
users with different ICE configs can voice chat together |
| 11.1s | passed | screen-share/screen-share.spec.ts |
multiple users screen share simultaneously |
| 10.0s | passed | voice/data-channel-recovery.spec.ts |
keeps two users hearing each other after a data-channel error and close |
| 9.6s | passed | chat/profile-avatar-sync.spec.ts |
syncs avatar changes for online and late-joining users and persists after restart |
| 8.9s | passed | voice/direct-call.spec.ts |
keeps private-call audio flowing after the data channel closes |
| 8.6s | passed | auth/multi-device-session.spec.ts |
covers identity, chat sync, typing exclusion, and voice exclusivity |
| 6.9s | passed | voice/voice-mute-state-reset.spec.ts |
clears stale mute state after abrupt disconnect and voice rejoin |
| 5.7s | passed | chat/large-generic-file-transfer.spec.ts |
browser receiver can request and download a generic file above the auto-save cap |
| 5.5s | passed | chat/chat-message-features.spec.ts |
edits and removes messages for both users |
| 5.3s | passed | voice/direct-call.spec.ts |
missing and ended private calls do not leave stale call controls behind |
| 4.8s | passed | voice/dm-header-call-ring.spec.ts |
callee homed on another signal server is notified when called via their provisioned actor id |
| 4.8s | passed | chat/notifications.spec.ts |
shows desktop notifications and unread badges for inactive channels |
| 4.6s | passed | chat/chat-message-features.spec.ts |
sends KLIPY GIF messages with mocked API responses |
| 4.6s | passed | plugins/plugin-manager-ui.spec.ts |
installs, grants, activates, and logs an all-API test plugin |
| 4.4s | passed | chat/chat-message-features.spec.ts |
syncs image and file attachments between users |
| 4.4s | passed | chat/chat-message-features.spec.ts |
syncs multi-chunk image attachments byte-identical between users |
| 4.3s | passed | chat/multi-device-attachment-sharing.spec.ts |
only the uploading device claims "Shared from your device"; the second same-user device can request it |
| 4.3s | passed | chat/chat-message-features.spec.ts |
renders link embeds for shared links |
| 4.3s | passed | chat/multi-device-attachment-sharing.spec.ts |
relays file-announce metadata to a sibling device that is already online during upload |
| 4.2s | passed | voice/dm-header-call-ring.spec.ts |
callee is notified when the caller starts the call from the DM chat header |
| 4.1s | passed | chat/chat-message-features.spec.ts |
shows typing indicators to other users |
| 4.0s | passed | chat/dm-flow.spec.ts |
delivers a live DM to the recipient conversation |
| 3.9s | passed | chat/custom-emoji-user-binding.spec.ts |
a second user on the same client does not inherit the first user library |
| 3.9s | passed | chat/dm-flow.spec.ts |
opens a DM from a user card and queues messages while offline |
| 3.9s | passed | settings/ice-server-settings.spec.ts |
allows adding, removing, and reordering ICE servers |
| 3.8s | passed | chat/dm-flow.spec.ts |
shows friend and message actions on the search people list |
| 3.8s | passed | auth/multi-signal-server-auth.spec.ts |
auto-provisions a foreign signal server when a new endpoint is added |
| 3.7s | passed | auth/offline-signal-server-no-login-loop.spec.ts |
does not redirect to authorize login after a foreign server goes offline |
| 3.6s | passed | chat/chat-message-features.spec.ts |
shows local room history on first saved-server click |
| 3.5s | passed | auth/login-return-url.spec.ts |
unwraps nested login returnUrl chains after successful login |
| 3.1s | passed | servers/server-discovery-default.spec.ts |
a fresh account sees public servers in Popular Servers without searching |
| 3.1s | passed | servers/server-discovery-default.spec.ts |
discovery falls back to the public listing when featured/trending routes 404 |
| 3.1s | passed | auth/login-return-url.spec.ts |
redirects unauthenticated /servers visits to login and returns there after login |
| 2.8s | passed | auth/login-return-url.spec.ts |
lets a returning user log back in after an expired session redirect |
| 2.8s | passed | chat/local-attachment-persistence.spec.ts |
remembers sent image and file across a page reload with no peer connected |
| 2.5s | passed | chat/attachment-only-message-grouping.spec.ts |
each caption-less attachment keeps its own message bubble and preview |
| 2.3s | passed | settings/ice-server-settings.spec.ts |
validates TURN entries require credentials |
| 2.3s | passed | chat/multi-image-gallery.spec.ts |
groups three images in one message bubble with a visible grid |
| 1.9s | passed | plugins/plugin-support-api.spec.ts |
covers plugin requirement, event, data, and websocket APIs with the fixture plugin |
| 1.7s | passed | mobile/mobile-settings-logout.spec.ts |
exposes logout in the settings menu on mobile viewports |
| 1.2s | passed | mobile/mobile-login-on-startup.spec.ts |
greets a signed-out mobile visitor on /dashboard with the login screen |
| 1.2s | passed | mobile/mobile-login-on-startup.spec.ts |
greets a signed-out mobile visitor on the app root with the login screen |
| 0.0s | passed | mobile/android-app-icon.spec.ts |
renders the brand mark (white cat on a purple disc) in the launcher bitmap |
| 0.0s | passed | mobile/android-app-icon.spec.ts |
renders the splash art as the brand mark centred on a purple field |
| 0.0s | passed | mobile/android-app-icon.spec.ts |
insets the adaptive foreground so launcher masks do not clip the cat face |
| 0.0s | passed | mobile/android-app-icon.spec.ts |
replaces every stock Capacitor placeholder with the brand asset |
| 0.0s | passed | mobile/android-app-icon.spec.ts |
ships a launcher icon and splash for every required density |
| 0.0s | passed | mobile/android-app-icon.spec.ts |
uses the brand purple as the adaptive-icon background |
Files in this folder
| Path | Purpose |
|---|---|
README.md |
This summary |
00-summary.md |
Short status for handoff/skimming |
slow-tests.md |
Slow-test detail only |
parsed-report.json |
Machine-readable extract |
full-run.log |
Raw Playwright JSON report (+ npm banner) |
run-started.txt / run-finished.txt |
UTC timestamps |