5.6 Tests — the combined collaboration journey + the loaded issue at scale
The Epic-5 cross-cutting test story, re-scoped (the 3.5/4.7 precedent) to the non-duplicative remainder now that every sibling story carries its own closing test subtask (5.1.7 / 5.2.8 / 5.3.8 / 5.4.11 / 5.5.5). Two deliverables:
1. The combined collaboration journey (5.6.2). One issue, every Epic-5 feature, one flow — asserting the seams that only exist BETWEEN stories: a comment that embeds an upload (5.2.3 links it, panel shows it editor-sourced), @mentions a user who is also watching (exactly ONE email — the mention; the watcher job dedupes), on an issue with custom-field values, labels, components, while a second user watches and the activity feed interleaves all of it in order; then the unwind — delete the comment (thread cascades, the embedded attachment unlinks, History records the deletion, no stale notification fires), delete the custom field (values vanish, old History entries render the fallback), archive a select option (old values + History keep rendering). Each story proves its own link; THIS spec proves the chain.
2. The collaboration-loaded issue at scale (5.6.1 fixture + 5.6.3 specs). A real team's oldest issue is heavy: hundreds of comments and revisions, dozens of attachments, a full rail, many watchers. The existing large fixtures (tree-shaped 2.5.16, board-shaped 3.5.1, sprint-shaped 4.7.1) build NONE of that — the same fixture gap 4.7.1 closed for Scrum. 5.6.1 builds the collaboration-heavy seed through the shipped services (the no-raw-inserts rule, which doubles as a bulk-path smoke test); 5.6.3 asserts the loaded detail page stays bounded (every collection paged — comments, attachments, history, watchers; the rail capped by the 50-field rule; one batched resolution set per page; bounded DOM) and accessible (the strict axe sweep over the fully-populated page — every Epic-5 surface at once, the state no per-story sweep renders).
Out of scope: everything an owning story already tests (listed in the re-scope note); cross-ISSUE collaboration views (Epic-6 reporting); load/stress testing beyond the bounded-read assertions (no perf-lab tooling in the repo — the CI-lane cap pattern from board-at-scale applies instead).
Verification
- Pull the Story branch (requires Stories 5.1–5.5 merged),
pnpm install,pnpm prisma migrate dev(no migration — test-only story),pnpm db:seed,pnpm dev. pnpm db:seed:collab(5.6.1) → the loaded issue exists: 300+ comments (threaded, mention-bearing), 60+ attachments (mixed panel/editor-sourced), all five custom-field types valued, 10+ labels, 3+ components, 15+ watchers, 500+ revisions — all seeded through the shipped services (the script fails loudly on any service error).pnpm test:e2e --grep collab-journey— the combined journey passes: the comment-with-embed-and-mention chain (ONE email to the mentioned watcher, the attachment auto-linked + editor-sourced, the activity interleave), and the unwind (comment delete → cascade + unlink + History record; field delete → fallback entries; option archive → still-rendering history).pnpm test:e2e --grep collab-at-scale— the loaded issue's detail page: first paint shows one page of each collection with Show-more affordances (network asserts bounded reads — no request returns the full set), the rail renders within the field cap, the strict axe sweep over the fully-populated page reports zero violations, and the CI lane runs at the reduced cap (the board-at-scale lane precedent).pnpm test:coverage— the journey/fixture helpers hold the coverage gate; all sibling-story suites still green (no regression from the fixture).- Drift check: the spec asserts NO unbounded read exists on the detail route (the finding-#57 sentinel for Epic 5).