Temă
Testare
Patru niveluri de teste, toate automate. Detaliile de implementare sunt și în TESTING.md.
| Nivel | Unealtă | Ce verifică | Cum se rulează |
|---|---|---|---|
| Unitar, aplicații web | Vitest 5 (+ Testing Library, jsdom) | 175 de teste: paginile React cu API simulat, rutele, formatarea banilor, identificatorii de firmă, encoderul GIF al documentației (comparat cu un decodor independent) | pnpm test / pnpm test:coverage |
| Unitar și de integrare, API | PHPUnit 12 | 40 de teste: TOTP (vectori RFC 6238), politica parolelor și hash-ul lor, identificatorii de firmă (aceleași cazuri ca formularele), regulile juridice, schema bazei (comparată cu fișierele SQL), seed-urile, erorile GraphQL, blocarea proceselor periodice | pnpm api:test |
| Calitatea codului API | Pint, Larastan (nivelul 8) | stilul și tipurile, fără nicio eroare | pnpm api:lint |
| End-to-end API | scripturi Node (tests/e2e) pe API-ul pornit, MySQL sau MariaDB, Mailpit | 14 suite, 439 de verificări: fiecare regulă de business prin API-ul real, fiecare suită pe o bază proaspătă; suita de alerte pornește o a doua instanță a API-ului și planificatorul | pnpm test:e2e (sau node tests/e2e/run-all.mjs --only orders) |
| Browser | Playwright | parcursul complet: publicare → moderare → cumpărare → livrare → plată → CRM | pnpm --filter @taraba/browser-tests test:journey |
| Accesibilitate | Playwright + axe-core | WCAG 2.1 AA pe 54 de pagini, ambele teme | pnpm --filter @taraba/browser-tests test:a11y |
| Performanță | — | bugetele din specificații; scriptul de măsurare și profilul volume nu sunt încă portate pe API-ul Laravel (ROADMAP) | — |
| Integritate date | SQL | 17 reguli de consistență | pnpm db:check |
| Copii de siguranță | scripturile din docker/backup | copie → ștergere → restaurare → integritate; copie deteriorată refuzată; retenție | manual, lunar (vezi operarea) |
Praguri de calitate
- Acoperire unitară a aplicațiilor web (ratchet, nu poate scădea): pragurile din
vitest.config.ts. - Contractul API-ului: cele 439 de verificări e2e trec pe MySQL 8 și pe MariaDB 10.11.
- Analiza statică a API-ului: Larastan la nivelul 8, fără erori și fără excepții ignorate.
- Tipuri:
pnpm -r typecheckfără erori.
Regula echipei
Fiecare funcționalitate vine, în aceeași livrare, cu testele ei unitare și, dacă atinge reguli de business, cu verificări e2e. Un bug reparat primește un test care l-ar fi prins.
Ce a prins testarea până acum
Exemple reale: vânzarea dublă (blocare lipsă), date demo inconsistente (comenzi pe anunțuri încă de vânzare), tipuri GraphQL duplicate, date SQL întoarse ca text, o vânzare care ar fi putut fi plătită de două ori de vânzători fără IBAN, alertele de stare care nu recunoșteau o conexiune refuzată, parole lungi echivalente din cauza limitei de 72 de octeți a bcrypt, contrast insuficient și etichete inaccesibile, seedere care își păstrau contoarele între rulări.