💻 Développement

dev-playwright-browser-automation

Automatisation de navigateur via Playwright MCP — naviguer, cliquer, remplir des formulaires, prendre des captures d'écran et déboguer des pages web.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- dev-playwright-browser-automation --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } dev-playwright-browser-automation -Launch"

🚀 Déjà installé ?

claude "/dev-playwright-browser-automation"

Ou tapez /dev-playwright-browser-automation dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

ouvre cette pageteste le formulaireautomatise le navigateurcapture d'écran de la pageremplis le formulaire

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/skills/dev-playwright-browser-automation ~/.claude/skills/

Payload du plugin : skills/dev-playwright-browser-automation · source éditable : dev-skills/playwright-browser-automation

📖 Manuel

Automatisation Navigateur avec Playwright MCP

Workflow en étapes

1. Naviguer vers la page cible

Toujours commencer par un navigate vers l'URL exacte. Pour les apps locales, préférer 127.0.0.1 à localhost (évite les problèmes DNS).

playwright_navigate: { url: "http://127.0.0.1:3000/login" }

2. Inspecter avant d'interagir

Utiliser snapshot (arbre d'accessibilité) pour identifier les éléments disponibles. Ne jamais deviner un sélecteur.

playwright_snapshot  →  renvoie les ref= de chaque élément interactif

Snapshot en priorité sur screenshot : plus léger, donne les ref nécessaires aux clics/fill.

3. Interagir avec les éléments

Cliquer sur un bouton/lien

playwright_click: { element: "Connexion", ref: "e12" }

Remplir un formulaire (field par field)

playwright_fill: { element: "Email", ref: "e5", value: "user@example.com" }
playwright_fill: { element: "Mot de passe", ref: "e6", value: "secret" }
playwright_click: { element: "Se connecter", ref: "e9" }

Menu déroulant

playwright_select: { element: "Rôle", ref: "e8", values: ["admin"] }

Raccourci clavier (ex: soumettre avec Entrée)

playwright_press: { element: "champ", ref: "e6", key: "Enter" }

4. Attendre et vérifier

Après une action asynchrone (soumission, navigation, chargement AJAX), faire un nouveau snapshot avant de valider. Ne jamais supposer que le résultat est immédiat.

5. Déboguer si nécessaire

playwright_console_messages   →  erreurs JS, warnings, logs
playwright_network_requests   →  appels API, codes HTTP, payloads
playwright_evaluate: { expression: "document.title" }  →  JS arbitraire

6. Capture d'écran (visuel uniquement)

Réserver aux vérifications d'apparence ou rapports. Pas un substitut au snapshot.

playwright_screenshot: { name: "resultat-apres-login" }

Critères de décision

SituationAction
Trouver un élément cliquablesnapshot → lire les ref
Vérifier un texte affichésnapshot → chercher dans l'arbre
Bug CSS / rendu visuelscreenshot
Erreur JS inexpliquéeconsole_messages
Appel API qui échouenetwork_requests
Page SPA (React/Vue/Angular)snapshot après chaque navigation, l'arbre se reconstruit
Champ masqué / disabledJS via evaluate pour forcer la valeur

Anti-patterns et pièges

Ne jamais faire :

Pièges fréquents :

SymptômeCause probableRemède
ref introuvablePage rechargée depuis le dernier snapshotRefaire un snapshot
Champ rempli mais valeur ignoréeInput contrôlé (React) — fill non déclenche pas onChangeAjouter un press: Tab après le fill
Click sans effet visibleÉlément hors viewportevaluate: element.scrollIntoView() puis re-click
Timeout navigationSPA avec routing client-sideAttendre un élément cible plutôt que networkidle
Contenu iframe non visible dans snapshotIframe cross-originNaviguer directement vers l'URL de l'iframe

Bonnes pratiques 2026


Dépannage rapide

ProblèmeSolution
Navigateur non démarréLancer playwright_navigate — le MCP démarre Chromium automatiquement
Domaine local inaccessibleRemplacer localhost par 127.0.0.1
Snapshot vide ou tronquéNaviguer vers une sous-page plus ciblée
Éléments introuvablesRefaire snapshot — la page a peut-être rechargé
CORS sur evaluateNormal : le JS s'exécute dans le contexte de la page, pas externe