Estimate: 17m · Depends on: 2.2.2, 2.2.4, 2.2.5, 2.2.6
The Story's closing journey-driven E2E (Playwright, real Postgres, real Next dev, following the Story-1.5.6 / Story-1.6.6 pattern). Drives the full workflow lifecycle from the user's seat to surface bugs the unit/integration tests miss, plus the tenant-isolation guarantees.
Scenarios covered:
/settings/project/[projectKey]/workflow showing the six default statuses (todo, blocked, in_progress, in_review, done, cancelled) + fifteen transitions + restricted policy. Assert both categories (todo, in_progress, done) are represented and that blocked + cancelled are rendered with the right pills.status: 'in_review' still resolve (the key is stable across renames — only the label changes; covered by a separate assertion).todo→blocked (legal per the seed); confirm the issue surfaces under the Blocked column / pill; transition blocked→in_progress back; both transitions succeed under restricted mode without flipping policy.in_progress→cancelled, legal per the seed); confirm finding-#21 readiness effect (a work item blocked by this cancelled blocker becomes ready); reopen via cancelled→todo and confirm the work item is blocked again.category: done; getTerminalStatusKeys now returns {done, cancelled, wont_fix}; try to delete the initial status → 422 toast; try to delete BOTH done AND cancelled in sequence — the second deletion is blocked by CANNOT_DELETE_LAST_TERMINAL_STATUS because wont_fix alone keeps the invariant; remove wont_fix too → blocked again until at least one terminal remains.open: same move succeeds./settings/project/.../workflow sees the read-only fallback; their Server Action POST returns 403.updateStatus({ isInitial: true }) on different rows; only one succeeds — the partial unique index from 2.2.1 plus the same-tx unset path from 2.2.5 keeps the invariant.Helpers: a new tests/e2e/_helpers/workflow.ts lifted from the inline setup, mirroring shell-session.ts + email-fault.ts patterns. Reused by any later Story (boards, list view) needing a workflow-seeded test fixture.
tests/e2e/workflow-flow.spec.ts ships the seven scenarios above; all green locally + in CI.tests/e2e/_helpers/workflow.ts reusable fixture lifted out./settings/project/[projectKey]/workflow in EMPTY state; zero rule exclusions.PRODECT_FINDINGS.md per mistake #27.tests/e2e/shell-flows.spec.ts (1.5.6) + tests/e2e/jobs-flow.spec.ts (1.6.6) — the journey-driven Story E2E shapetests/e2e/_helpers/shell-session.ts — the lift-helpers patterntests/e2e/shell-a11y.spec.ts (1.5.5) — extension surface for the new routeplaywright.config.ts — current webServer + env-gate setupPRODECT_FINDINGS.md — finding-protocol per mistake #27