# Tests en conteneur — front (Docker/OrbStack)

La suite tourne 100 % en conteneur — aucun PHP/MySQL requis sur l'hôte, seul Docker/OrbStack.

## Lancer

```bash
docker compose -f docker-compose.test.yml up --build --exit-code-from test --abort-on-container-exit
```

Image `php:8.4-cli` (le `composer.lock` fige symfony 8 / carbon 3.11 → PHP ≥ 8.4 requis), MySQL 8.4 éphémère (tmpfs, jetable). Verdict attendu : 211 passed / 0 failed / 28 skipped.

## Spécificité : schéma possédé par admin

`front` ne possède aucune migration — son schéma appartient au service **admin**. La base de test est provisionnée à partir de `docker/test/schema.sql` (dump *schéma seul*, chargé par MySQL via `/docker-entrypoint-initdb.d`).

**`schema.sql` est un artefact généré qui dérive** : le régénérer si le schéma admin évolue :

```bash
# depuis le repo admin, avec son conteneur de test :
docker compose -f docker-compose.test.yml run --rm --entrypoint bash test -lc "php artisan migrate --force"
docker compose -f docker-compose.test.yml exec -T mysql sh -lc "exec mysqldump --no-data --skip-comments --no-tablespaces -uroot -psecret wellpack-local-test" > <front>/docker/test/schema.sql
docker compose -f docker-compose.test.yml down -v
```

Les tests auth/2FA nécessitent un client d'accès personnel Passport, créé au démarrage par `docker/test/entrypoint.sh` (`passport:client --personal`).
