PHPackages                             lokris/scenario-coverage - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. lokris/scenario-coverage

ActiveLibrary

lokris/scenario-coverage
========================

Mappe les scénarios utilisateur (PHPUnit) sur le code source — rapport HTML interactif avec arborescence et couverture par scénario.

00PHP

Since Jun 9Pushed todayCompare

[ Source](https://github.com/lokris-dev/scenario-coverage)[ Packagist](https://packagist.org/packages/lokris/scenario-coverage)[ RSS](/packages/lokris-scenario-coverage/feed)WikiDiscussions main Synced today

READMEChangelogDependenciesVersions (1)Used By (0)

scenario-coverage
=================

[](#scenario-coverage)

[![PHP](https://camo.githubusercontent.com/184ea983600c41146ee84f2391d4841a638528091c0262f5e51738e676897fad/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7068702d254532253839254135382e322d373737626234)](https://www.php.net/)[![License](https://camo.githubusercontent.com/f8df3091bbe1149f398a5369b2c39e896766f9f6efba3477c63e9b4aa940ef14/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d677265656e)](LICENSE)

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-coverage` répond « **quel parcours** couvre quelle ligne ».

Installation
------------

[](#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
-----

[](#usage)

### 1. Annoter une classe de test comme scénario

[](#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`

[](#2-activer-lextension-dans-phpunitxml)

```

```

(Voir [`phpunit.extension.xml.dist`](phpunit.extension.xml.dist) pour un exemple complet.)

### 3. Lancer les scénarios, puis générer le rapport

[](#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
----------

[](#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`
--------------------------------

[](#options-du-cli-scenario-report)

OptionDéfautDescription`--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 courantNom du projet affiché`--open`—Ouvre le rapport dans le navigateurLicence
-------

[](#licence)

MIT — voir [`LICENSE`](LICENSE).

###  Health Score

20

↑

LowBetter than 13% of packages

Maintenance65

Regular maintenance activity

Popularity0

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity11

Early-stage or recently created project

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/c75dddb3c3b0ed5602b27913ac53088dad77fcf61b7f0db996dee6f8e637a836?d=identicon)[lokris-dev](/maintainers/lokris-dev)

### Embed Badge

![Health badge](/badges/lokris-scenario-coverage/health.svg)

```
[![Health](https://phpackages.com/badges/lokris-scenario-coverage/health.svg)](https://phpackages.com/packages/lokris-scenario-coverage)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
