QA checklist before declaring v0.3 complete. Must pass before merge to main. ## Functional scenarios - [ ] Perfil ELIGIBLE complet (Barcelona, 24 anys, 750€/mes, no familiar, impostos ok) → ELIGIBLE ×3 - [ ] Edat 40 → early exit immediat al veredicte (NO espera les 8 preguntes) - [ ] Income 'unknown' → POSSIBLE ×3 amb explicació d'incerteses - [ ] Link ChatHandoff codifica correctament `chatContext` (comprova `?q=` a la URL) - [ ] Rest Catalunya + lloguer 800€ → generalitat NOT_ELIGIBLE, nacional ELIGIBLE - [ ] familyLandlord=yes → nacional ELIGIBLE, bcn NOT_ELIGIBLE, gen NOT_ELIGIBLE ## UX - [ ] Urgency badge actiu (9–13 març 2026) per Barcelona i Generalitat - [ ] Navegació enrere restaura respostes anteriors (no perd selecció) - [ ] Restart funciona (torna al pas 1 amb respostes buides) ## Accessibilitat - [ ] Keyboard navigation: Tab/Enter per seleccionar opcions - [ ] `aria-pressed` reflecteix correctament l'opció seleccionada - [ ] `role="progressbar"` llegible per screen readers - [ ] Focus visible en tots els elements interactius ## Mobile - [ ] Viewport 375px sense scroll horitzontal - [ ] Tots els botons ≥ 44px touch target - [ ] Ruta `/finder` accessible des del landing (CTA principal i nav) ## Pre-deploy - [ ] `pnpm test:web` 74+ tests passing - [ ] `pnpm --dir web exec tsc --noEmit` net (0 errors) - [ ] Build production `pnpm build:web` successful
QA checklist before declaring v0.3 complete. Must pass before merge to main.
Functional scenarios
chatContext(comprova?q=a la URL)UX
Accessibilitat
aria-pressedreflecteix correctament l'opció seleccionadarole="progressbar"llegible per screen readersMobile
/finderaccessible des del landing (CTA principal i nav)Pre-deploy
pnpm test:web74+ tests passingpnpm --dir web exec tsc --noEmitnet (0 errors)pnpm build:websuccessful