Playbook Testing
| Statut | Actif — v1.0 — 2026-06-27 |
| Priorité | P1 |
| Obligatoire V1 | Non (backend oui, frontend non) |
| Responsable | Sylvain |
| Voir aussi | Standards · Playbook Playwright |
Philosophie
Tester ce qui compte, pas tout.
Un test inutile coûte autant à maintenir qu'un test utile. L'objectif n'est pas un pourcentage de couverture arbitraire mais la confiance : peut-on déployer sans crainte ?
Règle pratique : si casser ce code silencieusement te ferait transpirer, il mérite un test.
Pyramide des tests DMV
╔══════════╗
║ E2E ║ ← Playwright, parcours critiques seulement
║ Playwright║
╠══════════╣
║Integration║ ← Laravel Feature tests, appels API réels
║ Tests ║
╠══════════╣
║ Unit ║ ← Logique métier isolée, transformations
║ Tests ║
╚══════════╝
Plus on monte, plus les tests sont lents, fragiles et coûteux à écrire. Garder la base large, le sommet étroit.
Tests unitaires
Quand les écrire :
- Logique métier complexe (calculs, transformations, règles métier)
- Fonctions pures avec plusieurs cas limites
- Parsing et validation de données
Quand ne pas les écrire :
- Getters/setters simples
- Composants UI purement visuels
- Code trivial qui ne contient aucune logique
Backend Laravel : PHPUnit avec php artisan test. Chaque classe de service complexe mérite ses tests unitaires.
Frontend : optionnel. Utiliser Vitest si le projet a des utilitaires ou hooks complexes.
Tests d'intégration
Backend :
Les Feature tests Laravel sont la priorité. Ils testent les routes HTTP complètes avec une vraie base de données.
// Exemple DMV — test d'une route API
public function test_liste_acteurs_retourne_200()
{
$this->actingAs($this->user)
->getJson('/api/v1/acteurs')
->assertOk()
->assertJsonStructure(['data' => [['id', 'nom']]]);
}
Ce qui mérite des Feature tests :
- Toutes les routes API exposées
- Les règles d'autorisation (qui peut faire quoi)
- Les validations de formulaires
- Les workflows critiques (création, modification, suppression)
Frontend : pas de tests d'intégration frontend obligatoires. Playwright couvre les parcours critiques.
Tests E2E (Playwright)
Voir Playbook Playwright pour la stratégie complète.
Résumé : uniquement les parcours utilisateurs critiques. Pas de test E2E pour des cas couverts par des tests unitaires ou d'intégration.
Ce qu'on ne teste pas
- L'apparence visuelle exacte (snapshots CSS — trop fragiles)
- Les librairies tierces (elles ont leurs propres tests)
- Les migrations de base de données (testées en staging et par les Feature tests)
- Les configurations d'environnement
- Le code généré automatiquement
Objectif de couverture
Pas de pourcentage imposé. L'objectif est :
- Tous les chemins métier critiques couverts par des Feature tests backend
- Tous les parcours utilisateurs critiques couverts par Playwright
- Toute logique complexe isolée couverte par des tests unitaires
Un projet peut avoir 40% de couverture globale et être bien testé si les 40% couvrent les bonnes choses.
CI et tests
Les tests font partie de la CI et bloquent le merge :
php artisan test— obligatoire en backend CI- Playwright — sur les PRs frontend (required check une fois stabilisé)
Un test qui flake régulièrement doit être corrigé ou supprimé, pas ignoré.