MotirBuilding in public
MOTIR · moooon
onMotir
You’re viewing a public project. Anyone can view it — no account needed. Sign in to submit, upvote, or comment on requests.View-only — you can’t edit work items
MOTIR-384

6.9.3 Story tests — quick-search correctness + permission/exclusion + the #98 large-seed regression E2E + a11y sweep

Done
Description

Estimate: 26m · Depends on: 6.9.2

The story-closing verification (Principle #18).

Vitest (integration, real Postgres): quick-search correctness (key prefix/exact + title trgm, relevance order, bound), the permission scope (a user cannot find issues in a project they cannot read — per 6.4 role), the link-candidate composition (exclusions preserved under search), and the #98 regression guard: seed a large item set, prove an EARLY-created issue is returned by a search from a LATE issue’s picker (the exact case the newest-50 cap broke).

Playwright E2E (extend tests/e2e/*link*): open a late issue’s relationships panel → Link issue → type an early issue’s key → it appears → link it → it renders in its group; assert the no-results state; assert the create-modal link control searches the same way. a11y: strict axe sweep over the link form (empty / typing / no-results / selected).

Acceptance criteria

  • The correctness + permission + exclusion matrix is green; the #98 large-seed regression guard fails on the old newest-50 read and passes on the new one.
  • The E2E journey passes in CI’s Playwright lane (async waits via the harness, not sleeps); the axe sweep reports zero violations.
  • The Story 6.9 verification recipe runs clean top to bottom; pnpm test:coverage keeps all 6.9 files ≥ 90%.

Context refs

  • finding #98 (the behaviour the regression guard pins); 6.9.1 / 6.9.2
  • tests/integration/ + tests/e2e/ conventions; the E2E harness / selector memories
  • The Story 6.9 verification recipe — the checklist this automates