Thanks to visit codestin.com
Credit goes to github.com

Skip to content

sergehardy/phpunit-playwright-coverage

Repository files navigation

Code Coverage PHPUnit+Symfony+Playwright

Le taux de couverture de code n’est pas un indicateur parfait, on le sait.

Comme beaucoup, ce qui est intéressant c’est d’observer la tendance et l’évolution, sans se focaliser sur les valeurs absolues, qui sont toujours imparfaites et contournable par quiconque ait envie de le faire. Ce qui est intéressant avec les rapports de couverture notamment, c’est de voir quelles lignes de code sont couvertes par un test.

Workflow

Quand on traite du code à remanier, non testé, et que l’on veut inverser la tendance, c’est en effet un moyen assez indispensable quand on veut commencer à injecter des pratiques de types clean code ou autre, et ce de manière sécurisée.

Le pattern pour traiter ce genre de code c’est donc:

  • générer le rapport de couverture
  • écrire un test passant qui couvre le code visé
  • remanier le code
  • vérifier que le test passe toujours

Bien évidemment on peut avoir besoin de plusieurs tests couvrant plusieurs cas métier, mais la mécanique restera identique.

Fusion des données de couverture

Reste un point à corriger: comment faire quand on a plusieurs types de tests, potentiellement exécutés par plusieurs outils?

C’est préférable d’avoir un seul indicateur global, plus facile à suivre et communiquer . Avec PHPUnit et Symfony, on a déjà la chance de pouvoir d’exécuter les tests unitaires et certains tests d’intégration/fonctionnel qu’on appelle sous-cutanés grâce aux WebTestCase et au PhpUnit Bridge de Symfony.

Mais comment faire avec un orcherstrateur de tests e2e comme Playwright ou Selenium?

La solution

La solution est toute simple et je vous la montre sur ce répo qui reprend l’application Symfony Demo. L’idée est de remplacer XDebug par PCov (plus rapide et léger) pour générer les données de couverture et de l’activer via un header HTTP pour Playwright par exemple. Le code de Symfony Demo contient quelques tests auxquels j’ai rajouté un test PlayWright.

L’execution des tests PHPUnit puis celle des tests e2e génére chacune des fichiers de trace de couverture. Le rapport HTML généré à la fin comprendra donc la couverture de tous les tests, on obtiendra ainsi un taux de couverture global.

Pour générer le rapport:

make coverage

Vous pouvez commenter l'une des 2 lignes du Makefile pour observer l'évolution de la couverture en fonction des tests executés.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors