Playwright MCP

oficial

Servidor oficial de Playwright MCP para automatización de navegadores, inspección de páginas, capturas de pantalla e interacción web desde Claude, Cursor y otros agentes de IA.

¿Qué puedes hacer con Playwright MCP?

  • Navegar e interactuar con páginas web — pida al asistente que abra una URL, haga clic en elementos, complete formularios o extraiga capturas de accesibilidad estructuradas mediante la automatización del navegador de Playwright.
  • Configurar el comportamiento del navegador — establezca el tipo de navegador, el tamaño de la ventana gráfica, la emulación de dispositivos o el agente de usuario mediante los argumentos --browser, --device, --viewport-size y --user-agent.
  • Gestionar sesiones y autenticación — use perfiles persistentes (--user-data-dir), sesiones aisladas (--isolated) o archivos de estado de almacenamiento (--storage-state) para controlar el estado de inicio de sesión entre ejecuciones.
  • Conectarse a un navegador existente — conéctese a una instancia en ejecución de Chrome o Edge con la bandera --extension para reutilizar sesiones iniciadas sin volver a autenticarse.
  • Controlar la salida y las capturas — capture mensajes de consola, registros de red y capturas de accesibilidad en archivos o en la salida estándar usando --output-dir, --output-mode y --snapshot-mode.

Documentación

Playwright MCP

Un servidor del Protocolo de Contexto de Modelo (MCP) que proporciona capacidades de automatización de navegadores usando Playwright. Este servidor permite a los LLMs interactuar con páginas web a través de instantáneas estructuradas de accesibilidad, evitando la necesidad de capturas de pantalla o modelos ajustados visualmente.

Playwright MCP vs Playwright CLI

Este paquete proporciona una interfaz MCP para Playwright. Si estás usando un agente de codificación, podrías beneficiarte de usar CLI+SKILLS en su lugar.

  • CLI: Los agentes de codificación modernos prefieren cada vez más flujos de trabajo basados en CLI expuestos como SKILLs sobre MCP porque las invocaciones CLI son más eficientes en tokens: evitan cargar grandes esquemas de herramientas y árboles de accesibilidad detallados en el contexto del modelo, permitiendo a los agentes actuar mediante comandos concisos y específicos. Esto hace que CLI + SKILLS sea más adecuado para agentes de codificación de alto rendimiento que deben equilibrar la automatización del navegador con grandes bases de código, pruebas y razonamiento dentro de ventanas de contexto limitadas.
    Más información sobre Playwright CLI con SKILLS.

  • MCP: MCP sigue siendo relevante para bucles agénticos especializados que se benefician de un estado persistente, introspección enriquecida y razonamiento iterativo sobre la estructura de la página, como la automatización exploratoria, pruebas de autorreparación o flujos de trabajo autónomos de larga duración donde mantener un contexto de navegador continuo supera las preocupaciones de costo de tokens.

Características Clave

  • Rápido y ligero. Utiliza el árbol de accesibilidad de Playwright, no entradas basadas en píxeles.
  • Amigable con LLMs. No se necesitan modelos de visión, opera puramente con datos estructurados.
  • Aplicación determinista de herramientas. Evita la ambigüedad común en enfoques basados en capturas de pantalla.

Requisitos

  • Node.js 18 o más reciente
  • VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie o cualquier otro cliente MCP

Primeros pasos

Primero, instala el servidor Playwright MCP con tu cliente.

La configuración estándar funciona en la mayoría de las herramientas:

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

Install in VS Code Install in VS Code Insiders

Amp

Añádelo a través de la pantalla de configuración de la extensión Amp VS Code o actualizando tu archivo settings.json:

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

Configuración CLI de Amp:

Añádelo mediante el comando amp mcp add a continuación

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

Añádelo a través de la configuración de Antigravity o actualizando tu archivo de configuración:

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

Usa la CLI de Claude Code para añadir el servidor Playwright MCP:

claude mcp add playwright npx @playwright/mcp@latest
Claude Desktop

Sigue la guía de instalación MCP, usa la configuración estándar de arriba.

Cline

Sigue las instrucciones en la sección Configurando Servidores MCP

Ejemplo: Configuración Local

Añade lo siguiente a tu archivo cline_mcp_settings.json:

{
  "mcpServers": {
    "playwright": {
      "type": "stdio",
      "command": "npx",
      "timeout": 30,
      "args": [
        "-y",
        "@playwright/mcp@latest"
      ],
      "disabled": false
    }
  }
}
Codex

Usa la CLI de Codex para añadir el servidor Playwright MCP:

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

Alternativamente, crea o edita el archivo de configuración ~/.codex/config.toml y añade:

[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]

Para más información, consulta la documentación de Codex MCP.

Copilot

Usa la CLI de Copilot para añadir interactivamente el servidor Playwright MCP:

/mcp add

Alternativamente, crea o edita el archivo de configuración ~/.copilot/mcp-config.json y añade:

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

Para más información, consulta la documentación de la CLI de Copilot.

Cursor

Haz clic en el botón para instalar:

Install in Cursor

O instala manualmente:

Ve a Cursor Settings -> MCP -> Add new MCP Server. Nómbralo a tu gusto, usa el tipo command con el comando npx @playwright/mcp@latest. También puedes verificar la configuración o añadir argumentos de comando haciendo clic en Edit.

Factory

Usa la CLI de Factory para añadir el servidor Playwright MCP:

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

Alternativamente, escribe /mcp dentro de Factory droid para abrir una interfaz de usuario interactiva para gestionar servidores MCP.

Para más información, consulta la documentación de Factory MCP.

Gemini CLI

Sigue la guía de instalación MCP, usa la configuración estándar de arriba.

Goose

Haz clic en el botón para instalar:

Install in Goose

O instala manualmente:

Ve a Advanced settings -> Extensions -> Add custom extension. Nómbralo a tu gusto, usa el tipo STDIO, y establece command a npx @playwright/mcp. Haz clic en "Add Extension".

Grok

Usa la CLI de Grok para añadir el servidor Playwright MCP:

grok mcp add playwright -- npx @playwright/mcp@latest

Alternativamente, crea o edita el archivo de configuración ~/.grok/config.toml y añade:

[mcp_servers.playwright]
command = "npx"
args = ["@playwright/mcp@latest"]

Para más información, consulta la documentación de Grok MCP.

Junie

Para añadir el servidor Playwright MCP en Junie CLI:

  1. Escribe /mcp
  2. Presiona Ctrl+A para añadir un nuevo servidor MCP
  3. Selecciona Playwright de la lista

Alternativamente, añade a .junie/mcp/mcp.json:

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

Para más información, consulta la documentación de configuración de Junie MCP.

Kiro

Add to Kiro

Sigue la documentación de Servidores MCP. Por ejemplo en .kiro/settings/mcp.json:

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

Haz clic en el botón para instalar:

Add MCP Server playwright to LM Studio

O instala manualmente:

Ve a Program en la barra lateral derecha -> Install -> Edit mcp.json. Usa la configuración estándar de arriba.

opencode

Sigue la documentación de Servidores MCP. Por ejemplo en ~/.config/opencode/opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "playwright": {
      "type": "local",
      "command": [
        "npx",
        "@playwright/mcp@latest"
      ],
      "enabled": true
    }
  }
}

Qodo Gen

Abre el panel de chat de Qodo Gen en VSCode o IntelliJ → Conectar más herramientas → + Añadir nuevo MCP → Pega la configuración estándar de arriba.

Haz clic en Guardar.

VS Code

Haz clic en el botón para instalar:

Install in VS Code Install in VS Code Insiders

O instala manualmente:

Sigue la guía de instalación MCP, usa la configuración estándar de arriba. También puedes instalar el servidor Playwright MCP usando la CLI de VS Code:

# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'

Después de la instalación, el servidor Playwright MCP estará disponible para usar con tu agente GitHub Copilot en VS Code.

Warp

Ve a Settings -> AI -> Manage MCP Servers -> + Add para añadir un Servidor MCP. Usa la configuración estándar de arriba.

Alternativamente, usa el comando de barra /add-mcp en el prompt de Warp y pega la configuración estándar de arriba:

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

Sigue la documentación de Windsurf MCP. Usa la configuración estándar de arriba.

Configuración

El servidor Playwright MCP soporta los siguientes argumentos. Pueden proporcionarse en la configuración JSON anterior, como parte de la lista "args":

