After two rounds of root-cause fixes (40 → 14 failures), the
residual 14 tests all fall into seven classes that are orthogonal
to v1.0.7 money-movement surface AND require investigations that
exceed the rc1 scope:
#57/v107-e2e-05 (5 tests) — upload backend submit hangs
27-upload:54, 43-upload-deep:663/713/747/781
#58/v107-e2e-06 (2 tests) — chat backend echo missing
29-chat-functional:70, :142
#59/v107-e2e-07 (2 tests) — workflow cascade under parallel load
13-workflows:17, :148
#60/v107-e2e-08 (1 test) — /feed page crash (browser-level)
11-accessibility-ethics:342
#61/v107-e2e-09 (2 tests) — chat DOM-detach race conditions
41-chat-deep:266, :604
#62/v107-e2e-10 (1 test) — playlist edit redirect
playlists-edit-audit:14
#63/v107-e2e-11 (1 test) — Playwright 50MB buffer limit (test bug)
43-upload-deep:364
Each test skipped with a test.skip + inline comment pointing at
its ticket, and SKIPPED_TESTS.md updated with the classification
table + unskip procedure.
Baseline trajectory over the rc1 sprint:
Pre-fixes: 122 pass / 40 fail / 9 skip
Round 1 (6 RC): 144 pass / 17 fail / 10 skip (-23 fail)
Round 2 (wide): 146 pass / 14 fail / 11 skip (-3 fail)
Post-skip: expected 146 pass / 0 fail / ~25 skip
Rationale vs "fix now":
* Each of the seven classes requires a backend-infra dive
(ClamAV, WebSocket, chat worker config) or test-infra refactor
(per-worker DB isolation, animation waits). Each 2-4h minimum,
with non-trivial regression risk on adjacent tests.
* 146/171 passing, 0 failing is a strictly more auditable release
state than SKIP_E2E=1 masking. The skips are explicit per-test
with documented root cause, not a blanket gate bypass.
* Satisfies the three conditions the user set yesterday for
formalising a scope reduction: each skip is documented, each
has an owner ticket, unskip procedure is traceable.
No v1.0.7 surface code touched.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
22 @critical failures in 41-chat-deep.spec.ts shared one root cause:
`firstConversationRow` searched for `button[type="button"]` inside
the sidebar container, which also matched the "New Channel" CTA
button at the sidebar footer. When the listener test user had no
conversations seeded, `waitForConversationOrEmpty` raced and
returned 'has-conversations' because the CTA button matched the
conversation-row locator — `selectFirstConversation` then clicked
the CTA, opened CreateRoomDialog, and the subsequent
`expect(input).toBeEnabled()` failed because clicking the CTA
never set `currentConversationId`.
Fix:
* `data-testid="chat-conversation-item"` on ConversationItem
(+ `data-conversation-id` for callers that need the id).
* `data-testid="chat-new-channel-cta"` on the New Channel
footer button.
* `firstConversationRow` / `waitForConversationOrEmpty` /
`createRoom` rewired to target by testid. No more overlap.
* Shared helper `tests/e2e/helpers/conversation.ts` with a
minimal `navigateToConversation(page)` — picks the first
existing conversation if any, else creates a disposable one,
returns when the message input is enabled. Signature is
deliberately minimal (no options) to avoid the second-API-
surface trap. Future callers that need specialised behavior
set up store state directly instead of extending this helper.
Results:
* 22 failed → 20 passed / 3 failed / 10 skipped (graceful skips
when test user lacks seed data).
* The 3 remaining failures are distinct root causes:
- `:220` chat page debug text leak (suspected [object Object]
or undefined rendering somewhere in chat UI — real bug,
tracked separately)
- `:339` / `:347` createRoom DOM-detach race: the "Create
room" button gets detached mid-click, suggesting the dialog
is re-rendering during the click handler. Likely a fix in
the dialog lifecycle rather than the test. Tracked
separately.
29-chat-functional.spec.ts (2 failures on send-message) not
touched by this fix — those tests don't hit the row-vs-CTA
ambiguity, they fail further downstream when the backend doesn't
echo sent messages. Same class as #7 (backend-side chat
processing incomplete in test env).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>