.claude/skills/qa-automation/SKILL.md
Run the full QA test battery for statFootV3 features — Unit Tests, API Contract Tests, and Non-Regression checks. Use when a feature is complete and needs validation, or when asked to write tests, run tests, check coverage, or validate API contracts against Zod schemas.
npx skillsauth add FRmicrow/dataFootV1 qa-automationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill runs the full QA triple-check for every statFootV3 feature. No feature ships without passing all three layers.
Target: Pure business logic — data transforms, calculations, utility functions.
Location: backend/test/v3/ or frontend/src/test/
Framework: Vitest (both frontend and backend use vitest)
# Run backend tests
cd backend && npm test
# Run frontend tests
cd frontend && npm test
# With coverage
npm run test:coverage
What to test:
Minimum bar: one happy-path test + one error-path test per new function.
See references/test-patterns.md for Vitest patterns with mocks.
Target: Verify endpoint request/response shapes match Zod schemas and Swagger docs.
Tool: Supertest + Vitest (already in backend/devDependencies)
// Example pattern
import request from 'supertest';
import app from '../src/app.js'; // adjust path
test('GET /api/leagues returns valid shape', async () => {
const res = await request(app).get('/api/leagues');
expect(res.status).toBe(200);
expect(res.body).toMatchObject({ success: true, data: expect.any(Array) });
});
Every new or modified endpoint needs:
backend/src/schemas/ covers the responseBefore submitting a feature, run the full test suite and confirm no regressions:
# Full backend suite
cd backend && npm test
# Full frontend suite
cd frontend && npm test
If any existing test breaks, fix it before proceeding. Do not skip. Do not comment out.
For frontend features, verify these manually (or via Playwright if configured):
<Skeleton> while loadingbox-shadow: var(--focus-ring))style={{.*#)useMemo/useCallback used for expensive operationsfrontend/src/design-system/ if reusableAfter the triple-check, generate docs/features/Vxx-[Name]/QA-REPORT.md:
# QA Report — [Feature Name]
## Unit Tests
- Files: [list]
- Result: ✅ X passed / ❌ X failed
## API Contract Tests
- Endpoints tested: [list]
- Zod schemas verified: [list]
- Result: ✅ / ❌
## Non-Regression
- Full suite result: ✅ X passed, 0 failed
- Regressions introduced: None / [list]
## UI Checks
- Skeleton loading: ✅ / ❌
- Error states: ✅ / ❌
- Focus states: ✅ / ❌
- Design System compliance: ✅ / ❌
development
Écrire des tests unitaires Node.js. Utiliser quand on teste une fonction isolée avec Vitest dans backend/test/.
testing
Tester l'intégration entre services. Utiliser quand on vérifie l'interaction contrôleur/service avec Supertest + Vitest.
development
Tester les composants React avec Vitest + Testing Library. Utiliser quand on teste le rendu ou les interactions.
testing
Écrire des tests end-to-end Playwright. Utiliser quand on teste l'application complète du point de vue utilisateur.