Playwright MCP

официальный

Официальный MCP-сервер Playwright для автоматизации браузера, инспекции страниц, создания скриншотов и веб-взаимодействия из Claude, Cursor и других AI-агентов.

Что можно делать с Playwright MCP?

  • Доступ к дереву доступности — Попросите вашего ИИ перемещаться по страницам и читать структурированные снимки доступности, без необходимости в модели зрения.
  • Постоянные сеансы браузера — Сохраняйте состояние входа между разговорами с помощью --user-data-dir или --storage-state для аутентифицированных рабочих процессов.
  • Мультибраузерная автоматизация — Управляйте Chromium, Firefox, WebKit или Edge с помощью флага --browser для кросс-движкового тестирования.
  • Эмуляция устройств — Имитируйте мобильные устройства, такие как «iPhone 15», через --device или общий режим --mobile для адаптивного тестирования.
  • Генерация кода — Создавайте тестовые скрипты Playwright на TypeScript, Python, Java или C# с помощью опции --codegen.
  • Изолированные тестовые контексты — Запускайте сеансы с флагом --isolated, чтобы отбрасывать все состояние после каждого закрытия браузера.

Документация

Playwright MCP

Сервер Model Context Protocol (MCP), предоставляющий возможности автоматизации браузера с помощью Playwright. Этот сервер позволяет LLM взаимодействовать с веб-страницами через структурированные снимки доступности, обходя необходимость в скриншотах или моделях, настроенных на визуальное восприятие.

Playwright MCP против Playwright CLI

Этот пакет предоставляет MCP-интерфейс для Playwright. Если вы используете кодинг-агента, вам может быть полезнее использовать CLI+SKILLS.

  • CLI: Современные кодинг-агенты всё чаще отдают предпочтение CLI-ориентированным рабочим процессам, представленным как SKILLS, вместо MCP, потому что вызовы CLI более эффективны по токенам: они избегают загрузки больших схем инструментов и подробных деревьев доступности в контекст модели, позволяя агентам действовать через краткие специализированные команды. Это делает CLI + SKILLs более подходящими для высокопроизводительных кодинг-агентов, которым необходимо балансировать автоматизацию браузера с большими кодовыми базами, тестами и рассуждениями в рамках ограниченных контекстных окон.
    Узнайте больше о Playwright CLI с SKILLS.

  • MCP: MCP остаётся актуальным для специализированных агентных циклов, которые выигрывают от постоянного состояния, богатой интроспекции и итеративного рассуждения о структуре страницы, таких как исследовательская автоматизация, самовосстанавливающиеся тесты или длительные автономные рабочие процессы, где поддержание непрерывного контекста браузера перевешивает затраты на токены.

Ключевые возможности

  • Быстрый и лёгкий. Использует дерево доступности Playwright, а не ввод на основе пикселей.
  • Дружелюбен к LLM. Не требуются модели зрения, работает исключительно на структурированных данных.
  • Детерминированное применение инструментов. Избегает неоднозначности, характерной для подходов на основе скриншотов.

Требования

  • Node.js 18 или новее
  • VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie или любой другой MCP-клиент

Начало работы

Сначала установите сервер Playwright MCP с вашим клиентом.

Стандартная конфигурация работает в большинстве инструментов:

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

Install in VS Code Install in VS Code Insiders

Amp

Добавьте через экран настроек расширения Amp VS Code или обновив файл settings.json:

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

Настройка Amp CLI:

Добавьте с помощью команды amp mcp add ниже

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

Добавьте через настройки Antigravity или обновив файл конфигурации:

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

Используйте CLI Claude Code, чтобы добавить сервер Playwright MCP:

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

Следуйте руководству по установке MCP, используйте стандартную конфигурацию выше.

Cline

Следуйте инструкциям в разделе Настройка MCP-серверов

Пример: Локальная настройка

Добавьте следующее в ваш файл cline_mcp_settings.json:

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

Используйте CLI Codex, чтобы добавить сервер Playwright MCP:

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

В качестве альтернативы создайте или отредактируйте файл конфигурации ~/.codex/config.toml и добавьте:

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

Для получения дополнительной информации см. документацию Codex MCP.

Copilot

Используйте CLI Copilot для интерактивного добавления сервера Playwright MCP:

/mcp add

В качестве альтернативы создайте или отредактируйте файл конфигурации ~/.copilot/mcp-config.json и добавьте:

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

Для получения дополнительной информации см. документацию Copilot CLI.

Cursor

Нажмите кнопку для установки:

Install in Cursor

Или установите вручную:

Перейдите в Cursor Settings -> MCP -> Add new MCP Server. Дайте имя по своему усмотрению, используйте тип command с командой npx @playwright/mcp@latest. Вы также можете проверить конфигурацию или добавить аргументы команды, нажав Edit.

Factory

Используйте CLI Factory, чтобы добавить сервер Playwright MCP:

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

В качестве альтернативы введите /mcp в Factory droid, чтобы открыть интерактивный интерфейс для управления MCP-серверами.

Для получения дополнительной информации см. документацию Factory MCP.

Gemini CLI

Следуйте руководству по установке MCP, используйте стандартную конфигурацию выше.

Goose

Нажмите кнопку для установки:

Install in Goose

Или установите вручную:

Перейдите в Advanced settings -> Extensions -> Add custom extension. Дайте имя по своему усмотрению, используйте тип STDIO и установите command на npx @playwright/mcp. Нажмите «Add Extension».

Grok

Используйте CLI Grok, чтобы добавить сервер Playwright MCP:

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

В качестве альтернативы создайте или отредактируйте файл конфигурации ~/.grok/config.toml и добавьте:

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

Для получения дополнительной информации см. документацию Grok MCP.

Junie

Чтобы добавить сервер Playwright MCP в Junie CLI:

  1. Введите /mcp
  2. Нажмите Ctrl+A, чтобы добавить новый MCP-сервер
  3. Выберите Playwright из списка

В качестве альтернативы добавьте в .junie/mcp/mcp.json:

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

Для получения дополнительной информации см. документацию по конфигурации Junie MCP.

Kiro

Add to Kiro

Следуйте документации по MCP-серверам. Например, в .kiro/settings/mcp.json:

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

Нажмите кнопку для установки:

Add MCP Server playwright to LM Studio

Или установите вручную:

Перейдите в Program на правой боковой панели -> Install -> Edit mcp.json. Используйте стандартную конфигурацию выше.

opencode

Следуйте документации по MCP-серверам. Например, в ~/.config/opencode/opencode.json:

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

Qodo Gen

Откройте панель чата Qodo Gen в VSCode или IntelliJ → Connect more tools → + Add new MCP → Вставьте стандартную конфигурацию выше.

Нажмите Save.

VS Code

Нажмите кнопку для установки:

Install in VS Code Install in VS Code Insiders

Или установите вручную:

Следуйте руководству по установке MCP, используйте стандартную конфигурацию выше. Вы также можете установить сервер Playwright MCP с помощью CLI VS Code:

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

После установки сервер Playwright MCP будет доступен для использования с вашим агентом GitHub Copilot в VS Code.

Warp

Перейдите в Settings -> AI -> Manage MCP Servers -> + Add, чтобы добавить MCP-сервер. Используйте стандартную конфигурацию выше.

В качестве альтернативы используйте слэш-команду /add-mcp в приглашении Warp и вставьте стандартную конфигурацию выше:

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

Следуйте документации Windsurf MCP. Используйте стандартную конфигурацию выше.

Конфигурация

Сервер Playwright MCP поддерживает следующие аргументы. Их можно указать в JSON-конфигурации выше, как часть списка "args":

ПараметрОписание
--allowed-hosts <hosts...>список хостов через запятую, которым этот сервер может обслуживать запросы. По умолчанию — хост, к которому привязан сервер. Передайте '*' для отключения проверки хоста.
env PLAYWRIGHT_MCP_ALLOWED_HOSTS
--allowed-origins список доверенных источников (origins) через точку с запятой, которым разрешено отправлять запросы браузеру. По умолчанию разрешены все. Важно: не является границей безопасности и не влияет на перенаправления.
env PLAYWRIGHT_MCP_ALLOWED_ORIGINS
--allow-unrestricted-file-accessразрешить доступ к файлам за пределами корневых каталогов рабочей области. Также разрешает неограниченный доступ к URL-адресам file://. По умолчанию доступ к файловой системе ограничен только корневыми каталогами рабочей области (или текущим каталогом, если корни не настроены), а переход по URL-адресам file:// заблокирован.
env PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS
--blocked-origins список источников через точку с запятой, которым браузеру запрещено отправлять запросы. Черный список проверяется перед белым списком. При использовании без белого списка запросы, не соответствующие черному списку, по-прежнему разрешены. Важно: не является границей безопасности и не влияет на перенаправления.
env PLAYWRIGHT_MCP_BLOCKED_ORIGINS
--block-service-workersблокировать сервис-воркеры
env PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS
--browser используемый браузер или канал chrome, возможные значения: chrome, firefox, webkit, msedge.
env PLAYWRIGHT_MCP_BROWSER
--caps список дополнительных возможностей через запятую, возможные значения: vision, pdf, devtools.
env PLAYWRIGHT_MCP_CAPS
--cdp-endpoint конечная точка CDP для подключения.
env PLAYWRIGHT_MCP_CDP_ENDPOINT
--cdp-header <headers...>заголовки CDP для отправки с запросом на подключение, можно указать несколько.
env PLAYWRIGHT_MCP_CDP_HEADERS
--cdp-timeout таймаут в миллисекундах для подключения к конечной точке CDP, по умолчанию 30000 мс
env PLAYWRIGHT_MCP_CDP_TIMEOUT
--codegen укажите язык для генерации кода, возможные значения: "typescript", "python", "java", "csharp", "none". По умолчанию — "typescript".
env PLAYWRIGHT_MCP_CODEGEN
--config путь к файлу конфигурации.
env PLAYWRIGHT_MCP_CONFIG
--console-level уровень сообщений консоли для возврата: "error", "warning", "info", "debug". Каждый уровень включает сообщения более серьезных уровней.
env PLAYWRIGHT_MCP_CONSOLE_LEVEL
--device устройство для эмуляции, например: "iPhone 15"
env PLAYWRIGHT_MCP_DEVICE
--mobileэмулировать универсальное мобильное устройство (Pixel 10 для Chromium, iPhone 17 для WebKit). Мобильные страницы обычно легче, что экономит токены. Нельзя комбинировать с --device.
env PLAYWRIGHT_MCP_MOBILE
--executable-path путь к исполняемому файлу браузера.
env PLAYWRIGHT_MCP_EXECUTABLE_PATH
--extensionПодключиться к запущенному экземпляру браузера (только Edge/Chrome). Требуется установка "Playwright Extension".
env PLAYWRIGHT_MCP_EXTENSION
--endpoint Привязанная конечная точка браузера для подключения.
env PLAYWRIGHT_MCP_ENDPOINT
--grant-permissions <permissions...>Список разрешений для контекста браузера, например "geolocation", "clipboard-read", "clipboard-write".
env PLAYWRIGHT_MCP_GRANT_PERMISSIONS
--headlessзапускать браузер в безголовом режиме, по умолчанию — с графическим интерфейсом
env PLAYWRIGHT_MCP_HEADLESS
--host хост для привязки сервера. По умолчанию — localhost. Используйте 0.0.0.0 для привязки ко всем интерфейсам.
env PLAYWRIGHT_MCP_HOST
--ignore-https-errorsигнорировать ошибки HTTPS
env PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS
--init-page <path...>путь к TypeScript-файлу для оценки на объекте страницы Playwright
env PLAYWRIGHT_MCP_INIT_PAGE
--init-script <path...>путь к JavaScript-файлу для добавления в качестве сценария инициализации. Сценарий будет выполняться на каждой странице перед любыми сценариями страницы. Можно указать несколько раз.
env PLAYWRIGHT_MCP_INIT_SCRIPT
--isolatedхранить профиль браузера в памяти, не сохранять его на диск.
env PLAYWRIGHT_MCP_ISOLATED
--image-responses отправлять ли ответы с изображениями клиенту. Может быть "allow" или "omit", по умолчанию — "allow".
env PLAYWRIGHT_MCP_IMAGE_RESPONSES
--no-sandboxотключить песочницу для всех типов процессов, которые обычно изолированы.
env PLAYWRIGHT_MCP_NO_SANDBOX
--output-dir путь к каталогу для выходных файлов.
env PLAYWRIGHT_MCP_OUTPUT_DIR
--output-max-size порог для удаления старых выходных файлов, в байтах.
env PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE
--port порт для прослушивания транспорта SSE.
env PLAYWRIGHT_MCP_PORT
--proxy-bypass домены через запятую для обхода прокси, например ".com,chromium.org,.domain.com"
env PLAYWRIGHT_MCP_PROXY_BYPASS
--proxy-server укажите прокси-сервер, например "http://myproxy:3128" или "socks5://myproxy:8080"
env PLAYWRIGHT_MCP_PROXY_SERVER
--sandboxвключить песочницу для всех типов процессов, которые обычно не изолированы.
env PLAYWRIGHT_MCP_SANDBOX
--save-sessionСохранять ли сеанс Playwright MCP в выходной каталог.
env PLAYWRIGHT_MCP_SAVE_SESSION
--secrets путь к файлу, содержащему секреты в формате dotenv
env PLAYWRIGHT_MCP_SECRETS_FILE
--shared-browser-contextповторно использовать один и тот же контекст браузера между всеми подключенными HTTP-клиентами.
env PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT
--snapshot-boxesвключать ограничивающую рамку каждого элемента как [box=x,y,width,height] в снимках. Координаты относительно области просмотра, в CSS-пикселях.
env PLAYWRIGHT_MCP_SNAPSHOT_BOXES
--snapshot-mode при создании снимков для ответов указывает используемый режим. Может быть "full" или "none". По умолчанию — "full".
env PLAYWRIGHT_MCP_SNAPSHOT_MODE
--storage-state путь к файлу состояния хранилища для изолированных сеансов.
env PLAYWRIGHT_MCP_STORAGE_STATE
--test-id-attribute укажите атрибут для тестовых идентификаторов, по умолчанию — "data-testid"
env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE
--timeout-action укажите таймаут действия в миллисекундах, по умолчанию — 5000 мс
env PLAYWRIGHT_MCP_TIMEOUT_ACTION
--timeout-navigation укажите таймаут навигации в миллисекундах, по умолчанию — 60000 мс
env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION
--timeout-settle сколько ждать после каждого действия для завершения запущенной работы, в миллисекундах, по умолчанию — 500 мс
env PLAYWRIGHT_MCP_TIMEOUT_SETTLE
--user-agent укажите строку пользовательского агента
env PLAYWRIGHT_MCP_USER_AGENT
--user-data-dir путь к каталогу пользовательских данных. Если не указан, будет создан временный каталог.
env PLAYWRIGHT_MCP_USER_DATA_DIR
--viewport-size укажите размер области просмотра браузера в пикселях, например "1280x720"
env PLAYWRIGHT_MCP_VIEWPORT_SIZE