OpciónDescripción
--allowed-hosts <hosts...>lista separada por comas de hosts desde los que este servidor puede servir. Por defecto, el host al que está vinculado el servidor. Pase '*' para deshabilitar la verificación de host.
env PLAYWRIGHT_MCP_ALLOWED_HOSTS
--allowed-origins lista separada por punto y coma de orígenes CONFIABLES que el navegador puede solicitar. Por defecto, se permiten todos. Importante: no sirve como límite de seguridad y no afecta a las redirecciones.
env PLAYWRIGHT_MCP_ALLOWED_ORIGINS
--allow-unrestricted-file-accesspermite el acceso a archivos fuera de las raíces del espacio de trabajo. También permite el acceso sin restricciones a las URL file://. Por defecto, el acceso al sistema de archivos está restringido solo a los directorios raíz del espacio de trabajo (o al directorio de trabajo actual si no hay raíces configuradas), y la navegación a las URL file:// está bloqueada.
env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS
--blocked-origins lista separada por punto y coma de orígenes que el navegador tiene bloqueado solicitar. La lista de bloqueo se evalúa antes que la lista de permitidos. Si se usa sin la lista de permitidos, las solicitudes que no coincidan con la lista de bloqueo se siguen permitiendo. Importante: no sirve como límite de seguridad y no afecta a las redirecciones.
env PLAYWRIGHT_MCP_BLOCKED_ORIGINS
--block-service-workersbloquea los service workers
env PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS
--browser navegador o canal de Chrome a usar, valores posibles: chrome, firefox, webkit, msedge.
env PLAYWRIGHT_MCP_BROWSER
--caps lista separada por comas de capacidades adicionales a habilitar, valores posibles: vision, pdf, devtools.
env PLAYWRIGHT_MCP_CAPS
--cdp-endpoint endpoint CDP al que conectarse.
env PLAYWRIGHT_MCP_CDP_ENDPOINT
--cdp-header <headers...>cabeceras CDP a enviar con la solicitud de conexión, se pueden especificar varias.
env PLAYWRIGHT_MCP_CDP_HEADERS
--cdp-timeout tiempo de espera en milisegundos para conectarse al endpoint CDP, por defecto 30000ms
env PLAYWRIGHT_MCP_CDP_TIMEOUT
--codegen especifica el lenguaje a usar para la generación de código, valores posibles: "typescript", "none". Por defecto es "typescript".
env PLAYWRIGHT_MCP_CODEGEN
--config ruta al archivo de configuración.
env PLAYWRIGHT_MCP_CONFIG
--console-level nivel de mensajes de consola a devolver: "error", "warning", "info", "debug". Cada nivel incluye los mensajes de los niveles más severos.
env PLAYWRIGHT_MCP_CONSOLE_LEVEL
--device dispositivo a emular, por ejemplo: "iPhone 15"
env PLAYWRIGHT_MCP_DEVICE
--mobileemula un dispositivo móvil genérico (Pixel 10 para Chromium, iPhone 17 para WebKit). Las páginas móviles suelen ser más ligeras, lo que ahorra tokens. No se puede combinar con --device.
env PLAYWRIGHT_MCP_MOBILE
--executable-path ruta al ejecutable del navegador.
env PLAYWRIGHT_MCP_EXECUTABLE_PATH
--extensionConecta a una instancia de navegador en ejecución (solo Edge/Chrome). Requiere que la "Playwright Extension" esté instalada.
env PLAYWRIGHT_MCP_EXTENSION
--endpoint endpoint del navegador vinculado al que conectarse.
env PLAYWRIGHT_MCP_ENDPOINT
--grant-permissions <permissions...>Lista de permisos a conceder al contexto del navegador, por ejemplo "geolocation", "clipboard-read", "clipboard-write".
env PLAYWRIGHT_MCP_GRANT_PERMISSIONS
--headlessejecuta el navegador en modo headless, por defecto con interfaz gráfica
env PLAYWRIGHT_MCP_HEADLESS
--host host al que vincular el servidor. Por defecto es localhost. Use 0.0.0.0 para vincular a todas las interfaces.
env PLAYWRIGHT_MCP_HOST
--ignore-https-errorsignora los errores https
env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS
--init-page <path...>ruta al archivo TypeScript a evaluar en el objeto de página de Playwright
env PLAYWRIGHT_MCP_INIT_PAGE
--init-script <path...>ruta al archivo JavaScript a añadir como script de inicialización. El script se evaluará en cada página antes que cualquier script de la página. Se puede especificar varias veces.
env PLAYWRIGHT_MCP_INIT_SCRIPT
--isolatedmantiene el perfil del navegador en memoria, no lo guarda en disco.
env PLAYWRIGHT_MCP_ISOLATED
--image-responses si se deben enviar respuestas de imagen al cliente. Puede ser "allow" u "omit", por defecto "allow".
env PLAYWRIGHT_MCP_IMAGE_RESPONSES
--no-sandboxdeshabilita el sandbox para todos los tipos de proceso que normalmente están en sandbox.
env PLAYWRIGHT_MCP_NO_SANDBOX
--output-dir ruta al directorio para archivos de salida.
env PLAYWRIGHT_MCP_OUTPUT_DIR
--output-max-size Umbral para desalojar archivos de salida antiguos, en bytes.
env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE
--output-mode si se deben guardar las capturas, mensajes de consola, registros de red en un archivo o en la salida estándar. Puede ser "file" o "stdout". Por defecto es "stdout".
env PLAYWRIGHT_MCP_OUTPUT_MODE
--port puerto en el que escuchar para el transporte SSE.
env PLAYWRIGHT_MCP_PORT
--proxy-bypass dominios separados por comas para omitir el proxy, por ejemplo ".com,chromium.org,.domain.com"
env PLAYWRIGHT_MCP_PROXY_BYPASS
--proxy-server especifica el servidor proxy, por ejemplo "http://myproxy:3128" o "socks5://myproxy:8080"
env PLAYWRIGHT_MCP_PROXY_SERVER
--sandboxhabilita el sandbox para todos los tipos de proceso que normalmente no están en sandbox.
env PLAYWRIGHT_MCP_SANDBOX
--save-sessionSi se debe guardar la sesión de Playwright MCP en el directorio de salida.
env PLAYWRIGHT_MCP_SAVE_SESSION
--secrets ruta a un archivo que contiene secretos en formato dotenv
env PLAYWRIGHT_MCP_SECRETS_FILE
--shared-browser-contextreutiliza el mismo contexto de navegador entre todos los clientes HTTP conectados.
env PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT
--snapshot-mode al tomar capturas para las respuestas, especifica el modo a usar. Puede ser "full" o "none". Por defecto es "full".
env PLAYWRIGHT_MCP_SNAPSHOT_MODE
--storage-state ruta al archivo de estado de almacenamiento para sesiones aisladas.
env PLAYWRIGHT_MCP_STORAGE_STATE
--test-id-attribute especifica el atributo a usar para los ids de prueba, por defecto "data-testid"
env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE
--timeout-action especifica el tiempo de espera de acción en milisegundos, por defecto 5000ms
env PLAYWRIGHT_MCP_TIMEOUT_ACTION
--timeout-navigation especifica el tiempo de espera de navegación en milisegundos, por defecto 60000ms
env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION
--user-agent especifica la cadena de agente de usuario
env PLAYWRIGHT_MCP_USER_AGENT
--user-data-dir ruta al directorio de datos de usuario. Si no se especifica, se creará un directorio temporal.
env PLAYWRIGHT_MCP_USER_DATA_DIR
--viewport-size especifica el tamaño de la ventana gráfica del navegador en píxeles, por ejemplo "1280x720"
env PLAYWRIGHT_MCP_VIEWPORT_SIZE

Perfil de usuario

Puede ejecutar Playwright MCP con un perfil persistente como un navegador normal (por defecto), en contextos aislados para sesiones de prueba, o conectarse a su navegador existente usando la extensión del navegador.

Perfil persistente

Toda la información de inicio de sesión se almacenará en el perfil persistente, puede eliminarlo entre sesiones si desea borrar el estado sin conexión. El perfil persistente se encuentra en las siguientes ubicaciones y puede anularlo con el 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} se deriva de la raíz del espacio de trabajo del cliente MCP, por lo que diferentes proyectos obtienen perfiles separados automáticamente.

[!IMPORTANT] Un perfil persistente solo puede ser usado por una instancia de navegador a la vez, por lo que los clientes MCP concurrentes que comparten el mismo espacio de trabajo entrarán en conflicto. Para ejecutar varios clientes en paralelo, inicie cada cliente adicional con --isolated o apúntelo a un --user-data-dir distinto.

Aislado

En el modo aislado, cada sesión se inicia en el perfil aislado. Cada vez que le pida a MCP que cierre el navegador, la sesión se cierra y todo el estado de almacenamiento de esta sesión se pierde. Puede proporcionar un estado de almacenamiento inicial al navegador a través de contextOptions de la configuración o mediante el argumento --storage-state. Obtenga más información sobre el estado de almacenamiento aquí.

