Context
The frontend has 1496 passing unit tests across 134 files, but several views and critical components lack any test coverage. As the app grows, these untested surfaces become blind spots for regression.
Untested or Under-Tested Views
Views With No Tests
- ArchiveView — archive listing, restore actions, empty state
- WorkspaceSettingsView (if exists) — settings management
- MetricsView — dashboard charts, date picker, board selector, loading/error/empty states
Views With Minimal Tests
- BoardView — the most complex view; drag-drop, column management, card CRUD, keyboard shortcuts, context menus. Board components have some tests, but the view orchestration is under-tested.
- ReviewView — proposal listing, approval/rejection actions, detail expansion
- ChatView (or chat panel) — message input, response display, tool-status indicators, degraded state
- InboxView — capture list, triage status, action buttons
Untested Critical Components
Board Components
- Column drag-and-drop ordering — verify column positions update correctly
- Card drag between columns — verify card moves to target column at correct position
- WIP limit enforcement — column at WIP limit shows visual indicator, prevents adding more cards (or shows warning)
- Card context menu — right-click/menu actions (edit, move, archive, delete, assign label)
- Board header — board name editing, archive button, share button
Capture Components
- Capture input — text input, submit button, keyboard shortcut (capture should feel fast)
- Capture queue status indicator — shows triage progress
Review Components
- Proposal card — operation summary, risk indicators, approve/reject buttons, detail toggle
- Proposal detail panel — operation list, provenance links, diff view
Navigation
- Sidebar — board list, active board highlight, workspace mode indicator
- Router guards — unauthenticated user redirected to login, authenticated user redirected from login to home
Notifications
- Notification bell — unread count badge, dropdown list, mark-as-read
Shared Components
- Loading states — skeleton loaders, spinners across views
- Empty states — "no boards yet", "no captures yet", "no proposals" — with clear CTAs
- Error boundaries — component error does not crash entire app
Implementation Notes
- Use `@vue/test-utils` with `mount`/`shallowMount`
- Mock stores using `createTestingPinia` with initial state
- For drag-and-drop: test the event handlers and state changes, not the actual drag behavior (that's E2E territory)
- For router guards: use `@vue/test-utils` router mock or test the guard functions directly
- Focus on behavior over implementation: what does the user see/experience?
Priority Order
- BoardView components (highest complexity, most used)
- ReviewView + proposal components (core trust mechanism)
- CaptureView + capture components (core input mechanism)
- Navigation/router guards (security boundary)
- Everything else
Context
The frontend has 1496 passing unit tests across 134 files, but several views and critical components lack any test coverage. As the app grows, these untested surfaces become blind spots for regression.
Untested or Under-Tested Views
Views With No Tests
Views With Minimal Tests
Untested Critical Components
Board Components
Capture Components
Review Components
Navigation
Notifications
Shared Components
Implementation Notes
Priority Order