Профиль пользователя

Вы можете запускать Playwright MCP с постоянным профилем, как обычный браузер (по умолчанию), в изолированных контекстах для тестовых сеансов или подключаться к существующему браузеру с помощью расширения браузера.

Постоянный профиль

Вся информация о входе в систему будет храниться в постоянном профиле. Вы можете удалить его между сеансами, если хотите очистить автономное состояние. Постоянный профиль находится в следующих местах, и вы можете переопределить его с помощью аргумента --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} определяется корнем рабочей области MCP-клиента, поэтому разные проекты автоматически получают отдельные профили.

[!IMPORTANT] Постоянный профиль может использоваться только одним экземпляром браузера одновременно, поэтому параллельные MCP-клиенты, использующие одну рабочую область, будут конфликтовать. Чтобы запустить несколько клиентов параллельно, запустите каждый дополнительный клиент с --isolated или укажите ему отдельный --user-data-dir.

Изолированный

В изолированном режиме каждый сеанс запускается в изолированном профиле. Каждый раз, когда вы просите MCP закрыть браузер, сеанс закрывается, и все состояние хранилища для этого сеанса теряется. Вы можете предоставить начальное состояние хранилища браузеру через contextOptions в конфигурации или через аргумент --storage-state. Узнайте больше о состоянии хранилища здесь.

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

Расширение браузера

Расширение Playwright MCP Chrome Extension позволяет подключаться к существующим вкладкам браузера и использовать ваши сеансы входа и состояние браузера. См. microsoft/playwright › packages/extension для инструкций по установке и настройке.

Начальное состояние

Существует несколько способов предоставить начальное состояние контексту браузера или странице.

Для состояния хранилища вы можете:

  • Начать с каталога пользовательских данных, используя аргумент --user-data-dir. Это сохранит все данные браузера между сеансами.
  • Начать с файла состояния хранилища, используя аргумент --storage-state. Это загрузит файлы cookie и локальное хранилище из файла в изолированный контекст браузера.

Для состояния страницы вы можете использовать:

  • --init-page для указания на TypeScript-файл, который будет оценен на объекте страницы Playwright. Это позволяет выполнять произвольный код для настройки страницы.
// 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 для указания на JavaScript-файл, который будет добавлен в качестве сценария инициализации. Сценарий будет выполняться на каждой странице перед любыми сценариями страницы. Это полезно для переопределения API браузера или настройки окружения.
// init-script.js
window.isPlaywrightMCP = true;

Файл конфигурации

Сервер Playwright MCP можно настроить с помощью JSON-файла конфигурации. Вы можете указать файл конфигурации, используя параметр командной строки --config:

npx @playwright/mcp@latest --config path/to/config.json
Схема файла конфигурации
{
  /**
   * The browser to use.
   */
  browser?: {
    /**
     * The type of browser to use.
     */
    browserName?: 'chromium' | 'firefox' | 'webkit';

    /**
     * Keep the browser profile in memory, do not save it to disk.
     */
    isolated?: boolean;

    /**
     * Path to a user data directory for browser profile persistence.
     * Temporary directory is created by default.
     */
    userDataDir?: string;

    /**
     * Launch options passed to
     * @see https://playwright.dev/docs/api/class-browsertype#browser-type-launch-persistent-context
     *
     * This is useful for settings options like `channel`, `headless`, `executablePath`, etc.
     */
    launchOptions?: playwright.LaunchOptions;

    /**
     * Context options for the browser context.
     *
     * This is useful for settings options like `viewport`.
     */
    contextOptions?: playwright.BrowserContextOptions;

    /**
     * Chrome DevTools Protocol endpoint to connect to an existing browser instance in case of Chromium family browsers.
     */
    cdpEndpoint?: string;

    /**
     * CDP headers to send with the connect request.
     */
    cdpHeaders?: Record<string, string>;

    /**
     * Timeout in milliseconds for connecting to CDP endpoint. Defaults to 30000 (30 seconds). Pass 0 to disable timeout.
     */
    cdpTimeout?: number;

    /**
     * Remote endpoint to connect to an existing Playwright server. May be a
     * WebSocket URL string, or a [ConnectOptions] object that mirrors the
     * `connectOptions` shape used by the test runner. When passed as an object,
     * `exposeNetwork`, `headers`, `slowMo`, and `timeout` are forwarded to the
     * underlying connect call.
     */
    remoteEndpoint?: string | playwright.ConnectOptions & { endpoint: string };

    /**
     * Paths to TypeScript files to add as initialization scripts for Playwright page.
     */
    initPage?: string[];

    /**
     * Paths to JavaScript files to add as initialization scripts.
     * The scripts will be evaluated in every page before any of the page's scripts.
     */
    initScript?: string[];
  },

  /**
   * Connect to a running browser instance (Edge/Chrome only). If specified, `browser`
   * config is ignored.
   * Requires the "Playwright Extension" to be installed.
   */
  extension?: boolean;

  server?: {
    /**
     * The port to listen on for SSE or MCP transport.
     */
    port?: number;

    /**
     * The host to bind the server to. Default is localhost. Use 0.0.0.0 to bind to all interfaces.
     */
    host?: string;

    /**
     * The hosts this server is allowed to serve from. Defaults to the host server is bound to.
     * This is not for CORS, but rather for the DNS rebinding protection.
     */
    allowedHosts?: string[];
  },

  /**
   * List of enabled tool capabilities. Possible values:
   *   - 'core': Core browser automation features.
   *   - 'pdf': PDF generation and manipulation.
   *   - 'vision': Coordinate-based interactions.
   *   - 'devtools': Developer tools features.
   */
  capabilities?: ToolCapability[];

  /**
   * Whether to save the Playwright session into the output directory.
   */
  saveSession?: boolean;

  /**
   * Reuse the same browser context between all connected HTTP clients.
   */
  sharedBrowserContext?: boolean;

  /**
   * Secrets are used to replace matching plain text in the tool responses to prevent the LLM
   * from accidentally getting sensitive data. It is a convenience and not a security feature,
   * make sure to always examine information coming in and from the tool on the client.
   */
  secrets?: Record<string, string>;

  /**
   * The directory to save output files.
   */
  outputDir?: string;

  /**
   * Threshold for evicting old output files, in bytes.
   */
  outputMaxSize?: number;

  console?: {
    /**
     * The level of console messages to return. Each level includes the messages of more severe levels. Defaults to "info".
     */
    level?: 'error' | 'warning' | 'info' | 'debug';
  },

  network?: {
    /**
     * List of origins to allow the browser to request. Default is to allow all. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
     *
     * Supported formats:
     * - Full origin: `https://example.com:8080` - matches only that origin
     * - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
     */
    allowedOrigins?: string[];

    /**
     * List of origins to block the browser to request. Origins matching both `allowedOrigins` and `blockedOrigins` will be blocked.
     *
     * Supported formats:
     * - Full origin: `https://example.com:8080` - matches only that origin
     * - Wildcard port: `http://localhost:*` - matches any port on localhost with http protocol
     */
    blockedOrigins?: string[];
  };

  /**
   * Specify the attribute to use for test ids, defaults to "data-testid".
   */
  testIdAttribute?: string;

  timeouts?: {
    /*
     * Configures default action timeout: https://playwright.dev/docs/api/class-page#page-set-default-timeout. Defaults to 5000ms.
     */
    action?: number;

    /*
     * Configures default navigation timeout: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. Defaults to 60000ms.
     */
    navigation?: number;

    /**
     * Configures default expect timeout: https://playwright.dev/docs/test-timeouts#expect-timeout. Defaults to 5000ms.
     */
    expect?: number;

    /**
     * How long to wait after each action for triggered work (navigations, requests) to settle before responding. Defaults to 500ms.
     */
    settle?: number;
  };

  /**
   * Whether to send image responses to the client. Can be "allow", "omit", or "auto". Defaults to "auto", which sends images if the client can display them.
   */
  imageResponses?: 'allow' | 'omit';

  snapshot?: {
    /**
     * When taking snapshots for responses, specifies the mode to use.
     */
    mode?: 'full' | 'none';

    /**
     * Whether to include each element's bounding box as [box=x,y,width,height] in snapshots.
     * Coordinates are viewport-relative, in CSS pixels (Element.getBoundingClientRect).
     */
    boxes?: boolean;
  };

  /**
   * allowUnrestrictedFileAccess acts as a guardrail to prevent the LLM from accidentally
   * wandering outside its intended workspace. It is a convenience defense to catch unintended
   * file access, not a secure boundary; a deliberate attempt to reach other directories can be
   * easily worked around, so always rely on client-level permissions for true security.
   */
  allowUnrestrictedFileAccess?: boolean;

  /**
   * Specify the language to use for code generation.
   */
  codegen?: 'typescript' | 'python' | 'java' | 'csharp' | 'none';
}

Автономный MCP-сервер

При запуске браузера с графическим интерфейсом в системе без дисплея или из рабочих процессов IDE, запустите MCP-сервер из окружения с DISPLAY и передайте флаг --port для включения HTTP-транспорта.

npx @playwright/mcp@latest --port 8931

Затем в конфигурации MCP-клиента установите url на HTTP-конечную точку:

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

Безопасность

Playwright MCP не является границей безопасности. См. Рекомендации по безопасности MCP для получения рекомендаций по защите вашего развертывания.

Docker

ПРИМЕЧАНИЕ: Реализация Docker в настоящее время поддерживает только безголовый Chromium.

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

Или, если вы предпочитаете запускать контейнер как долгоживущий сервис вместо того, чтобы позволить MCP-клиенту создавать его, используйте:

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

Сервер будет прослушивать порт хоста 8931, и до него сможет подключиться любой MCP-клиент.

Вы можете собрать образ Docker самостоятельно.

docker build -t mcr.microsoft.com/playwright/mcp .
Программное использование
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);

  // ...
});

Инструменты

