Playwright

Trace d'un test échoué : frise de captures, liste des actions et erreur d'un sélecteur qui trouve cinq liens

Chromium, Firefox et WebKit pilotés par une seule API

Playwright pilote Chromium, Firefox et WebKit avec la même API, en JavaScript ou TypeScript, Python, .NET ou Java. Microsoft le distribue sous plusieurs formes : Playwright Test, un runner de tests de bout en bout, la bibliothèque playwright pour les scripts, puis un serveur MCP et une CLI pour les agents IA.

Sélecteurs stricts et un profil vierge par test

  • Sélecteurs stricts : getByRole ou getByLabel désignent un élément comme l'utilisateur le voit. Si le sélecteur en trouve plusieurs, l'action échoue au lieu de cliquer sur le premier.
  • Attente intégrée : Playwright attend que l'élément soit actionnable avant d'agir, et les assertions expect réessaient jusqu'à ce que la condition soit remplie.
  • Un contexte neuf par test : l'équivalent d'un profil vierge, cookies et stockage compris. Une session connectée s'enregistre une fois (storageState) et se recharge dans les autres tests.
  • Traces rejouables : chaque action avec son instantané du DOM, les requêtes réseau et la console, à rouvrir dans le Trace Viewer.
  • Tests enregistrés : npx playwright codegen écrit le test au fil des clics dans un navigateur.

Régression visuelle et navigateur confié à un agent IA

  • Suites jouées sur les trois moteurs, ou sur le Google Chrome et le Microsoft Edge installés sur la machine (option channel).
  • Régression visuelle : toHaveScreenshot() compare chaque capture à une référence enregistrée au premier passage.
  • Scripts hors tests : captures, PDF, émulation d'un iPhone 15, requêtes bloquées par page.route. Le PlaywrightCrawler de Crawlee repose dessus.
  • Navigation confiée à un agent IA par le serveur MCP, qui lui décrit la page en arbre d'accessibilité plutôt qu'en captures d'écran.

Ni Safari ni Firefox de marque. Playwright télécharge ses propres navigateurs, et chaque version exige des builds précis : une mise à jour se termine par npx playwright install. Ses Firefox et WebKit reposent sur des patchs, et la documentation précise qu'il ne fonctionne pas avec les versions de marque. Le WebKit testé vient de la branche principale de WebKit, souvent en avance sur Safari.

Le runner Playwright Test est propre à Node.js. La doc associe Python à un plugin pytest, Java à JUnit ou TestNG, .NET à des classes de base pour MSTest, NUnit ou xUnit.

Un seul worker conseillé en CI. Le guide d'intégration continue recommande workers: 1 pour la stabilité, et le sharding entre machines pour paralléliser. Les captures de référence se génèrent dans l'environnement qui joue les tests, car le rendu varie selon l'OS, le matériel ou le mode headless.

Une image Docker réservée aux tests. La documentation la destine aux tests et au développement, et la déconseille pour visiter des sites non fiables. Elle lance les navigateurs en root, ce qui désactive le sandbox de Chromium ; pour du scraping, la doc recommande un utilisateur dédié et le profil seccomp.

Sur Android, Chrome et WebView seulement, en expérimental. La doc prévient que tout ne fonctionne pas sur appareil. Les apps natives relèvent d'un outil comme Maestro.

Des guides pour quitter Puppeteer ou Protractor. La documentation publie des guides de migration depuis Puppeteer, Protractor et Testing Library ; selon le premier, la plupart des API de Puppeteer s'utilisent telles quelles.

Une mineure toutes les cinq semaines environ, toujours en 1.x. Six mineures sont sorties entre la 1.59.0 du 1er avril et la 1.64.0 du 7 octobre 2026, suivie de la 1.64.1 le 14 octobre. Le dernier commit date du 27 octobre. La doc demande Node.js 22, 24 ou 26 et macOS 14 au minimum ; côté Linux, elle liste Debian 12 et 13 et Ubuntu 22.04, 24.04 et 26.04.