Playwright MCP
officielServeur MCP officiel Playwright pour l'automatisation de navigateur, l'inspection de pages, les captures d'écran et l'interaction web depuis Claude, Cursor et autres agents IA.
Que pouvez-vous faire avec Playwright MCP ?
- Navigation par arbre d’accessibilité — Demandez à votre IA de parcourir les pages et de lire des instantanés d’accessibilité structurés, sans nécessiter de modèle de vision.
- Sessions de navigateur persistantes — Conservez l’état de connexion entre les conversations via
--user-data-dirou--storage-statepour les flux de travail authentifiés. - Automatisation multi-navigateurs — Pilotez Chromium, Firefox, WebKit ou Edge avec l’option
--browserpour les tests multi-moteurs. - Émulation d’appareils — Simulez des appareils mobiles comme « iPhone 15 » via
--deviceou le mode générique--mobilepour les tests réactifs. - Génération de code — Générez des scripts de test Playwright en TypeScript, Python, Java ou C# à l’aide de l’option
--codegen. - Contextes de test isolés — Exécutez des sessions avec l’option
--isolatedpour supprimer tout état après chaque fermeture du navigateur.
Documentation
Playwright MCP
Un serveur Model Context Protocol (MCP) qui fournit des capacités d'automatisation de navigateur en utilisant Playwright. Ce serveur permet aux LLM d'interagir avec des pages web via des instantanés d'accessibilité structurés, contournant le besoin de captures d'écran ou de modèles optimisés visuellement.
Playwright MCP vs Playwright CLI
Ce package fournit une interface MCP vers Playwright. Si vous utilisez un agent de codage, vous pourriez bénéficier de l'utilisation du CLI+SKILLS à la place.
-
CLI : Les agents de codage modernes privilégient de plus en plus les workflows basés sur CLI exposés comme SKILLs plutôt que MCP, car les invocations CLI sont plus efficaces en tokens : elles évitent de charger de grands schémas d'outils et des arbres d'accessibilité verbeux dans le contexte du modèle, permettant aux agents d'agir via des commandes concises et spécialisées. Cela rend CLI + SKILLs mieux adapté aux agents de codage à haut débit qui doivent équilibrer l'automatisation du navigateur avec de grandes bases de code, des tests et du raisonnement dans des fenêtres de contexte limitées.
En savoir plus sur Playwright CLI avec SKILLS. -
MCP : MCP reste pertinent pour les boucles agentiques spécialisées qui bénéficient d'un état persistant, d'une introspection riche et d'un raisonnement itératif sur la structure de la page, comme l'automatisation exploratoire, les tests auto-réparateurs ou les workflows autonomes de longue durée où le maintien d'un contexte navigateur continu l'emporte sur les préoccupations de coût en tokens.
Fonctionnalités clés
- Rapide et léger. Utilise l'arbre d'accessibilité de Playwright, pas une entrée basée sur les pixels.
- Adapté aux LLM. Aucun modèle de vision nécessaire, fonctionne uniquement sur des données structurées.
- Application d'outils déterministe. Évite l'ambiguïté courante avec les approches basées sur des captures d'écran.
Prérequis
- Node.js 18 ou plus récent
- VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie ou tout autre client MCP
Pour commencer
Tout d'abord, installez le serveur Playwright MCP avec votre client.
Configuration standard fonctionne dans la plupart des outils :
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Amp
Ajoutez via l'écran des paramètres de l'extension Amp VS Code ou en mettant à jour votre fichier settings.json :
"amp.mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
Configuration CLI Amp :
Ajoutez via la commande amp mcp add ci-dessous
amp mcp add playwright -- npx @playwright/mcp@latest
Antigravity
Ajoutez via les paramètres Antigravity ou en mettant à jour votre fichier de configuration :
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Claude Code
Utilisez le CLI Claude Code pour ajouter le serveur Playwright MCP :
claude mcp add playwright npx @playwright/mcp@latest
Claude Desktop
Suivez le guide d'installation MCP, utilisez la configuration standard ci-dessus.
Cline
Suivez les instructions dans la section Configuration des serveurs MCP
Exemple : Configuration locale
Ajoutez ce qui suit à votre fichier cline_mcp_settings.json :
{
"mcpServers": {
"playwright": {
"type": "stdio",
"command": "npx",
"timeout": 30,
"args": [
"-y",
"@playwright/mcp@latest"
],
"disabled": false
}
}
}
Codex
Utilisez le CLI Codex pour ajouter le serveur Playwright MCP :
codex mcp add playwright npx "@playwright/mcp@latest"
Alternativement, créez ou modifiez le fichier de configuration ~/.codex/config.toml et ajoutez :
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
Pour plus d'informations, consultez la documentation MCP de Codex.
Copilot
Utilisez le CLI Copilot pour ajouter interactivement le serveur Playwright MCP :
/mcp add
Alternativement, créez ou modifiez le fichier de configuration ~/.copilot/mcp-config.json et ajoutez :
{
"mcpServers": {
"playwright": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"@playwright/mcp@latest"
]
}
}
}
Pour plus d'informations, consultez la documentation CLI de Copilot.
Cursor
Cliquez sur le bouton pour installer :
Ou installez manuellement :
Allez dans Cursor Settings -> MCP -> Add new MCP Server. Nommez à votre convenance, utilisez le type command avec la commande npx @playwright/mcp@latest. Vous pouvez également vérifier la configuration ou ajouter des arguments de commande en cliquant sur Edit.
Factory
Utilisez le CLI Factory pour ajouter le serveur Playwright MCP :
droid mcp add playwright "npx @playwright/mcp@latest"
Alternativement, tapez /mcp dans Factory droid pour ouvrir une interface utilisateur interactive pour gérer les serveurs MCP.
Pour plus d'informations, consultez la documentation MCP de Factory.
Gemini CLI
Suivez le guide d'installation MCP, utilisez la configuration standard ci-dessus.
Goose
Cliquez sur le bouton pour installer :
Ou installez manuellement :
Allez dans Advanced settings -> Extensions -> Add custom extension. Nommez à votre convenance, utilisez le type STDIO, et définissez le command sur npx @playwright/mcp. Cliquez sur "Add Extension".
Grok
Utilisez le CLI Grok pour ajouter le serveur Playwright MCP :
grok mcp add playwright -- npx @playwright/mcp@latest
Alternativement, créez ou modifiez le fichier de configuration ~/.grok/config.toml et ajoutez :
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
Pour plus d'informations, consultez la documentation MCP de Grok.
Junie
Pour ajouter le serveur Playwright MCP dans Junie CLI :
- Tapez
/mcp - Appuyez sur
Ctrl+Apour ajouter un nouveau serveur MCP - Sélectionnez Playwright dans la liste
Alternativement, ajoutez à .junie/mcp/mcp.json :
{
"mcpServers": {
"Playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/mcp@latest"
]
}
}
}
Pour plus d'informations, consultez la documentation de configuration MCP de Junie.
Kiro
Suivez la documentation des serveurs MCP. Par exemple dans .kiro/settings/mcp.json :
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
LM Studio
Cliquez sur le bouton pour installer :
Ou installez manuellement :
Allez dans Program dans la barre latérale droite -> Install -> Edit mcp.json. Utilisez la configuration standard ci-dessus.
opencode
Suivez la documentation des serveurs MCP. Par exemple dans ~/.config/opencode/opencode.json :
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"playwright": {
"type": "local",
"command": [
"npx",
"@playwright/mcp@latest"
],
"enabled": true
}
}
}
Qodo Gen
Ouvrez le panneau de chat Qodo Gen dans VSCode ou IntelliJ → Connect more tools → + Add new MCP → Collez la configuration standard ci-dessus.
Cliquez sur Save.
VS Code
Cliquez sur le bouton pour installer :
Ou installez manuellement :
Suivez le guide d'installation MCP, utilisez la configuration standard ci-dessus. Vous pouvez également installer le serveur Playwright MCP en utilisant le CLI VS Code :
# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
Après l'installation, le serveur Playwright MCP sera disponible pour une utilisation avec votre agent GitHub Copilot dans VS Code.
Warp
Allez dans Settings -> AI -> Manage MCP Servers -> + Add pour ajouter un serveur MCP. Utilisez la configuration standard ci-dessus.
Alternativement, utilisez la commande slash /add-mcp dans l'invite Warp et collez la configuration standard ci-dessus :
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Windsurf
Suivez la documentation MCP de Windsurf. Utilisez la configuration standard ci-dessus.
Configuration
Le serveur Playwright MCP prend en charge les arguments suivants. Ils peuvent être fournis dans la configuration JSON ci-dessus, dans le cadre de la liste "args" :
| Option | Description |
|---|---|
| --allowed-hosts <hosts...> | liste de hôtes séparés par des virgules à partir desquels ce serveur est autorisé à servir. Par défaut, l'hôte auquel le serveur est lié. Passez '*' pour désactiver la vérification de l'hôte. env PLAYWRIGHT_MCP_ALLOWED_HOSTS |
| --allowed-origins | liste d'origines de CONFIANCE séparées par des points-virgules autorisées à faire des requêtes au navigateur. Par défaut, toutes sont autorisées. Important : ne constitue pas une frontière de sécurité et n'affecte pas les redirections. env PLAYWRIGHT_MCP_ALLOWED_ORIGINS |
| --allow-unrestricted-file-access | autorise l'accès aux fichiers en dehors des racines de l'espace de travail. Autorise également l'accès sans restriction aux URL file://. Par défaut, l'accès au système de fichiers est limité aux répertoires racines de l'espace de travail (ou au répertoire courant si aucune racine n'est configurée), et la navigation vers les URL file:// est bloquée. env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS |
| --blocked-origins | liste d'origines séparées par des points-virgules que le navigateur est bloqué de demander. La liste de blocage est évaluée avant la liste d'autorisation. Si elle est utilisée sans la liste d'autorisation, les requêtes ne correspondant pas à la liste de blocage sont toujours autorisées. Important : ne constitue pas une frontière de sécurité et n'affecte pas les redirections. env PLAYWRIGHT_MCP_BLOCKED_ORIGINS |
| --block-service-workers | bloque les service workers env PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS |
| --browser | navigateur ou canal chrome à utiliser, valeurs possibles : chrome, firefox, webkit, msedge. env PLAYWRIGHT_MCP_BROWSER |
| --caps | liste de capacités supplémentaires à activer, séparées par des virgules, valeurs possibles : vision, pdf, devtools. env PLAYWRIGHT_MCP_CAPS |
| --cdp-endpoint | point de terminaison CDP auquel se connecter. env PLAYWRIGHT_MCP_CDP_ENDPOINT |
| --cdp-header <headers...> | en-têtes CDP à envoyer avec la requête de connexion, plusieurs peuvent être spécifiés. env PLAYWRIGHT_MCP_CDP_HEADERS |
| --cdp-timeout | délai d'attente en millisecondes pour la connexion au point de terminaison CDP, par défaut 30000 ms env PLAYWRIGHT_MCP_CDP_TIMEOUT |
| --codegen | spécifie le langage à utiliser pour la génération de code, valeurs possibles : "typescript", "python", "java", "csharp", "none". Par défaut "typescript". env PLAYWRIGHT_MCP_CODEGEN |
| --config | chemin vers le fichier de configuration. env PLAYWRIGHT_MCP_CONFIG |
| --console-level | niveau des messages de console à retourner : "error", "warning", "info", "debug". Chaque niveau inclut les messages des niveaux plus sévères. env PLAYWRIGHT_MCP_CONSOLE_LEVEL |
| --device | appareil à émuler, par exemple : "iPhone 15" env PLAYWRIGHT_MCP_DEVICE |
| --mobile | émule un appareil mobile générique (Pixel 10 pour Chromium, iPhone 17 pour WebKit). Les pages mobiles sont généralement plus légères, ce qui économise des jetons. Ne peut pas être combiné avec --device. env PLAYWRIGHT_MCP_MOBILE |
| --executable-path | chemin vers l'exécutable du navigateur. env PLAYWRIGHT_MCP_EXECUTABLE_PATH |
| --extension | se connecte à une instance de navigateur en cours d'exécution (Edge/Chrome uniquement). Nécessite l'installation de l'"Extension Playwright". env PLAYWRIGHT_MCP_EXTENSION |
| --endpoint | point de terminaison du navigateur lié auquel se connecter. env PLAYWRIGHT_MCP_ENDPOINT |
| --grant-permissions <permissions...> | liste des permissions à accorder au contexte du navigateur, par exemple "geolocation", "clipboard-read", "clipboard-write". env PLAYWRIGHT_MCP_GRANT_PERMISSIONS |
| --headless | exécute le navigateur en mode sans tête, avec interface par défaut env PLAYWRIGHT_MCP_HEADLESS |
| --host | hôte auquel lier le serveur. Par défaut localhost. Utilisez 0.0.0.0 pour lier à toutes les interfaces. env PLAYWRIGHT_MCP_HOST |
| --ignore-https-errors | ignore les erreurs https env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS |
| --init-page <path...> | chemin vers un fichier TypeScript à évaluer sur l'objet de page Playwright env PLAYWRIGHT_MCP_INIT_PAGE |
| --init-script <path...> | chemin vers un fichier JavaScript à ajouter comme script d'initialisation. Le script sera évalué dans chaque page avant tout script de la page. Peut être spécifié plusieurs fois. env PLAYWRIGHT_MCP_INIT_SCRIPT |
| --isolated | conserve le profil du navigateur en mémoire, ne l'enregistre pas sur le disque. env PLAYWRIGHT_MCP_ISOLATED |
| --image-responses | indique si les réponses d'images doivent être envoyées au client. Peut être "allow" ou "omit", par défaut "allow". env PLAYWRIGHT_MCP_IMAGE_RESPONSES |
| --no-sandbox | désactive le bac à sable pour tous les types de processus normalement isolés. env PLAYWRIGHT_MCP_NO_SANDBOX |
| --output-dir | chemin vers le répertoire des fichiers de sortie. env PLAYWRIGHT_MCP_OUTPUT_DIR |
| --output-max-size | seuil pour l'éviction des anciens fichiers de sortie, en octets. env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE |
| --port | port d'écoute pour le transport SSE. env PLAYWRIGHT_MCP_PORT |
| --proxy-bypass | domaines séparés par des virgules pour contourner le proxy, par exemple ".com,chromium.org,.domain.com" env PLAYWRIGHT_MCP_PROXY_BYPASS |
| --proxy-server | spécifie le serveur proxy, par exemple "http://myproxy:3128" ou "socks5://myproxy:8080" env PLAYWRIGHT_MCP_PROXY_SERVER |
| --sandbox | active le bac à sable pour tous les types de processus normalement non isolés. env PLAYWRIGHT_MCP_SANDBOX |
| --save-session | indique si la session Playwright MCP doit être enregistrée dans le répertoire de sortie. env PLAYWRIGHT_MCP_SAVE_SESSION |
| --secrets | chemin vers un fichier contenant des secrets au format dotenv env PLAYWRIGHT_MCP_SECRETS_FILE |
| --shared-browser-context | réutilise le même contexte de navigateur entre tous les clients HTTP connectés. env PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT |
| --snapshot-boxes | inclut la boîte englobante de chaque élément comme [box=x,y,width,height] dans les instantanés. Les coordonnées sont relatives à la fenêtre d'affichage, en pixels CSS. env PLAYWRIGHT_MCP_SNAPSHOT_BOXES |
| --snapshot-mode | lors de la prise d'instantanés pour les réponses, spécifie le mode à utiliser. Peut être "full" ou "none". Par défaut "full". env PLAYWRIGHT_MCP_SNAPSHOT_MODE |
| --storage-state | chemin vers le fichier d'état de stockage pour les sessions isolées. env PLAYWRIGHT_MCP_STORAGE_STATE |
| --test-id-attribute | spécifie l'attribut à utiliser pour les identifiants de test, par défaut "data-testid" env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE |
| --timeout-action | spécifie le délai d'attente des actions en millisecondes, par défaut 5000 ms env PLAYWRIGHT_MCP_TIMEOUT_ACTION |
| --timeout-navigation | spécifie le délai d'attente de navigation en millisecondes, par défaut 60000 ms env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION |
| --timeout-settle | durée d'attente après chaque action pour que le travail déclenché se stabilise, en millisecondes, par défaut 500 ms env PLAYWRIGHT_MCP_TIMEOUT_SETTLE |
| --user-agent | spécifie la chaîne du user agent env PLAYWRIGHT_MCP_USER_AGENT |
| --user-data-dir | chemin vers le répertoire de données utilisateur. S'il n'est pas spécifié, un répertoire temporaire sera créé. env PLAYWRIGHT_MCP_USER_DATA_DIR |
| --viewport-size | spécifie la taille de la fenêtre d'affichage du navigateur en pixels, par exemple "1280x720" env PLAYWRIGHT_MCP_VIEWPORT_SIZE |
Profil utilisateur
Vous pouvez exécuter Playwright MCP avec un profil persistant comme un navigateur régulier (par défaut), dans des contextes isolés pour les sessions de test, ou vous connecter à votre navigateur existant à l'aide de l'extension de navigateur.
Profil persistant
Toutes les informations de connexion seront stockées dans le profil persistant. Vous pouvez le supprimer entre les sessions si vous souhaitez effacer l'état hors ligne.
Le profil persistant se trouve aux emplacements suivants et vous pouvez le remplacer avec l'argument --user-data-dir.
# Windows
%USERPROFILE%\AppData\Local\ms-playwright\mcp-{channel}-{workspace-hash}
# macOS
- ~/Library/Caches/ms-playwright/mcp-{channel}-{workspace-hash}
# Linux
- ~/.cache/ms-playwright/mcp-{channel}-{workspace-hash}
{workspace-hash} est dérivé de la racine de l'espace de travail du client MCP, donc différents projets obtiennent automatiquement des profils séparés.
[!IMPORTANT] Un profil persistant ne peut être utilisé que par une seule instance de navigateur à la fois, donc des clients MCP concurrents partageant le même espace de travail entreront en conflit. Pour exécuter plusieurs clients en parallèle, démarrez chaque client supplémentaire avec
--isolatedou pointez-le vers un--user-data-dirdistinct.
Isolé
En mode isolé, chaque session démarre dans le profil isolé. Chaque fois que vous demandez à MCP de fermer le navigateur,
la session est fermée et tout l'état de stockage de cette session est perdu. Vous pouvez fournir un état de stockage initial
au navigateur via le contextOptions de la configuration ou via l'argument --storage-state. Apprenez-en plus sur l'état de stockage ici.
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest",
"--isolated",
"--storage-state={path/to/storage.json}"
]
}
}
}
Extension de navigateur
L'extension Chrome Playwright MCP vous permet de vous connecter à des onglets de navigateur existants et de tirer parti de vos sessions connectées et de l'état du navigateur. Voir microsoft/playwright › packages/extension pour les instructions d'installation et de configuration.
État initial
Il existe plusieurs façons de fournir l'état initial au contexte du navigateur ou à une page.
Pour l'état de stockage, vous pouvez soit :
- Démarrer avec un répertoire de données utilisateur en utilisant l'argument
--user-data-dir. Cela persistera toutes les données du navigateur entre les sessions. - Démarrer avec un fichier d'état de stockage en utilisant l'argument
--storage-state. Cela chargera les cookies et le stockage local du fichier dans un contexte de navigateur isolé.
Pour l'état de la page, vous pouvez utiliser :
--init-pagepour pointer vers un fichier TypeScript qui sera évalué sur l'objet de page Playwright. Cela vous permet d'exécuter du code arbitraire pour configurer la page.
// init-page.ts
export default async ({ page }) => {
await page.context().grantPermissions(['geolocation']);
await page.context().setGeolocation({ latitude: 37.7749, longitude: -122.4194 });
await page.setViewportSize({ width: 1280, height: 720 });
};
--init-scriptpour pointer vers un fichier JavaScript qui sera ajouté comme script d'initialisation. Le script sera évalué dans chaque page avant tout script de la page. Cela est utile pour remplacer les API du navigateur ou configurer l'environnement.
// init-script.js
window.isPlaywrightMCP = true;
Fichier de configuration
Le serveur Playwright MCP peut être configuré à l'aide d'un fichier de configuration JSON. Vous pouvez spécifier le fichier de configuration
en utilisant l'option de ligne de commande --config :
npx @playwright/mcp@latest --config path/to/config.json
Schéma du fichier de configuration
{
/**
* The browser to use.
*/
browser?: {
/**
* The type of browser to use.
*/
browserName?: 'chromium' | 'firefox' | 'webkit';
/**
* Keep the browser profile in memory, do not save it to disk.
*/
isolated?: boolean;
/**
* Path to a user data directory for browser profile persistence.
* Temporary directory is created by default.
*/
userDataDir?: string;
/**
* Launch options passed to
* @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
*
* This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
*/
launchOptions?: playwright.LaunchOptions;
/**
* Context options for the browser context.
*
* This is useful for settings options like `viewport`.
*/
contextOptions?: playwright.BrowserContextOptions;
/**
* Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
*/
cdpEndpoint?: string;
/**
* CDP headers to send with the connect request.
*/
cdpHeaders?: Record<string, string>;
/**
* Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
*/
cdpTimeout?: number;
/**
* Remote endpoint to connect to an existing Playwright server. May be a
* WebSocket URL string, or a [ConnectOptions] object that mirrors the
* `connectOptions` shape used by the test runner. When passed as an object,
* `exposeNetwork`, `headers`, `slowMo`, and `timeout` are forwarded to the
* underlying connect call.
*/
remoteEndpoint?: string | playwright.ConnectOptions & { endpoint: string };
/**
* Paths to TypeScript files to add as initialization scripts for Playwright page.
*/
initPage?: string[];
/**
* Paths to JavaScript files to add as initialization scripts.
* The scripts will be evaluated in every page before any of the page's scripts.
*/
initScript?: string[];
},
/**
* Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
* config is ignored.
* Requires the "Playwright Extension" to be installed.
*/
extension?: boolean;
server?: {
/**
* The port to listen on for SSE or MCP transport.
*/
port?: number;
/**
* The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
*/
host?: string;
/**
* The hosts this server is allowed to serve from. Defaults to the host server is bound to.
* This is not for CORS, but rather for the DNS rebinding protection.
*/
allowedHosts?: string[];
},
/**
* List of enabled tool capabilities. Possible values:
* - 'core': Core browser automation features.
* - 'pdf': PDF generation and manipulation.
* - 'vision': Coordinate-based interactions.
* - 'devtools': Developer tools features.
*/
capabilities?: ToolCapability[];
/**
* Whether to save the Playwright session into the output directory.
*/
saveSession?: boolean;
/**
* Reuse the same browser context between all connected HTTP clients.
*/
sharedBrowserContext?: boolean;
/**
* Secrets are used to replace matching plain text in the tool responses to prevent the LLM
* from accidentally getting sensitive data. It is a convenience and not a security feature,
* make sure to always examine information coming in and from the tool on the client.
*/
secrets?: Record<string, string>;
/**
* The directory to save output files.
*/
outputDir?: string;
/**
* Threshold for evicting old output files, in bytes.
*/
outputMaxSize?: number;
console?: {
/**
* The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
*/
level?: 'error' | 'warning' | 'info' | 'debug';
},
network?: {
/**
* List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
allowedOrigins?: string[];
/**
* List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
blockedOrigins?: string[];
};
/**
* Specify the attribute to use for test ids, defaults to "data-testid".
*/
testIdAttribute?: string;
timeouts?: {
/*
* Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
*/
action?: number;
/*
* Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
*/
navigation?: number;
/**
* Configures default expect timeout: https://playwright.dev/docs/test-timeouts#expect-timeout. Defaults to 5000ms.
*/
expect?: number;
/**
* How long to wait after each action for triggered work (navigations, requests) to settle before responding. Defaults to 500ms.
*/
settle?: number;
};
/**
* Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
*/
imageResponses?: 'allow' | 'omit';
snapshot?: {
/**
* When taking snapshots for responses, specifies the mode to use.
*/
mode?: 'full' | 'none';
/**
* Whether to include each element's bounding box as [box=x,y,width,height] in snapshots.
* Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect).
*/
boxes?: boolean;
};
/**
* allowUnrestrictedFileAccess acts as a guardrail to prevent the LLM from accidentally
* wandering outside its intended workspace. It is a convenience defense to catch unintended
* file access, not a secure boundary; a deliberate attempt to reach other directories can be
* easily worked around, so always rely on client-level permissions for true security.
*/
allowUnrestrictedFileAccess?: boolean;
/**
* Specify the language to use for code generation.
*/
codegen?: 'typescript' | 'python' | 'java' | 'csharp' | 'none';
}
Serveur MCP autonome
Lors de l'exécution d'un navigateur avec interface sur un système sans affichage ou depuis des processus de travail des IDE,
exécutez le serveur MCP depuis un environnement avec le DISPLAY et passez le drapeau --port pour activer le transport HTTP.
npx @playwright/mcp@latest --port 8931
Puis, dans la configuration du client MCP, définissez le url sur le point de terminaison HTTP :
{
"mcpServers": {
"playwright": {
"url": "http://localhost:8931/mcp"
}
}
}
Sécurité
Playwright MCP n'est pas une frontière de sécurité. Voir Meilleures pratiques de sécurité MCP pour des conseils sur la sécurisation de votre déploiement.
Docker
REMARQUE : L'implémentation Docker ne prend en charge que chromium sans tête pour le moment.
{
"mcpServers": {
"playwright": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
}
}
}
Ou si vous préférez exécuter le conteneur comme un service à long terme plutôt que de laisser le client MCP le générer, utilisez :
docker run -d -i --rm --init --pull=always \
--entrypoint node \
--name playwright \
-p 8931:8931 \
mcr.microsoft.com/playwright/mcp \
/app/cli.js --headless --browser chromium --no-sandbox --port 8931 --host 0.0.0.0
Le serveur écoutera sur le port hôte 8931 et pourra être atteint par n'importe quel client MCP.
Vous pouvez construire l'image Docker vous-même.
docker build -t mcr.microsoft.com/playwright/mcp .
Utilisation programmatique
import http from 'http';
import { createConnection } from '@playwright/mcp';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
http.createServer(async (req, res) => {
// ...
// Creates a headless Playwright MCP server with SSE transport
const connection = await createConnection({ browser: { launchOptions: { headless: true } } });
const transport = new SSEServerTransport('/messages', res);
await connection.connect(transport);
// ...
});
Outils
Automatisation de base
- browser_click
- Titre : Cliquer
- Description : Effectuer un clic sur une page web
- Paramètres :
element(chaîne, facultatif) : Description lisible de l'élément utilisée pour obtenir l'autorisation d'interagir avec l'élémenttarget(chaîne) : Référence exacte de l'élément cible dans l'instantané de la page, ou sélecteur d'élément uniquedoubleClick(booléen, facultatif) : Indique s'il faut effectuer un double-clic au lieu d'un simple clicbutton(chaîne, facultatif) : Bouton à cliquer, par défaut le bouton gauchemodifiers(tableau, facultatif) : Touches modificatrices à presser
- Lecture seule : false
- browser_close
- Titre : Fermer le navigateur
- Description : Fermer la page
- Paramètres : Aucun
- Lecture seule : false
- browser_console_messages
- Titre : Obtenir les messages de la console
- Description : Renvoie tous les messages de la console
- Paramètres :
level(chaîne) : Niveau des messages de la console à renvoyer. Chaque niveau inclut les messages des niveaux plus sévères. Par défaut « info ».all(booléen, facultatif) : Renvoyer tous les messages de la console depuis le début de la session, pas seulement depuis la dernière navigation. Par défaut false.filename(chaîne, facultatif) : Nom du fichier dans lequel enregistrer les messages de la console. S'il n'est pas fourni, les messages sont renvoyés sous forme de texte.
- Lecture seule : true
- browser_drag
- Titre : Glisser la souris
- Description : Effectuer un glisser-déposer entre deux éléments
- Paramètres :
startElement(chaîne, facultatif) : Description lisible de l'élément source utilisée pour obtenir l'autorisation d'interagir avec l'élémentstartTarget(chaîne) : Référence exacte de l'élément cible dans l'instantané de la page, ou sélecteur d'élément uniqueendElement(chaîne, facultatif) : Description lisible de l'élément cible utilisée pour obtenir l'autorisation d'interagir avec l'élémentendTarget(chaîne) : Référence exacte de l'élément cible dans l'instantané de la page, ou sélecteur d'élément unique
- Lecture seule : false
- browser_drop
- Titre : Déposer des fichiers ou des données sur un élément
- Description : Déposer des fichiers ou des données de type MIME sur un élément, comme s'ils étaient glissés depuis l'extérieur de la page. Au moins l'un des paramètres « paths » ou « data » doit être fourni.
- Paramètres :
element(chaîne, facultatif) : Description lisible de l'élément utilisée pour obtenir l'autorisation d'interagir avec l'élémenttarget(chaîne) : Référence exacte de l'élément cible dans l'instantané de la page, ou sélecteur d'élément uniquepaths(tableau, facultatif) : Chemins absolus des fichiers à déposer sur l'élément.data(objet, facultatif) : Données à déposer, sous forme de correspondance entre le type MIME et la valeur de chaîne (par exemple {"text/plain": "hello", "text/uri-list": "https://example.com"}).
- Lecture seule : false
- browser_evaluate
- Titre : Évaluer du JavaScript
- Description : Évaluer une expression JavaScript sur la page ou un élément
- Paramètres :
element(chaîne, facultatif) : Description lisible de l'élément utilisée pour obtenir l'autorisation d'interagir avec l'élémenttarget(chaîne, facultatif) : Référence exacte de l'élément cible dans l'instantané de la page, ou sélecteur d'élément uniquefunction(chaîne) : () => { /* code / } ou (element) => { / code */ } lorsque l'élément est fournifilename(chaîne, facultatif) : Nom du fichier dans lequel enregistrer le résultat. S'il n'est pas fourni, le résultat est renvoyé sous forme de texte.
- Lecture seule : false
- browser_file_upload
- Titre : Téléverser des fichiers
- Description : Téléverser un ou plusieurs fichiers
- Paramètres :
paths(tableau, facultatif) : Chemins absolus des fichiers à téléverser. Peut être un seul fichier ou plusieurs fichiers. S'il est omis, le sélecteur de fichiers est annulé.
- Lecture seule : false
- browser_fill_form
- Titre : Remplir un formulaire
- Description : Remplir plusieurs champs de formulaire
- Paramètres :
fields(tableau) : Champs à remplir
- Lecture seule : false
- browser_find
- Titre : Rechercher dans l'instantané de la page
- Description : Rechercher du texte ou une expression régulière dans l'instantané d'accessibilité de la page actuelle. Renvoie les nœuds d'instantané correspondants avec quelques lignes de contexte environnant (comme des extraits de recherche), chacun affiché sous son chemin depuis la racine de l'arborescence, ce qui est moins coûteux que de capturer l'intégralité de l'instantané lorsque vous avez seulement besoin de localiser un élément et sa référence.
- Paramètres :
text(chaîne, facultatif) : Texte brut à rechercher dans l'instantané de la page (correspondance de sous-chaîne insensible à la casse). Fournissez soit du texte, soit une expression régulière, pas les deux.regex(chaîne, facultatif) : Expression régulière à rechercher dans l'instantané de la page. La correspondance est sensible à la casse par défaut ; enveloppez le motif entre barres obliques pour ajouter des indicateurs, par exemple « /error/i » pour une correspondance insensible à la casse. Fournissez soit du texte, soit une expression régulière, pas les deux.
- Lecture seule : true
- browser_handle_dialog
- Titre : Gérer une boîte de dialogue
- Description : Gérer une boîte de dialogue
- Paramètres :
accept(booléen) : Indique s'il faut accepter la boîte de dialogue.promptText(chaîne, facultatif) : Le texte de l'invite dans le cas d'une boîte de dialogue d'invite.
- Lecture seule : false
- browser_hover
- Titre : Survolez la souris
- Description : Survolez un élément de la page
- Paramètres :
element(chaîne, facultatif) : Description lisible de l'élément utilisée pour obtenir l'autorisation d'interagir avec l'élémenttarget(chaîne) : Référence exacte de l'élément cible dans l'instantané de la page, ou sélecteur d'élément unique
- Lecture seule : false
- browser_navigate
- Titre : Naviguer vers une URL
- Description : Naviguer vers une URL
- Paramètres :
url(chaîne) : L'URL vers laquelle naviguer
- Lecture seule : false
- browser_navigate_back
- Titre : Revenir en arrière
- Description : Revenir à la page précédente dans l'historique
- Paramètres : Aucun
- Lecture seule : false
- browser_network_request
- Titre : Afficher les détails de la requête réseau
- Description : Renvoie les détails complets (en-têtes et corps) d'une seule requête réseau, ou une seule partie si
partest défini. Utilisez le numéro de browser_network_requests. - Paramètres :
index(entier) : Index de la requête basé sur 1, tel qu'affiché par browser_network_requests.part(chaîne, facultatif) : Renvoyer uniquement cette partie de la requête. Omettre pour renvoyer les détails complets.filename(chaîne, facultatif) : Nom du fichier dans lequel enregistrer le résultat. S'il n'est pas fourni, la sortie est renvoyée sous forme de texte.
- Lecture seule : true
- browser_network_requests
- Titre : Lister les requêtes réseau
- Description : Renvoie une liste numérotée des requêtes réseau depuis le chargement de la page. Utilisez browser_network_request avec le numéro pour obtenir les détails complets.
- Paramètres :
static(booléen) : Indique s'il faut inclure les ressources statiques réussies comme les images, les polices, les scripts, etc. Par défaut false.filter(chaîne, facultatif) : Renvoyer uniquement les requêtes dont l'URL correspond à cette expression régulière (par exemple « /api/.*user »).filename(chaîne, facultatif) : Nom du fichier dans lequel enregistrer les requêtes réseau. S'il n'est pas fourni, les requêtes sont renvoyées sous forme de texte.
- Lecture seule : true
- browser_press_key
- Titre : Presser une touche
- Description : Presser une touche du clavier
- Paramètres :
key(chaîne) : Nom de la touche à presser ou caractère à générer, tel queArrowLeftoua
- Lecture seule : false
- browser_resize
- Titre : Redimensionner la fenêtre du navigateur
- Description : Redimensionner la fenêtre du navigateur
- Paramètres :
width(nombre) : Largeur de la fenêtre du navigateurheight(nombre) : Hauteur de la fenêtre du navigateur
- Lecture seule : false
- browser_run_code_unsafe
- Titre : Exécuter du code Playwright (non sécurisé)
- Description : Exécuter un extrait de code Playwright. Non sécurisé : exécute du JavaScript arbitraire dans le processus serveur Playwright et équivaut à une exécution de code à distance (RCE).
- Paramètres :
code(chaîne, facultatif) : Une fonction JavaScript contenant du code Playwright à exécuter. Elle sera invoquée avec un seul argument, page, que vous pouvez utiliser pour toute interaction avec la page. Par exemple :async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }filename(chaîne, facultatif) : Charger le code depuis le fichier spécifié. Si le code et le nom de fichier sont tous deux fournis, le code sera ignoré.
- Lecture seule : false
- browser_select_option
- Titre : Sélectionner une option
- Description : Sélectionner une option dans une liste déroulante
- Paramètres :
element(chaîne, facultatif) : Description lisible de l'élément utilisée pour obtenir l'autorisation d'interagir avec l'élémenttarget(chaîne) : Référence exacte de l'élément cible dans l'instantané de la page, ou sélecteur d'élément uniquevalues(tableau) : Tableau de valeurs à sélectionner dans la liste déroulante. Il peut s'agir d'une seule valeur ou de plusieurs valeurs.
- Lecture seule : false
- browser_snapshot
- Titre : Instantané de la page
- Description : Capturer l'instantané d'accessibilité de la page actuelle, c'est mieux qu'une capture d'écran
- Paramètres :
target(chaîne, facultatif) : Référence exacte de l'élément cible dans l'instantané de la page, ou sélecteur d'élément uniquefilename(chaîne, facultatif) : Enregistrer l'instantané dans un fichier Markdown au lieu de le renvoyer dans la réponse.depth(nombre, facultatif) : Limiter la profondeur de l'arborescence de l'instantanéboxes(booléen, facultatif) : Inclure la boîte englobante de chaque élément sous la forme [box=x,y,width,height] dans l'instantané. Les coordonnées sont relatives à la fenêtre d'affichage, en pixels CSS (Element.getBoundingClientRect)
- Lecture seule : true
- browser_take_screenshot
- Titre : Prendre une capture d'écran
- Description : Prendre une capture d'écran de la page actuelle. Vous ne pouvez pas effectuer d'actions basées sur la capture d'écran, utilisez browser_snapshot pour les actions.
- Paramètres :
element(chaîne, facultatif) : Description lisible de l'élément utilisée pour obtenir l'autorisation d'interagir avec l'élémenttarget(chaîne, facultatif) : Référence exacte de l'élément cible dans l'instantané de la page, ou sélecteur d'élément uniquetype(chaîne, facultatif) : Format d'image pour la capture d'écran. S'il n'est pas défini, il est déduit de l'extension du nom de fichier, sinon png.filename(chaîne, facultatif) : Nom du fichier dans lequel enregistrer la capture d'écran. Par défautpage-{timestamp}.{png|jpeg|webp}s'il n'est pas spécifié. Préférez les noms de fichiers relatifs pour rester dans le répertoire de sortie.fullPage(booléen, facultatif) : Lorsqu'il est true, prend une capture d'écran de la page entière défilable, au lieu de la fenêtre d'affichage actuellement visible. Ne peut pas être utilisé avec les captures d'écran d'éléments.scale(chaîne) : Échelle de résolution de l'image. « css » produit une capture d'écran dimensionnée en pixels CSS (plus petite, cohérente entre les appareils). « device » produit une capture d'écran haute résolution utilisant les pixels de l'appareil (plus grande, tient compte du ratio de pixels de l'appareil). Par défaut css.
- Lecture seule : true
- browser_type
- Titre : Saisir du texte
- Description : Saisir du texte dans un élément modifiable
- Paramètres :
element(chaîne, facultatif) : Description lisible de l'élément utilisée pour obtenir l'autorisation d'interagir avec l'élémenttarget(chaîne) : Référence exacte de l'élément cible dans l'instantané de la page, ou sélecteur d'élément uniquetext(chaîne) : Texte à saisir dans l'élémentsubmit(booléen, facultatif) : Indique s'il faut soumettre le texte saisi (appuyer sur Entrée après)slowly(booléen, facultatif) : Indique s'il faut saisir un caractère à la fois. Utile pour déclencher les gestionnaires de touches dans la page. Par défaut, tout le texte est saisi en une seule fois.
- Lecture seule : false
- browser_wait_for
- Titre : Attendre
- Description : Attendre l'apparition ou la disparition d'un texte, ou qu'un temps spécifié s'écoule
- Paramètres :
time(nombre, facultatif) : Le temps d'attente en secondestext(chaîne, facultatif) : Le texte à attendretextGone(chaîne, facultatif) : Le texte à attendre pour qu'il disparaisse
- Lecture seule : false
Gestion des onglets
- browser_tabs
- Titre : Gérer les onglets
- Description : Lister, créer, fermer ou sélectionner un onglet du navigateur.
- Paramètres :
action(chaîne) : Opération à effectuerindex(nombre, facultatif) : Index de l'onglet, utilisé pour fermer/sélectionner. S'il est omis pour la fermeture, l'onglet courant est fermé.url(chaîne, facultatif) : URL vers laquelle naviguer dans le nouvel onglet, utilisé pour la création.
- Lecture seule : false
Installation du navigateur
Configuration (optionnel via --caps=config)
- browser_get_config
- Titre : Obtenir la configuration
- Description : Obtenir la configuration finale résolue après fusion des options CLI, des variables d'environnement et du fichier de configuration.
- Paramètres : Aucun
- Lecture seule : true
Réseau (optionnel via --caps=network)
- browser_network_state_set
- Titre : Définir l'état du réseau
- Description : Définit l'état réseau du navigateur en ligne ou hors ligne. En mode hors ligne, toutes les requêtes réseau échoueront.
- Paramètres :
state(chaîne) : Définir sur "offline" pour simuler le mode hors ligne, "online" pour restaurer la connectivité réseau
- Lecture seule : false
- browser_route
- Titre : Simuler les requêtes réseau
- Description : Configurer une route pour simuler les requêtes réseau correspondant à un motif d'URL
- Paramètres :
pattern(chaîne) : Motif d'URL à faire correspondre (par exemple, "/api/users", "/*.{png,jpg}")status(nombre, facultatif) : Code de statut HTTP à renvoyer (défaut : 200)body(chaîne, facultatif) : Corps de la réponse (texte ou chaîne JSON)contentType(chaîne, facultatif) : En-tête Content-Type (par exemple, "application/json", "text/html")headers(tableau, facultatif) : En-têtes à ajouter au format "Nom : Valeur"removeHeaders(chaîne, facultatif) : Liste séparée par des virgules des noms d'en-têtes à supprimer de la requête
- Lecture seule : false
- browser_route_list
- Titre : Lister les routes réseau
- Description : Lister toutes les routes réseau actives
- Paramètres : Aucun
- Lecture seule : true
- browser_unroute
- Titre : Supprimer les routes réseau
- Description : Supprimer les routes réseau correspondant à un motif (ou toutes les routes si aucun motif n'est spécifié)
- Paramètres :
pattern(chaîne, facultatif) : Motif d'URL à désrouter (omettre pour supprimer toutes les routes)
- Lecture seule : false
Stockage (optionnel via --caps=storage)
- browser_cookie_clear
- Titre : Effacer les cookies
- Description : Effacer tous les cookies
- Paramètres : Aucun
- Lecture seule : false
- browser_cookie_delete
- Titre : Supprimer un cookie
- Description : Supprimer un cookie spécifique
- Paramètres :
name(chaîne) : Nom du cookie à supprimer
- Lecture seule : false
- browser_cookie_get
- Titre : Obtenir un cookie
- Description : Obtenir un cookie spécifique par son nom
- Paramètres :
name(chaîne) : Nom du cookie à obtenir
- Lecture seule : true
- browser_cookie_list
- Titre : Lister les cookies
- Description : Lister tous les cookies (éventuellement filtrés par domaine/chemin)
- Paramètres :
domain(chaîne, facultatif) : Filtrer les cookies par domainepath(chaîne, facultatif) : Filtrer les cookies par chemin
- Lecture seule : true
- browser_cookie_set
- Titre : Définir un cookie
- Description : Définir un cookie avec des indicateurs facultatifs (domaine, chemin, expiration, httpOnly, secure, sameSite)
- Paramètres :
name(chaîne) : Nom du cookievalue(chaîne) : Valeur du cookiedomain(chaîne, facultatif) : Domaine du cookiepath(chaîne, facultatif) : Chemin du cookieexpires(nombre, facultatif) : Expiration du cookie en horodatage UnixhttpOnly(booléen, facultatif) : Indique si le cookie est HTTP uniquementsecure(booléen, facultatif) : Indique si le cookie est sécurisésameSite(chaîne, facultatif) : Attribut SameSite du cookie
- Lecture seule : false
- browser_localstorage_clear
- Titre : Effacer localStorage
- Description : Effacer tout le localStorage
- Paramètres : Aucun
- Lecture seule : false
- browser_localstorage_delete
- Titre : Supprimer un élément localStorage
- Description : Supprimer un élément localStorage
- Paramètres :
key(chaîne) : Clé à supprimer
- Lecture seule : false
- browser_localstorage_get
- Titre : Obtenir un élément localStorage
- Description : Obtenir un élément localStorage par clé
- Paramètres :
key(chaîne) : Clé à obtenir
- Lecture seule : true
- browser_localstorage_list
- Titre : Lister localStorage
- Description : Lister toutes les paires clé-valeur localStorage
- Paramètres : Aucun
- Lecture seule : true
- browser_localstorage_set
- Titre : Définir un élément localStorage
- Description : Définir un élément localStorage
- Paramètres :
key(chaîne) : Clé à définirvalue(chaîne) : Valeur à définir
- Lecture seule : false
- browser_sessionstorage_clear
- Titre : Effacer sessionStorage
- Description : Effacer tout le sessionStorage
- Paramètres : Aucun
- Lecture seule : false
- browser_sessionstorage_delete
- Titre : Supprimer un élément sessionStorage
- Description : Supprimer un élément sessionStorage
- Paramètres :
key(chaîne) : Clé à supprimer
- Lecture seule : false
- browser_sessionstorage_get
- Titre : Obtenir un élément sessionStorage
- Description : Obtenir un élément sessionStorage par clé
- Paramètres :
key(chaîne) : Clé à obtenir
- Lecture seule : true
- browser_sessionstorage_list
- Titre : Lister sessionStorage
- Description : Lister toutes les paires clé-valeur sessionStorage
- Paramètres : Aucun
- Lecture seule : true
- browser_sessionstorage_set
- Titre : Définir un élément sessionStorage
- Description : Définir un élément sessionStorage
- Paramètres :
key(chaîne) : Clé à définirvalue(chaîne) : Valeur à définir
- Lecture seule : false
- browser_set_storage_state
- Titre : Restaurer l'état du stockage
- Description : Restaurer l'état du stockage (cookies, stockage local) à partir d'un fichier. Cela efface les cookies et le stockage local existants avant la restauration.
- Paramètres :
filename(chaîne) : Chemin vers le fichier d'état du stockage à restaurer
- Lecture seule : false
- browser_storage_state
- Titre : Enregistrer l'état du stockage
- Description : Enregistrer l'état du stockage (cookies, stockage local) dans un fichier pour une réutilisation ultérieure
- Paramètres :
filename(chaîne, facultatif) : Nom du fichier pour enregistrer l'état du stockage. Par défautstorage-state-{timestamp}.jsonsi non spécifié.
- Lecture seule : true
Outils de développement (optionnel via --caps=devtools)
- browser_annotate
- Titre : Annoter la page courante
- Description : Ouvrir le tableau de bord Playwright en mode annotation pour la page courante et attendre que l'utilisateur dessine des annotations. Renvoie la capture d'écran annotée, l'instantané ARIA et la liste des annotations.
- Paramètres : Aucun
- Lecture seule : true
- browser_hide_highlight
- Titre : Masquer la surbrillance d'un élément
- Description : Supprimer une superposition de surbrillance précédemment ajoutée pour l'élément.
- Paramètres :
element(chaîne, facultatif) : Description lisible de l'élément utilisée lors de l'ajout de la surbrillance ; doit correspondre à la valeur passée à browser_highlight.target(chaîne, facultatif) : Référence exacte de l'élément cible depuis l'instantané de la page, ou un sélecteur d'élément unique
- Lecture seule : true
- browser_highlight
- Titre : Surligner un élément
- Description : Afficher une superposition de surbrillance persistante autour de l'élément sur la page.
- Paramètres :
element(chaîne, facultatif) : Description lisible de l'élément utilisée pour obtenir la permission d'interagir avec l'élémenttarget(chaîne) : Référence exacte de l'élément cible depuis l'instantané de la page, ou un sélecteur d'élément uniquestyle(chaîne, facultatif) : CSS en ligne supplémentaire appliqué à la superposition de surbrillance, par exemple "outline: 2px dashed red".
- Lecture seule : true
- browser_resume
- Titre : Reprendre l'exécution du script en pause
- Description : Reprendre l'exécution du script après sa mise en pause. Lorsqu'il est appelé avec step défini sur true, l'exécution se mettra en pause à nouveau avant l'action suivante.
- Paramètres :
step(booléen, facultatif) : Lorsqu'il est true, l'exécution se mettra en pause à nouveau avant l'action suivante, permettant un débogage pas à pas.location(chaîne, facultatif) : Mettre en pause l'exécution à un : spécifique, par exemple "example.spec.ts:42".
- Lecture seule : false
- browser_start_recording
- Titre : Démarrer l'enregistrement des actions utilisateur
- Description : Démarrer l'enregistrement des actions que l'utilisateur effectue dans le navigateur en tant que code Playwright. Utilisez-le lorsque l'utilisateur souhaite démontrer un flux manuellement. Appelez browser_stop_recording lorsque l'utilisateur indique avoir terminé pour récupérer les actions enregistrées.
- Paramètres : Aucun
- Lecture seule : true
- browser_start_tracing
- Titre : Démarrer le traçage
- Description : Démarrer l'enregistrement de trace
- Paramètres : Aucun
- Lecture seule : true
- browser_start_video
- Titre : Démarrer la vidéo
- Description : Démarrer l'enregistrement vidéo
- Paramètres :
filename(chaîne, facultatif) : Nom du fichier pour enregistrer la vidéo.size(objet, facultatif) : Taille de la vidéo
- Lecture seule : true
- browser_stop_recording
- Titre : Arrêter l'enregistrement des actions utilisateur
- Description : Arrêter l'enregistrement démarré avec browser_start_recording et renvoyer les actions enregistrées en tant que code Playwright.
- Paramètres : Aucun
- Lecture seule : true
- browser_stop_tracing
- Titre : Arrêter le traçage
- Description : Arrêter l'enregistrement de trace
- Paramètres : Aucun
- Lecture seule : true
- browser_stop_video
- Titre : Arrêter la vidéo
- Description : Arrêter l'enregistrement vidéo
- Paramètres : Aucun
- Lecture seule : true
- browser_video_chapter
- Titre : Chapitre vidéo
- Description : Ajouter un marqueur de chapitre à l'enregistrement vidéo. Affiche une carte de chapitre en plein écran avec un arrière-plan flouté.
- Paramètres :
title(chaîne) : Titre du chapitredescription(chaîne, facultatif) : Description du chapitreduration(nombre, facultatif) : Durée en millisecondes pour afficher la carte du chapitre
- Lecture seule : true
- browser_video_hide_actions
- Titre : Masquer les superpositions d'actions
- Description : Arrêter l'annotation des actions effectuées sur la page.
- Paramètres : Aucun
- Lecture seule : true
- browser_video_show_actions
- Titre : Afficher les superpositions d'actions
- Description : Annote les actions suivantes effectuées sur la page avec une légende qui nomme l'action et met en évidence l'élément cible. Utile lors de l'enregistrement vidéo ou de la capture d'écran.
- Paramètres :
duration(nombre, facultatif) : Durée d'affichage de chaque annotation d'action à l'écran, en millisecondes. Par défaut : 500.position(chaîne, facultatif) : Emplacement du titre de l'action par rapport à la page. Par défaut : en haut à droite.cursor(chaîne, facultatif) : Décoration du curseur pour les actions de pointeur. "pointer" (par défaut) anime un pointeur de souris du point d'action précédent au suivant ; "none" désactive la décoration du curseur.
- Lecture seule : true
Basé sur les coordonnées (activé via --caps=vision)
- browser_mouse_click_xy
- Titre : Clic
- Description : Clique sur le bouton de la souris à une position donnée
- Paramètres :
x(nombre) : Coordonnée Xy(nombre) : Coordonnée Ybutton(chaîne, facultatif) : Bouton à cliquer, par défaut : gaucheclickCount(nombre, facultatif) : Nombre de clics, par défaut : 1delay(nombre, facultatif) : Temps d'attente entre l'enfoncement et le relâchement de la souris en millisecondes, par défaut : 0
- Lecture seule : false
- browser_mouse_down
- Titre : Enfoncer le bouton de la souris
- Description : Enfonce le bouton de la souris
- Paramètres :
button(chaîne, facultatif) : Bouton à enfoncer, par défaut : gauche
- Lecture seule : false
- browser_mouse_drag_xy
- Titre : Glisser la souris
- Description : Glisse le bouton gauche de la souris vers une position donnée
- Paramètres :
startX(nombre) : Coordonnée X de départstartY(nombre) : Coordonnée Y de départendX(nombre) : Coordonnée X d'arrivéeendY(nombre) : Coordonnée Y d'arrivée
- Lecture seule : false
- browser_mouse_move_xy
- Titre : Déplacer la souris
- Description : Déplace la souris vers une position donnée
- Paramètres :
x(nombre) : Coordonnée Xy(nombre) : Coordonnée Y
- Lecture seule : false
- browser_mouse_up
- Titre : Relâcher le bouton de la souris
- Description : Relâche le bouton de la souris
- Paramètres :
button(chaîne, facultatif) : Bouton à relâcher, par défaut : gauche
- Lecture seule : false
- browser_mouse_wheel
- Titre : Faire défiler la molette de la souris
- Description : Fait défiler la molette de la souris
- Paramètres :
deltaX(nombre) : Delta XdeltaY(nombre) : Delta Y
- Lecture seule : false
Génération de PDF (activée via --caps=pdf)
- browser_pdf_save
- Titre : Enregistrer au format PDF
- Description : Enregistre la page au format PDF
- Paramètres :
filename(chaîne, facultatif) : Nom du fichier pour enregistrer le PDF. Par défaut :page-{timestamp}.pdfsi non spécifié. Préférez les noms de fichiers relatifs pour rester dans le répertoire de sortie.
- Lecture seule : true
Assertions de test (activées via --caps=testing)
- browser_generate_locator
- Titre : Créer un localisateur pour l'élément
- Description : Génère un localisateur pour l'élément donné à utiliser dans les tests
- Paramètres :
element(chaîne, facultatif) : Description lisible par un humain de l'élément utilisée pour obtenir la permission d'interagir avec l'élémenttarget(chaîne) : Référence exacte de l'élément cible à partir de l'instantané de la page, ou un sélecteur d'élément unique
- Lecture seule : true
- browser_verify_element_visible
- Titre : Vérifier que l'élément est visible
- Description : Vérifie que l'élément est visible sur la page
- Paramètres :
role(chaîne) : RÔLE de l'élément. Peut être trouvé dans l'instantané comme ceci :- {ROLE} "Accessible Name":accessibleName(chaîne) : NOM_ACCESSIBLE de l'élément. Peut être trouvé dans l'instantané comme ceci :- role "{ACCESSIBLE_NAME}"
- Lecture seule : false
- browser_verify_list_visible
- Titre : Vérifier que la liste est visible
- Description : Vérifie que la liste est visible sur la page
- Paramètres :
element(chaîne) : Description lisible par un humain de la listetarget(chaîne) : Référence exacte de l'élément cible qui pointe vers la listeitems(tableau) : Éléments à vérifier
- Lecture seule : false
- browser_verify_text_visible
- Titre : Vérifier que le texte est visible
- Description : Vérifie que le texte est visible sur la page. Préférez browser_verify_element_visible si possible.
- Paramètres :
text(chaîne) : TEXTE à vérifier. Peut être trouvé dans l'instantané comme ceci :- role "Accessible Name": {TEXT}ou comme ceci :- text: {TEXT}
- Lecture seule : false
- browser_verify_value
- Titre : Vérifier la valeur
- Description : Vérifie la valeur de l'élément
- Paramètres :
type(chaîne) : Type de l'élémentelement(chaîne) : Description lisible par un humain de l'élémenttarget(chaîne) : Référence exacte de l'élément cible à partir de l'instantané de la pagevalue(chaîne) : Valeur à vérifier. Pour une case à cocher, utilisez "true" ou "false".
- Lecture seule : false