Playwright MCP

oficial

Servidor 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?

  • Navegar e interagir com páginas da web — peça ao assistente para abrir uma URL, clicar em elementos, preencher formulários ou extrair instantâneos estruturados de acessibilidade usando a automação de navegador do Playwright.
  • Configurar o comportamento do navegador — defina o tipo de navegador, tamanho da janela de visualização, emulação de dispositivo ou agente do usuário através dos argumentos --browser, --device, --viewport-size e --user-agent.
  • Gerenciar sessões e autenticação — use perfis persistentes (--user-data-dir), sessões isoladas (--isolated) ou arquivos de estado de armazenamento (--storage-state) para controlar o estado de login entre execuções.
  • Conectar a um navegador existente — anexe a uma instância em execução do Chrome ou Edge com a flag --extension para reutilizar sessões logadas sem reautenticar.
  • Controlar saída e instantâneos — capture mensagens do console, logs de rede e instantâneos de acessibilidade em arquivos ou stdout usando --output-dir, --output-mode e --snapshot-mode.

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 web através de snapshots de acessibilidade estruturados, eliminando a necessidade de capturas de tela ou modelos sintonizados 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 ao usar o CLI+SKILLS.

  • CLI: Agentes de codificação modernos preferem cada vez mais fluxos de trabalho baseados em CLI expostos como SKILLs em vez de MCP, porque as invocações de CLI são mais eficientes em tokens: elas evitam carregar grandes esquemas de ferramentas e árvores de acessibilidade detalhadas no contexto do modelo, permitindo que os agentes atuem através de comandos concisos e específicos. Isso torna CLI + SKILLS mais adequado para agentes de codificação de alto rendimento que precisam equilibrar a automação do 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: O 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 de auto-recuperação ou fluxos de trabalho autônomos de longa duração, onde manter o contexto contínuo do navegador supera as preocupações com custo de tokens.

Principais Características

  • Rápido e leve. Usa a árvore de acessibilidade do Playwright, não entrada baseada em pixels.
  • Amigável para LLMs. Não requer modelos de visão, opera puramente com dados estruturados.
  • Aplicação determinística de ferramentas. Evita a ambiguidade comum 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

Primeiros passos

Primeiro, instale o servidor Playwright MCP com seu cliente.

A configuração padrão funciona na maioria das ferramentas:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}

Install in VS Code Install in VS Code Insiders

Amp

Adicione através da tela de configurações da extensão Amp VS Code ou atualizando seu arquivo settings.json:

"amp.mcpServers": {
  "playwright": {
    "command": "npx",
    "args": [
      "@playwright/mcp@latest"
    ]
  }
}

Configuração via Amp CLI:

Adicione através do comando amp mcp add abaixo

amp mcp add playwright -- npx @playwright/mcp@latest
Antigravity

Adicione através das configurações do Antigravity ou atualizando seu arquivo de configuração:

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest"
      ]
    }
  }
}
Claude Code

Use a 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 a 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 do Codex MCP.

Copilot

Use a 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 da CLI do Copilot.

Cursor

Clique no botão para instalar:

Install in Cursor

Ou instale manualmente:

Vá para Cursor Settings -> MCP -> Add new MCP Server. Dê o nome que preferir, 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 a CLI do Factory para adicionar o servidor Playwright MCP:

droid mcp add playwright "npx @playwright/mcp@latest"

Alternativamente, digite /mcp dentro do droid Factory para abrir uma interface interativa para gerenciar servidores MCP.

Para mais informações, veja a documentação do Factory MCP.

Gemini CLI

Siga o guia de instalação do MCP, use a configuração padrão acima.

Goose

Clique no botão para instalar:

Install in Goose

Ou instale manualmente:

Vá para Advanced settings -> Extensions -> Add custom extension. Dê o nome que preferir, use o tipo STDIO, e defina command para npx @playwright/mcp. Clique em "Add Extension".

Grok

Use a 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 do Grok MCP.

Junie

Para adicionar o servidor Playwright MCP na CLI do Junie:

  1. Digite /mcp
  2. Pressione Ctrl+A para adicionar um novo servidor MCP
  3. 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 do Junie MCP.

Kiro

Add to 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:

Add MCP Server playwright to LM Studio

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 → Conectar mais ferramentas → + Adicionar novo MCP → Cole a configuração padrão acima.

Clique em Salvar.

VS Code

Clique no botão para instalar:

Install in VS Code Install in VS Code Insiders

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 a 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 do Windsurf MCP. 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 tem permissão para 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 tem permissão para 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 deve bloquear de solicitar. A lista de bloqueio é avaliada antes da lista de permissões. Se usada sem a lista de permissões, as 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 ser usado, valores possíveis: chrome, firefox, webkit, msedge.
env PLAYWRIGHT_MCP_BROWSER | | --caps | lista separada por vírgulas de capacidades adicionais a serem habilitadas, valores possíveis: vision, pdf, devtools.
env PLAYWRIGHT_MCP_CAPS | | --cdp-endpoint | endpoint CDP ao qual se conectar.
env PLAYWRIGHT_MCP_CDP_ENDPOINT | | --cdp-header <headers...> | cabeçalhos CDP a serem enviados 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, padrão de 30000ms
env PLAYWRIGHT_MCP_CDP_TIMEOUT | | --codegen | especifica a linguagem a ser usada para geração de código, valores possíveis: "typescript", "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 do console a serem retornadas: "error", "warning", "info", "debug". Cada nível inclui as mensagens dos níveis mais severos.
env PLAYWRIGHT_MCP_CONSOLE_LEVEL | | --device | dispositivo a ser emulado, 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-se a uma instância de navegador em execução (somente Edge/Chrome). Requer que a "Playwright Extension" esteja instalada.
env PLAYWRIGHT_MCP_EXTENSION | | --endpoint | endpoint do navegador vinculado ao qual se conectar.
env PLAYWRIGHT_MCP_ENDPOINT | | --grant-permissions <permissions...> | Lista de permissões a serem concedidas ao contexto do navegador, por exemplo "geolocation", "clipboard-read", "clipboard-write".
env PLAYWRIGHT_MCP_GRANT_PERMISSIONS | | --headless | executa o navegador em modo headless, modo headed 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 https
env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS | | --init-page <path...> | caminho para o arquivo TypeScript a ser avaliado no objeto de página do Playwright
env PLAYWRIGHT_MCP_INIT_PAGE | | --init-script <path...> | caminho para o arquivo JavaScript a ser adicionado como um 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 no disco.
env PLAYWRIGHT_MCP_ISOLATED | | --image-responses | se deve enviar respostas de imagem para o 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 em sandbox.
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 remoção de arquivos de saída antigos, em bytes.
env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE | | --output-mode | se deve salvar snapshots, mensagens do console, logs de rede em um arquivo ou na saída padrão. Pode ser "file" ou "stdout". O padrão é "stdout".
env PLAYWRIGHT_MCP_OUTPUT_MODE | | --port | porta para escutar o transporte SSE.
env PLAYWRIGHT_MCP_PORT | | --proxy-bypass | domínios separados por vírgula 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 em sandbox.
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-mode | ao tirar snapshots para respostas, especifica o modo a ser usado. 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 ser usado para ids de teste, o padrão é "data-testid"
env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE | | --timeout-action | especifica o tempo limite da 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 | | --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 especificado, um diretório temporário será criado.
env PLAYWRIGHT_MCP_USER_DATA_DIR | | --viewport-size | especifica o tamanho da janela de visualização 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 comum (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 as sessões se desejar 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 obtêm 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 --isolated ou aponte-o para um --user-data-dir distinto.

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 é fechada e todo o estado de armazenamento desta sessão é perdido. Você pode fornecer o estado de armazenamento inicial para o navegador através do contextOptions da configuração ou através do 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 Playwright MCP para Chrome permite que você se conecte a abas de navegador existentes e aproveite suas sessões logadas e o estado do navegador. Consulte microsoft/playwright › packages/extension para instruções de instalação e configuração.

Estado inicial

Existem várias maneiras de fornecer o estado inicial para o contexto do navegador ou uma página.

Para o estado de armazenamento, você pode:

  • Iniciar 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.
  • Iniciar 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-page para 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-script para apontar para um arquivo JavaScript que será adicionado como um 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;
  };

  /**
   * 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';
}

Servidor MCP autônomo

Ao executar o navegador headed 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. Consulte as Práticas Recomendadas de Segurança do MCP para orientação sobre como proteger sua implantação.

Docker

NOTA: A implementação 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 do host 8931 e poderá ser acessado por qualquer cliente MCP.

Você mesmo pode construir a imagem Docker.

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: Realiza um clique em uma página da web
  • Parâmetros:
    • element (string, opcional): Descrição legível do elemento usada para obter permissão para interagir com o elemento
    • target (string): Referência exata do elemento alvo do snapshot da página ou um seletor de elemento único
    • doubleClick (boolean, opcional): Se deve realizar um clique duplo em vez de um clique simples
    • button (string, opcional): Botão a clicar, padrão é esquerdo
    • modifiers (array, opcional): Teclas modificadoras a pressionar
  • Somente leitura: false
  • browser_close
    • Título: Fechar navegador
    • Descrição: Fecha 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): Retorna 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: Realiza arrastar e soltar entre dois elementos
    • Parâmetros:
      • startElement (string, opcional): Descrição legível do elemento de origem usada para obter permissão para interagir com o elemento
      • startTarget (string): Referência exata do elemento alvo do snapshot da página ou um seletor de elemento único
      • endElement (string, opcional): Descrição legível do elemento de destino usada para obter permissão para interagir com o elemento
      • endTarget (string): Referência exata do elemento alvo do 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: Solta 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 para interagir com o elemento
      • target (string): Referência exata do elemento alvo do snapshot da página ou um seletor de elemento único
      • paths (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 string (ex.: {"text/plain": "hello", "text/uri-list": "https://example.com"}).
    • Somente leitura: false
  • browser_evaluate
    • Título: Avaliar JavaScript
    • Descrição: Avalia expressão JavaScript na página ou elemento
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão para interagir com o elemento
      • target (string, opcional): Referência exata do elemento alvo do snapshot da página ou um seletor de elemento único
      • function (string): () => { /* código / } ou (element) => { / código */ } quando o elemento é fornecido
      • filename (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: Envia 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: Preenche vários campos de formulário
    • Parâmetros:
      • fields (array): Campos a preencher
    • Somente leitura: false
  • browser_find
    • Título: Localizar no snapshot da página
    • Descrição: Pesquisa o snapshot de acessibilidade da página atual por texto ou uma expressão regular. Retorna nós do snapshot correspondentes com algumas linhas de contexto ao redor (como trechos de pesquisa), cada um exibido sob seu caminho a partir da raiz da árvore, o que é mais econômico do que capturar o snapshot inteiro quando você só precisa localizar um elemento e sua referência.
    • Parâmetros:
      • text (string, opcional): Texto simples a pesquisar no snapshot da página (correspondência de substring sem distinção entre maiúsculas e minúsculas). Forneça text ou regex, não ambos.
      • regex (string, opcional): Expressão regular a 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. Forneça text ou regex, não ambos.
    • Somente leitura: true
  • browser_handle_dialog
    • Título: Manipular um diálogo
    • Descrição: Manipula 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: Passa o mouse sobre um elemento na página
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão para interagir com o elemento
      • target (string): Referência exata do elemento alvo do snapshot da página ou um seletor de elemento único
    • Somente leitura: false
  • browser_navigate
    • Título: Navegar para uma URL
    • Descrição: Navega para uma URL
    • Parâmetros:
      • url (string): A URL para a qual navegar
    • Somente leitura: false
  • browser_navigate_back
    • Título: Voltar
    • Descrição: Volta para a página anterior no histórico
    • Parâmetros: Nenhum
    • Somente leitura: false
  • browser_network_request
    • Título: Mostrar detalhes da requisição de rede
    • Descrição: Retorna detalhes completos (cabeçalhos e corpo) de uma única requisição de rede, ou uma única parte se part estiver definido. Use o número de browser_network_requests.
    • Parâmetros:
      • index (integer): Índice baseado em 1 da requisição, conforme exibido por browser_network_requests.
      • part (string, opcional): Retorna apenas esta parte da requisiçã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 requisições de rede
    • Descrição: Retorna uma lista numerada de requisiçõ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): Retorna apenas requisições cuja URL corresponda a esta regex (ex.: "/api/.*user").
      • filename (string, opcional): Nome do arquivo para salvar as requisições de rede. Se não fornecido, as requisições são retornadas como texto.
    • Somente leitura: true
  • browser_press_key
    • Título: Pressionar uma tecla
    • Descrição: Pressiona uma tecla no teclado
    • Parâmetros:
      • key (string): Nome da tecla a pressionar ou um caractere a gerar, como ArrowLeft ou a
    • Somente leitura: false
  • browser_resize
    • Título: Redimensionar janela do navegador
    • Descrição: Redimensiona a janela do navegador
    • Parâmetros:
      • width (number): Largura da janela do navegador
      • height (number): Altura da janela do navegador
    • Somente leitura: false
  • browser_run_code_unsafe
    • Título: Executar código Playwright (inseguro)
    • Descrição: Executa 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 a 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): Carrega código do arquivo especificado. Se ambos code e filename forem fornecidos, code será ignorado.
    • Somente leitura: false
  • browser_select_option
    • Título: Selecionar opção
    • Descrição: Seleciona uma opção em um menu suspenso
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão para interagir com o elemento
      • target (string): Referência exata do elemento alvo do snapshot da página ou um seletor de elemento único
      • values (array): Array de valores a 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: Captura o snapshot de acessibilidade da página atual, isso é melhor que uma captura de tela
    • Parâmetros:
      • target (string, opcional): Referência exata do elemento alvo do snapshot da página ou um seletor de elemento único
      • filename (string, opcional): Salva o snapshot em um arquivo markdown em vez de retorná-lo na resposta.
      • depth (number, opcional): Limita a profundidade da árvore do snapshot
      • boxes (boolean, opcional): Inclui 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: Fazer uma captura de tela
    • Descrição: Faz uma captura de tela da página atual. Você não pode realizar ações com base na captura de tela, use browser_snapshot para ações.
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão para interagir com o elemento
      • target (string, opcional): Referência exata do elemento alvo do snapshot da página ou um seletor de elemento único
      • type (string): Formato de imagem para a captura de tela. Padrão é png.
      • filename (string, opcional): Nome do arquivo para salvar a captura de tela. Padrão é page-{timestamp}.{png|jpeg} se não especificado. Prefira nomes de arquivo relativos para permanecer dentro do diretório de saída.
      • fullPage (boolean, opcional): Quando true, faz uma captura de tela da página inteira com rolagem, em vez da viewport atualmente visível. Não pode ser usado com capturas de tela de elementos.
      • scale (string): Escala de resolução da imagem. "css" produz uma captura de tela dimensionada em pixels CSS (menor, consistente entre dispositivos). "device" produz uma captura de tela 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: Digita texto em um elemento editável
    • Parâmetros:
      • element (string, opcional): Descrição legível do elemento usada para obter permissão para interagir com o elemento
      • target (string): Referência exata do elemento alvo do snapshot da página ou um seletor de elemento único
      • text (string): Texto a digitar no elemento
      • submit (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 teclas 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 segundos
      • text (string, opcional): O texto a aguardar
      • textGone (string, opcional): O texto a aguardar que desapareça
    • 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 executar
      • index (número, opcional): Índice da aba, usado para fechar/selecionar. Se omitido ao 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 (ativação 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 CLI, variáveis de ambiente e arquivo de configuração.
    • Parâmetros: Nenhum
    • Somente leitura: true
Rede (ativação via --caps=network)
  • browser_network_state_set
    • Título: Definir estado da rede
    • Descrição: Define o estado da rede do navegador como online ou offline. Quando offline, todas as requisições de rede falharão.
    • Parâmetros:
      • state (string): Defina como "offline" para simular modo offline, "online" para restaurar conectividade de rede
    • Somente leitura: false
  • browser_route
    • Título: Simular requisições de rede
    • Descrição: Configura uma rota para simular requisições de rede que correspondam 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 requisiçã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 correspondam 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 (ativação 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 a 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 a 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ínio
      • path (string, opcional): Filtrar cookies por caminho
    • Somente leitura: true
  • browser_cookie_set
    • Título: Definir cookie
    • Descrição: Define um cookie com flags opcionais (domínio, caminho, expiração, httpOnly, secure, sameSite)
    • Parâmetros:
      • name (string): Nome do cookie
      • value (string): Valor do cookie
      • domain (string, opcional): Domínio do cookie
      • path (string, opcional): Caminho do cookie
      • expires (número, opcional): Expiração do cookie como timestamp Unix
      • httpOnly (booleano, opcional): Se o cookie é somente HTTP
      • secure (booleano, opcional): Se o cookie é seguro
      • sameSite (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 a 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 a 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 a definir
      • value (string): Valor a 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 a 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 a 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 a definir
      • value (string): Valor a definir
    • Somente leitura: false
  • browser_set_storage_state
    • Título: Restaurar estado do armazenamento
    • Descrição: Restaura o estado do 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 do armazenamento de onde restaurar
    • Somente leitura: false
  • browser_storage_state
    • Título: Salvar estado do armazenamento
    • Descrição: Salva o estado do armazenamento (cookies, armazenamento local) em um arquivo para reutilização posterior
    • Parâmetros:
      • filename (string, opcional): Nome do arquivo para salvar o estado do armazenamento. Padrão para storage-state-{timestamp}.json se não especificado.
    • Somente leitura: true
DevTools (ativação 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 elemento
      • target (string): Referência exata do elemento alvo do snapshot da página, ou um seletor de elemento único
      • style (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): Pausa a execução em um : específico, ex. "example.spec.ts:42".
    • Somente leitura: false
  • 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_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ítulo
      • description (string, opcional): Descrição do capítulo
      • duration (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 realizadas na página.
    • Parâmetros: Nenhum
    • Somente leitura: true
  • browser_video_show_actions
    • Título: Mostrar sobreposições de ação
    • Descrição: Anota ações subsequentes realizadas na página com um balão que nomeia a ação e destaca o elemento alvo. Útil durante gravação de vídeo ou screencasting.
    • Parâmetros:
      • duration (número, opcional): 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 relativo à página. Padrão top-right.
      • cursor (string, opcional): Decoração do cursor para ações de ponteiro. "pointer" (padrão) anima um ponteiro do mouse do ponto de ação anterior para o próximo; "none" desabilita a decoração do cursor.
    • Somente leitura: true
Baseado em coordenadas (ative com --caps=vision)
  • browser_mouse_click_xy
    • Título: Clicar
    • Descrição: Clica o botão do mouse em uma determinada posição
    • Parâmetros:
      • x (number): Coordenada X
      • y (number): Coordenada Y
      • button (string, opcional): Botão a clicar, padrão é esquerdo
      • clickCount (number, opcional): Número de cliques, padrão é 1
      • delay (number, opcional): Tempo de espera entre pressionar e soltar o mouse em milissegundos, padrão é 0
    • Somente leitura: false
  • browser_mouse_down
    • Título: Pressionar mouse
    • Descrição: Pressiona o botão do mouse
    • Parâmetros:
      • button (string, opcional): Botão a pressionar, padrão é esquerdo
    • Somente leitura: false
  • browser_mouse_drag_xy
    • Título: Arrastar mouse
    • Descrição: Arrasta o botão esquerdo do mouse para uma determinada posição
    • Parâmetros:
      • startX (number): Coordenada X inicial
      • startY (number): Coordenada Y inicial
      • endX (number): Coordenada X final
      • endY (number): Coordenada Y final
    • Somente leitura: false
  • browser_mouse_move_xy
    • Título: Mover mouse
    • Descrição: Move o mouse para uma determinada posição
    • Parâmetros:
      • x (number): Coordenada X
      • y (number): Coordenada Y
    • Somente leitura: false
  • browser_mouse_up
    • Título: Soltar mouse
    • Descrição: Solta o botão do mouse
    • Parâmetros:
      • button (string, opcional): Botão a soltar, padrão é esquerdo
    • Somente leitura: false
  • browser_mouse_wheel
    • Título: Rolar a roda do mouse
    • Descrição: Rola a roda do mouse
    • Parâmetros:
      • deltaX (number): Delta X
      • deltaY (number): Delta Y
    • Somente leitura: false
Geração de PDF (ative com --caps=pdf)
  • browser_pdf_save
    • Título: Salvar como PDF
    • Descrição: Salva a página como PDF
    • Parâmetros:
      • filename (string, opcional): Nome do arquivo para salvar o PDF. Padrão é page-{timestamp}.pdf se não especificado. Prefira nomes de arquivo relativos para permanecer dentro do diretório de saída.
    • Somente leitura: true
Asserções de teste (ative com --caps=testing)
  • browser_generate_locator
    • Título: Criar localizador para elemento
    • Descrição: Gera um 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 para interagir com o elemento
      • target (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: Verifica se o elemento está visível na página
    • Parâmetros:
      • role (string): ROLE do elemento. Pode ser encontrado no snapshot assim: - {ROLE} "Accessible Name":
      • accessibleName (string): ACCESSIBLE_NAME 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: Verifica se a lista está visível na página
    • Parâmetros:
      • element (string): Descrição legível da lista
      • target (string): Referência exata do elemento alvo que aponta para a lista
      • items (array): Itens a verificar
    • Somente leitura: false
  • browser_verify_text_visible
    • Título: Verificar texto visível
    • Descrição: Verifica 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: Verifica o valor do elemento
    • Parâmetros:
      • type (string): Tipo do elemento
      • element (string): Descrição legível do elemento
      • target (string): Referência exata do elemento alvo do snapshot da página
      • value (string): Valor a verificar. Para checkbox, use "true" ou "false".
    • Somente leitura: false