Estimate: 14m · Depends on: 2.3.3, 2.3.6
The Story-closing Playwright suite at
tests/e2e/issue-create-edit-flow.spec.ts, driving the real stack end-to-end
and surfacing any UI ↔ service-layer seam bugs that unit tests structurally can't catch
(the 1.6.6 pattern — real-stack E2E found two production bugs the unit tests masked).
Sibling to 2.3.2's delete-with-reassign E2E.
Scenarios (all single specs against the real Next.js dev server + Postgres):
/.../edit for an
existing issue, change title + priority, submit; verify the update + a single revision
row of changeKind=updated.todo → in_progress (legal); verify success.
Then try changing to a custom status with NO transition row (illegal restricted-mode);
verify the inline picker error fires AND no revision row was written.updatedAt via the _test harness, submit; verify the
StaleWorkItemError 409 surfaces as the refresh banner.Reusable helpers lifted from 2.2.7's
tests/e2e/_helpers/workflow.ts + 1.5.6's
tests/e2e/_helpers/shell-session.ts. Any new helper goes under
tests/e2e/_helpers/issues.ts (createIssue, openEditForm, submitEditForm).
pnpm test:e2e --grep issue-create-edit-flow passes locally + in CI against a fresh-DB run.data-testid hooks added in 2.3.3 / 2.3.6 if any are missing — no brittle text/role-only selectors./.../edit route joins the STRICT shell-a11y sweep (if it didn't already in 2.3.6).tests/e2e/_helpers/workflow.ts (2.2.7) — createItem / transition helperstests/e2e/_helpers/shell-session.ts (1.5.6) — sign-in + createWorkspace + createProject helperstests/e2e/workflow-delete-reassign.spec.ts (2.3.2 — sibling) — the existing Story 2.3 E2E to mirror conventions withapp/api/_test/work-items/route.ts — the test harness for forging row state (used for stale-edit)playwright.config.ts — webServer block