lokris / scenario-coverage
Mappe les scénarios utilisateur (PHPUnit) sur le code source — rapport HTML interactif avec arborescence et couverture par scénario.
Requires
- php: >=8.2
Requires (Dev)
- phpunit/phpunit: ^11.0
Suggests
- ext-pcov: Alternative à Xdebug pour le code coverage.
- ext-xdebug: Requis pour la collecte de code coverage (mode coverage).
This package is auto-updated.
Last update: 2026-06-09 15:18:51 UTC
README
Mappe les scénarios utilisateur (tests PHPUnit de bout en bout) sur le code source, et produit un rapport HTML interactif autonome : quels scénarios couvrent quel code.
Un scénario = un parcours utilisateur nommé, joué de bout en bout — pas un test unitaire. Là où le coverage classique répond « quelle ligne est testée »,
scenario-coveragerépond « quel parcours couvre quelle ligne ».
Installation
composer require --dev lokris/scenario-coverage
Prérequis pour la collecte de couverture : ext-xdebug ou ext-pcov
(le rapport fonctionne sans, mais ne contiendra alors que les métadonnées).
Usage
1. Annoter une classe de test comme scénario
use Lokris\ScenarioCoverage\Attribute\Scenario; use PHPUnit\Framework\TestCase; #[Scenario( title: "Créer un devis", description: "L'utilisateur crée un devis, ajoute une ligne produit et vérifie les totaux.", mandatory: true, tags: ["vente"], )] final class S01_CreateQuoteTest extends TestCase { public function testCreateQuote(): void { /* ... */ } }
2. Activer l'extension dans phpunit.xml
<extensions> <bootstrap class="Lokris\ScenarioCoverage\Extension\ScenarioExtension"> <parameter name="outputFile" value="var/scenario-coverage.json"/> <parameter name="srcRoot" value="src"/> </bootstrap> </extensions>
(Voir phpunit.extension.xml.dist pour un exemple complet.)
3. Lancer les scénarios, puis générer le rapport
XDEBUG_MODE=coverage vendor/bin/phpunit
vendor/bin/scenario-report --name="mon-projet" --open
Le rapport
Un unique fichier HTML autonome (zéro dépendance, ouvrable hors-ligne) :
- Dashboard global (couverture, scénarios passés/échoués).
- Arborescence des fichiers avec taux de couverture.
- Vue source annotée : lignes couvertes + badges des scénarios qui les couvrent.
- Vue par scénario : couverture inversée (un scénario → les fichiers qu'il touche).
Options du CLI scenario-report
| Option | Défaut | Description |
|---|---|---|
--input |
var/scenario-coverage.json |
JSON produit par l'extension PHPUnit |
--output |
var/scenario-coverage.html |
Fichier HTML à générer |
--src |
src |
Racine source (chemins relatifs du rapport) |
--name |
dossier courant | Nom du projet affiché |
--open |
— | Ouvre le rapport dans le navigateur |
Licence
MIT — voir LICENSE.