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 ?
- Automatisation du navigateur via instantanés d’accessibilité — Demandez à votre IA de naviguer sur les pages et d’interagir avec les éléments à l’aide de données d’accessibilité structurées, sans avoir besoin de captures d’écran.
- Sessions de navigation persistantes — Conservez les états de connexion entre les conversations grâce à un profil persistant, ou utilisez des sessions isolées pour des tests propres.
- Prise en charge multi-navigateurs — Automatisez des tâches dans Chromium, Firefox ou WebKit, avec des options pour le mode sans tête et l’émulation d’appareils.
- Configuration personnalisée du navigateur — Configurez la taille de la fenêtre d’affichage, l’agent utilisateur, les paramètres de proxy et les autorisations pour correspondre à vos besoins de test.
- Intégration d’extensions de navigateur — Connectez-vous à votre navigateur Chrome ou Edge existant pour tirer parti des onglets actuels et des sessions connectées.
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 termes de 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 Copilot.
Cursor
Cliquez sur le bouton pour installer :
Ou installez manuellement :
Allez dans Cursor Settings -> MCP -> Add new MCP Server. Nommez-le à 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-le à 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 hosts séparés par des virgules à partir desquels ce serveur est autorisé à servir. Par défaut, le host auquel le serveur est lié. Passez '*' pour désactiver la vérification du host. env PLAYWRIGHT_MCP_ALLOWED_HOSTS |
| --allowed-origins | liste d'origines de CONFIANCE séparées par des points-virgules que le navigateur est autorisé à demander. Par défaut, tout est autorisé. 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 racine 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 ne peut pas 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 à renvoyer : "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 |
| --file-paths | comment les chemins de fichiers sont rendus dans les résultats des outils, "relative" par rapport à la racine de l'espace de travail ou "absolute". Par défaut "relative". env PLAYWRIGHT_MCP_FILE_PATHS |
| --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 tête par défaut env PLAYWRIGHT_MCP_HEADLESS |
| --host | host auquel lier le serveur. Par défaut localhost. Utilisez 0.0.0.0 pour lier à toutes les interfaces. env PLAYWRIGHT_MCP_HOST |
| --idle-timeout | ferme le navigateur après ce nombre de millisecondes sans appel d'outil terminé, le prochain appel d'outil le relance. Par défaut une heure pour les navigateurs sans tête, jamais pour ceux avec tête, 0 désactive. env PLAYWRIGHT_MCP_IDLE_TIMEOUT |
| --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 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 tous les scripts 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 s'il faut envoyer les réponses d'images au client. Peut être "allow", "omit" ou "only". Avec "only", une réponse qui contient une image se compose uniquement des parties image, sans la partie texte. 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 |
| --no-webmcp | ne collecte pas et n'expose pas les outils qu'une page enregistre via l'API WebMCP. env PLAYWRIGHT_MCP_WEBMCP=false |
| --output-dir | chemin vers le répertoire pour les fichiers de sortie nommés automatiquement, par exemple une capture d'écran prise sans nom de fichier explicite. Les fichiers avec un nom explicite sont résolus par rapport à la racine de l'espace de travail et ne sont pas affectés par cette option. env PLAYWRIGHT_MCP_OUTPUT_DIR |
| --output-max-size | seuil pour évincer les anciens fichiers de sortie, en octets. env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE |
| --port | port d'écoute pour le transport SSE. env PLAYWRIGHT_MCP_PORT |
| --profile-dir-name | nom du répertoire de profil dans le répertoire de données utilisateur auquel se connecter avec --extension, par exemple "Profile 1". Par défaut, le dernier profil utilisé avec l'extension installée. env PLAYWRIGHT_MCP_PROFILE_DIR_NAME |
| --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 s'il faut enregistrer la session Playwright MCP 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 les 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 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 tous les scripts 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;
/**
* Whether to collect and expose the tools that a page registers through the
* experimental WebMCP API. Enabled by default.
*/
webmcp?: 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 for automatically named output files, for example a screenshot taken without an
* explicit file name. Files with an explicit name are resolved against the workspace root instead
* and are not affected by this option.
*/
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;
/**
* Close the browser after this many milliseconds without a tool call, and relaunch it on the next one.
* Defaults to one hour for headless browsers Playwright launched, and to no timeout for headed or attached ones. Pass 0 to disable.
* The CLI shuts the whole session down instead of relaunching.
*/
idle?: number;
};
/**
* Whether to send image responses to the client. Can be "allow", "omit", or "only". Defaults to "allow".
* With "only", a response that carries an image consists of the image parts alone, without the text part.
*/
imageResponses?: 'allow' | 'omit' | 'only';
/**
* How file paths are rendered in tool results. Can be "relative" to the workspace root or "absolute". Defaults to "relative".
*/
filePaths?: 'relative' | 'absolute';
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 tête sur un système sans affichage ou depuis des processus de travail des IDE,
exécutez le serveur MCP depuis l'environnement avec le DISPLAY et passez le drapeau --port pour activer le transport HTTP.
npx @playwright/mcp@latest --port 8931
Ensuite, 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é. Consultez 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 actuellement en charge que chromium en mode headless.
{
"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 lancer, 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, optionnel) : 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 uniquedoubleClick(booléen, optionnel) : Indique si un double-clic doit être effectué au lieu d'un simple clicbutton(chaîne, optionnel) : Bouton à cliquer, par défaut le bouton gauchemodifiers(tableau, optionnel) : 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, optionnel) : 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, optionnel) : Nom du fichier dans lequel enregistrer les messages de la console. Les noms de fichiers relatifs sont résolus par rapport à la racine de l'espace de travail. 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, optionnel) : Description lisible de l'élément source utilisée pour obtenir la permission d'interagir avec l'élémentstartTarget(chaîne) : Référence exacte de l'élément cible depuis l'instantané de la page, ou un sélecteur d'élément uniqueendElement(chaîne, optionnel) : Description lisible de l'élément cible utilisée pour obtenir la permission d'interagir avec l'élémentendTarget(chaîne) : 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 : 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 typées 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, optionnel) : 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 uniquepaths(tableau, optionnel) : Chemins absolus des fichiers à déposer sur l'élément.data(objet, optionnel) : 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_emulate_media
- Titre : Émuler les fonctionnalités média
- Description : Émuler les fonctionnalités média CSS de la page, par exemple basculer entre le schéma de couleurs clair et sombre. Les paramètres omis restent inchangés ; null efface une surcharge.
- Paramètres :
colorScheme(optionnel) : Émule la fonctionnalité média prefers-color-schemereducedMotion(optionnel) : Émule la fonctionnalité média prefers-reduced-motionforcedColors(optionnel) : Émule la fonctionnalité média forced-colorscontrast(optionnel) : Émule la fonctionnalité média prefers-contrastmedia(optionnel) : Modifie le type de média CSS de la page
- 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, optionnel) : Description lisible de l'élément utilisée pour obtenir la permission d'interagir avec l'élémenttarget(chaîne, optionnel) : Référence exacte de l'élément cible depuis l'instantané de la page, ou un sélecteur d'élément uniquefunction(chaîne) : () => { /* code / } ou (element) => { / code */ } lorsqu'un élément est fournifilename(chaîne, optionnel) : Nom du fichier dans lequel enregistrer le résultat. Les noms de fichiers relatifs sont résolus par rapport à la racine de l'espace de travail. 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, optionnel) : 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 le 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 tout l'instantané lorsque vous avez seulement besoin de localiser un élément et sa référence.
- Paramètres :
text(chaîne, optionnel) : 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, optionnel) : Expression régulière à rechercher dans l'instantané de la page. La correspondance est sensible à la casse par défaut ; encadrez le motif avec des barres obliques pour ajouter des indicateurs, par exemple "/error/i" pour insensible à la casse. Fournissez soit du texte, soit une expression régulière, pas les deux.filename(chaîne, optionnel) : Enregistrer les résultats dans un fichier au lieu de les renvoyer dans la réponse. Les noms de fichiers relatifs sont résolus par rapport à la racine de l'espace de travail.
- 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 si la boîte de dialogue doit être acceptée.promptText(chaîne, optionnel) : 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 sur la page
- Paramètres :
element(chaîne, optionnel) : 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 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 basé sur 1 de la requête, tel qu'affiché par browser_network_requests.part(chaîne, optionnel) : Renvoyer uniquement cette partie de la requête. Omettre pour renvoyer les détails complets.filename(chaîne, optionnel) : Nom du fichier dans lequel enregistrer le résultat. Les noms de fichiers relatifs sont résolus par rapport à la racine de l'espace de travail. 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, optionnel) : Renvoyer uniquement les requêtes dont l'URL correspond à cette expression régulière (par exemple "/api/.*user").filename(chaîne, optionnel) : Nom du fichier dans lequel enregistrer les requêtes réseau. Les noms de fichiers relatifs sont résolus par rapport à la racine de l'espace de travail. 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, commeArrowLeftoua
- 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, optionnel) : 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, optionnel) : Charger le code depuis le fichier spécifié. Les noms de fichiers relatifs sont résolus par rapport à la racine de l'espace de travail. 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, optionnel) : 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 uniquevalues(tableau) : Tableau de valeurs à sélectionner dans la liste déroulante. Cela peut être une seule valeur ou plusieurs valeurs.
- Lecture seule : false
- browser_snapshot
- Titre : Capture instantanée de la page
- Description : Capture une capture instantanée 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 depuis la capture instantanée de la page, ou un sélecteur d'élément uniquefilename(chaîne, facultatif) : Enregistrer la capture instantanée dans un fichier au lieu de la renvoyer dans la réponse. Les noms de fichiers relatifs sont résolus par rapport à la racine de l'espace de travail.depth(nombre, facultatif) : Limiter la profondeur de l'arborescence de la capture instantanéeboxes(booléen, facultatif) : Inclure la boîte englobante de chaque élément sous la forme [box=x,y,largeur,hauteur] dans la capture instantanée. 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 la permission d'interagir avec l'élémenttarget(chaîne, facultatif) : Référence exacte de l'élément cible depuis la capture instantanée de la page, ou un sélecteur d'élément uniquetype(chaîne, facultatif) : Format d'image pour la capture d'écran. Si non défini, déduit de l'extension du nom de fichier, sinon png.filename(chaîne, facultatif) : Nom de fichier pour enregistrer la capture d'écran. Les noms de fichiers relatifs sont résolus par rapport à la racine de l'espace de travail. Si non spécifié, la capture d'écran est enregistrée dans le répertoire de sortie sous le nompage-{timestamp}.{png|jpeg|webp}.fullPage(booléen, facultatif) : Lorsque true, prend une capture d'écran de la page défilante complète, 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). La valeur par défaut est css.
- Lecture seule : true
- browser_type
- Titre : Saisir du texte
- Description : Saisir du texte dans un élément éditable
- 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 la capture instantanée de la page, ou un sélecteur d'élément uniquetext(chaîne) : Texte à saisir dans l'élémentsubmit(booléen, facultatif) : Indique si le texte saisi doit être soumis (appuyer sur Entrée après)slowly(booléen, facultatif) : Indique si le texte doit être saisi un caractère à la fois. Utile pour déclencher les gestionnaires de touches dans la page. Par défaut, tout le texte est rempli 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é se soit écoulé
- Paramètres :
time(nombre, facultatif) : Le temps d'attente en secondes, au maximum 30text(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. Si omis pour fermer, l'onglet actuel est fermé.url(chaîne, facultatif) : URL vers laquelle naviguer dans le nouvel onglet, utilisé pour nouveau.
- Lecture seule : false
Installation du navigateur
Configuration (opt-in 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 (opt-in via --caps=network)
- browser_network_state_set
- Titre : Définir l'état du réseau
- Description : Définit l'état du réseau du navigateur sur en ligne ou hors ligne. Lorsqu'il est 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 modèle d'URL
- Paramètres :
pattern(chaîne) : Modèle d'URL à faire correspondre (par exemple, "/api/users", "/*.{png,jpg}")status(nombre, facultatif) : Code de statut HTTP à renvoyer (par 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 modèle (ou toutes les routes si aucun modèle n'est spécifié)
- Paramètres :
pattern(chaîne, facultatif) : Modèle d'URL à supprimer (omettre pour supprimer toutes les routes)
- Lecture seule : false
Stockage (opt-in 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 tant qu'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. Les noms de fichiers relatifs sont résolus par rapport à la racine de l'espace de travail.
- 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 de fichier pour enregistrer l'état du stockage. Les noms de fichiers relatifs sont résolus par rapport à la racine de l'espace de travail. Si non spécifié, l'état du stockage est enregistré dans le répertoire de sortie sous le nomstorage-state-{timestamp}.json.
- Lecture seule : true
Outils de développement (opt-in via --caps=devtools)
- browser_annotate
- Titre : Annoter la page actuelle
- Description : Ouvrir le tableau de bord Playwright en mode annotation pour la page actuelle et attendre que l'utilisateur dessine des annotations. Renvoie la capture d'écran annotée, la capture instantanée ARIA et la liste des annotations.
- Paramètres : Aucun
- Lecture seule : true
- browser_hide_highlight
- Titre : Masquer la surbrillance de l'é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 la capture instantanée de la page, ou un sélecteur d'élément unique
- Lecture seule : true
- browser_highlight
- Titre : Mettre en surbrillance l'é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 l'autorisation 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 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 à nouveau en pause avant l'action suivante.
- Paramètres :
step(booléen, facultatif) : Lorsqu'il est défini sur true, l'exécution se mettra à nouveau en pause avant l'action suivante, permettant un débogage pas à pas.location(chaîne, facultatif) : Mettre l'exécution en pause à 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 sous forme de 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 la 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 dans lequel enregistrer la vidéo. Les noms de fichiers relatifs sont résolus par rapport à la racine de l'espace de travail. S'il n'est pas spécifié, la vidéo est enregistrée dans le répertoire de sortie sous le nomvideo-{timestamp}.webm.size(objet, facultatif) : Taille de la vidéofps(nombre, facultatif) : Fréquence d'images de la vidéo en images par seconde, par défaut 25cursor(booléen, facultatif) : Afficher un curseur de souris animé qui se déplace vers chaque point d'action. Espace les actions de 800 ms afin que le curseur ait le temps de se déplacer.
- 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 sous forme de code Playwright.
- Paramètres : Aucun
- Lecture seule : true
- browser_stop_tracing
- Titre : Arrêter le traçage
- Description : Arrêter l'enregistrement de la 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 pendant laquelle afficher la carte de chapitre
- Lecture seule : true
- browser_video_hide_actions
- Titre : Masquer les superpositions d'actions
- Description : Cesser d'annoter les actions effectuées sur la page.
- Paramètres : Aucun
- Lecture seule : true
- browser_video_show_actions
- Titre : Afficher les superpositions d'actions
- Description : Annoter les actions ultérieures effectuées sur la page avec une étiquette qui nomme l'action et, lorsqu'elle est stylisée, marque le point d'action et met en surbrillance l'élément cible. Utile lors de l'enregistrement vidéo ou de la diffusion 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 pointage. « 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.style(objet, facultatif) : Styles des décorations d'actions.
- Lecture seule : true
Basé sur les coordonnées (opt-in via --caps=vision)
- browser_mouse_click_xy
- Titre : Cliquer
- Description : Cliquer avec 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 : Enfoncer 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 : Faire glisser la souris
- Description : Faire glisser 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 de finendY(nombre) : Coordonnée Y de fin
- Lecture seule : false
- browser_mouse_move_xy
- Titre : Déplacer la souris
- Description : Déplacer 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âcher 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 : Faire défiler la molette de la souris
- Paramètres :
deltaX(nombre) : Delta XdeltaY(nombre) : Delta Y
- Lecture seule : false
Génération de PDF (opt-in via --caps=pdf)
- browser_pdf_save
- Titre : Enregistrer au format PDF
- Description : Enregistrer la page au format PDF
- Paramètres :
filename(chaîne, facultatif) : Nom du fichier dans lequel enregistrer le PDF. Les noms de fichiers relatifs sont résolus par rapport à la racine de l'espace de travail. S'il n'est pas spécifié, le PDF est enregistré dans le répertoire de sortie sous le nompage-{timestamp}.pdf.
- Lecture seule : true
Assertions de test (opt-in via --caps=testing)
- browser_generate_locator
- Titre : Créer un localisateur pour l'élément
- Description : Générer un localisateur pour l'élément donné à utiliser dans les tests
- 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 à partir de l'instantané de la page, ou sélecteur d'élément unique
- Lecture seule : true
- browser_verify_element_visible
- Titre : Vérifier que l'élément est visible
- Description : Vérifier 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érifier que la liste est visible sur la page
- Paramètres :
element(chaîne) : Description lisible 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érifier 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érifier la valeur de l'élément
- Paramètres :
type(chaîne) : Type de l'élémentelement(chaîne) : Description lisible 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