# Tests

## Trois suites

| Suite | Commande | Outil | Where |
|---|---|---|---|
| Back | `make test` | PHPUnit | Container PHP ; fixtures dediees sous `tests/Fixtures/` |
| Front unitaire | `make nuxt-test` | Vitest (happy-dom) | Container Node ; <30s ; composables/utils/stores |
| Front E2E | `make test-e2e` | Playwright | **Host** (pas container, navigateur reel requis) |

Bootstrap E2E (une fois par poste de dev) : `make install-e2e-deps` (Chromium + libs systeme, sudo).
Re-run uniquement si `@playwright/test` upgrade majeur.

Workflow E2E : `make start && make seed-e2e && make dev-nuxt` (terminal 1), `make test-e2e` (terminal 2).
UI interactive pour debug : `make test-e2e-ui`.

## Regle d'or E2E

**Un nouveau test E2E ne s'ajoute QUE si un bug critique est passe en prod.**

Sinon, la bonne place est un test unitaire Vitest :
- Plus rapide
- Plus stable
- Moins de faux positifs

Pour etendre la couverture RBAC, etendre un **persona existant** dans `frontend/tests/e2e/_fixtures/personas.ts` plutot que de creer un nouveau test.

## Matrice RBAC — 3 endroits obligatoires

Ajouter/modifier une permission testable = toucher les 3 miroirs (sinon drift garanti) :

1. `config/sidebar.php` — attacher `permission` au bon item
2. `frontend/tests/e2e/_fixtures/personas.ts` — ajuster `permissions` + `expectedAdminLinks` d'un persona existant
3. `src/Module/Core/Infrastructure/Console/SeedE2ECommand.php` — miroir back du meme persona

Tout changement sur l'un des trois sans les deux autres = test casse ou faux positif.
