* [05d580eb] test(panel): add baseline vitest tests for 5 source units and widen coverage include (#235)
- panel/src/lib/__tests__/agent-definitions.test.ts: all 7 filter functions covered
(getBoardAgents, getMainPm, getBackend/Frontend/Ux/Marketing/OnDemandAgents)
including null/undefined input and CEO/MAIN_PM exclusion logic
- panel/src/lib/__tests__/client.test.ts: getErrorMessage fully covered
(ECONNABORTED, ERR_NETWORK, string/array/object detail formats,
HTTP 401/403/404/422/500+, plain Error fallback, unknown input fallback)
- panel/src/store/__tests__/notifications-store.test.ts: useNotificationStore
(addNotification counter+dedup, markAsRead, markAsAcknowledged, setCounts, clearAll)
- panel/src/store/__tests__/rate-limit-store.test.ts: useRateLimitStore
(hitRateLimit entry+resumeAt, liftRateLimit deletion, syncFromApi replacement)
- panel/src/lib/__tests__/websocket.test.ts: getWebSocketUrl
(absolute ws://, absolute wss://, http→ws: relative, https→wss: relative, SSR fallback)
- panel/vitest.config.ts: coverage include widened to src/lib/**, src/store/**,
src/components/** and global thresholds removed (baseline tests cover only 5 units
of hundreds; thresholds will be re-added per-file as coverage grows)
pnpm test: 7 test files, 111 tests, 0 failures
pnpm lint: clean
pnpm typecheck: clean
* [1bc8195e] feat(ci): add panel-gate and panel-quality Makefile targets and CI test step (#236)
Add two new .PHONY Makefile targets (panel-gate, panel-quality) that run
pnpm lint, pnpm exec tsc --noEmit, and pnpm test inside the panel directory.
panel-quality depends on panel-gate so a single target drives the full gate.
Add a 'Test (vitest + coverage)' step to the panel job in ci.yml, placed
after the existing Type-check step. The job's default working-directory is
already panel so no override is needed; vitest.config.ts text reporter
prints coverage to stdout automatically.
---------
Co-authored-by: Frontend Developer 1 <fe-dev-1@agents.roboco.dev>
Co-authored-by: Frontend Developer 2 <fe-dev-2@agents.roboco.dev>