{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": [
        "@playwright/mcp@latest",
        "--isolated",
        "--storage-state={path/to/storage.json}"
      ]
    }
  }
}

Extensión del navegador

La extensión de Chrome de Playwright MCP le permite conectarse a pestañas de navegador existentes y aprovechar sus sesiones iniciadas y el estado del navegador. Consulte microsoft/playwright › packages/extension para obtener instrucciones de instalación y configuración.

Estado inicial

Hay múltiples formas de proporcionar el estado inicial al contexto del navegador o a una página.

Para el estado de almacenamiento, puede:

  • Comenzar con un directorio de datos de usuario usando el argumento --user-data-dir. Esto persistirá todos los datos del navegador entre sesiones.
  • Comenzar con un archivo de estado de almacenamiento usando el argumento --storage-state. Esto cargará cookies y almacenamiento local desde el archivo en un contexto de navegador aislado.

Para el estado de la página, puede usar:

  • --init-page para apuntar a un archivo TypeScript que se evaluará en el objeto de página de Playwright. Esto le permite ejecutar código arbitrario para configurar la 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 apuntar a un archivo JavaScript que se añadirá como script de inicialización. El script se evaluará en cada página antes que cualquier script de la página. Esto es útil para anular las APIs del navegador o configurar el entorno.
// init-script.js
window.isPlaywrightMCP = true;

Archivo de configuración

El servidor Playwright MCP se puede configurar usando un archivo de configuración JSON. Puede especificar el archivo de configuración usando la opción de línea de comandos --config:

