Playwright MCP : tester avec l'IA (Claude Code, Copilot, Cursor)
Playwright MCP est le serveur MCP officiel de Microsoft : il donne à un assistant IA comme Claude Code, GitHub Copilot ou Cursor les outils pour piloter un vrai navigateur. L'assistant navigue, clique, remplit des formulaires et lit la page à partir d'instantanés d'accessibilité, sans capture d'écran ni modèle de vision. Pour un testeur, cela permet d'explorer une application en langage naturel puis de transformer cette exploration en test Playwright. Ce guide explique l'installation, un premier scénario complet, la différence avec Playwright CLI et les Test Agents, et les règles à respecter pour garder des tests fiables.
- Installation en une commande dans Claude Code :
claude mcp add playwright npx @playwright/mcp@latest - Pas de vision : l'IA lit un instantané d'accessibilité structuré de la page (rôles, noms, états), ce qui l'oriente naturellement vers des locators
getByRole - MCP, CLI ou Test Agents : la documentation officielle conseille la CLI + Skills aux agents de code (moins de jetons) et garde MCP pour l'exploration et les boucles longues
- Le testeur reste responsable : relire chaque test généré, choisir les assertions, isoler les données et ne jamais lancer l'agent sur la production
Qu'est-ce que le MCP (Model Context Protocol) ?
Le Model Context Protocol est un protocole ouvert qui standardise la façon dont un assistant IA se connecte à des outils externes. Un « serveur MCP » expose une liste d'outils décrits par un nom, une description et des paramètres ; le « client » (Claude Code, l'agent de GitHub Copilot dans VS Code, Cursor…) les présente au modèle, qui décide lequel appeler et avec quels arguments. Le résultat de chaque appel revient dans la conversation, et le modèle enchaîne l'étape suivante.
Sans MCP, un assistant de code peut écrire un test Playwright, mais il l'écrit « à l'aveugle » : il devine les libellés des boutons, la structure des formulaires et l'enchaînement des pages. Avec un serveur MCP de navigateur, il peut ouvrir l'application, constater ce qui s'affiche réellement, puis écrire le test à partir de ce qu'il a observé.
Qu'est-ce que Playwright MCP ?
Playwright MCP est le serveur MCP maintenu par l'équipe Playwright de Microsoft. Il lance un navigateur avec Playwright et expose des outils comme browser_navigate (ouvrir une URL), browser_snapshot (lire la page), browser_click, browser_type, browser_fill_form, browser_wait_for, browser_take_screenshot, browser_tabs, browser_evaluate, ou encore browser_console_messages et browser_network_requests pour inspecter la console et les appels réseau.
Sa particularité est l'outil browser_snapshot : au lieu d'envoyer une image de l'écran, il renvoie un instantané d'accessibilité structuré, c'est-à-dire l'arbre des éléments avec leur rôle (bouton, lien, champ de saisie, titre), leur nom accessible et leur état. Le modèle n'a donc pas besoin de capacités de vision, et il « voit » la page comme la voient les technologies d'assistance — exactement le point de vue que les bonnes pratiques Playwright recommandent pour écrire des locators robustes.
Comment installer Playwright MCP ?
Le seul prérequis est Node.js, puisque le serveur se lance avec npx. Le navigateur s'ouvre en mode visible par défaut, ce qui est pratique pour suivre ce que fait l'assistant.
Dans Claude Code
claude mcp add playwright npx @playwright/mcp@latest
Le serveur est ensuite disponible dans les sessions Claude Code : il suffit de demander, en français, d'ouvrir une page ou de tester un parcours.
Dans VS Code (mode agent de GitHub Copilot)
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
Les outils browser_* apparaissent alors dans la liste des outils de l'agent Copilot.
Dans Cursor et les autres clients MCP
La plupart des clients acceptent la même configuration JSON standard, à ajouter dans leurs paramètres MCP :
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}
Les options utiles pour un testeur
Les options s'ajoutent après @playwright/mcp@latest dans la commande ou dans le tableau args :
--headless: navigateur invisible, utile sur une machine sans écran ou dans un conteneur--browser: choisir le navigateur utilisé--isolated: profil gardé en mémoire et jamais écrit sur le disque, pour repartir d'une session vierge à chaque fois--storage-state: charger un état de session (cookies, stockage local) pour démarrer déjà connecté--secrets: chemin vers un fichier de secrets au format dotenv, pour ne pas écrire d'identifiants dans le prompt--test-id-attribute: attribut utilisé pour les identifiants de test (par défautdata-testid)--viewport-size: taille de la fenêtre, par exemple1280x720, ou un format mobile--caps: activer des capacités optionnelles, par exempletesting(outils d'assertion et de génération de locators),network(simulation de routes),storage,pdf,visionoudevtools
Premier scénario : explorer une page de connexion puis générer un test
Prenons une application de démonstration qui tourne en local. L'objectif est double : laisser l'assistant explorer le parcours de connexion, puis lui faire écrire un test Playwright en TypeScript à partir de ce qu'il a réellement observé.
Étape 1 : l'exploration
Un prompt précis donne de bien meilleurs résultats qu'une consigne vague. Exemple :
Avec Playwright MCP, ouvre http://localhost:3000/login.
Décris les champs, les boutons et les messages présents sur la page.
Essaie ensuite une connexion avec un mot de passe incorrect
et rapporte le message d'erreur exact affiché.
Ne soumets aucun autre formulaire.
L'assistant appelle browser_navigate, puis browser_snapshot pour lire la page, remplit les champs avec browser_type ou browser_fill_form, clique avec browser_click et relit la page. Vous obtenez un compte rendu des éléments (avec leurs rôles et leurs libellés accessibles) et du comportement constaté — c'est déjà une petite session de test exploratoire documentée.
Étape 2 : la génération du test
À partir de ce que tu as observé, écris tests/connexion.spec.ts
avec Playwright Test en TypeScript : un cas de connexion réussie
et un cas de mot de passe incorrect. Utilise getByRole et getByLabel,
aucun sélecteur CSS, et lis les identifiants dans des variables
d'environnement. Lance ensuite les tests et corrige-les s'ils échouent.
Le résultat attendu ressemble à ceci (l'URL de base est définie dans playwright.config.ts) :
import { test, expect } from '@playwright/test';
test.describe('Connexion', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/login');
});
test('un utilisateur valide accède à son tableau de bord', async ({ page }) => {
await page.getByLabel('E-mail').fill(process.env.TEST_USER_EMAIL!);
await page.getByLabel('Mot de passe').fill(process.env.TEST_USER_PASSWORD!);
await page.getByRole('button', { name: 'Se connecter' }).click();
await expect(page).toHaveURL(/\/dashboard/);
await expect(page.getByRole('heading', { name: 'Tableau de bord' })).toBeVisible();
});
test('un mot de passe incorrect affiche une erreur', async ({ page }) => {
await page.getByLabel('E-mail').fill(process.env.TEST_USER_EMAIL!);
await page.getByLabel('Mot de passe').fill('mauvais-mot-de-passe');
await page.getByRole('button', { name: 'Se connecter' }).click();
await expect(page.getByRole('alert')).toContainText('Identifiants incorrects');
await expect(page).toHaveURL(/\/login/);
});
});
Les libellés (« E-mail », « Se connecter », « Identifiants incorrects ») sont ceux de l'application d'exemple : chez vous, ils viendront de l'exploration réelle. C'est tout l'intérêt de la démarche — le test est écrit à partir de la page observée, pas d'une supposition.
Étape 3 : la relecture humaine
Avant de committer, relisez le test comme celui d'un collègue : les assertions vérifient-elles un résultat métier, ou seulement qu'un clic a eu lieu ? Le cas d'erreur contrôle-t-il aussi que l'utilisateur n'est pas connecté ? Manque-t-il un cas limite (champ vide, compte bloqué) ? Exécutez le test vous-même, puis faites-le échouer volontairement une fois pour vérifier qu'il détecte bien une régression.
Playwright MCP, Playwright CLI ou Test Agents : que choisir ?
Microsoft propose aujourd'hui trois manières de faire travailler une IA avec Playwright. Elles ne s'excluent pas, mais elles ne visent pas le même usage.
| Approche | Principe | Point fort | Quand l'utiliser |
|---|---|---|---|
| Playwright MCP | Serveur MCP : l'IA appelle des outils browser_* et lit des instantanés d'accessibilité | Contexte de navigateur continu, introspection riche de la page | Exploration, tests auto-réparants, boucles autonomes longues |
| Playwright CLI + Skills | L'agent de code exécute des commandes concises décrites par des Skills | Plus économe en jetons : pas de gros schémas d'outils ni d'arbres d'accessibilité verbeux dans le contexte | Agent de code qui doit aussi gérer une grosse base de code et beaucoup de tests |
| Playwright Test Agents (depuis la 1.56) | Trois agents : planner, generator, healer | Un flux complet du plan de test au test réparé | Construire ou maintenir une suite Playwright Test avec un assistant |
Le README de Playwright MCP le dit clairement : pour un agent de code, la CLI avec des Skills est souvent préférable, car chaque appel reste court ; MCP reste pertinent quand l'agent doit raisonner longtemps sur la structure d'une page avec un état persistant.
Les Playwright Test Agents s'installent dans un projet existant :
npx playwright init-agents --loop=claude
# ou : --loop=vscode, --loop=opencode
Pour Claude Code, la commande crée les définitions d'agents dans .claude/agents/ et un fichier .mcp.json qui lance npx playwright run-test-mcp-server. Le planner explore l'application et produit un plan de test en Markdown, le generator transforme ce plan en fichiers de test, et le healer exécute la suite et répare les tests en échec — en dernier recours, il marque un test test.fixme() avec un commentaire expliquant pourquoi. Pensez à relancer la commande après chaque mise à jour de Playwright pour récupérer les nouvelles instructions.
Limites et bonnes pratiques
- Relire tout le code généré. Un test qui passe n'est pas forcément un bon test. L'IA a tendance à vérifier ce qu'elle voit, pas ce que le métier attend : c'est au testeur de définir le résultat attendu.
- Exiger des locators accessibles. Demandez explicitement
getByRole,getByLabelougetByTestId, jamais de sélecteurs CSS ou XPath fragiles. L'instantané d'accessibilité aide, mais il faut le rappeler dans le prompt. - Maîtriser les données de test. Utilisez des comptes et des jeux de données dédiés, recréés avant chaque exécution, plutôt que ce que l'agent a trouvé pendant l'exploration.
- Protéger les secrets. Pas de mot de passe dans le prompt ni dans le code : un fichier dotenv passé avec
--secretspour l'exploration, des variables d'environnement pour les tests. - Ne jamais pointer l'agent sur la production. Un assistant qui clique tout seul peut soumettre un formulaire, supprimer une donnée ou déclencher un paiement. Travaillez sur un environnement de test, avec
--isolatedpour éviter de réutiliser une session réelle. - Surveiller le coût en jetons. Chaque instantané de page et chaque description d'outil occupent le contexte du modèle. Sur une grosse application, limitez l'exploration à un parcours précis, et envisagez la CLI pour le travail courant.
- Garder la CI déterministe. L'IA sert à écrire et réparer les tests ; c'est Playwright Test, sans IA, qui les exécute dans le pipeline.
Ce que ça change pour le métier de testeur
Playwright MCP ne remplace pas le testeur : il déplace son travail. Le temps passé à écrire des sélecteurs et du code répétitif diminue ; celui consacré à concevoir les cas de test, choisir les assertions, préparer les données et relire le code augmente. Les compétences qui comptent le plus deviennent donc celles qui ne s'automatisent pas : les techniques de conception de tests (partitions d'équivalence, valeurs limites, tables de décision), la compréhension du métier, et la capacité à juger si un test protège vraiment contre une régression.
Il faut aussi savoir lire et corriger du TypeScript : un testeur qui ne comprend pas le code généré ne peut ni le relire, ni le maintenir. C'est pourquoi nous enseignons d'abord la conception de tests et les bases de Playwright, puis l'IA appliquée au test — voir notre page IA et test logiciel et notre article sur l'IA et le machine learning pour les tests automatisés. Si vous hésitez encore sur l'outil, notre comparatif Playwright vs Selenium détaille pourquoi Playwright est aujourd'hui le choix le plus simple pour démarrer.
Questions fréquentes
Qu'est-ce que Playwright MCP ?
Playwright MCP est un serveur Model Context Protocol publié par Microsoft. Il donne à un assistant IA (Claude Code, GitHub Copilot, Cursor…) des outils pour piloter un navigateur : naviguer, cliquer, saisir, lire la page. Il s'appuie sur des instantanés d'accessibilité structurés, sans modèle de vision.
Comment installer Playwright MCP dans Claude Code ?
Une seule commande : claude mcp add playwright npx @playwright/mcp@latest. Le serveur est ensuite disponible dans les sessions Claude Code ; Node.js doit être installé pour que npx fonctionne.
Playwright MCP écrit-il les tests à ma place ?
Il permet à l'assistant d'explorer l'application et de proposer un test Playwright, mais le code produit doit être relu, exécuté et corrigé par un testeur : choix des assertions, données de test, cas limites et maintenabilité restent une responsabilité humaine.
Faut-il préférer Playwright MCP ou Playwright CLI ?
Le README officiel recommande Playwright CLI avec des Skills pour les agents de code, car c'est plus économe en jetons. Playwright MCP reste pertinent pour l'exploration, les tests auto-réparants et les longues boucles autonomes qui ont besoin d'un contexte de navigateur continu.
Que sont les Playwright Test Agents ?
Introduits avec Playwright 1.56, ce sont trois définitions d'agents : planner explore l'application et rédige un plan de test en Markdown, generator transforme ce plan en fichiers de test, healer exécute la suite et répare les tests en échec. On les installe avec npx playwright init-agents --loop=claude (ou vscode, opencode).
Apprenez Playwright avant de le confier à l'IA
Pour relire et maintenir les tests qu'écrit un assistant, il faut maîtriser Playwright soi-même. Commencez par notre cours gratuit Playwright, puis passez à la formation Playwright certifiante : locators, assertions, tests d'API, CI et IA appliquée au test.
Commencer le cours gratuit Voir la formation Playwrightéquipe ADC — Experts QA & IA
AutomationDataCamp — Certifiés ISTQB
Formateurs en automatisation des tests avec Playwright et en IA appliquée au test logiciel. Découvrir l'équipe →
Playwright, tests API, CI et IA appliquée au test, sans prérequis. Examens ISTQB CTFL et CT-GenAI inclus. 1 500 € en 1 à 4 fois ou financement entreprise.
Voir le programme de la formation testeur QA automatisation & IAArticles similaires

IA & ML pour les tests automatisés
Ce que l'IA change concrètement dans l'automatisation des tests.
Lire la suite : IA et ML pour les tests automatisés
Intégrer l'Automatisation dans CI/CD
Jenkins, GitLab CI, GitHub Actions — exemples pratiques.
Lire la suite : Intégrer l'Automatisation dans CI/CD