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-444

6.15.4 Story tests — filtered board read (predicate per column, cap over filtered set, permission/Scrum compose) + the board-filter E2E journey + a11y sweep

Done
Description

Estimate: 28m · Depends on: 6.15.3

The story-closing verification (Principle #18).

Vitest (integration, real Postgres): the filtered board read — the predicate applied per column, the truncated/cap computed over the FILTERED set (a filter under the cap clears truncated), the unfiltered path unchanged, the 6.4-permission + workspace scope, and the Scrum compose (the filter ANDs with the 4.5 sprint scope, never widening it). An unauthorized/invalid saved-filter id → the typed error.

Playwright E2E (tests/e2e/board-filter.spec.ts): on a seeded board, open the toolbar Filter → apply a quick filter (kind Bug) → assert only matching cards across columns (wait on the board re-projection response, not the optimistic UI) → toggle a Work type facet (e.g. Design) and assert the board re-projects to that work type (the 6.15.5 facet) → apply a saved filter → Clear restores the full board → the over-cap banner CTA opens the filter; assert the URL carries the filter and survives reload. a11y: strict axe sweep over the filter affordance (closed / open builder incl. the Work type group / saved-filter picker / active chips / filtered-empty).

Acceptance criteria

  • The read matrix (predicate per column · cap-over-filtered · unfiltered-unchanged · permission/tenant scope · Scrum compose · work-type facet narrows the board · typed saved-filter error) is green.
  • The E2E journey passes in CI’s Playwright lane (async waits via the harness, not sleeps — arm waitForResponse before the action, per CLAUDE.md); the axe sweep reports zero violations.
  • The Story 6.15 verification recipe runs clean top to bottom; pnpm test:coverage keeps all 6.15 files ≥ 90%.

Context refs

  • 6.15.2 (the read under test) + 6.15.3 (the UI journey)
  • tests/e2e/board-crud.spec.ts / board-scrum.spec.ts (the board E2E setup + selector patterns to build on) + tests/helpers/db.ts (the large-seed fixture for the cap case)
  • The E2E selector / "wait on the authoritative signal" memories; the Story 6.15 verification recipe — the checklist this automates