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 ?
- Naviguer et interagir avec des pages web — demandez à l’assistant d’ouvrir une URL, de cliquer sur des éléments, de remplir des formulaires ou d’extraire des instantanés d’accessibilité structurés grâce à l’automatisation du navigateur Playwright.
- Configurer le comportement du navigateur — définissez le type de navigateur, la taille de la fenêtre, l’émulation d’appareil ou l’agent utilisateur via les arguments
--browser,--device,--viewport-sizeet--user-agent. - Gérer les sessions et l’authentification — utilisez des profils persistants (
--user-data-dir), des sessions isolées (--isolated) ou des fichiers d’état de stockage (--storage-state) pour contrôler l’état de connexion entre les exécutions. - Se connecter à un navigateur existant — attachez-vous à une instance Chrome ou Edge en cours d’exécution avec l’indicateur
--extensionpour réutiliser des sessions connectées sans vous réauthentifier. - Contrôler la sortie et les instantanés — capturez les messages de la console, les journaux réseau et les instantanés d’accessibilité dans des fichiers ou la sortie standard à l’aide de
--output-dir,--output-modeet--snapshot-mode.
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, évitant ainsi le besoin de captures d'écran ou de modèles visuels.
Playwright MCP vs Playwright CLI
Ce package fournit une interface MCP pour Playwright. Si vous utilisez un agent de codage, vous pourriez bénéficier de l'utilisation de la CLI+SKILLS à la place.
-
CLI : Les agents de codage modernes privilégient de plus en plus les flux de travail basés sur la CLI exposés sous forme de SKILLS plutôt que MCP, car les invocations CLI sont plus économes 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 dédié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 flux de travail autonomes de longue durée où le maintien d'un contexte de 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 d'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 les 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.
La 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 VS Code Amp 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 la 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 de 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 la 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 Codex MCP.
Copilot
Utilisez la 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 à 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 la CLI Factory pour ajouter le serveur Playwright MCP :
droid mcp add playwright "npx @playwright/mcp@latest"
Alternativement, tapez /mcp dans le droid Factory pour ouvrir une interface utilisateur interactive pour gérer les serveurs MCP.
Pour plus d'informations, consultez la documentation Factory MCP.
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 la 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 Grok MCP.
Junie
Pour ajouter le serveur Playwright MCP dans la CLI Junie :
- 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 Junie MCP.
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 → Connecter plus d'outils → + Ajouter un nouveau 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 la 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 Windsurf MCP. 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 d'hôtes séparés par des virgules que 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 que le navigateur est autorisé à demander. Par défaut, tout est autorisé. Important : ne constitue pas une limite 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 illimité 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 de travail courant si aucune racine n'est configurée) uniquement, 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 doit pas demander. La liste de blocage est évaluée avant la liste d'autorisation. Si 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 limite 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 30000ms env PLAYWRIGHT_MCP_CDP_TIMEOUT |
| --codegen | spécifie le langage à utiliser pour la génération de code, valeurs possibles : "typescript", "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 tokens. 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 "Playwright Extension". 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 headless, mode headed 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 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 le sauvegarde pas sur le disque. env PLAYWRIGHT_MCP_ISOLATED |
| --image-responses | indique s'il faut envoyer les réponses d'image au client. Peut être "allow" ou "omit", par défaut "allow". env PLAYWRIGHT_MCP_IMAGE_RESPONSES |
| --no-sandbox | désactive le sandbox pour tous les types de processus qui sont normalement sandboxés. env PLAYWRIGHT_MCP_NO_SANDBOX |
| --output-dir | chemin vers le répertoire pour les 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 |
| --output-mode | indique s'il faut sauvegarder les snapshots, les messages de console, les journaux réseau dans un fichier ou sur la sortie standard. Peut être "file" ou "stdout". Par défaut "stdout". env PLAYWRIGHT_MCP_OUTPUT_MODE |
| --port | port à écouter 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 sandbox pour tous les types de processus qui ne sont normalement pas sandboxés. env PLAYWRIGHT_MCP_SANDBOX |
| --save-session | Indique s'il faut sauvegarder 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-mode | lors de la prise de snapshots 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 d'action en millisecondes, par défaut 5000ms env PLAYWRIGHT_MCP_TIMEOUT_ACTION |
| --timeout-navigation | spécifie le délai d'attente de navigation en millisecondes, par défaut 60000ms env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION |
| --user-agent | spécifie la chaîne 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 classique (par défaut), dans des contextes isolés pour les sessions de test, ou vous connecter à votre navigateur existant en utilisant 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, de sorte que 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 simultanés 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 est démarrée 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 Playwright MCP Chrome vous permet de vous connecter aux 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 à partir 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 tout script de la page. Ceci 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;
};
/**
* 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';
};
/**
* 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' | 'none';
}
Serveur MCP autonome
Lors de l'exécution d'un navigateur headed sur un système sans affichage ou à partir de processus worker 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
Et 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 limite de sécurité. Voir MCP Security Best Practices pour des conseils sur la sécurisation de votre déploiement.
Docker
NOTE : L'implémentation Docker ne prend en charge que chromium headless 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 de longue durée au lieu 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 joint 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 : Clic
- Description : Effectuer un clic sur une page web
- Paramètres :
element(chaîne, optionnel) : 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 depuis l'instantané de la page, ou un sélecteur d'élément uniquedoubleClick(booléen, optionnel) : S'il faut effectuer un double-clic au lieu d'un simple clicbutton(chaîne, optionnel) : Bouton sur lequel cliquer, par défaut 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 pour sauvegarder 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, optionnel) : 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 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 l'autorisation 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 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, optionnel) : 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 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 d'un dictionnaire de type MIME vers une 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, optionnel) : Description lisible de l'élément utilisée pour obtenir l'autorisation 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 */ } lorsque l'élément est fournifilename(chaîne, optionnel) : Nom du fichier pour sauvegarder 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, optionnel) : Les chemins absolus des fichiers à téléverser. Peut être un seul fichier ou plusieurs fichiers. S'il est omis, le sélecteur de fichier 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 l'instantané complet 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 le texte, soit l'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 de barres obliques pour ajouter des drapeaux, par exemple "/error/i" pour insensible à la casse. Fournissez soit le texte, soit l'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) : S'il faut accepter la boîte de dialogue.promptText(chaîne, optionnel) : Le texte de l'invite dans le cas d'une boîte de dialogue de type prompt.
- Lecture seule : false
- browser_hover
- Titre : Survoler la souris
- Description : Survoler un élément sur la page
- Paramètres :
element(chaîne, optionnel) : 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 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 d'une requête réseau
- Description : Renvoie les détails complets (en-têtes et corps) d'une seule requête réseau, ou d'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 pour sauvegarder 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) : 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 pour sauvegarder 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 : Appuyer sur une touche
- Description : Appuyer sur une touche du clavier
- Paramètres :
key(chaîne) : Nom de la touche à presser ou un 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 du serveur Playwright et équivaut à une 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é. Si les deux paramètres code et filename sont fournis, 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 l'autorisation 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 des valeurs à sélectionner dans la liste déroulante. Cela peut être une valeur unique ou plusieurs valeurs.
- Lecture seule : false
- browser_snapshot
- Titre : Instantané de la page
- Description : Capturer l'instantané d'accessibilité de la page actuelle, ceci est meilleur qu'une capture d'écran
- Paramètres :
target(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 uniquefilename(chaîne, optionnel) : Sauvegarder l'instantané dans un fichier markdown au lieu de le renvoyer dans la réponse.depth(nombre, optionnel) : Limiter la profondeur de l'arborescence de l'instantanéboxes(booléen, optionnel) : 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, optionnel) : Description lisible de l'élément utilisée pour obtenir l'autorisation 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 uniquetype(chaîne) : Format d'image pour la capture d'écran. Par défaut png.filename(chaîne, optionnel) : Nom du fichier pour sauvegarder la capture d'écran. Par défautpage-{timestamp}.{png|jpeg}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, optionnel) : Lorsque vrai, 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ément.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 éditable
- Paramètres :
element(chaîne, optionnel) : 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 depuis l'instantané de la page, ou un sélecteur d'élément uniquetext(chaîne) : Texte à saisir dans l'élémentsubmit(booléen, optionnel) : S'il faut soumettre le texte saisi (appuyer sur Entrée après)slowly(booléen, optionnel) : 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 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 délai spécifié se soit écoulé
- Paramètres :
time(nombre, optionnel) : Le temps d'attente en secondestext(chaîne, optionnel) : Le texte à attendretextGone(chaîne, optionnel) : Le texte dont il faut attendre la disparition
- 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, optionnel) : Index de l'onglet, utilisé pour fermer/sélectionner. Si omis pour la fermeture, l'onglet actuel est fermé.url(chaîne, optionnel) : URL vers laquelle naviguer dans le nouvel onglet, utilisé pour nouveau.
- Lecture seule : false
Installation du navigateur
Configuration (activation 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 (activation 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 des requêtes réseau
- Description : Configurer une route pour simuler des 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, optionnel) : Code de statut HTTP à retourner (par défaut : 200)body(chaîne, optionnel) : Corps de la réponse (texte ou chaîne JSON)contentType(chaîne, optionnel) : En-tête Content-Type (par exemple, "application/json", "text/html")headers(tableau, optionnel) : En-têtes à ajouter au format "Nom : Valeur"removeHeaders(chaîne, optionnel) : 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 des 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, optionnel) : Modèle d'URL à supprimer (omettre pour supprimer toutes les routes)
- Lecture seule : false
Stockage (activation 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, optionnel) : Filtrer les cookies par domainepath(chaîne, optionnel) : Filtrer les cookies par chemin
- Lecture seule : true
- browser_cookie_set
- Titre : Définir un cookie
- Description : Définir un cookie avec des indicateurs optionnels (domaine, chemin, expiration, httpOnly, secure, sameSite)
- Paramètres :
name(chaîne) : Nom du cookievalue(chaîne) : Valeur du cookiedomain(chaîne, optionnel) : Domaine du cookiepath(chaîne, optionnel) : Chemin du cookieexpires(nombre, optionnel) : Expiration du cookie en tant que timestamp UnixhttpOnly(booléen, optionnel) : Si le cookie est HTTP onlysecure(booléen, optionnel) : Si le cookie est sécurisésameSite(chaîne, optionnel) : Attribut SameSite du cookie
- Lecture seule : false
- browser_localstorage_clear
- Titre : Effacer le localStorage
- Description : Effacer tout le localStorage
- Paramètres : Aucun
- Lecture seule : false
- browser_localstorage_delete
- Titre : Supprimer un élément du localStorage
- Description : Supprimer un élément du localStorage
- Paramètres :
key(chaîne) : Clé à supprimer
- Lecture seule : false
- browser_localstorage_get
- Titre : Obtenir un élément du localStorage
- Description : Obtenir un élément du localStorage par sa clé
- Paramètres :
key(chaîne) : Clé à obtenir
- Lecture seule : true
- browser_localstorage_list
- Titre : Lister le localStorage
- Description : Lister toutes les paires clé-valeur du localStorage
- Paramètres : Aucun
- Lecture seule : true
- browser_localstorage_set
- Titre : Définir un élément du localStorage
- Description : Définir un élément du localStorage
- Paramètres :
key(chaîne) : Clé à définirvalue(chaîne) : Valeur à définir
- Lecture seule : false
- browser_sessionstorage_clear
- Titre : Effacer le sessionStorage
- Description : Effacer tout le sessionStorage
- Paramètres : Aucun
- Lecture seule : false
- browser_sessionstorage_delete
- Titre : Supprimer un élément du sessionStorage
- Description : Supprimer un élément du sessionStorage
- Paramètres :
key(chaîne) : Clé à supprimer
- Lecture seule : false
- browser_sessionstorage_get
- Titre : Obtenir un élément du sessionStorage
- Description : Obtenir un élément du sessionStorage par sa clé
- Paramètres :
key(chaîne) : Clé à obtenir
- Lecture seule : true
- browser_sessionstorage_list
- Titre : Lister le sessionStorage
- Description : Lister toutes les paires clé-valeur du sessionStorage
- Paramètres : Aucun
- Lecture seule : true
- browser_sessionstorage_set
- Titre : Définir un élément du sessionStorage
- Description : Définir un élément du 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 de stockage à partir duquel restaurer
- Lecture seule : false
- browser_storage_state
- Titre : Sauvegarder l'état du stockage
- Description : Sauvegarder l'état du stockage (cookies, stockage local) dans un fichier pour une réutilisation ultérieure
- Paramètres :
filename(chaîne, optionnel) : Nom du fichier pour sauvegarder l'état du stockage. Par défautstorage-state-{timestamp}.jsonsi non spécifié.
- Lecture seule : true
DevTools (activation 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. Retourne 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'élément
- Description : Supprimer une superposition de surbrillance précédemment ajoutée pour l'élément.
- Paramètres :
element(chaîne, optionnel) : 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, optionnel) : 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_highlight
- Titre : Surbrillance d'élément
- Description : Afficher une superposition de surbrillance persistante autour de l'é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 à partir de l'instantané de la page, ou un sélecteur d'élément uniquestyle(chaîne, optionnel) : 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, optionnel) : Lorsque true, l'exécution se mettra à nouveau en pause avant l'action suivante, permettant un débogage pas à pas.location(chaîne, optionnel) : Mettre en pause l'exécution à un : spécifique, par exemple "example.spec.ts:42".
- Lecture seule : false
- 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, optionnel) : Nom du fichier pour sauvegarder la vidéo.size(objet, optionnel) : Taille de la vidéo
- 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, optionnel) : Description du chapitreduration(nombre, optionnel) : Durée en millisecondes pour afficher la carte de chapitre
- Lecture seule : true
- browser_video_hide_actions
- Titre : Masquer les superpositions d'actions
- Description : Arrêter 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 suivantes effectuées sur la page avec une légende qui nomme l'action et met en surbrillance l'élément cible. Utile pendant l'enregistrement vidéo ou la diffusion d'écran.
- Paramètres :
duration(nombre, optionnel) : Durée d'affichage de chaque annotation d'action à l'écran, en millisecondes. Par défaut 500.position(chaîne, optionnel) : Où placer le titre de l'action par rapport à la page. Par défaut en haut à droite.cursor(chaîne, optionnel) : 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 (opt-in via --caps=vision)
- browser_mouse_click_xy
- Titre : Clic
- 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, optionnel) : Bouton sur lequel cliquer, par défaut gaucheclickCount(nombre, optionnel) : Nombre de clics, par défaut 1delay(nombre, optionnel) : Temps d'attente entre l'appui et le relâchement du bouton de la souris en millisecondes, par défaut 0
- Lecture seule : false
- browser_mouse_down
- Titre : Appuyer sur le bouton de la souris
- Description : Appuyer sur le bouton de la souris
- Paramètres :
button(chaîne, optionnel) : Bouton sur lequel appuyer, 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 jusqu'à 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éplacer la souris à 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, optionnel) : 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 en PDF
- Description : Enregistrer la page en PDF
- Paramètres :
filename(chaîne, optionnel) : Nom du fichier pour enregistrer le PDF. Par défautpage-{timestamp}.pdfsi non spécifié. Préférer les noms de fichiers relatifs pour rester dans le répertoire de sortie.
- 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, 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 : 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érer 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 depuis l'instantané de la pagevalue(chaîne) : Valeur à vérifier. Pour une case à cocher, utiliser "true" ou "false".
- Lecture seule : false