Files
Toju/emergency-fix/e2e-failures/README.md
T
myxelium e49b3ec112 chore: dev-stack switches, shared e2e harness, and desktop shell rules
- `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.
2026-08-14 03:19:29 +02:00

153 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 shouldnt 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 |