Playwright MCP
oficialServidor oficial Playwright MCP para automação de navegador, inspeção de páginas, capturas de tela e interação web a partir do Claude, Cursor e outros agentes de IA.
O que você pode fazer com Playwright MCP?
- Navegação pela árvore de acessibilidade — Peça à sua IA para navegar por páginas e ler snapshots estruturados de acessibilidade, sem precisar de modelo de visão.
- Sessões de navegador persistentes — Mantenha o estado de login entre conversas via
--user-data-dirou--storage-statepara fluxos de trabalho autenticados. - Automação multi-navegador — Controle Chromium, Firefox, WebKit ou Edge com a flag
--browserpara testes entre mecanismos. - Emulação de dispositivos — Simule dispositivos móveis como "iPhone 15" via
--deviceou modo genérico--mobilepara testes responsivos. - Geração de código — Gere scripts de teste Playwright em TypeScript, Python, Java ou C# usando a opção
--codegen. - Contextos de teste isolados — Execute sessões com a flag
--isolatedpara descartar todo o estado após cada fechamento do navegador.
Documentação
Playwright MCP
Um servidor Model Context Protocol (MCP) que fornece capacidades de automação de navegador usando Playwright. Este servidor permite que LLMs interajam com páginas da web por meio de snapshots estruturados de acessibilidade, eliminando a necessidade de capturas de tela ou modelos ajustados visualmente.
Playwright MCP vs Playwright CLI
Este pacote fornece uma interface MCP para o Playwright. Se você está usando um agente de codificação, pode se beneficiar do uso do CLI+SKILLS.
-
CLI: Agentes de codificação modernos favorecem cada vez mais fluxos de trabalho baseados em CLI expostos como SKILLs em vez de MCP, porque invocações de CLI são mais eficientes em tokens: elas evitam carregar grandes esquemas de ferramentas e árvores de acessibilidade verbosas no contexto do modelo, permitindo que agentes atuem por meio de comandos concisos e específicos. Isso torna CLI + SKILLs mais adequados para agentes de codificação de alto rendimento que precisam equilibrar automação de navegador com grandes bases de código, testes e raciocínio dentro de janelas de contexto limitadas.
Saiba mais sobre Playwright CLI com SKILLs. -
MCP: MCP permanece relevante para loops agênticos especializados que se beneficiam de estado persistente, introspecção rica e raciocínio iterativo sobre a estrutura da página, como automação exploratória, testes auto-corrigíveis ou fluxos de trabalho autônomos de longa duração onde manter contexto contínuo do navegador supera preocupações com custo de tokens.
Principais Recursos
- Rápido e leve. Usa a árvore de acessibilidade do Playwright, não entrada baseada em pixels.
- Amigável para LLMs. Não precisa de modelos de visão, opera puramente em dados estruturados.
- Aplicação determinística de ferramentas. Evita ambiguidades comuns em abordagens baseadas em capturas de tela.
Requisitos
- Node.js 18 ou mais recente
- VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie ou qualquer outro cliente MCP
Começando
Primeiro, instale o servidor Playwright MCP com seu cliente.
Configuração padrão funciona na maioria das ferramentas:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Amp
Adicione via a tela de configurações da extensão Amp do VS Code ou atualizando seu arquivo settings.json:
"amp.mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
Configuração via CLI do Amp:
Adicione via o comando amp mcp add abaixo
amp mcp add playwright -- npx @playwright/mcp@latest
Antigravity
Adicione via as configurações do Antigravity ou atualizando seu arquivo de configuração:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Claude Code
Use o CLI do Claude Code para adicionar o servidor Playwright MCP:
claude mcp add playwright npx @playwright/mcp@latest
Claude Desktop
Siga o guia de instalação do MCP, use a configuração padrão acima.
Cline
Siga as instruções na seção Configurando Servidores MCP
Exemplo: Configuração Local
Adicione o seguinte ao seu arquivo cline_mcp_settings.json:
{
"mcpServers": {
"playwright": {
"type": "stdio",
"command": "npx",
"timeout": 30,
"args": [
"-y",
"@playwright/mcp@latest"
],
"disabled": false
}
}
}
Codex
Use o CLI do Codex para adicionar o servidor Playwright MCP:
codex mcp add playwright npx "@playwright/mcp@latest"
Alternativamente, crie ou edite o arquivo de configuração ~/.codex/config.toml e adicione:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
Para mais informações, veja a documentação MCP do Codex.
Copilot
Use o CLI do Copilot para adicionar interativamente o servidor Playwright MCP:
/mcp add
Alternativamente, crie ou edite o arquivo de configuração ~/.copilot/mcp-config.json e adicione:
{
"mcpServers": {
"playwright": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"@playwright/mcp@latest"
]
}
}
}
Para mais informações, veja a documentação do CLI do Copilot.
Cursor
Clique no botão para instalar:
Ou instale manualmente:
Vá para Cursor Settings -> MCP -> Add new MCP Server. Dê um nome de sua preferência, use o tipo command com o comando npx @playwright/mcp@latest. Você também pode verificar a configuração ou adicionar argumentos de comando clicando em Edit.
Factory
Use o CLI do Factory para adicionar o servidor Playwright MCP:
droid mcp add playwright "npx @playwright/mcp@latest"
Alternativamente, digite /mcp dentro do Factory droid para abrir uma interface interativa para gerenciar servidores MCP.
Para mais informações, veja a documentação MCP do Factory.
Gemini CLI
Siga o guia de instalação do MCP, use a configuração padrão acima.
Goose
Clique no botão para instalar:
Ou instale manualmente:
Vá para Advanced settings -> Extensions -> Add custom extension. Dê um nome de sua preferência, use o tipo STDIO, e defina o command para npx @playwright/mcp. Clique em "Add Extension".
Grok
Use o CLI do Grok para adicionar o servidor Playwright MCP:
grok mcp add playwright -- npx @playwright/mcp@latest
Alternativamente, crie ou edite o arquivo de configuração ~/.grok/config.toml e adicione:
[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]
Para mais informações, veja a documentação MCP do Grok.
Junie
Para adicionar o servidor Playwright MCP no CLI do Junie:
- Digite
/mcp - Pressione
Ctrl+Apara adicionar um novo servidor MCP - Selecione Playwright na lista
Alternativamente, adicione ao .junie/mcp/mcp.json:
{
"mcpServers": {
"Playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/mcp@latest"
]
}
}
}
Para mais informações, veja a documentação de configuração MCP do Junie.
Kiro
Siga a documentação de Servidores MCP. Por exemplo, em .kiro/settings/mcp.json:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
LM Studio
Clique no botão para instalar:
Ou instale manualmente:
Vá para Program na barra lateral direita -> Install -> Edit mcp.json. Use a configuração padrão acima.
opencode
Siga a documentação de Servidores MCP. Por exemplo, em ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"playwright": {
"type": "local",
"command": [
"npx",
"@playwright/mcp@latest"
],
"enabled": true
}
}
}
Qodo Gen
Abra o painel de chat do Qodo Gen no VSCode ou IntelliJ → Connect more tools → + Add new MCP → Cole a configuração padrão acima.
Clique em Save.
VS Code
Clique no botão para instalar:
Ou instale manualmente:
Siga o guia de instalação do MCP, use a configuração padrão acima. Você também pode instalar o servidor Playwright MCP usando o CLI do VS Code:
# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
Após a instalação, o servidor Playwright MCP estará disponível para uso com seu agente GitHub Copilot no VS Code.
Warp
Vá para Settings -> AI -> Manage MCP Servers -> + Add para adicionar um Servidor MCP. Use a configuração padrão acima.
Alternativamente, use o comando de barra /add-mcp no prompt do Warp e cole a configuração padrão acima:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Windsurf
Siga a documentação MCP do Windsurf. Use a configuração padrão acima.
Configuração
O servidor Playwright MCP suporta os seguintes argumentos. Eles podem ser fornecidos na configuração JSON acima, como parte da lista "args":
| Opção | Descrição |
|---|---|
| --allowed-hosts <hosts...> | lista separada por vírgulas de hosts dos quais este servidor pode servir. O padrão é o host ao qual o servidor está vinculado. Passe '*' para desabilitar a verificação de host. env PLAYWRIGHT_MCP_ALLOWED_HOSTS |
| --allowed-origins | lista separada por ponto e vírgula de origens CONFIÁVEIS que o navegador pode solicitar. O padrão é permitir todas. Importante: não serve como limite de segurança e não afeta redirecionamentos. env PLAYWRIGHT_MCP_ALLOWED_ORIGINS |
| --allow-unrestricted-file-access | permite acesso a arquivos fora das raízes do espaço de trabalho. Também permite acesso irrestrito a URLs file://. Por padrão, o acesso ao sistema de arquivos é restrito apenas aos diretórios raiz do espaço de trabalho (ou cwd se nenhuma raiz estiver configurada), e a navegação para URLs file:// é bloqueada. env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS |
| --blocked-origins | lista separada por ponto e vírgula de origens que o navegador está bloqueado de solicitar. A lista de bloqueio é avaliada antes da lista de permissões. Se usada sem a lista de permissões, solicitações que não correspondem à lista de bloqueio ainda são permitidas. Importante: não serve como limite de segurança e não afeta redirecionamentos. env PLAYWRIGHT_MCP_BLOCKED_ORIGINS |
| --block-service-workers | bloqueia service workers env PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS |
| --browser | navegador ou canal do Chrome a usar, valores possíveis: chrome, firefox, webkit, msedge. env PLAYWRIGHT_MCP_BROWSER |
| --caps | lista separada por vírgulas de capacidades adicionais a habilitar, valores possíveis: vision, pdf, devtools. env PLAYWRIGHT_MCP_CAPS |
| --cdp-endpoint | endpoint CDP ao qual conectar. env PLAYWRIGHT_MCP_CDP_ENDPOINT |
| --cdp-header <headers...> | cabeçalhos CDP a enviar com a solicitação de conexão, vários podem ser especificados. env PLAYWRIGHT_MCP_CDP_HEADERS |
| --cdp-timeout | tempo limite em milissegundos para conectar ao endpoint CDP, o padrão é 30000ms env PLAYWRIGHT_MCP_CDP_TIMEOUT |
| --codegen | especifica o idioma a usar para geração de código, valores possíveis: "typescript", "python", "java", "csharp", "none". O padrão é "typescript". env PLAYWRIGHT_MCP_CODEGEN |
| --config | caminho para o arquivo de configuração. env PLAYWRIGHT_MCP_CONFIG |
| --console-level | nível de mensagens de console a retornar: "error", "warning", "info", "debug". Cada nível inclui as mensagens dos níveis mais severos. env PLAYWRIGHT_MCP_CONSOLE_LEVEL |
| --device | dispositivo a emular, por exemplo: "iPhone 15" env PLAYWRIGHT_MCP_DEVICE |
| --mobile | emula um dispositivo móvel genérico (Pixel 10 para Chromium, iPhone 17 para WebKit). Páginas móveis geralmente são mais leves, o que economiza tokens. Não pode ser combinado com --device. env PLAYWRIGHT_MCP_MOBILE |
| --executable-path | caminho para o executável do navegador. env PLAYWRIGHT_MCP_EXECUTABLE_PATH |
| --extension | Conecta a uma instância de navegador em execução (somente Edge/Chrome). Requer a instalação da "Playwright Extension". env PLAYWRIGHT_MCP_EXTENSION |
| --endpoint | endpoint de navegador vinculado ao qual conectar. env PLAYWRIGHT_MCP_ENDPOINT |
| --grant-permissions <permissions...> | Lista de permissões a conceder ao contexto do navegador, por exemplo "geolocation", "clipboard-read", "clipboard-write". env PLAYWRIGHT_MCP_GRANT_PERMISSIONS |
| --headless | executa o navegador em modo headless, com interface gráfica por padrão env PLAYWRIGHT_MCP_HEADLESS |
| --host | host ao qual vincular o servidor. O padrão é localhost. Use 0.0.0.0 para vincular a todas as interfaces. env PLAYWRIGHT_MCP_HOST |
| --ignore-https-errors | ignora erros de https env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS |
| --init-page <path...> | caminho para arquivo TypeScript a avaliar no objeto de página do Playwright env PLAYWRIGHT_MCP_INIT_PAGE |
| --init-script <path...> | caminho para arquivo JavaScript a adicionar como script de inicialização. O script será avaliado em cada página antes de qualquer script da página. Pode ser especificado várias vezes. env PLAYWRIGHT_MCP_INIT_SCRIPT |
| --isolated | mantém o perfil do navegador na memória, não o salva em disco. env PLAYWRIGHT_MCP_ISOLATED |
| --image-responses | se deve enviar respostas de imagem ao cliente. Pode ser "allow" ou "omit", o padrão é "allow". env PLAYWRIGHT_MCP_IMAGE_RESPONSES |
| --no-sandbox | desabilita o sandbox para todos os tipos de processo que normalmente são isolados. env PLAYWRIGHT_MCP_NO_SANDBOX |
| --output-dir | caminho para o diretório de arquivos de saída. env PLAYWRIGHT_MCP_OUTPUT_DIR |
| --output-max-size | Limite para remover arquivos de saída antigos, em bytes. env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE |
| --port | porta para escutar no transporte SSE. env PLAYWRIGHT_MCP_PORT |
| --proxy-bypass | domínios separados por vírgulas para ignorar o proxy, por exemplo ".com,chromium.org,.domain.com" env PLAYWRIGHT_MCP_PROXY_BYPASS |
| --proxy-server | especifica o servidor proxy, por exemplo "http://myproxy:3128" ou "socks5://myproxy:8080" env PLAYWRIGHT_MCP_PROXY_SERVER |
| --sandbox | habilita o sandbox para todos os tipos de processo que normalmente não são isolados. env PLAYWRIGHT_MCP_SANDBOX |
| --save-session | Se deve salvar a sessão do Playwright MCP no diretório de saída. env PLAYWRIGHT_MCP_SAVE_SESSION |
| --secrets | caminho para um arquivo contendo segredos no formato dotenv env PLAYWRIGHT_MCP_SECRETS_FILE |
| --shared-browser-context | reutiliza o mesmo contexto de navegador entre todos os clientes HTTP conectados. env PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT |
| --snapshot-boxes | inclui a caixa delimitadora de cada elemento como [box=x,y,width,height] nos snapshots. As coordenadas são relativas à viewport, em pixels CSS. env PLAYWRIGHT_MCP_SNAPSHOT_BOXES |
| --snapshot-mode | ao tirar snapshots para respostas, especifica o modo a usar. Pode ser "full" ou "none". O padrão é "full". env PLAYWRIGHT_MCP_SNAPSHOT_MODE |
| --storage-state | caminho para o arquivo de estado de armazenamento para sessões isoladas. env PLAYWRIGHT_MCP_STORAGE_STATE |
| --test-id-attribute | especifica o atributo a usar para IDs de teste, o padrão é "data-testid" env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE |
| --timeout-action | especifica o tempo limite de ação em milissegundos, o padrão é 5000ms env PLAYWRIGHT_MCP_TIMEOUT_ACTION |
| --timeout-navigation | especifica o tempo limite de navegação em milissegundos, o padrão é 60000ms env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION |
| --timeout-settle | quanto tempo esperar após cada ação para que o trabalho acionado se estabilize, em milissegundos, o padrão é 500ms env PLAYWRIGHT_MCP_TIMEOUT_SETTLE |
| --user-agent | especifica a string do user agent env PLAYWRIGHT_MCP_USER_AGENT |
| --user-data-dir | caminho para o diretório de dados do usuário. Se não for especificado, um diretório temporário será criado. env PLAYWRIGHT_MCP_USER_DATA_DIR |
| --viewport-size | especifica o tamanho da viewport do navegador em pixels, por exemplo "1280x720" env PLAYWRIGHT_MCP_VIEWPORT_SIZE |
Perfil do usuário
Você pode executar o Playwright MCP com perfil persistente como um navegador regular (padrão), em contextos isolados para sessões de teste, ou conectar-se ao seu navegador existente usando a extensão do navegador.
Perfil persistente
Todas as informações de login serão armazenadas no perfil persistente; você pode excluí-lo entre sessões se quiser limpar o estado offline.
O perfil persistente está localizado nos seguintes locais e você pode substituí-lo com o argumento --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} é derivado da raiz do espaço de trabalho do cliente MCP, então projetos diferentes recebem perfis separados automaticamente.
[!IMPORTANT] Um perfil persistente só pode ser usado por uma instância de navegador por vez, então clientes MCP concorrentes compartilhando o mesmo espaço de trabalho entrarão em conflito. Para executar vários clientes em paralelo, inicie cada cliente adicional com
--isolatedou aponte-o para um--user-data-dirdistinto.
Isolado
No modo isolado, cada sessão é iniciada no perfil isolado. Toda vez que você pedir ao MCP para fechar o navegador,
a sessão é encerrada e todo o estado de armazenamento desta sessão é perdido. Você pode fornecer o estado de armazenamento inicial
ao navegador via contextOptions da configuração ou via o argumento --storage-state. Saiba mais sobre o estado de armazenamento aqui.
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest",
"--isolated",
"--storage-state={path/to/storage.json}"
]
}
}
}
Extensão do navegador
A extensão do Chrome do Playwright MCP permite que você se conecte a abas existentes do navegador e aproveite suas sessões logadas e o estado do navegador. Veja microsoft/playwright › packages/extension para instruções de instalação e configuração.
Estado inicial
Existem várias maneiras de fornecer o estado inicial ao contexto do navegador ou a uma página.
Para o estado de armazenamento, você pode:
- Começar com um diretório de dados do usuário usando o argumento
--user-data-dir. Isso persistirá todos os dados do navegador entre as sessões. - Começar com um arquivo de estado de armazenamento usando o argumento
--storage-state. Isso carregará cookies e armazenamento local do arquivo em um contexto de navegador isolado.
Para o estado da página, você pode usar:
--init-pagepara apontar para um arquivo TypeScript que será avaliado no objeto de página do Playwright. Isso permite que você execute código arbitrário para configurar a página.
// 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-scriptpara apontar para um arquivo JavaScript que será adicionado como script de inicialização. O script será avaliado em cada página antes de qualquer script da página. Isso é útil para substituir APIs do navegador ou configurar o ambiente.
// init-script.js
window.isPlaywrightMCP = true;
Arquivo de configuração
O servidor Playwright MCP pode ser configurado usando um arquivo de configuração JSON. Você pode especificar o arquivo de configuração
usando a opção de linha de comando --config:
npx @playwright/mcp@latest --config path/to/config.json
Esquema do arquivo de configuração
{
/**
* The browser to use.
*/
browser?: {
/**
* The type of browser to use.
*/
browserName?: 'chromium' | 'firefox' | 'webkit';
/**
* Keep the browser profile in memory, do not save it to disk.
*/
isolated?: boolean;
/**
* Path to a user data directory for browser profile persistence.
* Temporary directory is created by default.
*/
userDataDir?: string;
/**
* Launch options passed to
* @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
*
* This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
*/
launchOptions?: playwright.LaunchOptions;
/**
* Context options for the browser context.
*
* This is useful for settings options like `viewport`.
*/
contextOptions?: playwright.BrowserContextOptions;
/**
* Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
*/
cdpEndpoint?: string;
/**
* CDP headers to send with the connect request.
*/
cdpHeaders?: Record<string, string>;
/**
* Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
*/
cdpTimeout?: number;
/**
* Remote endpoint to connect to an existing Playwright server. May be a
* WebSocket URL string, or a [ConnectOptions] object that mirrors the
* `connectOptions` shape used by the test runner. When passed as an object,
* `exposeNetwork`, `headers`, `slowMo`, and `timeout` are forwarded to the
* underlying connect call.
*/
remoteEndpoint?: string | playwright.ConnectOptions & { endpoint: string };
/**
* Paths to TypeScript files to add as initialization scripts for Playwright page.
*/
initPage?: string[];
/**
* Paths to JavaScript files to add as initialization scripts.
* The scripts will be evaluated in every page before any of the page's scripts.
*/
initScript?: string[];
},
/**
* Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
* config is ignored.
* Requires the "Playwright Extension" to be installed.
*/
extension?: boolean;
server?: {
/**
* The port to listen on for SSE or MCP transport.
*/
port?: number;
/**
* The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
*/
host?: string;
/**
* The hosts this server is allowed to serve from. Defaults to the host server is bound to.
* This is not for CORS, but rather for the DNS rebinding protection.
*/
allowedHosts?: string[];
},
/**
* List of enabled tool capabilities. Possible values:
* - 'core': Core browser automation features.
* - 'pdf': PDF generation and manipulation.
* - 'vision': Coordinate-based interactions.
* - 'devtools': Developer tools features.
*/
capabilities?: ToolCapability[];
/**
* Whether to save the Playwright session into the output directory.
*/
saveSession?: boolean;
/**
* Reuse the same browser context between all connected HTTP clients.
*/
sharedBrowserContext?: boolean;
/**
* Secrets are used to replace matching plain text in the tool responses to prevent the LLM
* from accidentally getting sensitive data. It is a convenience and not a security feature,
* make sure to always examine information coming in and from the tool on the client.
*/
secrets?: Record<string, string>;
/**
* The directory to save output files.
*/
outputDir?: string;
/**
* Threshold for evicting old output files, in bytes.
*/
outputMaxSize?: number;
console?: {
/**
* The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
*/
level?: 'error' | 'warning' | 'info' | 'debug';
},
network?: {
/**
* List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
allowedOrigins?: string[];
/**
* List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
*
* Supported formats:
* - Full origin: `https://example.com:8080` - matches only that origin
* - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
*/
blockedOrigins?: string[];
};
/**
* Specify the attribute to use for test ids, defaults to "data-testid".
*/
testIdAttribute?: string;
timeouts?: {
/*
* Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
*/
action?: number;
/*
* Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
*/
navigation?: number;
/**
* Configures default expect timeout: https://playwright.dev/docs/test-timeouts#expect-timeout. Defaults to 5000ms.
*/
expect?: number;
/**
* How long to wait after each action for triggered work (navigations, requests) to settle before responding. Defaults to 500ms.
*/
settle?: number;
};
/**
* Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
*/
imageResponses?: 'allow' | 'omit';
snapshot?: {
/**
* When taking snapshots for responses, specifies the mode to use.
*/
mode?: 'full' | 'none';
/**
* Whether to include each element's bounding box as [box=x,y,width,height] in snapshots.
* Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect).
*/
boxes?: boolean;
};
/**
* allowUnrestrictedFileAccess acts as a guardrail to prevent the LLM from accidentally
* wandering outside its intended workspace. It is a convenience defense to catch unintended
* file access, not a secure boundary; a deliberate attempt to reach other directories can be
* easily worked around, so always rely on client-level permissions for true security.
*/
allowUnrestrictedFileAccess?: boolean;
/**
* Specify the language to use for code generation.
*/
codegen?: 'typescript' | 'python' | 'java' | 'csharp' | 'none';
}
Servidor MCP autônomo
Ao executar o navegador com interface gráfica em um sistema sem display ou a partir de processos de trabalho dos IDEs,
execute o servidor MCP a partir do ambiente com o DISPLAY e passe o sinalizador --port para habilitar o transporte HTTP.
npx @playwright/mcp@latest --port 8931
E então, na configuração do cliente MCP, defina o url para o endpoint HTTP:
{
"mcpServers": {
"playwright": {
"url": "http://localhost:8931/mcp"
}
}
}
Segurança
O Playwright MCP não é um limite de segurança. Veja Práticas recomendadas de segurança do MCP para orientações sobre como proteger sua implantação.
Docker
NOTA: A implementação do Docker atualmente suporta apenas chromium headless.
{
"mcpServers": {
"playwright": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
}
}
}
Ou, se você preferir executar o contêiner como um serviço de longa duração em vez de deixar o cliente MCP iniciá-lo, use:
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
O servidor escutará na porta 8931 do host e poderá ser acessado por qualquer cliente MCP.
Você pode criar a imagem Docker você mesmo.
docker build -t mcr.microsoft.com/playwright/mcp .
Uso programático
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);
// ...
});
Ferramentas
Automação principal
- browser_click
- Título: Clicar
- Descrição: Executar clique em uma página web
- Parâmetros:
element(string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elementotarget(string): Referência exata do elemento alvo no snapshot da página, ou um seletor de elemento únicodoubleClick(boolean, opcional): Se deve executar um clique duplo em vez de um clique simplesbutton(string, opcional): Botão para clicar, padrão é o esquerdomodifiers(array, opcional): Teclas modificadoras a pressionar
- Somente leitura: false
- browser_close
- Título: Fechar navegador
- Descrição: Fechar a página
- Parâmetros: Nenhum
- Somente leitura: false
- browser_console_messages
- Título: Obter mensagens do console
- Descrição: Retorna todas as mensagens do console
- Parâmetros:
level(string): Nível das mensagens do console a retornar. Cada nível inclui as mensagens dos níveis mais severos. Padrão é "info".all(boolean, opcional): Retornar todas as mensagens do console desde o início da sessão, não apenas desde a última navegação. Padrão é false.filename(string, opcional): Nome do arquivo para salvar as mensagens do console. Se não fornecido, as mensagens são retornadas como texto.
- Somente leitura: true
- browser_drag
- Título: Arrastar mouse
- Descrição: Executar arrastar e soltar entre dois elementos
- Parâmetros:
startElement(string, opcional): Descrição legível do elemento de origem usada para obter permissão de interagir com o elementostartTarget(string): Referência exata do elemento alvo no snapshot da página, ou um seletor de elemento únicoendElement(string, opcional): Descrição legível do elemento de destino usada para obter permissão de interagir com o elementoendTarget(string): Referência exata do elemento alvo no snapshot da página, ou um seletor de elemento único
- Somente leitura: false
- browser_drop
- Título: Soltar arquivos ou dados em um elemento
- Descrição: Soltar arquivos ou dados com tipo MIME em um elemento, como se arrastados de fora da página. Pelo menos um de "paths" ou "data" deve ser fornecido.
- Parâmetros:
element(string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elementotarget(string): Referência exata do elemento alvo no snapshot da página, ou um seletor de elemento únicopaths(array, opcional): Caminhos absolutos para os arquivos a soltar no elemento.data(object, opcional): Dados a soltar, como um mapa de tipo MIME para valor de string (ex.: {"text/plain": "hello", "text/uri-list": "https://example.com"}).
- Somente leitura: false
- browser_evaluate
- Título: Avaliar JavaScript
- Descrição: Avaliar expressão JavaScript na página ou no elemento
- Parâmetros:
element(string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elementotarget(string, opcional): Referência exata do elemento alvo no snapshot da página, ou um seletor de elemento únicofunction(string): () => { /* código / } ou (element) => { / código */ } quando o elemento é fornecidofilename(string, opcional): Nome do arquivo para salvar o resultado. Se não fornecido, o resultado é retornado como texto.
- Somente leitura: false
- browser_file_upload
- Título: Enviar arquivos
- Descrição: Enviar um ou vários arquivos
- Parâmetros:
paths(array, opcional): Os caminhos absolutos para os arquivos a enviar. Pode ser um único arquivo ou vários arquivos. Se omitido, o seletor de arquivos é cancelado.
- Somente leitura: false
- browser_fill_form
- Título: Preencher formulário
- Descrição: Preencher vários campos de formulário
- Parâmetros:
fields(array): Campos a preencher
- Somente leitura: false
- browser_find
- Título: Encontrar no snapshot da página
- Descrição: Pesquisar o snapshot de acessibilidade da página atual por texto ou expressão regular. Retorna nós de snapshot correspondentes com algumas linhas de contexto ao redor (como trechos de pesquisa), cada um mostrado sob seu caminho a partir da raiz da árvore, o que é mais barato do que capturar o snapshot inteiro quando você só precisa localizar um elemento e sua referência.
- Parâmetros:
text(string, opcional): Texto simples para pesquisar no snapshot da página (correspondência de substring sem diferenciar maiúsculas de minúsculas). Forneça texto ou regex, não ambos.regex(string, opcional): Expressão regular para pesquisar no snapshot da página. A correspondência diferencia maiúsculas de minúsculas por padrão; envolva o padrão em barras para adicionar flags, ex.: "/error/i" para não diferenciar maiúsculas de minúsculas. Forneça texto ou regex, não ambos.
- Somente leitura: true
- browser_handle_dialog
- Título: Lidar com um diálogo
- Descrição: Lidar com um diálogo
- Parâmetros:
accept(boolean): Se deve aceitar o diálogo.promptText(string, opcional): O texto do prompt no caso de um diálogo de prompt.
- Somente leitura: false
- browser_hover
- Título: Passar o mouse
- Descrição: Passar o mouse sobre o elemento na página
- Parâmetros:
element(string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elementotarget(string): Referência exata do elemento alvo no snapshot da página, ou um seletor de elemento único
- Somente leitura: false
- browser_navigate
- Título: Navegar para uma URL
- Descrição: Navegar para uma URL
- Parâmetros:
url(string): A URL para navegar
- Somente leitura: false
- browser_navigate_back
- Título: Voltar
- Descrição: Voltar para a página anterior no histórico
- Parâmetros: Nenhum
- Somente leitura: false
- browser_network_request
- Título: Mostrar detalhes da solicitação de rede
- Descrição: Retorna detalhes completos (cabeçalhos e corpo) de uma única solicitação de rede, ou uma única parte se
partestiver definido. Use o número de browser_network_requests. - Parâmetros:
index(integer): Índice baseado em 1 da solicitação, como impresso por browser_network_requests.part(string, opcional): Retornar apenas esta parte da solicitação. Omita para retornar detalhes completos.filename(string, opcional): Nome do arquivo para salvar o resultado. Se não fornecido, a saída é retornada como texto.
- Somente leitura: true
- browser_network_requests
- Título: Listar solicitações de rede
- Descrição: Retorna uma lista numerada de solicitações de rede desde o carregamento da página. Use browser_network_request com o número para obter detalhes completos.
- Parâmetros:
static(boolean): Se deve incluir recursos estáticos bem-sucedidos como imagens, fontes, scripts, etc. Padrão é false.filter(string, opcional): Retornar apenas solicitações cuja URL corresponda a este regexp (ex.: "/api/.*user").filename(string, opcional): Nome do arquivo para salvar as solicitações de rede. Se não fornecido, as solicitações são retornadas como texto.
- Somente leitura: true
- browser_press_key
- Título: Pressionar uma tecla
- Descrição: Pressionar uma tecla no teclado
- Parâmetros:
key(string): Nome da tecla a pressionar ou um caractere a gerar, comoArrowLeftoua
- Somente leitura: false
- browser_resize
- Título: Redimensionar janela do navegador
- Descrição: Redimensionar a janela do navegador
- Parâmetros:
width(number): Largura da janela do navegadorheight(number): Altura da janela do navegador
- Somente leitura: false
- browser_run_code_unsafe
- Título: Executar código Playwright (inseguro)
- Descrição: Executar um trecho de código Playwright. Inseguro: executa JavaScript arbitrário no processo do servidor Playwright e é equivalente a RCE.
- Parâmetros:
code(string, opcional): Uma função JavaScript contendo código Playwright para executar. Será invocada com um único argumento, page, que você pode usar para qualquer interação com a página. Por exemplo:async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }filename(string, opcional): Carregar código do arquivo especificado. Se ambos código e nome de arquivo forem fornecidos, o código será ignorado.
- Somente leitura: false
- browser_select_option
- Título: Selecionar opção
- Descrição: Selecionar uma opção em um menu suspenso
- Parâmetros:
element(string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elementotarget(string): Referência exata do elemento alvo no snapshot da página, ou um seletor de elemento únicovalues(array): Matriz de valores para selecionar no menu suspenso. Pode ser um único valor ou vários valores.
- Somente leitura: false
- browser_snapshot
- Título: Snapshot da página
- Descrição: Capturar snapshot de acessibilidade da página atual, isso é melhor que screenshot
- Parâmetros:
target(string, opcional): Referência exata do elemento alvo no snapshot da página, ou um seletor de elemento únicofilename(string, opcional): Salvar snapshot em arquivo markdown em vez de retorná-lo na resposta.depth(number, opcional): Limitar a profundidade da árvore do snapshotboxes(boolean, opcional): Incluir a caixa delimitadora de cada elemento como [box=x,y,width,height] no snapshot. As coordenadas são relativas à viewport, em pixels CSS (Element.getBoundingClientRect)
- Somente leitura: true
- browser_take_screenshot
- Título: Tirar um screenshot
- Descrição: Tirar um screenshot da página atual. Você não pode executar ações com base no screenshot, use browser_snapshot para ações.
- Parâmetros:
element(string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elementotarget(string, opcional): Referência exata do elemento alvo no snapshot da página, ou um seletor de elemento únicotype(string, opcional): Formato de imagem para o screenshot. Se não definido, inferido da extensão do nome do arquivo, caso contrário png.filename(string, opcional): Nome do arquivo para salvar o screenshot. Padrão épage-{timestamp}.{png|jpeg|webp}se não especificado. Prefira nomes de arquivo relativos para permanecer dentro do diretório de saída.fullPage(boolean, opcional): Quando true, tira um screenshot da página inteira rolável, em vez da viewport atualmente visível. Não pode ser usado com screenshots de elementos.scale(string): Escala de resolução da imagem. "css" produz um screenshot dimensionado em pixels CSS (menor, consistente entre dispositivos). "device" produz um screenshot de alta resolução usando pixels do dispositivo (maior, considera a proporção de pixels do dispositivo). Padrão é css.
- Somente leitura: true
- browser_type
- Título: Digitar texto
- Descrição: Digitar texto em elemento editável
- Parâmetros:
element(string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elementotarget(string): Referência exata do elemento alvo no snapshot da página, ou um seletor de elemento únicotext(string): Texto para digitar no elementosubmit(boolean, opcional): Se deve enviar o texto digitado (pressionar Enter depois)slowly(boolean, opcional): Se deve digitar um caractere por vez. Útil para acionar manipuladores de teclado na página. Por padrão, todo o texto é preenchido de uma vez.
- Somente leitura: false
- browser_wait_for
- Título: Aguardar
- Descrição: Aguarda o texto aparecer ou desaparecer, ou um tempo especificado passar
- Parâmetros:
time(número, opcional): O tempo de espera em segundostext(string, opcional): O texto a aguardartextGone(string, opcional): O texto a aguardar para desaparecer
- Somente leitura: false
Gerenciamento de abas
- browser_tabs
- Título: Gerenciar abas
- Descrição: Lista, cria, fecha ou seleciona uma aba do navegador.
- Parâmetros:
action(string): Operação a ser executadaindex(número, opcional): Índice da aba, usado para fechar/selecionar. Se omitido para fechar, a aba atual é fechada.url(string, opcional): URL para navegar na nova aba, usado para nova.
- Somente leitura: false
Instalação do navegador
Configuração (opt-in via --caps=config)
- browser_get_config
- Título: Obter configuração
- Descrição: Obtém a configuração final resolvida após mesclar opções de CLI, variáveis de ambiente e arquivo de configuração.
- Parâmetros: Nenhum
- Somente leitura: true
Rede (opt-in via --caps=network)
- browser_network_state_set
- Título: Definir estado de rede
- Descrição: Define o estado de rede do navegador como online ou offline. Quando offline, todas as solicitações de rede falharão.
- Parâmetros:
state(string): Defina como "offline" para simular o modo offline, "online" para restaurar a conectividade de rede
- Somente leitura: false
- browser_route
- Título: Simular solicitações de rede
- Descrição: Configura uma rota para simular solicitações de rede que correspondem a um padrão de URL
- Parâmetros:
pattern(string): Padrão de URL para corresponder (ex.: "/api/users", "/*.{png,jpg}")status(número, opcional): Código de status HTTP para retornar (padrão: 200)body(string, opcional): Corpo da resposta (texto ou string JSON)contentType(string, opcional): Cabeçalho Content-Type (ex.: "application/json", "text/html")headers(array, opcional): Cabeçalhos para adicionar no formato "Nome: Valor"removeHeaders(string, opcional): Lista separada por vírgulas de nomes de cabeçalhos para remover da solicitação
- Somente leitura: false
- browser_route_list
- Título: Listar rotas de rede
- Descrição: Lista todas as rotas de rede ativas
- Parâmetros: Nenhum
- Somente leitura: true
- browser_unroute
- Título: Remover rotas de rede
- Descrição: Remove rotas de rede que correspondem a um padrão (ou todas as rotas se nenhum padrão for especificado)
- Parâmetros:
pattern(string, opcional): Padrão de URL para remover rota (omitir para remover todas as rotas)
- Somente leitura: false
Armazenamento (opt-in via --caps=storage)
- browser_cookie_clear
- Título: Limpar cookies
- Descrição: Limpa todos os cookies
- Parâmetros: Nenhum
- Somente leitura: false
- browser_cookie_delete
- Título: Excluir cookie
- Descrição: Exclui um cookie específico
- Parâmetros:
name(string): Nome do cookie para excluir
- Somente leitura: false
- browser_cookie_get
- Título: Obter cookie
- Descrição: Obtém um cookie específico pelo nome
- Parâmetros:
name(string): Nome do cookie para obter
- Somente leitura: true
- browser_cookie_list
- Título: Listar cookies
- Descrição: Lista todos os cookies (opcionalmente filtrados por domínio/caminho)
- Parâmetros:
domain(string, opcional): Filtrar cookies por domíniopath(string, opcional): Filtrar cookies por caminho
- Somente leitura: true
- browser_cookie_set
- Título: Definir cookie
- Descrição: Define um cookie com sinalizadores opcionais (domínio, caminho, expiração, httpOnly, secure, sameSite)
- Parâmetros:
name(string): Nome do cookievalue(string): Valor do cookiedomain(string, opcional): Domínio do cookiepath(string, opcional): Caminho do cookieexpires(número, opcional): Expiração do cookie como timestamp UnixhttpOnly(booleano, opcional): Se o cookie é somente HTTPsecure(booleano, opcional): Se o cookie é segurosameSite(string, opcional): Atributo SameSite do cookie
- Somente leitura: false
- browser_localstorage_clear
- Título: Limpar localStorage
- Descrição: Limpa todo o localStorage
- Parâmetros: Nenhum
- Somente leitura: false
- browser_localstorage_delete
- Título: Excluir item do localStorage
- Descrição: Exclui um item do localStorage
- Parâmetros:
key(string): Chave para excluir
- Somente leitura: false
- browser_localstorage_get
- Título: Obter item do localStorage
- Descrição: Obtém um item do localStorage pela chave
- Parâmetros:
key(string): Chave para obter
- Somente leitura: true
- browser_localstorage_list
- Título: Listar localStorage
- Descrição: Lista todos os pares chave-valor do localStorage
- Parâmetros: Nenhum
- Somente leitura: true
- browser_localstorage_set
- Título: Definir item do localStorage
- Descrição: Define um item do localStorage
- Parâmetros:
key(string): Chave para definirvalue(string): Valor para definir
- Somente leitura: false
- browser_sessionstorage_clear
- Título: Limpar sessionStorage
- Descrição: Limpa todo o sessionStorage
- Parâmetros: Nenhum
- Somente leitura: false
- browser_sessionstorage_delete
- Título: Excluir item do sessionStorage
- Descrição: Exclui um item do sessionStorage
- Parâmetros:
key(string): Chave para excluir
- Somente leitura: false
- browser_sessionstorage_get
- Título: Obter item do sessionStorage
- Descrição: Obtém um item do sessionStorage pela chave
- Parâmetros:
key(string): Chave para obter
- Somente leitura: true
- browser_sessionstorage_list
- Título: Listar sessionStorage
- Descrição: Lista todos os pares chave-valor do sessionStorage
- Parâmetros: Nenhum
- Somente leitura: true
- browser_sessionstorage_set
- Título: Definir item do sessionStorage
- Descrição: Define um item do sessionStorage
- Parâmetros:
key(string): Chave para definirvalue(string): Valor para definir
- Somente leitura: false
- browser_set_storage_state
- Título: Restaurar estado de armazenamento
- Descrição: Restaura o estado de armazenamento (cookies, armazenamento local) de um arquivo. Isso limpa cookies e armazenamento local existentes antes de restaurar.
- Parâmetros:
filename(string): Caminho para o arquivo de estado de armazenamento para restaurar
- Somente leitura: false
- browser_storage_state
- Título: Salvar estado de armazenamento
- Descrição: Salva o estado de armazenamento (cookies, armazenamento local) em um arquivo para reutilização posterior
- Parâmetros:
filename(string, opcional): Nome do arquivo para salvar o estado de armazenamento. Padrão éstorage-state-{timestamp}.jsonse não especificado.
- Somente leitura: true
DevTools (opt-in via --caps=devtools)
- browser_annotate
- Título: Anotar a página atual
- Descrição: Abre o Playwright Dashboard no modo de anotação para a página atual e aguarda o usuário desenhar anotações. Retorna a captura de tela anotada, o snapshot ARIA e a lista de anotações.
- Parâmetros: Nenhum
- Somente leitura: true
- browser_hide_highlight
- Título: Ocultar destaque do elemento
- Descrição: Remove uma sobreposição de destaque adicionada anteriormente para o elemento.
- Parâmetros:
element(string, opcional): Descrição legível do elemento usada ao adicionar o destaque; deve corresponder ao valor passado para browser_highlight.target(string, opcional): Referência exata do elemento alvo do snapshot da página, ou um seletor de elemento único
- Somente leitura: true
- browser_highlight
- Título: Destacar elemento
- Descrição: Mostra uma sobreposição de destaque persistente ao redor do elemento na página.
- Parâmetros:
element(string, opcional): Descrição legível do elemento usada para obter permissão para interagir com o elementotarget(string): Referência exata do elemento alvo do snapshot da página, ou um seletor de elemento únicostyle(string, opcional): CSS inline adicional aplicado à sobreposição de destaque, ex.: "outline: 2px dashed red".
- Somente leitura: true
- browser_resume
- Título: Retomar execução de script pausada
- Descrição: Retoma a execução do script após ter sido pausada. Quando chamado com step definido como true, a execução pausará novamente antes da próxima ação.
- Parâmetros:
step(booleano, opcional): Quando true, a execução pausará novamente antes da próxima ação, permitindo depuração passo a passo.location(string, opcional): Pausar execução em um : específico, ex.: "example.spec.ts:42".
- Somente leitura: false
- browser_start_recording
- Título: Iniciar gravação de ações do usuário
- Descrição: Inicia a gravação das ações que o usuário realiza no navegador como código Playwright. Use quando o usuário quiser demonstrar um fluxo manualmente. Chame browser_stop_recording quando o usuário disser que terminou para recuperar as ações gravadas.
- Parâmetros: Nenhum
- Somente leitura: true
- browser_start_tracing
- Título: Iniciar rastreamento
- Descrição: Inicia a gravação de rastreamento
- Parâmetros: Nenhum
- Somente leitura: true
- browser_start_video
- Título: Iniciar vídeo
- Descrição: Inicia a gravação de vídeo
- Parâmetros:
filename(string, opcional): Nome do arquivo para salvar o vídeo.size(objeto, opcional): Tamanho do vídeo
- Somente leitura: true
- browser_stop_recording
- Título: Parar gravação de ações do usuário
- Descrição: Para a gravação iniciada com browser_start_recording e retorna as ações gravadas como código Playwright.
- Parâmetros: Nenhum
- Somente leitura: true
- browser_stop_tracing
- Título: Parar rastreamento
- Descrição: Para a gravação de rastreamento
- Parâmetros: Nenhum
- Somente leitura: true
- browser_stop_video
- Título: Parar vídeo
- Descrição: Para a gravação de vídeo
- Parâmetros: Nenhum
- Somente leitura: true
- browser_video_chapter
- Título: Capítulo de vídeo
- Descrição: Adiciona um marcador de capítulo à gravação de vídeo. Mostra um cartão de capítulo em tela cheia com fundo desfocado.
- Parâmetros:
title(string): Título do capítulodescription(string, opcional): Descrição do capítuloduration(número, opcional): Duração em milissegundos para mostrar o cartão do capítulo
- Somente leitura: true
- browser_video_hide_actions
- Título: Ocultar sobreposições de ação
- Descrição: Para de anotar ações executadas na página.
- Parâmetros: Nenhum
- Somente leitura: true
- browser_video_show_actions
- Título: Mostrar sobreposições de ações
- Descrição: Anota ações subsequentes realizadas na página com um destaque que nomeia a ação e realça o elemento alvo. Útil durante gravação de vídeo ou screencasting.
- Parâmetros:
duration(número, opcional): Por quanto tempo cada anotação de ação permanece na tela, em milissegundos. Padrão: 500.position(string, opcional): Onde colocar o título da ação em relação à página. Padrão: canto superior direito.cursor(string, opcional): Decoração do cursor para ações de ponteiro. "pointer" (padrão) anima um ponteiro de mouse do ponto da ação anterior para o próximo; "none" desativa a decoração do cursor.
- Somente leitura: true
Baseado em coordenadas (opt-in via --caps=vision)
- browser_mouse_click_xy
- Título: Clicar
- Descrição: Clicar com o botão do mouse em uma posição específica
- Parâmetros:
x(número): Coordenada Xy(número): Coordenada Ybutton(string, opcional): Botão para clicar, padrão: esquerdoclickCount(número, opcional): Número de cliques, padrão: 1delay(número, opcional): Tempo de espera entre pressionar e soltar o mouse em milissegundos, padrão: 0
- Somente leitura: false
- browser_mouse_down
- Título: Pressionar botão do mouse
- Descrição: Pressionar botão do mouse
- Parâmetros:
button(string, opcional): Botão para pressionar, padrão: esquerdo
- Somente leitura: false
- browser_mouse_drag_xy
- Título: Arrastar mouse
- Descrição: Arrastar o botão esquerdo do mouse até uma posição específica
- Parâmetros:
startX(número): Coordenada X inicialstartY(número): Coordenada Y inicialendX(número): Coordenada X finalendY(número): Coordenada Y final
- Somente leitura: false
- browser_mouse_move_xy
- Título: Mover mouse
- Descrição: Mover o mouse até uma posição específica
- Parâmetros:
x(número): Coordenada Xy(número): Coordenada Y
- Somente leitura: false
- browser_mouse_up
- Título: Soltar botão do mouse
- Descrição: Soltar botão do mouse
- Parâmetros:
button(string, opcional): Botão para soltar, padrão: esquerdo
- Somente leitura: false
- browser_mouse_wheel
- Título: Rolar roda do mouse
- Descrição: Rolar roda do mouse
- Parâmetros:
deltaX(número): Delta XdeltaY(número): Delta Y
- Somente leitura: false
Geração de PDF (opt-in via --caps=pdf)
- browser_pdf_save
- Título: Salvar como PDF
- Descrição: Salvar página como PDF
- Parâmetros:
filename(string, opcional): Nome do arquivo para salvar o PDF. Padrão:page-{timestamp}.pdfse não especificado. Prefira nomes de arquivo relativos para permanecer dentro do diretório de saída.
- Somente leitura: true
Asserções de teste (opt-in via --caps=testing)
- browser_generate_locator
- Título: Criar localizador para elemento
- Descrição: Gerar localizador para o elemento fornecido para uso em testes
- Parâmetros:
element(string, opcional): Descrição legível do elemento usada para obter permissão de interagir com o elementotarget(string): Referência exata do elemento alvo do snapshot da página, ou um seletor de elemento único
- Somente leitura: true
- browser_verify_element_visible
- Título: Verificar elemento visível
- Descrição: Verificar se o elemento está visível na página
- Parâmetros:
role(string): PAPEL do elemento. Pode ser encontrado no snapshot assim:- {ROLE} "Accessible Name":accessibleName(string): NOME_ACESSÍVEL do elemento. Pode ser encontrado no snapshot assim:- role "{ACCESSIBLE_NAME}"
- Somente leitura: false
- browser_verify_list_visible
- Título: Verificar lista visível
- Descrição: Verificar se a lista está visível na página
- Parâmetros:
element(string): Descrição legível da listatarget(string): Referência exata do elemento alvo que aponta para a listaitems(array): Itens a verificar
- Somente leitura: false
- browser_verify_text_visible
- Título: Verificar texto visível
- Descrição: Verificar se o texto está visível na página. Prefira browser_verify_element_visible se possível.
- Parâmetros:
text(string): TEXTO a verificar. Pode ser encontrado no snapshot assim:- role "Accessible Name": {TEXT}ou assim:- text: {TEXT}
- Somente leitura: false
- browser_verify_value
- Título: Verificar valor
- Descrição: Verificar valor do elemento
- Parâmetros:
type(string): Tipo do elementoelement(string): Descrição legível do elementotarget(string): Referência exata do elemento alvo do snapshot da páginavalue(string): Valor a verificar. Para checkbox, use "true" ou "false".
- Somente leitura: false