npx @playwright/mcp@latest --config path/to/config.json
Esquema del archivo de configuración
{
  /**
   * 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 independiente

Al ejecutar el navegador con interfaz gráfica en un sistema sin pantalla o desde procesos de trabajo de los IDEs, ejecute el servidor MCP desde un entorno con DISPLAY y pase el indicador --port para habilitar el transporte HTTP.

npx @playwright/mcp@latest --port 8931

Y luego, en la configuración del cliente MCP, establezca url en el endpoint HTTP:

{
  "mcpServers": {
    "playwright": {
      "url": "http://localhost:8931/mcp"
    }
  }
}

Seguridad

Playwright MCP no es un límite de seguridad. Consulte las Mejores prácticas de seguridad de MCP para obtener orientación sobre cómo asegurar su despliegue.

Docker

NOTA: La implementación de Docker solo admite chromium sin interfaz gráfica por el momento.

{
  "mcpServers": {
    "playwright": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--init", "--pull=always", "mcr.microsoft.com/playwright/mcp"]
    }
  }
}

O si prefiere ejecutar el contenedor como un servicio de larga duración en lugar de dejar que el cliente MCP lo inicie, 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

El servidor escuchará en el puerto del host 8931 y cualquier cliente MCP podrá acceder a él.

Puede construir la imagen Docker usted mismo.

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);

  // ...
});

Herramientas

Automatización principal - **browser_click**
  • Título: Clic
  • Descripción: Realiza un clic en una página web
  • Parámetros:
    • element (string, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con él
    • target (string): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento único
    • doubleClick (boolean, opcional): Si se debe realizar un doble clic en lugar de un clic simple
    • button (string, opcional): Botón a clicar, por defecto izquierdo
    • modifiers (array, opcional): Teclas modificadoras a presionar
  • Solo lectura: false
  • browser_close
    • Título: Cerrar navegador
    • Descripción: Cierra la página
    • Parámetros: Ninguno
    • Solo lectura: false
  • browser_console_messages
    • Título: Obtener mensajes de consola
    • Descripción: Devuelve todos los mensajes de consola
    • Parámetros:
      • level (string): Nivel de los mensajes de consola a devolver. Cada nivel incluye los mensajes de niveles más severos. Por defecto "info".
      • all (boolean, opcional): Devuelve todos los mensajes de consola desde el inicio de la sesión, no solo desde la última navegación. Por defecto false.
      • filename (string, opcional): Nombre de archivo para guardar los mensajes de consola. Si no se proporciona, los mensajes se devuelven como texto.
    • Solo lectura: true
  • browser_drag
    • Título: Arrastrar ratón
    • Descripción: Realiza arrastrar y soltar entre dos elementos
    • Parámetros:
      • startElement (string, opcional): Descripción legible del elemento fuente utilizada para obtener permiso para interactuar con él
      • startTarget (string): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento único
      • endElement (string, opcional): Descripción legible del elemento destino utilizada para obtener permiso para interactuar con él
      • endTarget (string): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento único
    • Solo lectura: false
  • browser_drop
    • Título: Soltar archivos o datos sobre un elemento
    • Descripción: Suelta archivos o datos con tipo MIME sobre un elemento, como si se arrastraran desde fuera de la página. Se debe proporcionar al menos uno de "paths" o "data".
    • Parámetros:
      • element (string, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con él
      • target (string): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento único
      • paths (array, opcional): Rutas absolutas a los archivos a soltar sobre el elemento.
      • data (object, opcional): Datos a soltar, como un mapa de tipo MIME a valor de cadena (ej. {"text/plain": "hola", "text/uri-list": "https://example.com"}).
    • Solo lectura: false
  • browser_evaluate
    • Título: Evaluar JavaScript
    • Descripción: Evalúa una expresión JavaScript en la página o elemento
    • Parámetros:
      • element (string, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con él
      • target (string, opcional): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento único
      • function (string): () => { /* código / } o (element) => { / código */ } cuando se proporciona elemento
      • filename (string, opcional): Nombre de archivo para guardar el resultado. Si no se proporciona, el resultado se devuelve como texto.
    • Solo lectura: false
  • browser_file_upload
    • Título: Subir archivos
    • Descripción: Sube uno o varios archivos
    • Parámetros:
      • paths (array, opcional): Las rutas absolutas a los archivos a subir. Puede ser un solo archivo o múltiples archivos. Si se omite, se cancela el selector de archivos.
    • Solo lectura: false
  • browser_fill_form
    • Título: Rellenar formulario
    • Descripción: Rellena múltiples campos de formulario
    • Parámetros:
      • fields (array): Campos a rellenar
    • Solo lectura: false
  • browser_find
    • Título: Buscar en instantánea de página
    • Descripción: Busca en la instantánea de accesibilidad de la página actual texto o una expresión regular. Devuelve nodos coincidentes de la instantánea con unas pocas líneas de contexto circundante (como fragmentos de búsqueda), cada uno mostrado bajo su ruta desde la raíz del árbol, lo cual es más económico que capturar la instantánea completa cuando solo necesitas localizar un elemento y su referencia.
    • Parámetros:
      • text (string, opcional): Texto plano a buscar en la instantánea de la página (coincidencia de subcadena insensible a mayúsculas). Proporciona texto o regex, no ambos.
      • regex (string, opcional): Expresión regular a buscar en la instantánea de la página. La coincidencia distingue mayúsculas por defecto; envuelve el patrón en barras para añadir flags, ej. "/error/i" para insensible a mayúsculas. Proporciona texto o regex, no ambos.
    • Solo lectura: true
  • browser_handle_dialog
    • Título: Manejar un diálogo
    • Descripción: Maneja un diálogo
    • Parámetros:
      • accept (boolean): Si aceptar el diálogo.
      • promptText (string, opcional): El texto del prompt en caso de un diálogo de prompt.
    • Solo lectura: false
  • browser_hover
    • Título: Pasar ratón
    • Descripción: Pasa el ratón sobre un elemento en la página
    • Parámetros:
      • element (string, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con él
      • target (string): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento único
    • Solo lectura: false
  • browser_navigate
    • Título: Navegar a una URL
    • Descripción: Navega a una URL
    • Parámetros:
      • url (string): La URL a la que navegar
    • Solo lectura: false
  • browser_navigate_back
    • Título: Retroceder
    • Descripción: Retrocede a la página anterior en el historial
    • Parámetros: Ninguno
    • Solo lectura: false
  • browser_network_request
    • Título: Mostrar detalles de solicitud de red
    • Descripción: Devuelve detalles completos (cabeceras y cuerpo) de una única solicitud de red, o una parte única si part está establecido. Usa el número de browser_network_requests.
    • Parámetros:
      • index (integer): Índice basado en 1 de la solicitud, como lo imprime browser_network_requests.
      • part (string, opcional): Devuelve solo esta parte de la solicitud. Omitir para devolver detalles completos.
      • filename (string, opcional): Nombre de archivo para guardar el resultado. Si no se proporciona, la salida se devuelve como texto.
    • Solo lectura: true
  • browser_network_requests
    • Título: Listar solicitudes de red
    • Descripción: Devuelve una lista numerada de solicitudes de red desde que se cargó la página. Usa browser_network_request con el número para obtener detalles completos.
    • Parámetros:
      • static (boolean): Si incluir recursos estáticos exitosos como imágenes, fuentes, scripts, etc. Por defecto false.
      • filter (string, opcional): Solo devuelve solicitudes cuya URL coincida con esta regexp (ej. "/api/.*user").
      • filename (string, opcional): Nombre de archivo para guardar las solicitudes de red. Si no se proporciona, las solicitudes se devuelven como texto.
    • Solo lectura: true
  • browser_press_key
    • Título: Presionar una tecla
    • Descripción: Presiona una tecla en el teclado
    • Parámetros:
      • key (string): Nombre de la tecla a presionar o un carácter a generar, como ArrowLeft o a
    • Solo lectura: false
  • browser_resize
    • Título: Redimensionar ventana del navegador
    • Descripción: Redimensiona la ventana del navegador
    • Parámetros:
      • width (number): Ancho de la ventana del navegador
      • height (number): Alto de la ventana del navegador
    • Solo lectura: false
  • browser_run_code_unsafe
    • Título: Ejecutar código Playwright (inseguro)
    • Descripción: Ejecuta un fragmento de código Playwright. Inseguro: ejecuta JavaScript arbitrario en el proceso del servidor Playwright y es equivalente a RCE.
    • Parámetros:
      • code (string, opcional): Una función JavaScript que contiene código Playwright a ejecutar. Se invocará con un solo argumento, page, que puedes usar para cualquier interacción de página. Por ejemplo: async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }
      • filename (string, opcional): Carga código desde el archivo especificado. Si se proporcionan tanto código como nombre de archivo, el código será ignorado.
    • Solo lectura: false
  • browser_select_option
    • Título: Seleccionar opción
    • Descripción: Selecciona una opción en un desplegable
    • Parámetros:
      • element (string, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con él
      • target (string): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento único
      • values (array): Array de valores a seleccionar en el desplegable. Puede ser un valor único o múltiples valores.
    • Solo lectura: false
  • browser_snapshot
    • Título: Instantánea de página
    • Descripción: Captura la instantánea de accesibilidad de la página actual, esto es mejor que una captura de pantalla
    • Parámetros:
      • target (string, opcional): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento único
      • filename (string, opcional): Guarda la instantánea en un archivo markdown en lugar de devolverla en la respuesta.
      • depth (number, opcional): Limita la profundidad del árbol de la instantánea
      • boxes (boolean, opcional): Incluye el cuadro delimitador de cada elemento como [box=x,y,width,height] en la instantánea. Las coordenadas son relativas a la ventana gráfica, en píxeles CSS (Element.getBoundingClientRect)
    • Solo lectura: true
  • browser_take_screenshot
    • Título: Tomar una captura de pantalla
    • Descripción: Toma una captura de pantalla de la página actual. No puedes realizar acciones basadas en la captura, usa browser_snapshot para acciones.
    • Parámetros:
      • element (string, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con él
      • target (string, opcional): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento único
      • type (string): Formato de imagen para la captura. Por defecto es png.
      • filename (string, opcional): Nombre de archivo para guardar la captura. Por defecto page-{timestamp}.{png|jpeg} si no se especifica. Prefiere nombres de archivo relativos para permanecer dentro del directorio de salida.
      • fullPage (boolean, opcional): Cuando es true, toma una captura de pantalla de la página completa desplazable, en lugar de la ventana gráfica visible actualmente. No se puede usar con capturas de elementos.
      • scale (string): Escala de resolución de imagen. "css" produce una captura dimensionada en píxeles CSS (más pequeña, consistente entre dispositivos). "device" produce una captura de alta resolución usando píxeles del dispositivo (más grande, tiene en cuenta la relación de píxeles del dispositivo). Por defecto es css.
    • Solo lectura: true
  • browser_type
    • Título: Escribir texto
    • Descripción: Escribe texto en un elemento editable
    • Parámetros:
      • element (string, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con él
      • target (string): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento único
      • text (string): Texto a escribir en el elemento
      • submit (boolean, opcional): Si enviar el texto introducido (presionar Enter después)
      • slowly (boolean, opcional): Si escribir un carácter a la vez. Útil para activar manejadores de teclas en la página. Por defecto, todo el texto se rellena de una vez.
    • Solo lectura: false
  • browser_wait_for
    • Título: Esperar
    • Descripción: Espera a que aparezca o desaparezca un texto o a que transcurra un tiempo especificado
    • Parámetros:
      • time (number, opcional): El tiempo de espera en segundos
      • text (string, opcional): El texto a esperar
      • textGone (string, opcional): El texto cuya desaparición se espera
    • Solo lectura: false
Gestión de pestañas
  • browser_tabs
    • Título: Gestionar pestañas
    • Descripción: Lista, crea, cierra o selecciona una pestaña del navegador.
    • Parámetros:
      • action (string): Operación a realizar
      • index (number, opcional): Índice de la pestaña, usado para cerrar/seleccionar. Si se omite al cerrar, se cierra la pestaña actual.
      • url (string, opcional): URL a la que navegar en la nueva pestaña, usado para nueva.
    • Solo lectura: false
Instalación del navegador
Configuración (activación voluntaria mediante --caps=config)
  • browser_get_config
    • Título: Obtener configuración
    • Descripción: Obtiene la configuración final resuelta tras combinar las opciones de CLI, las variables de entorno y el archivo de configuración.
    • Parámetros: Ninguno
    • Solo lectura: true
Red (activación voluntaria mediante --caps=network)
  • browser_network_state_set
    • Título: Establecer estado de red
    • Descripción: Establece el estado de red del navegador a en línea o fuera de línea. Cuando está fuera de línea, todas las solicitudes de red fallarán.
    • Parámetros:
      • state (string): Establecer en "offline" para simular el modo fuera de línea, "online" para restaurar la conectividad de red
    • Solo lectura: false
  • browser_route
    • Título: Simular solicitudes de red
    • Descripción: Configura una ruta para simular solicitudes de red que coincidan con un patrón de URL
    • Parámetros:
      • pattern (string): Patrón de URL a coincidir (ej., "/api/users", "/*.{png,jpg}")
      • status (number, opcional): Código de estado HTTP a devolver (predeterminado: 200)
      • body (string, opcional): Cuerpo de la respuesta (texto o cadena JSON)
      • contentType (string, opcional): Cabecera Content-Type (ej., "application/json", "text/html")
      • headers (array, opcional): Cabeceras a añadir en formato "Nombre: Valor"
      • removeHeaders (string, opcional): Lista separada por comas de nombres de cabecera a eliminar de la solicitud
    • Solo lectura: false
  • browser_route_list
    • Título: Listar rutas de red
    • Descripción: Lista todas las rutas de red activas
    • Parámetros: Ninguno
    • Solo lectura: true
  • browser_unroute
    • Título: Eliminar rutas de red
    • Descripción: Elimina las rutas de red que coincidan con un patrón (o todas las rutas si no se especifica ningún patrón)
    • Parámetros:
      • pattern (string, opcional): Patrón de URL a eliminar (omitir para eliminar todas las rutas)
    • Solo lectura: false
Almacenamiento (activación voluntaria mediante --caps=storage)
  • browser_cookie_clear
    • Título: Limpiar cookies
    • Descripción: Limpia todas las cookies
    • Parámetros: Ninguno
    • Solo lectura: false
  • browser_cookie_delete
    • Título: Eliminar cookie
    • Descripción: Elimina una cookie específica
    • Parámetros:
      • name (string): Nombre de la cookie a eliminar
    • Solo lectura: false
  • browser_cookie_get
    • Título: Obtener cookie
    • Descripción: Obtiene una cookie específica por nombre
    • Parámetros:
      • name (string): Nombre de la cookie a obtener
    • Solo lectura: true
  • browser_cookie_list
    • Título: Listar cookies
    • Descripción: Lista todas las cookies (opcionalmente filtradas por dominio/ruta)
    • Parámetros:
      • domain (string, opcional): Filtrar cookies por dominio
      • path (string, opcional): Filtrar cookies por ruta
    • Solo lectura: true
  • browser_cookie_set
    • Título: Establecer cookie
    • Descripción: Establece una cookie con indicadores opcionales (dominio, ruta, expiración, httpOnly, secure, sameSite)
    • Parámetros:
      • name (string): Nombre de la cookie
      • value (string): Valor de la cookie
      • domain (string, opcional): Dominio de la cookie
      • path (string, opcional): Ruta de la cookie
      • expires (number, opcional): Expiración de la cookie como marca de tiempo Unix
      • httpOnly (boolean, opcional): Si la cookie es solo HTTP
      • secure (boolean, opcional): Si la cookie es segura
      • sameSite (string, opcional): Atributo SameSite de la cookie
    • Solo lectura: false
  • browser_localstorage_clear
    • Título: Limpiar localStorage
    • Descripción: Limpia todo el localStorage
    • Parámetros: Ninguno
    • Solo lectura: false
  • browser_localstorage_delete
    • Título: Eliminar elemento de localStorage
    • Descripción: Elimina un elemento de localStorage
    • Parámetros:
      • key (string): Clave a eliminar
    • Solo lectura: false
  • browser_localstorage_get
    • Título: Obtener elemento de localStorage
    • Descripción: Obtiene un elemento de localStorage por clave
    • Parámetros:
      • key (string): Clave a obtener
    • Solo lectura: true
  • browser_localstorage_list
    • Título: Listar localStorage
    • Descripción: Lista todos los pares clave-valor de localStorage
    • Parámetros: Ninguno
    • Solo lectura: true
  • browser_localstorage_set
    • Título: Establecer elemento de localStorage
    • Descripción: Establece un elemento de localStorage
    • Parámetros:
      • key (string): Clave a establecer
      • value (string): Valor a establecer
    • Solo lectura: false
  • browser_sessionstorage_clear
    • Título: Limpiar sessionStorage
    • Descripción: Limpia todo el sessionStorage
    • Parámetros: Ninguno
    • Solo lectura: false
  • browser_sessionstorage_delete
    • Título: Eliminar elemento de sessionStorage
    • Descripción: Elimina un elemento de sessionStorage
    • Parámetros:
      • key (string): Clave a eliminar
    • Solo lectura: false
  • browser_sessionstorage_get
    • Título: Obtener elemento de sessionStorage
    • Descripción: Obtiene un elemento de sessionStorage por clave
    • Parámetros:
      • key (string): Clave a obtener
    • Solo lectura: true
  • browser_sessionstorage_list
    • Título: Listar sessionStorage
    • Descripción: Lista todos los pares clave-valor de sessionStorage
    • Parámetros: Ninguno
    • Solo lectura: true
  • browser_sessionstorage_set
    • Título: Establecer elemento de sessionStorage
    • Descripción: Establece un elemento de sessionStorage
    • Parámetros:
      • key (string): Clave a establecer
      • value (string): Valor a establecer
    • Solo lectura: false
  • browser_set_storage_state
    • Título: Restaurar estado de almacenamiento
    • Descripción: Restaura el estado de almacenamiento (cookies, almacenamiento local) desde un archivo. Esto limpia las cookies y el almacenamiento local existentes antes de restaurar.
    • Parámetros:
      • filename (string): Ruta al archivo de estado de almacenamiento desde el que restaurar
    • Solo lectura: false
  • browser_storage_state
    • Título: Guardar estado de almacenamiento
    • Descripción: Guarda el estado de almacenamiento (cookies, almacenamiento local) en un archivo para su posterior reutilización
    • Parámetros:
      • filename (string, opcional): Nombre del archivo donde guardar el estado de almacenamiento. Por defecto storage-state-{timestamp}.json si no se especifica.
    • Solo lectura: true
DevTools (activación voluntaria mediante --caps=devtools)
  • browser_annotate
    • Título: Anotar la página actual
    • Descripción: Abre el Panel de Playwright en modo anotación para la página actual y espera a que el usuario dibuje anotaciones. Devuelve la captura de pantalla anotada, la instantánea ARIA y la lista de anotaciones.
    • Parámetros: Ninguno
    • Solo lectura: true
  • browser_hide_highlight
    • Título: Ocultar resaltado de elemento
    • Descripción: Elimina una superposición de resaltado previamente añadida para el elemento.
    • Parámetros:
      • element (string, opcional): Descripción legible del elemento utilizada al añadir el resaltado; debe coincidir con el valor pasado a browser_highlight.
      • target (string, opcional): Referencia exacta del elemento objetivo de la instantánea de la página, o un selector de elemento único
    • Solo lectura: true
  • browser_highlight
    • Título: Resaltar elemento
    • Descripción: Muestra una superposición de resaltado persistente alrededor del elemento en la página.
    • Parámetros:
      • element (string, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con el elemento
      • target (string): Referencia exacta del elemento objetivo de la instantánea de la página, o un selector de elemento único
      • style (string, opcional): CSS en línea adicional aplicado a la superposición de resaltado, ej. "outline: 2px dashed red".
    • Solo lectura: true
  • browser_resume
    • Título: Reanudar ejecución de script pausada
    • Descripción: Reanuda la ejecución del script después de haber sido pausada. Cuando se llama con step establecido en true, la ejecución se pausará de nuevo antes de la siguiente acción.
    • Parámetros:
      • step (boolean, opcional): Cuando es true, la ejecución se pausará de nuevo antes de la siguiente acción, permitiendo la depuración paso a paso.
      • location (string, opcional): Pausa la ejecución en un : específico, ej. "example.spec.ts:42".
    • Solo lectura: false
  • browser_start_tracing
    • Título: Iniciar trazado
    • Descripción: Inicia la grabación del trazado
    • Parámetros: Ninguno
    • Solo lectura: true
  • browser_start_video
    • Título: Iniciar vídeo
    • Descripción: Inicia la grabación de vídeo
    • Parámetros:
      • filename (string, opcional): Nombre de archivo para guardar el vídeo.
      • size (object, opcional): Tamaño del vídeo
    • Solo lectura: true
  • browser_stop_tracing
    • Título: Detener trazado
    • Descripción: Detiene la grabación del trazado
    • Parámetros: Ninguno
    • Solo lectura: true
  • browser_stop_video
    • Título: Detener vídeo
    • Descripción: Detiene la grabación de vídeo
    • Parámetros: Ninguno
    • Solo lectura: true
  • browser_video_chapter
    • Título: Capítulo de vídeo
    • Descripción: Añade un marcador de capítulo a la grabación de vídeo. Muestra una tarjeta de capítulo a pantalla completa con fondo difuminado.
    • Parámetros:
      • title (string): Título del capítulo
      • description (string, opcional): Descripción del capítulo
      • duration (number, opcional): Duración en milisegundos para mostrar la tarjeta del capítulo
    • Solo lectura: true
  • browser_video_hide_actions
    • Título: Ocultar superposiciones de acciones
    • Descripción: Deja de anotar las acciones realizadas en la página.
    • Parámetros: Ninguno
    • Solo lectura: true
  • browser_video_show_actions
    • Título: Mostrar superposiciones de acciones
    • Descripción: Anota las acciones subsiguientes realizadas en la página con una llamada que nombra la acción y resalta el elemento objetivo. Útil durante la grabación de vídeo o la transmisión de pantalla.
    • Parámetros:
      • duration (number, opcional): Cuánto tiempo permanece cada anotación de acción en pantalla, en milisegundos. Por defecto 500.
      • position (string, opcional): Dónde colocar el título de la acción en relación con la página. Por defecto arriba a la derecha.
      • cursor (string, opcional): Decoración del cursor para acciones de puntero. "pointer" (por defecto) anima un puntero del ratón desde el punto de acción anterior al siguiente; "none" desactiva la decoración del cursor.
    • Solo lectura: true
Basado en coordenadas (activación opcional mediante --caps=vision)
  • browser_mouse_click_xy
    • Título: Clic
    • Descripción: Hacer clic con el botón del ratón en una posición dada
    • Parámetros:
      • x (number): Coordenada X
      • y (number): Coordenada Y
      • button (string, opcional): Botón a clicar, por defecto izquierdo
      • clickCount (number, opcional): Número de clics, por defecto 1
      • delay (number, opcional): Tiempo de espera entre presionar y soltar el ratón en milisegundos, por defecto 0
    • Solo lectura: false
  • browser_mouse_down
    • Título: Presionar botón del ratón
    • Descripción: Presionar botón del ratón
    • Parámetros:
      • button (string, opcional): Botón a presionar, por defecto izquierdo
    • Solo lectura: false
  • browser_mouse_drag_xy
    • Título: Arrastrar ratón
    • Descripción: Arrastrar el botón izquierdo del ratón a una posición dada
    • Parámetros:
      • startX (number): Coordenada X inicial
      • startY (number): Coordenada Y inicial
      • endX (number): Coordenada X final
      • endY (number): Coordenada Y final
    • Solo lectura: false
  • browser_mouse_move_xy
    • Título: Mover ratón
    • Descripción: Mover el ratón a una posición dada
    • Parámetros:
      • x (number): Coordenada X
      • y (number): Coordenada Y
    • Solo lectura: false
  • browser_mouse_up
    • Título: Soltar botón del ratón
    • Descripción: Soltar botón del ratón
    • Parámetros:
      • button (string, opcional): Botón a soltar, por defecto izquierdo
    • Solo lectura: false
  • browser_mouse_wheel
    • Título: Desplazar rueda del ratón
    • Descripción: Desplazar la rueda del ratón
    • Parámetros:
      • deltaX (number): Delta X
      • deltaY (number): Delta Y
    • Solo lectura: false
Generación de PDF (activación opcional mediante --caps=pdf)
  • browser_pdf_save
    • Título: Guardar como PDF
    • Descripción: Guardar página como PDF
    • Parámetros:
      • filename (string, opcional): Nombre de archivo para guardar el pdf. Por defecto page-{timestamp}.pdf si no se especifica. Se prefieren nombres de archivo relativos para permanecer dentro del directorio de salida.
    • Solo lectura: true
Aserciones de prueba (activación opcional mediante --caps=testing)
  • browser_generate_locator
    • Título: Crear localizador para elemento
    • Descripción: Generar localizador para el elemento dado para usar en pruebas
    • Parámetros:
      • element (string, opcional): Descripción legible del elemento utilizada para obtener permiso para interactuar con el elemento
      • target (string): Referencia exacta del elemento objetivo desde la instantánea de la página, o un selector de elemento único
    • Solo lectura: true
  • browser_verify_element_visible
    • Título: Verificar elemento visible
    • Descripción: Verificar que el elemento es visible en la página
    • Parámetros:
      • role (string): ROL del elemento. Se puede encontrar en la instantánea así: - {ROLE} "Accessible Name":
      • accessibleName (string): ACCESSIBLE_NAME del elemento. Se puede encontrar en la instantánea así: - role "{ACCESSIBLE_NAME}"
    • Solo lectura: false
  • browser_verify_list_visible
    • Título: Verificar lista visible
    • Descripción: Verificar que la lista es visible en la página
    • Parámetros:
      • element (string): Descripción legible de la lista
      • target (string): Referencia exacta del elemento objetivo que apunta a la lista
      • items (array): Elementos a verificar
    • Solo lectura: false
  • browser_verify_text_visible
    • Título: Verificar texto visible
    • Descripción: Verificar que el texto es visible en la página. Preferir browser_verify_element_visible si es posible.
    • Parámetros:
      • text (string): TEXTO a verificar. Se puede encontrar en la instantánea así: - role "Accessible Name": {TEXT} o así: - text: {TEXT}
    • Solo lectura: false
  • browser_verify_value
    • Título: Verificar valor
    • Descripción: Verificar valor del elemento
    • Parámetros:
      • type (string): Tipo del elemento
      • element (string): Descripción legible del elemento
      • target (string): Referencia exacta del elemento objetivo desde la instantánea de la página
      • value (string): Valor a verificar. Para checkbox, usar "true" o "false".
    • Solo lectura: false