test(e2e) : initialise la suite Playwright (login + sidebar RBAC)

- 11 tests couvrant le login (3) et la visibilite sidebar par RBAC (8)
- 6 personas seedes via la commande app:seed-e2e, miroir cote front
  dans frontend/tests/e2e/_fixtures/personas.ts
- Page Objects (LoginPage, SidebarComponent) avec selecteurs stables
  par href + loginAs programmatique via cookie BEARER
- Targets Makefile : seed-e2e, test-e2e, test-e2e-ui, install-e2e-deps
- CLAUDE.md + README.md : workflow E2E + regle d'or "un E2E par bug
  prod uniquement" pour garder la suite maintenable dans la duree

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-22 17:27:05 +02:00
parent 99c77eb7b6
commit 4603ab2832
15 changed files with 786 additions and 3 deletions

View File

@@ -175,6 +175,7 @@ make migration-migrate # Lancer les migrations
make fixtures # Charger les fixtures
make db-reset # Reset BDD + migrations + fixtures
make test # PHPUnit
make nuxt-test # Vitest (tests unitaires frontend)
make php-cs-fixer-allow-risky # Fix code style PHP
make logs-dev # Tail logs Symfony
```
@@ -185,6 +186,36 @@ docker exec -t -u root php-coltura-fpm chown -R www-data:www-data /var/www/html/
docker exec -t -u www-data php-coltura-fpm php bin/console cache:clear
```
### Tests E2E (Playwright)
La suite E2E vit dans `frontend/tests/e2e/` (personas, Page Objects, specs). Elle tourne sur l'host (Playwright a besoin d'un navigateur reel, pas dans un container PHP).
**Bootstrap one-time par poste de dev :**
```bash
make install-e2e-deps # Telecharge Chromium + installe les libs systeme (sudo)
```
A relancer uniquement si `@playwright/test` upgrade de version majeure.
**Workflow nominal :**
```bash
# Terminal 1
make start # Containers up
make seed-e2e # Cree les 6 personas e2e.* (idempotent)
make dev-nuxt # Dev server sur :3004 (garder ouvert)
# Terminal 2
make test-e2e # Run la suite
# ou
make test-e2e-ui # UI interactive pour debug
```
**Regle d'or E2E** (a respecter pour garder la suite maintenable sur la duree) : un nouveau test E2E ne s'ajoute QUE quand un bug critique est passe en prod. Sinon, la bonne place est un test unitaire Vitest (plus rapide, plus stable). Cf. `frontend/tests/e2e/_fixtures/personas.ts` pour etendre la matrice RBAC via un persona existant plutot que d'ajouter un test.
**Etendre la matrice RBAC** : pour ajouter une permission testable, toucher les 3 endroits (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 (ne pas creer de nouveau persona par reflexe)
3. `src/Module/Core/Infrastructure/Console/SeedE2ECommand.php` — miroir back du meme persona
## Conventions
### Commits