
Playwright PHP : la bibliothèque moderne pour automatiser un navigateur depuis PHP
L’automatisation de navigateur en PHP a longtemps été associée à des solutions plus lourdes, plus fragiles ou moins agréables à maintenir. Avec playwright-php/playwright, l’écosystème PHP dispose désormais d’un wrapper moderne autour de Playwright, capable de piloter de vrais navigateurs – Chromium, Firefox et WebKit – directement depuis PHP. Le projet adopte le modèle browser → context → page → locator, met en avant l’auto-waiting pour limiter la flakiness, et démarre pour vous un léger serveur Node afin d’éviter la gestion manuelle d’un serveur séparé.
Le dépôt GitHub affiche actuellement une version 1.2.0 publiée le 25 février 2026, tandis que Packagist référence aussi v1.2.0 avec des contraintes en PHP 8.2+. Pour une équipe PHP qui veut écrire des tests E2E, faire du browser automation ou capturer des screenshots sans quitter son stack habituel, c’est un projet à suivre de près.
Qu’est-ce que Playwright PHP exactement ?
Playwright PHP est une bibliothèque qui permet de lancer de vrais moteurs de navigateur depuis PHP, d’ouvrir des pages, de cibler des éléments avec des locators, d’interagir avec l’interface, puis d’asserter le résultat. Le README officiel insiste sur quatre promesses clés : un modèle de navigation familier, des interactions auto-attendues pour réduire les tests instables, une intégration PHPUnit via un trait dédié et un support cross-browser pour Chromium, Firefox et WebKit.
Le site officiel du projet complète cette promesse avec des capacités plus larges : device presets, traces et HAR en headless CI, smart locators, assertions avec auto-retry, contrôle réseau, clock API pour accélérer le temps dans les tests, et artefacts vidéo pour les exécutions CI ou le debug.
Pourquoi cette bibliothèque est intéressante pour les équipes PHP
Le principal intérêt de Playwright PHP, c’est qu’il rapproche l’expérience PHP de ce que les développeurs apprécient déjà dans l’écosystème Playwright : des sélecteurs plus robustes, des actions plus fiables, une API expressive et une logique moins dépendante de sleep() ou d’attentes bricolées. Le projet met clairement en avant l’auto-wait sur les interactions, les sélecteurs, la navigation et les assertions.
Pour une équipe qui travaille déjà avec PHPUnit, le gain est aussi culturel : au lieu d’introduire un autre langage dans la chaîne de test E2E, elle peut rester dans un environnement PHP cohérent. Le README fournit d’ailleurs un trait de test dédié ainsi qu’une API expect() fluide, ce qui réduit la friction d’adoption dans un projet existant.
Prérequis et installation
Le projet demande PHP 8.2 ou supérieur et Node.js 20 ou supérieur. Ce point est important : même si l’API côté développeur est en PHP, Playwright PHP repose toujours sur l’infrastructure Playwright côté Node pour le serveur embarqué et les navigateurs. Ce n’est donc pas une solution “100 % PHP sans Node”.
L’installation de base se fait avec composer require playwright-php/playwright, puis avec une commande dédiée pour récupérer les navigateurs. Le README recommande vendor/bin/playwright-install --browsers, ou vendor/bin/playwright-install --with-deps sur une machine fraîche ou en CI quand il faut aussi installer les dépendances système. Il existe également un mode --dry-run pour prévisualiser ce qui sera téléchargé.
Comment fonctionne Playwright PHP au quotidien
Le flux d’utilisation est volontairement simple. On choisit un moteur avec Playwright::chromium(), Playwright::firefox() ou Playwright::webkit(), on crée une page avec newPage(), puis on navigue avec goto(). Ensuite, on peut lire le HTML, récupérer le titre, prendre une capture d’écran ou interagir avec les éléments via des locators. Le README précise aussi que Playwright::safari() est un alias de webkit(), et que les options de lancement incluent notamment headless, slowMo, args et un bloc context.
Le projet gère également la réutilisation de session via storageState, ce qui permet de sauvegarder un état de connexion dans un fichier puis de le recharger dans un autre processus. Pour des tests E2E réalistes, c’est particulièrement utile lorsqu’on veut éviter de rejouer tout le login à chaque scénario.
Ce que la librairie sait faire concrètement
Dans sa forme la plus simple, Playwright PHP sait déjà couvrir la majorité des besoins de browser automation moderne : navigation, saisie dans les formulaires, clics, pressions clavier, screenshots, ciblage avec locators et exécution sur plusieurs moteurs de rendu. Le site officiel ajoute à cela des fonctionnalités plus avancées comme les typed locators, les actions utilisateur réalistes, les uploads de fichiers, les raccourcis clavier, le blocage ou le mock d’appels réseau, ainsi que les assertions “flaky-free” avec auto-retry.
Pour le debug, le projet met aussi en avant le tracing, les HARs, la clock API pour les scénarios temporels, et l’enregistrement de vidéos MP4. En pratique, cela place la bibliothèque au-delà du simple screenshotting : on est bien sur un outil de test et d’automatisation de navigateur moderne.
Intégration avec PHPUnit
L’un des points forts les plus pertinents pour un projet PHP est l’intégration PHPUnit. Le package fournit un PlaywrightTestCaseTrait et une API d’assertions fluide. Le README précise que PHPUnit 10 ou supérieur est requis pour utiliser ce trait, et qu’il expose directement des propriétés comme $this->playwright, $this->browser, $this->context et $this->page. Il faut appeler setUpPlaywright() dans setUp() et tearDownPlaywright() dans tearDown() pour gérer proprement le cycle de vie.
Ce détail change beaucoup la qualité d’intégration dans une suite de tests existante. On ne se contente pas d’un wrapper bas niveau : le projet propose une vraie ergonomie pensée pour les tests PHP, avec des attentes fluides sur la page ou sur les locators.
CI/CD : comment l’utiliser dans GitHub Actions
Le README inclut un exemple de workflow GitHub Actions avec actions/checkout, shivammathur/setup-php, actions/setup-node, composer install, puis vendor/bin/playwright-install --with-deps avant de lancer PHPUnit. Le projet conseille aussi de mettre en cache Composer, Node et, si besoin, les navigateurs Playwright sous ~/.cache/ms-playwright pour accélérer les builds.
C’est un point rassurant pour les équipes qui veulent industrialiser leurs tests. La documentation ne se limite pas à “ça marche en local” : elle donne une trajectoire claire pour l’exécution en CI.
Les nouveautés récentes à retenir
Le projet évolue vite. La v1.1.0 a notamment ajouté la génération de PDF, des classes d’options pour différentes parties de l’API, ainsi qu’un découplage de expect vis-à-vis de PHPUnit pour maintenir la compatibilité. La v1.2.0, publiée le 25 février 2026, a ajouté le support de PLAYWRIGHT_BROWSERS_PATH, de la documentation sur la connexion à des navigateurs externes, et plusieurs correctifs, dont un sur waitForLoadState().
Ces évolutions montrent que le projet n’est pas figé. Il se structure progressivement autour d’une base stable, mais avec encore une marge d’amélioration visible dans les releases récentes.
Les limites à connaître avant de l’adopter
La première limite est simple : Node.js reste obligatoire. Si votre contrainte interne est d’éviter totalement Node sur vos runners ou vos serveurs, Playwright PHP ne répondra pas à ce besoin, puisque le projet utilise un serveur Node embarqué et les navigateurs Playwright.
La deuxième limite concerne l’environnement d’exécution. Sur des machines fraîches ou en CI, il faut penser à installer non seulement les navigateurs, mais parfois aussi leurs dépendances système avec --with-deps. En parallèle, si vous comptez utiliser le trait de test officiel, il faut déjà être sur PHPUnit 10+.
À qui s’adresse vraiment Playwright PHP ?
Playwright PHP est particulièrement pertinent pour trois profils. D’abord, les équipes PHP qui veulent écrire des tests E2E modernes sans sortir de leur stack. Ensuite, les développeurs backend qui ont besoin de browser automation pour vérifier des parcours critiques, générer des captures ou automatiser des interactions réelles. Enfin, les projets qui veulent une approche plus robuste que de simples requêtes HTTP, notamment lorsque le rendu dépend du JavaScript client. Cette lecture repose sur les capacités officiellement documentées du projet : vrais navigateurs, interactions UI, assertions, screenshots, traces et contrôle réseau.
À l’inverse, si votre besoin est purement API, purement scraping HTML statique ou très minimaliste, l’outil peut être plus puissant que nécessaire. Ce n’est pas un défaut ; c’est simplement une bibliothèque pensée pour piloter un navigateur réel, pas seulement pour télécharger une page. Cette dernière phrase est une déduction d’usage à partir de la portée fonctionnelle officielle du projet.
FAQ
Playwright PHP fonctionne-t-il avec Chrome, Firefox et Safari ?
Il supporte officiellement Chromium, Firefox et WebKit, et le README précise que Playwright::safari() est un alias de webkit().
Peut-on l’utiliser avec PHPUnit ?
Oui. Le package fournit un trait de test et des assertions fluides, avec une exigence officielle de PHPUnit 10.0 ou supérieur pour PlaywrightTestCaseTrait.
Faut-il installer Node.js même si on code en PHP ?
Oui. Le projet demande Node.js 20+, car il s’appuie sur un serveur Playwright léger côté Node ainsi que sur les navigateurs gérés par Playwright.
Est-ce uniquement utile pour les tests E2E ?
Non. La documentation officielle met aussi en avant les screenshots, les interactions UI, les traces, la vidéo, le contrôle réseau et d’autres usages d’automatisation de navigateur.
Conclusion
playwright-php/playwright fait partie des projets qui rendent l’écosystème PHP plus crédible sur le terrain du browser automation moderne. Son intérêt n’est pas seulement technique : il permet à une équipe PHP de conserver sa stack, son outillage et sa culture de test, tout en profitant d’une approche Playwright plus actuelle, plus fiable et mieux pensée pour les interfaces JavaScript modernes.
Le projet demande encore une vraie infrastructure d’exécution — PHP 8.2+, Node 20+, installation des navigateurs — mais en échange, il apporte un niveau de puissance très intéressant pour les tests E2E, la vérification de parcours utilisateur, le debug visuel et l’automatisation UI. Pour un blog tech ou une agence web, c’est un sujet particulièrement pertinent, parce qu’il relie qualité logicielle, DX PHP et industrialisation des tests.
Sources
- GitHub README — playwright-php/playwright : présentation générale, prérequis, installation, modèle d’usage, locators, storage state, PHPUnit, GitHub Actions, licence.
- GitHub Releases — playwright-php/playwright releases : version v1.2.0 publiée le 25 février 2026 et changements récents de la v1.1.0/v1.2.0.
- Packagist — playwright-php/playwright : version disponible, contraintes de dépendances Composer et exigences PHP.
- Site officiel — Playwright PHP : fonctionnalités complémentaires mises en avant comme smart locators, network control, traces, HAR, clock API et vidéo.