6.3.7 Story tests — aggregation matrices + permission/no-access matrix + the dashboard E2E journey + the reports E2E + a11y sweeps
Estimate: 30m · Depends on: 6.3.5, 6.3.6
The story-closing verification (Principle #18; the epic-wide journey stays Story 6.7).
Vitest (integration, real Postgres): the bucket matrix (day/week/month × cumulative × reopen-nets × window edges, against seeded revisions at known dates; large-seed boundedness assertions); the statistic matrix driven FROM the registry (every entry incl. dynamic CF entries — a new entry without a case fails, the totality-guard pattern); filter-results/issues-list parity; the permission matrix (owner / member / non-member × private / workspace × project-sourced / filter-sourced → data / 404 / no-access, route-level); stale-referent matrix (deleted filter / project / statistic referent); widget CRUD + move ordering properties; the registry enumeration guards (widget types + statistic types).
Playwright E2E (tests/e2e/dashboards.spec.ts): the recipe journey — create a dashboard, add all three widget types (filter + project sourced), configure each, switch layout, drag a widget across columns, reload (persistence), share-to-workspace + verify the second user's read-only + no-access states, delete the backing filter → stale state. (tests/e2e/reports.spec.ts): the hub → both report pages → configure → resolve + reopen an issue → the created-vs-resolved bucket nets; the distribution donut tracks a status change. a11y: the strict sweep over the grid (edit mode, a config panel open, every widget state visible) + both report pages.
Acceptance criteria
- All matrices green; boundedness + parity + permission assertions hold; the registry-driven suites fail on any uncovered entry.
- Both E2E journeys pass green in CI's Playwright lane; the sweeps report zero violations.
- The Story 6.3 verification recipe runs clean top to bottom;
pnpm test:coveragekeeps all 6.3 files ≥90%.
Context refs
- The 6.1.6 matrix/totality-guard pattern; the 5.6 at-scale fixture conventions
tests/e2e/harness + selector memories (prodect-e2e-selector-gotchas,board-e2e-dnd-at-scale-gotchas— the dnd drag step)- The Story 6.3 verification recipe — the checklist this automates
- Story 6.7 (the epic-wide remainder — do not duplicate)