# Notre pyramide de tests pour les projets WordPress d’agence en 2026

> Après six ans à faire évoluer nos pratiques de test, voici la pyramide que nous appliquons aujourd'hui sur nos projets WordPress, outil par outil et niveau par niveau.

- Auteur : Clément Hadrot
- Publié le : 2026-05-18
- Mis à jour le : 2026-05-18
- Catégorie : Tests
- URL : https://wpmoderne.dev.wordpress-developpement.fr/tests/pyramide-tests-agence-wordpress-2026/

## L’essentiel

- Une base large de tests unitaires rapides, un sommet E2E volontairement restreint
- PHPStan et WPCS comme filet systématique, avant même d'écrire un test
- Un socle d'outils qui a peu bougé, une discipline qui a beaucoup progressé

Six ans après avoir commencé à documenter nos pratiques de test sur ce blog, il nous semblait utile de dresser un bilan : quels outils avons-nous gardés, lesquels avons-nous abandonnés, et surtout, quelle proportion de tests unitaires, d'intégration et end-to-end appliquons-nous vraiment sur un projet WordPress d'agence aujourd'hui. La réponse tient en une image classique du génie logiciel, la pyramide de tests, que nous avons adaptée à l'écosystème WordPress tel qu'il se présente en 2026.

Cet article détaille cette pyramide, niveau par niveau, avec les outils que nous utilisons concrètement à chaque étage et la répartition de temps que nous visons entre eux sur un projet type.

## La base : PHPCS, PHPStan et WPCS, avant même le premier test

Le socle de notre chaîne de qualité reste, comme en 2020, l'analyse statique et le respect d'un standard de code, mais l'outillage a mûri. PHPCS avec les WordPress Coding Standards (en version 3 depuis 2023) et PHPStan avec l'extension `szepeviktor/phpstan-wordpress` tournent désormais systématiquement en pre-commit et en CI sur chaque projet, sans exception, y compris les plus petits sites vitrines. Ce n'est plus une option discutée avec le client : c'est un prérequis intégré dès le premier commit, au même titre qu'un fichier `.gitignore`.

```
vendor/bin/phpcs
vendor/bin/phpstan analyse --level=6
```

Ce niveau, purement statique, ne remplace aucun test, mais élimine en amont une classe entière de bugs avant même d'écrire la première assertion.

## 70 % : les tests unitaires, rapides et nombreux

La grande majorité de notre effort de test reste concentrée sur des tests unitaires rapides : PHPUnit avec `WP_UnitTestCase` pour tout ce qui touche à la persistance de données, Brain Monkey pour la logique métier isolée du cœur WordPress, et Jest pour les composants React des blocs et de l'Interactivity API. Ces tests s'exécutent en quelques secondes, y compris pour plusieurs centaines de cas, et constituent notre principal filet de sécurité au quotidien.

- **PHPUnit / WP_UnitTestCase** : logique qui interagit réellement avec la base de données WordPress.
- **Brain Monkey** : services et classes métier découplés du cœur.
- **Jest** : stores d'interactivité, composants d'édition de blocs, fonctions de validation côté client.

> L'essentiel à retenir : Une base large de tests unitaires rapides, un sommet E2E volontairement restreint ; PHPStan et WPCS comme filet systématique, avant même d'écrire un test ; Un socle d'outils qui a peu bougé, une discipline qui a beaucoup progressé

## 20 % : les tests d'intégration ciblés

Entre les tests unitaires purs et les tests E2E complets, une couche intermédiaire vérifie l'intégration entre plusieurs composants sans pour autant piloter un navigateur complet : tests PHPUnit qui vérifient qu'une séquence de hooks WordPress produit le bon résultat final, ou tests qui valident qu'un appel à l'API REST WordPress retourne la structure attendue via `WP_REST_Server` instancié en mémoire, sans navigateur.

```
class Test_Endpoint_Produits extends WP_UnitTestCase {

    public function test_lendpoint_retourne_les_produits_publies() {
        $this->factory()->post->create( array(
            'post_type'   => 'produit',
            'post_status' => 'publish',
        ) );

        $requete = new WP_REST_Request( 'GET', '/mon-plugin/v1/produits' );
        $reponse = rest_get_server()->dispatch( $requete );

        $this->assertEquals( 200, $reponse->get_status() );
        $this->assertCount( 1, $reponse->get_data() );
    }
}
```

Ce niveau reste sous-utilisé par beaucoup d'équipes que nous croisons, alors qu'il offre un excellent rapport entre la confiance apportée et le temps d'exécution, nettement plus rapide qu'un test E2E complet pour vérifier une API REST.

## 10 % : les tests end-to-end, réservés à l'essentiel

Au sommet de la pyramide, les tests E2E avec Playwright et `@wordpress/e2e-test-utils-playwright` restent volontairement limités en nombre. Nous les réservons aux parcours dont l'échec aurait un impact business direct : tunnel de commande, formulaire de contact principal, publication d'un article depuis l'éditeur. Sur un projet e-commerce typique, cela représente rarement plus de vingt à trente scénarios, contre plusieurs centaines de tests unitaires.

Les tests de régression visuelle, avec BackstopJS ou un service équivalent, complètent ce sommet sur les gabarits les plus visibles, sans chercher l'exhaustivité.

## Répartition indicative sur un projet type

| Niveau | Outils | Part du temps d'exécution CI |
| --- | --- | --- |
| Analyse statique | PHPCS, PHPStan | ~1 minute |
| Tests unitaires | PHPUnit, Brain Monkey, Jest | 70 % |
| Tests d'intégration | PHPUnit + WP_REST_Server | 20 % |
| Tests E2E | Playwright | 10 % |

## Ce qui a le plus changé en six ans

Le socle technique a finalement peu bougé : PHPUnit reste PHPUnit, `WP_UnitTestCase` fonctionne toujours selon les mêmes principes qu'en 2020. Ce qui a réellement progressé, c'est la discipline collective : la CI systématique sur chaque pull request, la matrice de versions PHP élargie, et surtout le réflexe d'écrire un test de non-régression avant de corriger un bug signalé par un client, plutôt que de corriger et espérer que ça ne revienne pas.

> Sur nos projets, la question qui revient le plus souvent en revue de code n'est plus « faut-il tester ceci », mais « à quel niveau de la pyramide ce test appartient-il ». C'est ce changement de réflexe, plus que n'importe quel nouvel outil, qui a le plus amélioré la fiabilité de nos livraisons ces dernières années.

## En résumé

Notre pyramide de tests pour un projet WordPress d'agence en 2026 repose sur un socle d'analyse statique systématique, une large base de tests unitaires rapides répartis entre PHPUnit, Brain Monkey et Jest, une couche intermédiaire de tests d'intégration souvent négligée ailleurs, et un sommet E2E volontairement restreint aux parcours vraiment critiques. Cette répartition, affinée sur des dizaines de projets clients, reste avant tout une question de discipline d'équipe plus que de choix d'outils : les outils, eux, ont peu changé depuis nos premiers articles sur le sujet.