Основная автоматизация
  • browser_click
    • Название: Клик
    • Описание: Выполнить клик на веб-странице
    • Параметры:
      • element (строка, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • target (строка): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
      • doubleClick (логическое значение, необязательно): Выполнять ли двойной клик вместо одиночного
      • button (строка, необязательно): Кнопка для клика, по умолчанию левая
      • modifiers (массив, необязательно): Модификаторные клавиши для нажатия
    • Только чтение: false
  • browser_close
    • Название: Закрыть браузер
    • Описание: Закрыть страницу
    • Параметры: Нет
    • Только чтение: false
  • browser_console_messages
    • Название: Получить сообщения консоли
    • Описание: Возвращает все сообщения консоли
    • Параметры:
      • level (строка): Уровень сообщений консоли для возврата. Каждый уровень включает сообщения более серьезных уровней. По умолчанию "info".
      • all (логическое значение, необязательно): Возвращать все сообщения консоли с начала сеанса, а не только с момента последней навигации. По умолчанию false.
      • filename (строка, необязательно): Имя файла для сохранения сообщений консоли. Если не указано, сообщения возвращаются в виде текста.
    • Только чтение: true
  • browser_drag
    • Название: Перетаскивание мышью
    • Описание: Выполнить перетаскивание между двумя элементами
    • Параметры:
      • startElement (строка, необязательно): Понятное человеку описание исходного элемента, используемое для получения разрешения на взаимодействие с элементом
      • startTarget (строка): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
      • endElement (строка, необязательно): Понятное человеку описание целевого элемента, используемое для получения разрешения на взаимодействие с элементом
      • endTarget (строка): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
    • Только чтение: false
  • browser_drop
    • Название: Перетащить файлы или данные на элемент
    • Описание: Перетащить файлы или данные с MIME-типом на элемент, как если бы они были перетащены извне страницы. Должен быть указан хотя бы один из параметров "paths" или "data".
    • Параметры:
      • element (строка, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • target (строка): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
      • paths (массив, необязательно): Абсолютные пути к файлам для перетаскивания на элемент.
      • data (объект, необязательно): Данные для перетаскивания в виде карты соответствия MIME-типа строковому значению (например, {"text/plain": "hello", "text/uri-list": "https://example.com"}).
    • Только чтение: false
  • browser_evaluate
    • Название: Выполнить JavaScript
    • Описание: Выполнить JavaScript-выражение на странице или элементе
    • Параметры:
      • element (строка, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • target (строка, необязательно): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
      • function (строка): () => { /* код / } или (element) => { / код */ } при указании элемента
      • filename (строка, необязательно): Имя файла для сохранения результата. Если не указано, результат возвращается в виде текста.
    • Только чтение: false
  • browser_file_upload
    • Название: Загрузить файлы
    • Описание: Загрузить один или несколько файлов
    • Параметры:
      • paths (массив, необязательно): Абсолютные пути к файлам для загрузки. Может быть один файл или несколько файлов. Если не указано, выбор файла отменяется.
    • Только чтение: false
  • browser_fill_form
    • Название: Заполнить форму
    • Описание: Заполнить несколько полей формы
    • Параметры:
      • fields (массив): Поля для заполнения
    • Только чтение: false
  • browser_find
    • Название: Найти в снимке страницы
    • Описание: Поиск в снимке доступности текущей страницы текста или регулярного выражения. Возвращает соответствующие узлы снимка с несколькими строками окружающего контекста (как фрагменты поиска), каждый показан под своим путем от корня дерева, что дешевле, чем захват всего снимка, когда нужно только найти элемент и его ссылку.
    • Параметры:
      • text (строка, необязательно): Обычный текст для поиска в снимке страницы (поиск подстроки без учета регистра). Укажите либо текст, либо регулярное выражение, но не оба.
      • regex (строка, необязательно): Регулярное выражение для поиска в снимке страницы. По умолчанию поиск чувствителен к регистру; заключите шаблон в косые черты для добавления флагов, например "/error/i" для без учета регистра. Укажите либо текст, либо регулярное выражение, но не оба.
    • Только чтение: true
  • browser_handle_dialog
    • Название: Обработать диалоговое окно
    • Описание: Обработать диалоговое окно
    • Параметры:
      • accept (логическое значение): Принять ли диалоговое окно.
      • promptText (строка, необязательно): Текст подсказки в случае диалогового окна с запросом.
    • Только чтение: false
  • browser_hover
    • Название: Наведение мыши
    • Описание: Навести курсор на элемент на странице
    • Параметры:
      • element (строка, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • target (строка): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
    • Только чтение: false
  • browser_navigate
    • Название: Перейти по URL-адресу
    • Описание: Перейти по URL-адресу
    • Параметры:
      • url (строка): URL-адрес для перехода
    • Только чтение: false
  • browser_navigate_back
    • Название: Назад
    • Описание: Вернуться на предыдущую страницу в истории
    • Параметры: Нет
    • Только чтение: false
  • browser_network_request
    • Название: Показать детали сетевого запроса
    • Описание: Возвращает полные детали (заголовки и тело) одного сетевого запроса или одну часть, если задан part. Используйте номер из browser_network_requests.
    • Параметры:
      • index (целое число): Индекс запроса с отсчетом от 1, как выводится browser_network_requests.
      • part (строка, необязательно): Возвращать только эту часть запроса. Опустите для получения полных деталей.
      • filename (строка, необязательно): Имя файла для сохранения результата. Если не указано, вывод возвращается в виде текста.
    • Только чтение: true
  • browser_network_requests
    • Название: Список сетевых запросов
    • Описание: Возвращает нумерованный список сетевых запросов с момента загрузки страницы. Используйте browser_network_request с номером для получения полных деталей.
    • Параметры:
      • static (логическое значение): Включать ли успешные статические ресурсы, такие как изображения, шрифты, скрипты и т. д. По умолчанию false.
      • filter (строка, необязательно): Возвращать только запросы, URL которых соответствует этому регулярному выражению (например, "/api/.*user").
      • filename (строка, необязательно): Имя файла для сохранения сетевых запросов. Если не указано, запросы возвращаются в виде текста.
    • Только чтение: true
  • browser_press_key
    • Название: Нажать клавишу
    • Описание: Нажать клавишу на клавиатуре
    • Параметры:
      • key (строка): Название клавиши для нажатия или символ для генерации, например ArrowLeft или a
    • Только чтение: false
  • browser_resize
    • Название: Изменить размер окна браузера
    • Описание: Изменить размер окна браузера
    • Параметры:
      • width (число): Ширина окна браузера
      • height (число): Высота окна браузера
    • Только чтение: false
  • browser_run_code_unsafe
    • Название: Выполнить код Playwright (небезопасно)
    • Описание: Выполнить фрагмент кода Playwright. Небезопасно: выполняет произвольный JavaScript в процессе сервера Playwright и эквивалентно RCE.
    • Параметры:
      • code (строка, необязательно): Функция JavaScript, содержащая код Playwright для выполнения. Она будет вызвана с одним аргументом, page, который можно использовать для любого взаимодействия со страницей. Например: async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }
      • filename (строка, необязательно): Загрузить код из указанного файла. Если указаны и код, и имя файла, код будет проигнорирован.
    • Только чтение: false
  • browser_select_option
    • Название: Выбрать параметр
    • Описание: Выбрать параметр в раскрывающемся списке
    • Параметры:
      • element (строка, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • target (строка): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
      • values (массив): Массив значений для выбора в раскрывающемся списке. Это может быть одно значение или несколько значений.
    • Только чтение: false
  • browser_snapshot
    • Название: Снимок страницы
    • Описание: Захват снимка доступности текущей страницы, это лучше, чем скриншот
    • Параметры:
      • target (строка, необязательно): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
      • filename (строка, необязательно): Сохранить снимок в файл Markdown вместо возврата в ответе.
      • depth (число, необязательно): Ограничить глубину дерева снимка
      • boxes (логическое значение, необязательно): Включать ограничивающую рамку каждого элемента как [box=x,y,width,height] в снимке. Координаты относительно области просмотра, в CSS-пикселях (Element.getBoundingClientRect)
    • Только чтение: true
  • browser_take_screenshot
    • Название: Сделать скриншот
    • Описание: Сделать скриншот текущей страницы. Нельзя выполнять действия на основе скриншота, используйте browser_snapshot для действий.
    • Параметры:
      • element (строка, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • target (строка, необязательно): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
      • type (строка, необязательно): Формат изображения для скриншота. Если не задан, определяется по расширению имени файла, иначе png.
      • filename (строка, необязательно): Имя файла для сохранения скриншота. По умолчанию page-{timestamp}.{png|jpeg|webp}, если не указано. Предпочтительно использовать относительные имена файлов, чтобы оставаться в пределах выходного каталога.
      • fullPage (логическое значение, необязательно): Если true, делает скриншот всей прокручиваемой страницы, а не текущей видимой области. Нельзя использовать со скриншотами элементов.
      • scale (строка): Масштаб разрешения изображения. "css" создает скриншот размером в CSS-пикселях (меньше, согласованно на разных устройствах). "device" создает скриншот высокого разрешения с использованием пикселей устройства (больше, учитывает коэффициент пикселей устройства). По умолчанию css.
    • Только чтение: true
  • browser_type
    • Название: Ввести текст
    • Описание: Ввести текст в редактируемый элемент
    • Параметры:
      • element (строка, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • target (строка): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
      • text (строка): Текст для ввода в элемент
      • submit (логическое значение, необязательно): Отправлять ли введенный текст (нажать Enter после)
      • slowly (логическое значение, необязательно): Вводить ли текст по одному символу за раз. Полезно для запуска обработчиков клавиш на странице. По умолчанию весь текст вводится сразу.
    • Только чтение: false
  • browser_wait_for
    • Название: Ожидание
    • Описание: Ожидание появления или исчезновения текста, либо истечения указанного времени
    • Параметры:
      • time (число, необязательно): Время ожидания в секундах
      • text (строка, необязательно): Текст, который нужно ожидать
      • textGone (строка, необязательно): Текст, исчезновения которого нужно ожидать
    • Только чтение: false
Управление вкладками
  • browser_tabs
    • Название: Управление вкладками
    • Описание: Список, создание, закрытие или выбор вкладки браузера.
    • Параметры:
      • action (строка): Выполняемая операция
      • index (число, необязательно): Индекс вкладки, используется для закрытия/выбора. Если не указан для закрытия, закрывается текущая вкладка.
      • url (строка, необязательно): URL для перехода в новой вкладке, используется для создания.
    • Только чтение: false
Установка браузера
Конфигурация (опционально через --caps=config)
  • browser_get_config
    • Название: Получить конфигурацию
    • Описание: Получить итоговую разрешённую конфигурацию после объединения параметров CLI, переменных окружения и файла конфигурации.
    • Параметры: Нет
    • Только чтение: true
Сеть (опционально через --caps=network)
  • browser_network_state_set
    • Название: Установить состояние сети
    • Описание: Устанавливает состояние сети браузера в онлайн или офлайн. В офлайн-режиме все сетевые запросы будут завершаться ошибкой.
    • Параметры:
      • state (строка): Установите "offline" для имитации офлайн-режима, "online" для восстановления сетевого подключения
    • Только чтение: false
  • browser_route
    • Название: Мокирование сетевых запросов
    • Описание: Настройка маршрута для мокирования сетевых запросов, соответствующих шаблону URL
    • Параметры:
      • pattern (строка): Шаблон URL для сопоставления (например, "/api/users", "/*.{png,jpg}")
      • status (число, необязательно): HTTP-код состояния для возврата (по умолчанию: 200)
      • body (строка, необязательно): Тело ответа (текст или JSON-строка)
      • contentType (строка, необязательно): Заголовок Content-Type (например, "application/json", "text/html")
      • headers (массив, необязательно): Заголовки для добавления в формате "Имя: Значение"
      • removeHeaders (строка, необязательно): Список имён заголовков через запятую для удаления из запроса
    • Только чтение: false
  • browser_route_list
    • Название: Список сетевых маршрутов
    • Описание: Список всех активных сетевых маршрутов
    • Параметры: Нет
    • Только чтение: true
  • browser_unroute
    • Название: Удаление сетевых маршрутов
    • Описание: Удаление сетевых маршрутов, соответствующих шаблону (или всех маршрутов, если шаблон не указан)
    • Параметры:
      • pattern (строка, необязательно): Шаблон URL для удаления маршрута (опустите для удаления всех маршрутов)
    • Только чтение: false
Хранилище (опционально через --caps=storage)
  • browser_cookie_clear
    • Название: Очистить cookies
    • Описание: Очистить все cookies
    • Параметры: Нет
    • Только чтение: false
  • browser_cookie_delete
    • Название: Удалить cookie
    • Описание: Удалить конкретный cookie
    • Параметры:
      • name (строка): Имя cookie для удаления
    • Только чтение: false
  • browser_cookie_get
    • Название: Получить cookie
    • Описание: Получить конкретный cookie по имени
    • Параметры:
      • name (строка): Имя cookie для получения
    • Только чтение: true
  • browser_cookie_list
    • Название: Список cookies
    • Описание: Список всех cookies (опционально отфильтрованных по домену/пути)
    • Параметры:
      • domain (строка, необязательно): Фильтр cookies по домену
      • path (строка, необязательно): Фильтр cookies по пути
    • Только чтение: true
  • browser_cookie_set
    • Название: Установить cookie
    • Описание: Установить cookie с необязательными флагами (домен, путь, срок действия, httpOnly, secure, sameSite)
    • Параметры:
      • name (строка): Имя cookie
      • value (строка): Значение cookie
      • domain (строка, необязательно): Домен cookie
      • path (строка, необязательно): Путь cookie
      • expires (число, необязательно): Срок действия cookie как Unix-временная метка
      • httpOnly (логическое, необязательно): Является ли cookie только HTTP
      • secure (логическое, необязательно): Является ли cookie защищённым
      • sameSite (строка, необязательно): Атрибут SameSite cookie
    • Только чтение: false
  • browser_localstorage_clear
    • Название: Очистить localStorage
    • Описание: Очистить весь localStorage
    • Параметры: Нет
    • Только чтение: false
  • browser_localstorage_delete
    • Название: Удалить элемент localStorage
    • Описание: Удалить элемент localStorage
    • Параметры:
      • key (строка): Ключ для удаления
    • Только чтение: false
  • browser_localstorage_get
    • Название: Получить элемент localStorage
    • Описание: Получить элемент localStorage по ключу
    • Параметры:
      • key (строка): Ключ для получения
    • Только чтение: true
  • browser_localstorage_list
    • Название: Список localStorage
    • Описание: Список всех пар ключ-значение localStorage
    • Параметры: Нет
    • Только чтение: true
  • browser_localstorage_set
    • Название: Установить элемент localStorage
    • Описание: Установить элемент localStorage
    • Параметры:
      • key (строка): Ключ для установки
      • value (строка): Значение для установки
    • Только чтение: false
  • browser_sessionstorage_clear
    • Название: Очистить sessionStorage
    • Описание: Очистить весь sessionStorage
    • Параметры: Нет
    • Только чтение: false
  • browser_sessionstorage_delete
    • Название: Удалить элемент sessionStorage
    • Описание: Удалить элемент sessionStorage
    • Параметры:
      • key (строка): Ключ для удаления
    • Только чтение: false
  • browser_sessionstorage_get
    • Название: Получить элемент sessionStorage
    • Описание: Получить элемент sessionStorage по ключу
    • Параметры:
      • key (строка): Ключ для получения
    • Только чтение: true
  • browser_sessionstorage_list
    • Название: Список sessionStorage
    • Описание: Список всех пар ключ-значение sessionStorage
    • Параметры: Нет
    • Только чтение: true
  • browser_sessionstorage_set
    • Название: Установить элемент sessionStorage
    • Описание: Установить элемент sessionStorage
    • Параметры:
      • key (строка): Ключ для установки
      • value (строка): Значение для установки
    • Только чтение: false
  • browser_set_storage_state
    • Название: Восстановить состояние хранилища
    • Описание: Восстановить состояние хранилища (cookies, локальное хранилище) из файла. Это очищает существующие cookies и локальное хранилище перед восстановлением.
    • Параметры:
      • filename (строка): Путь к файлу состояния хранилища для восстановления
    • Только чтение: false
  • browser_storage_state
    • Название: Сохранить состояние хранилища
    • Описание: Сохранить состояние хранилища (cookies, локальное хранилище) в файл для последующего использования
    • Параметры:
      • filename (строка, необязательно): Имя файла для сохранения состояния хранилища. По умолчанию используется storage-state-{timestamp}.json, если не указано.
    • Только чтение: true
Инструменты разработчика (опционально через --caps=devtools)
  • browser_annotate
    • Название: Аннотировать текущую страницу
    • Описание: Открыть Playwright Dashboard в режиме аннотаций для текущей страницы и ожидать, пока пользователь нарисует аннотации. Возвращает аннотированный скриншот, ARIA-снимок и список аннотаций.
    • Параметры: Нет
    • Только чтение: true
  • browser_hide_highlight
    • Название: Скрыть подсветку элемента
    • Описание: Удалить наложенную подсветку, ранее добавленную для элемента.
    • Параметры:
      • element (строка, необязательно): Понятное человеку описание элемента, использованное при добавлении подсветки; должно совпадать со значением, переданным в browser_highlight.
      • target (строка, необязательно): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
    • Только чтение: true
  • browser_highlight
    • Название: Подсветить элемент
    • Описание: Показать постоянную наложенную подсветку вокруг элемента на странице.
    • Параметры:
      • element (строка, необязательно): Понятное человеку описание элемента, использованное для получения разрешения на взаимодействие с элементом
      • target (строка): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
      • style (строка, необязательно): Дополнительный встроенный CSS, применяемый к наложенной подсветке, например "outline: 2px dashed red".
    • Только чтение: true
  • browser_resume
    • Название: Возобновить приостановленное выполнение скрипта
    • Описание: Возобновить выполнение скрипта после его приостановки. При вызове с шагом, установленным в true, выполнение снова приостановится перед следующим действием.
    • Параметры:
      • step (логическое, необязательно): Если true, выполнение снова приостановится перед следующим действием, что позволяет пошаговую отладку.
      • location (строка, необязательно): Приостановить выполнение в конкретном :, например "example.spec.ts:42".
    • Только чтение: false
  • browser_start_recording
    • Название: Начать запись действий пользователя
    • Описание: Начать запись действий, которые пользователь выполняет в браузере, как код Playwright. Используйте это, когда пользователь хочет вручную продемонстрировать поток. Вызовите browser_stop_recording, когда пользователь скажет, что закончил, чтобы получить записанные действия.
    • Параметры: Нет
    • Только чтение: true
  • browser_start_tracing
    • Название: Начать трассировку
    • Описание: Начать запись трассировки
    • Параметры: Нет
    • Только чтение: true
  • browser_start_video
    • Название: Начать видео
    • Описание: Начать запись видео
    • Параметры:
      • filename (строка, необязательно): Имя файла для сохранения видео.
      • size (объект, необязательно): Размер видео
    • Только чтение: true
  • browser_stop_recording
    • Название: Остановить запись действий пользователя
    • Описание: Остановить запись, начатую с помощью browser_start_recording, и вернуть записанные действия как код Playwright.
    • Параметры: Нет
    • Только чтение: true
  • browser_stop_tracing
    • Название: Остановить трассировку
    • Описание: Остановить запись трассировки
    • Параметры: Нет
    • Только чтение: true
  • browser_stop_video
    • Название: Остановить видео
    • Описание: Остановить запись видео
    • Параметры: Нет
    • Только чтение: true
  • browser_video_chapter
    • Название: Глава видео
    • Описание: Добавить маркер главы в запись видео. Показывает полноэкранную карточку главы с размытым фоном.
    • Параметры:
      • title (строка): Название главы
      • description (строка, необязательно): Описание главы
      • duration (число, необязательно): Продолжительность в миллисекундах для отображения карточки главы
    • Только чтение: true
  • browser_video_hide_actions
    • Название: Скрыть наложения действий
    • Описание: Прекратить аннотирование действий, выполняемых на странице.
    • Параметры: Нет
    • Только чтение: true
  • browser_video_show_actions
    • Название: Показывать оверлеи действий
    • Описание: Аннотировать последующие действия, выполняемые на странице, выноской, которая называет действие и выделяет целевой элемент. Полезно при записи видео или захвата экрана.
    • Параметры:
      • duration (число, необязательно): Как долго каждая аннотация действия остается на экране, в миллисекундах. По умолчанию 500.
      • position (строка, необязательно): Где разместить заголовок действия относительно страницы. По умолчанию — вверху справа.
      • cursor (строка, необязательно): Оформление курсора для действий указателя. "pointer" (по умолчанию) анимирует указатель мыши от предыдущей точки действия к следующей; "none" отключает оформление курсора.
    • Только чтение: true
Координатные (опционально через --caps=vision)
  • browser_mouse_click_xy
    • Название: Клик
    • Описание: Нажать кнопку мыши в заданной позиции
    • Параметры:
      • x (число): Координата X
      • y (число): Координата Y
      • button (строка, необязательно): Кнопка для нажатия, по умолчанию левая
      • clickCount (число, необязательно): Количество кликов, по умолчанию 1
      • delay (число, необязательно): Время ожидания между нажатием и отпусканием кнопки мыши в миллисекундах, по умолчанию 0
    • Только чтение: false
  • browser_mouse_down
    • Название: Нажать кнопку мыши
    • Описание: Нажать кнопку мыши
    • Параметры:
      • button (строка, необязательно): Кнопка для нажатия, по умолчанию левая
    • Только чтение: false
  • browser_mouse_drag_xy
    • Название: Перетащить мышь
    • Описание: Перетащить левую кнопку мыши в заданную позицию
    • Параметры:
      • startX (число): Начальная координата X
      • startY (число): Начальная координата Y
      • endX (число): Конечная координата X
      • endY (число): Конечная координата Y
    • Только чтение: false
  • browser_mouse_move_xy
    • Название: Переместить мышь
    • Описание: Переместить мышь в заданную позицию
    • Параметры:
      • x (число): Координата X
      • y (число): Координата Y
    • Только чтение: false
  • browser_mouse_up
    • Название: Отпустить кнопку мыши
    • Описание: Отпустить кнопку мыши
    • Параметры:
      • button (строка, необязательно): Кнопка для отпускания, по умолчанию левая
    • Только чтение: false
  • browser_mouse_wheel
    • Название: Прокрутить колесо мыши
    • Описание: Прокрутить колесо мыши
    • Параметры:
      • deltaX (число): Дельта X
      • deltaY (число): Дельта Y
    • Только чтение: false
Генерация PDF (опционально через --caps=pdf)
  • browser_pdf_save
    • Название: Сохранить как PDF
    • Описание: Сохранить страницу как PDF
    • Параметры:
      • filename (строка, необязательно): Имя файла для сохранения PDF. По умолчанию page-{timestamp}.pdf, если не указано. Предпочтительно использовать относительные имена файлов, чтобы оставаться в пределах выходного каталога.
    • Только чтение: true
Проверки тестов (опционально через --caps=testing)
  • browser_generate_locator
    • Название: Создать локатор для элемента
    • Описание: Сгенерировать локатор для указанного элемента для использования в тестах
    • Параметры:
      • element (строка, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом
      • target (строка): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента
    • Только чтение: true
  • browser_verify_element_visible
    • Название: Проверить видимость элемента
    • Описание: Проверить, что элемент виден на странице
    • Параметры:
      • role (строка): РОЛЬ элемента. Можно найти в снимке так: - {ROLE} "Accessible Name":
      • accessibleName (строка): ДОСТУПНОЕ_ИМЯ элемента. Можно найти в снимке так: - role "{ACCESSIBLE_NAME}"
    • Только чтение: false
  • browser_verify_list_visible
    • Название: Проверить видимость списка
    • Описание: Проверить, что список виден на странице
    • Параметры:
      • element (строка): Понятное человеку описание списка
      • target (строка): Точная ссылка на целевой элемент, указывающая на список
      • items (массив): Элементы для проверки
    • Только чтение: false
  • browser_verify_text_visible
    • Название: Проверить видимость текста
    • Описание: Проверить, что текст виден на странице. Предпочтительно использовать browser_verify_element_visible, если возможно.
    • Параметры:
      • text (строка): ТЕКСТ для проверки. Можно найти в снимке так: - role "Accessible Name": {TEXT} или так: - text: {TEXT}
    • Только чтение: false
  • browser_verify_value
    • Название: Проверить значение
    • Описание: Проверить значение элемента
    • Параметры:
      • type (строка): Тип элемента
      • element (строка): Понятное человеку описание элемента
      • target (строка): Точная ссылка на целевой элемент из снимка страницы
      • value (строка): Значение для проверки. Для флажка используйте "true" или "false".
    • Только чтение: false