Playwright MCP
MCP-сервер (Model Context Protocol), предоставляющий возможности автоматизации браузера на основе Playwright. Сервер позволяет LLM взаимодействовать с веб-страницами через структурированные снимки доступности (accessibility snapshots), избавляя от необходимости использовать скриншоты или модели, обученные на визуальных данных.
Playwright MCP vs Playwright CLI
Этот пакет предоставляет MCP-интерфейс к Playwright. Если вы работаете с coding-агентом, возможно, вам будет полезнее использовать CLI+SKILLS.
-
CLI: Современные coding-агенты всё чаще предпочитают рабочие процессы на основе CLI, оформленные как SKILLs, вместо MCP, поскольку вызовы CLI более экономичны по токенам: они не загружают в контекст модели объёмные схемы инструментов и подробные деревья доступности, позволяя агентам действовать через лаконичные, целевые команды. Это делает связку CLI + SKILLs более подходящей для высоконагруженных coding-агентов, которым приходится совмещать автоматизацию браузера с работой над крупными кодовыми базами, тестами и логическими рассуждениями в условиях ограниченного контекстного окна. Подробнее о Playwright CLI with SKILLS.
-
MCP: MCP остаётся актуальным для специализированных агентных циклов, которым полезны постоянное состояние, богатая интроспекция и итеративный анализ структуры страницы, — например, для исследовательской автоматизации, самовосстанавливающихся тестов или длительных автономных сценариев, где непрерывное поддержание контекста браузера важнее затрат на токены.
Ключевые возможности
-
Быстрота и лёгкость. Использует дерево доступности Playwright, а не обработку на уровне пикселей.
-
Дружелюбность к LLM. Не требует vision-моделей — работает исключительно со структурированными данными.
-
Детерминированное применение инструментов. Устраняет неоднозначность, характерную для подходов на основе скриншотов.
Требования
-
Node.js 18 или новее
-
VS Code, Cursor, Windsurf, Claude Desktop, Goose, Grok, Junie или любой другой MCP-клиент
Начало работы
Сначала установите Playwright MCP-сервер через ваш клиент.
Стандартная конфигурация подходит для большинства инструментов:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
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
Следуйте инструкциям в разделе Configuring MCP Servers.
Пример: локальная настройка
Добавьте следующий код в файл 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
Используйте Copilot CLI, чтобы интерактивно добавить Playwright MCP-сервер:
/mcp add
Также можно создать или отредактировать файл конфигурации ~/.copilot/mcp-config.json, добавив в него:
{
"mcpServers": {
"playwright": {
"type": "local",
"command": "npx",
"tools": [
"*"
],
"args": [
"@playwright/mcp@latest"
]
}
}
}
Дополнительные сведения — в документации Copilot CLI.
Cursor
Установка в один клик:
Или установка вручную:
Перейдите в Cursor Settings → MCP → Add new MCP Server. Задайте любое имя, выберите тип command и укажите команду npx @playwright/mcp@latest. Проверить конфигурацию или добавить аргументы к команде можно, нажав Edit.
Factory
Используйте Factory CLI для добавления Playwright MCP-сервера:
droid mcp add playwright "npx @playwright/mcp@latest"
Также можно ввести /mcp внутри Factory droid, чтобы открыть интерактивный интерфейс управления MCP-серверами.
Дополнительные сведения — в документации Factory MCP.
Gemini CLI
Следуйте руководству по установке MCP и используйте стандартную конфигурацию, приведённую выше.
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:
-
Введите
/mcp -
Нажмите
Ctrl+A, чтобы добавить новый MCP-сервер -
Выберите Playwright из списка
Также можно добавить сервер в файл .junie/mcp/mcp.json:
{
"mcpServers": {
"Playwright": {
"command": "npx",
"args": [
"-y",
"@playwright/mcp@latest"
]
}
}
}
Дополнительные сведения — в документации по настройке Junie MCP.
Kiro
Следуйте документации по MCP-серверам. Например, в файле .kiro/settings/mcp.json:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
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
Установка в один клик:
Или установка вручную:
Следуйте руководству по установке MCP и используйте стандартную конфигурацию, приведённую выше. Также можно установить Playwright MCP-сервер через VS Code CLI:
# 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-сервер. Используйте стандартную конфигурацию, приведённую выше.
Также можно использовать slash-команду /add-mcp в строке ввода Warp и вставить стандартную конфигурацию:
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": [
"@playwright/mcp@latest"
]
}
}
}
Windsurf
Следуйте документации Windsurf MCP. Используйте стандартную конфигурацию, приведённую выше.
Конфигурация
MCP-сервер Playwright поддерживает следующие аргументы. Их можно указать в JSON-конфигурации выше в составе списка "args":
| Опция | Описание |
|---|---|
| --allowed-hosts | разделённый запятыми список хостов, с которых серверу разрешено принимать запросы. По умолчанию используется хост, к которому привязан сервер. Передайте '*', чтобы отключить проверку хостов. Переменная окружения PLAYWRIGHT_MCP_ALLOWED_HOSTS |
| --allowed-origins | разделённый точкой с запятой список ДОВЕРЕННЫХ источников, к которым браузеру разрешено обращаться. По умолчанию разрешены все. Важно: не служит границей безопасности и не влияет на перенаправления. Переменная окружения PLAYWRIGHT_MCP_ALLOWED_ORIGINS |
| --allow-unrestricted-file-access | разрешает доступ к файлам за пределами корневых каталогов рабочей области, а также неограниченный доступ к URL с схемой file://. По умолчанию доступ к файловой системе ограничен корневыми каталогами рабочей области (или текущим каталогом, если корневые каталоги не заданы), а переходы по URL file:// блокируются. Переменная окружения PLAYWRIGHT_MCP_ALLOW_UNRESTRICTED_FILE_ACCESS |
| --blocked-origins | разделённый точкой с запятой список источников, к которым браузеру запрещено обращаться. Список блокировки проверяется раньше списка разрешения. Если использовать без списка разрешения, запросы, не совпадающие со списком блокировки, по-прежнему разрешены. Важно: не служит границей безопасности и не влияет на перенаправления. Переменная окружения PLAYWRIGHT_MCP_BLOCKED_ORIGINS |
| --block-service-workers | блокирует service workers. Переменная окружения PLAYWRIGHT_MCP_BLOCK_SERVICE_WORKERS |
| --browser | браузер или канал Chrome, возможные значения: chrome, firefox, webkit, msedge. Переменная окружения PLAYWRIGHT_MCP_BROWSER |
| --caps | разделённый запятыми список дополнительных возможностей, возможные значения: vision, pdf, devtools. Переменная окружения PLAYWRIGHT_MCP_CAPS |
| --cdp-endpoint | CDP-эндпоинт для подключения. Переменная окружения PLAYWRIGHT_MCP_CDP_ENDPOINT |
| --cdp-header | CDP-заголовки, отправляемые с запросом на подключение; можно указать несколько. Переменная окружения PLAYWRIGHT_MCP_CDP_HEADERS |
| --cdp-timeout | таймаут подключения к CDP-эндпоинту в миллисекундах, по умолчанию 30000 мс. Переменная окружения PLAYWRIGHT_MCP_CDP_TIMEOUT |
| --codegen | язык для генерации кода, возможные значения: "typescript", "python", "java", "csharp", "none". По умолчанию — "typescript". Переменная окружения PLAYWRIGHT_MCP_CODEGEN |
| --config | путь к файлу конфигурации. Переменная окружения PLAYWRIGHT_MCP_CONFIG |
| --console-level | уровень возвращаемых сообщений консоли: "error", "warning", "info", "debug". Каждый уровень включает сообщения более критичных уровней. Переменная окружения PLAYWRIGHT_MCP_CONSOLE_LEVEL |
| --device | эмулируемое устройство, например "iPhone 15". Переменная окружения PLAYWRIGHT_MCP_DEVICE |
| --mobile | эмуляция типового мобильного устройства (Pixel 10 для Chromium, iPhone 17 для WebKit). Мобильные страницы обычно легче, что экономит токены. Нельзя комбинировать с --device. Переменная окружения PLAYWRIGHT_MCP_MOBILE |
| --executable-path | путь к исполняемому файлу браузера. Переменная окружения PLAYWRIGHT_MCP_EXECUTABLE_PATH |
| --extension | подключение к запущенному экземпляру браузера (только Edge/Chrome). Требуется установленное расширение "Playwright Extension". Переменная окружения PLAYWRIGHT_MCP_EXTENSION |
| --endpoint | эндпоинт подключённого браузера. Переменная окружения PLAYWRIGHT_MCP_ENDPOINT |
| --file-paths | способ отображения путей к файлам в результатах инструментов: "relative" (относительно корня рабочей области) или "absolute". По умолчанию — "relative". Переменная окружения PLAYWRIGHT_MCP_FILE_PATHS |
| --grant-permissions | список разрешений, предоставляемых контексту браузера, например "geolocation", "clipboard-read", "clipboard-write". Переменная окружения PLAYWRIGHT_MCP_GRANT_PERMISSIONS |
| --headless | запуск браузера в headless-режиме; по умолчанию браузер запускается с графическим интерфейсом. Переменная окружения PLAYWRIGHT_MCP_HEADLESS |
| --host | хост, к которому привязывается сервер. По умолчанию — localhost. Используйте 0.0.0.0, чтобы привязать сервер ко всем интерфейсам. Переменная окружения PLAYWRIGHT_MCP_HOST |
| --idle-timeout | закрывает браузер по истечении указанного количества миллисекунд без завершённого вызова инструмента; следующий вызов перезапускает его. По умолчанию один час для headless-браузеров и никогда для браузеров с графическим интерфейсом; значение 0 отключает таймаут. Переменная окружения PLAYWRIGHT_MCP_IDLE_TIMEOUT |
| --ignore-https-errors | игнорировать ошибки HTTPS. Переменная окружения PLAYWRIGHT_MCP_IGNORE_HTTPS_ERRORS |
| --init-page | путь к файлу TypeScript, выполняемому на объекте страницы Playwright. Переменная окружения PLAYWRIGHT_MCP_INIT_PAGE |
| --init-script | путь к файлу JavaScript, добавляемому в качестве инициализационного скрипта. Скрипт выполняется на каждой странице перед её собственными скриптами. Опцию можно указывать несколько раз. Переменная окружения PLAYWRIGHT_MCP_INIT_SCRIPT |
| --isolated | хранит профиль браузера в памяти, не сохраняя его на диск. Переменная окружения PLAYWRIGHT_MCP_ISOLATED |
| --image-responses | отправлять ли клиенту ответы с изображениями. Возможные значения: "allow", "omit" или "only". При значении "only" ответ, содержащий изображение, состоит исключительно из частей с изображением, без текстовой части. По умолчанию — "allow". Переменная окружения PLAYWRIGHT_MCP_IMAGE_RESPONSES |
| --no-sandbox | отключает песочницу для всех типов процессов, которые обычно ей защищены. Переменная окружения PLAYWRIGHT_MCP_NO_SANDBOX |
| --no-webmcp | не собирать и не предоставлять инструменты, которые страница регистрирует через WebMCP API. Переменная окружения PLAYWRIGHT_MCP_WEBMCP=false |
| --output-dir | путь к каталогу для автоматически именуемых выходных файлов, например скриншота, снятого без явно заданного имени файла. Файлы с явно заданным именем разрешаются относительно корня рабочей области и не зависят от этой опции. Переменная окружения PLAYWRIGHT_MCP_OUTPUT_DIR |
| --output-max-size | порог высвобождения старых выходных файлов в байтах. Переменная окружения PLAYWRIGHT_MCP_OUTPUT_MAX_SIZE |
| --port | порт для прослушивания при использовании транспорта SSE. Переменная окружения PLAYWRIGHT_MCP_PORT |
| --profile-dir-name | имя каталога профиля в пользовательском каталоге данных для подключения с --extension, например "Profile 1". По умолчанию используется последний использованный профиль, в котором установлено расширение. Переменная окружения PLAYWRIGHT_MCP_PROFILE_DIR_NAME |
| --proxy-bypass | разделённый запятыми список доменов, для которых прокси не используется, например ".com,chromium.org,.domain.com". Переменная окружения PLAYWRIGHT_MCP_PROXY_BYPASS |
| --proxy-server | прокси-сервер, например "http://myproxy:3128" или "socks5://myproxy:8080". Переменная окружения PLAYWRIGHT_MCP_PROXY_SERVER |
| --sandbox | включает песочницу для всех типов процессов, которые обычно ей не защищены. Переменная окружения PLAYWRIGHT_MCP_SANDBOX |
| --save-session | сохранять ли сессию Playwright MCP в выходной каталог. Переменная окружения PLAYWRIGHT_MCP_SAVE_SESSION |
| --secrets | путь к файлу с секретами в формате dotenv. Переменная окружения PLAYWRIGHT_MCP_SECRETS_FILE |
| --shared-browser-context | использовать один и тот же контекст браузера для всех подключённых HTTP-клиентов. Переменная окружения PLAYWRIGHT_MCP_SHARED_BROWSER_CONTEXT |
| --snapshot-boxes | включает ограничивающий прямоугольник каждого элемента в снимки в формате [box=x,y,width,height]. Координаты задаются относительно области просмотра в CSS-пикселях. Переменная окружения PLAYWRIGHT_MCP_SNAPSHOT_BOXES |
| --snapshot-mode | режим создания снимков для ответов. Возможные значения: "full" или "none". По умолчанию — "full". Переменная окружения PLAYWRIGHT_MCP_SNAPSHOT_MODE |
| --storage-state | путь к файлу состояния хранилища для изолированных сессий. Переменная окружения PLAYWRIGHT_MCP_STORAGE_STATE |
| --test-id-attribute | атрибут, используемый для тестовых идентификаторов; по умолчанию — "data-testid". Переменная окружения PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE |
| --timeout-action | таймаут действия в миллисекундах, по умолчанию 5000 мс. Переменная окружения PLAYWRIGHT_MCP_TIMEOUT_ACTION |
| --timeout-navigation | таймаут навигации в миллисекундах, по умолчанию 60000 мс. Переменная окружения PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION |
| --timeout-settle | время ожидания в миллисекундах после каждого действия до завершения вызванных им процессов, по умолчанию 500 мс. Переменная окружения PLAYWRIGHT_MCP_TIMEOUT_SETTLE |
| --user-agent | строка User-Agent. Переменная окружения PLAYWRIGHT_MCP_USER_AGENT |
| --user-data-dir | путь к пользовательскому каталогу данных. Если не указан, будет создан временный каталог. Переменная окружения PLAYWRIGHT_MCP_USER_DATA_DIR |
| --viewport-size | размер области просмотра браузера в пикселях, например "1280x720". Переменная окружения 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-клиента, поэтому разные проекты автоматически получают отдельные профили.
Важно
Постоянный профиль может одновременно использоваться только одним экземпляром браузера, поэтому параллельно работающие 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 позволяет подключаться к уже открытым вкладкам браузера и использовать ваши активные сессии и состояние браузера. Инструкции по установке и настройке смотрите в microsoft/playwright › packages/extension.
Начальное состояние
Существует несколько способов передать начальное состояние контексту браузера или странице.
Для состояния хранилища можно использовать один из вариантов:
-
Запуск с каталогом данных пользователя через аргумент
--user-data-dir. При этом все данные браузера сохраняются между сессиями. -
Запуск с файлом состояния хранилища через аргумент
--storage-state. При этом cookies и данные local storage из файла загружаются в изолированный контекст браузера.
Для состояния страницы доступны следующие варианты:
--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;
Файл конфигурации
MCP-сервер Playwright можно настроить с помощью 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;
/**
* Whether to collect and expose the tools that a page registers through the
* experimental WebMCP API. Enabled by default.
*/
webmcp?: 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;
/**
* The directory for automatically named output files, for example a screenshot taken without an
* explicit file name. Files with an explicit name are resolved against the workspace root instead
* and are not affected by this option.
*/
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;
/**
* Close the browser after this many milliseconds without a tool call, and relaunch it on the next one.
* Defaults to one hour for headless browsers Playwright launched, and to no timeout for headed or attached ones. Pass 0 to disable.
* The CLI shuts the whole session down instead of relaunching.
*/
idle?: number;
};
/**
* Whether to send image responses to the client. Can be "allow", "omit", or "only". Defaults to "allow".
* With "only", a response that carries an image consists of the image parts alone, without the text part.
*/
imageResponses?: 'allow' | 'omit' | 'only';
/**
* How file paths are rendered in tool results. Can be "relative" to the workspace root or "absolute". Defaults to "relative".
*/
filePaths?: 'relative' | 'absolute';
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';
}
/**
* Подключение к запущенному экземпляру браузера (только Edge/Chrome). Если указано, конфигурация
* `browser` игнорируется.
* Требуется установленное расширение "Playwright Extension".
*/
extension?: boolean;
server?: {
/**
* Порт для прослушивания входящих соединений по SSE или MCP-транспорту.
*/
port?: number;
/**
* Хост, к которому привязывается сервер. По умолчанию — localhost. Используйте 0.0.0.0, чтобы привязать сервер ко всем интерфейсам.
*/
host?: string;
/**
* Хосты, с которых данный сервер разрешено обслуживать. По умолчанию — хост, к которому привязан сервер.
* Это не имеет отношения к CORS, а служит для защиты от DNS rebinding.
*/
allowedHosts?: string[];
},
/**
* Список включённых возможностей инструментов. Возможные значения:
* - 'core': базовые функции автоматизации браузера.
* - 'pdf': генерация и обработка PDF.
* - 'vision': взаимодействие на основе координат.
* - 'devtools': функции инструментов разработчика.
*/
capabilities?: ToolCapability[];
/**
* Сохранять ли сессию Playwright в каталог вывода.
*/
saveSession?: boolean;
/**
* Собирать и предоставлять инструменты, которые страница регистрирует через
* экспериментальный WebMCP API. Включено по умолчанию.
*/
webmcp?: boolean;
/**
* Использовать один и тот же контекст браузера для всех подключённых HTTP-клиентов.
*/
sharedBrowserContext?: boolean;
/**
* Секреты используются для замены совпадающего обычного текста в ответах инструментов, чтобы LLM
* случайно не получила конфиденциальные данные. Это удобство, а не мера безопасности:
* всегда проверяйте информацию, поступающую от инструмента, на стороне клиента.
*/
secrets?: Record<string, string>;
/**
* Каталог для автоматически именуемых выходных файлов, например снимка экрана, сделанного без
* явного имени файла. Файлы с явно указанным именем разрешаются относительно корня рабочей области
* и не зависят от этого параметра.
*/
outputDir?: string;
/**
* Порог вытеснения старых выходных файлов, в байтах.
*/
outputMaxSize?: number;
console?: {
/**
* Уровень консольных сообщений для возврата. Каждый уровень включает сообщения более критичных уровней. По умолчанию — "info".
*/
level?: 'error' | 'warning' | 'info' | 'debug';
},
network?: {
/**
* Список origins, к которым браузеру разрешено выполнять запросы. По умолчанию разрешены все. Origins, совпадающие одновременно с `allowedOrigins` и `blockedOrigins`, будут заблокированы.
*
* Поддерживаемые форматы:
* - Полный origin: `https://example.com:8080` — совпадает только с этим origin
* - Подстановка порта: `http://localhost:*` — совпадает с любым портом на localhost по протоколу http
*/
allowedOrigins?: string[];
/**
* Список origins, к которым браузеру запрещено выполнять запросы. Origins, совпадающие одновременно с `allowedOrigins` и `blockedOrigins`, будут заблокированы.
*
* Поддерживаемые форматы:
* - Полный origin: `https://example.com:8080` — совпадает только с этим origin
* - Подстановка порта: `http://localhost:*` — совпадает с любым портом на localhost по протоколу http
*/
blockedOrigins?: string[];
};
/**
* Укажите атрибут, используемый для тестовых идентификаторов; по умолчанию — "data-testid".
*/
testIdAttribute?: string;
timeouts?: {
/*
* Настраивает таймаут действий по умолчанию: https://playwright.dev/docs/api/class-page#page-set-default-timeout. По умолчанию 5000 мс.
*/
action?: number;
/*
* Настраивает таймаут навигации по умолчанию: https://playwright.dev/docs/api/class-page#page-set-default-navigation-timeout. По умолчанию 60000 мс.
*/
navigation?: number;
/**
* Настраивает таймаут expect по умолчанию: https://playwright.dev/docs/test-timeouts#expect-timeout. По умолчанию 5000 мс.
*/
expect?: number;
/**
* Сколько ждать после каждого действия, чтобы завершились запущенные процессы (навигации, запросы), прежде чем ответить. По умолчанию 500 мс.
*/
settle?: number;
/**
* Закрыть браузер после указанного количества миллисекунд без вызова инструмента и перезапустить его при следующем вызове.
* По умолчанию — один час для headless-браузеров, запущенных Playwright, и без таймаута для headed или подключённых браузеров. Укажите 0, чтобы отключить.
* CLI вместо перезапуска завершает всю сессию.
*/
idle?: number;
};
/**
* Отправлять ли ответы с изображениями клиенту. Возможные значения: "allow", "omit" или "only". По умолчанию — "allow".
* При значении "only" ответ, содержащий изображение, состоит только из частей с изображением, без текстовой части.
*/
imageResponses?: 'allow' | 'omit' | 'only';
/**
* Как отображаются пути к файлам в результатах инструментов. Возможные значения: "relative" (относительно корня рабочей области) или "absolute". По умолчанию — "relative".
*/
filePaths?: 'relative' | 'absolute';
snapshot?: {
/**
* При создании снимков для ответов задаёт используемый режим.
*/
mode?: 'full' | 'none';
/**
* Включать ли ограничивающий прямоугольник каждого элемента в снимки в формате [box=x,y,width,height].
* Координаты задаются относительно области просмотра в CSS-пикселях (Element.getBoundingClientRect).
*/
boxes?: boolean;
};
/**
* allowUnrestrictedFileAccess служит ограничителем, не позволяющим LLM случайно
* выйти за пределы предназначенной ей рабочей области. Это защитная мера удобства для перехвата
* непреднамеренного доступа к файлам, а не защищённая граница: намеренную попытку получить доступ
* к другим каталогам легко обойти, поэтому для настоящей безопасности всегда полагайтесь
* на разрешения на уровне клиента.
*/
allowUnrestrictedFileAccess?: boolean;
/**
* Укажите язык для генерации кода.
*/
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 Security Best Practices.
Docker
ПРИМЕЧАНИЕ: Реализация для Docker на данный момент поддерживает только headless-режим браузера 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(string, optional): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с ним -
target(string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента -
doubleClick(boolean, optional): Выполнять двойной клик вместо одинарного -
button(string, optional): Кнопка мыши для клика, по умолчанию — левая -
modifiers(array, optional): Клавиши-модификаторы, удерживаемые при нажатии -
Только чтение: false
-
-
browser_close
-
Название: Закрыть браузер
-
Описание: Закрывает страницу
-
Параметры: отсутствуют
-
Только чтение: false
-
-
browser_console_messages
-
Название: Получение сообщений консоли
-
Описание: Возвращает все сообщения консоли
-
Параметры:
-
level(string): Уровень возвращаемых сообщений консоли. Каждый уровень включает сообщения более серьёзных уровней. По умолчанию — "info". -
all(boolean, optional): Возвращать все сообщения консоли с начала сессии, а не только с момента последней навигации. По умолчанию — false. -
filename(string, optional): Имя файла для сохранения сообщений консоли. Относительные пути разрешаются относительно корня рабочей области. Если параметр не указан, сообщения возвращаются в виде текста. -
Только чтение: true
-
-
browser_drag
-
Название: Перетаскивание мышью
-
Описание: Выполняет перетаскивание (drag and drop) между двумя элементами
-
Параметры:
-
startElement(string, optional): Понятное человеку описание исходного элемента, используемое для получения разрешения на взаимодействие с ним -
startTarget(string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента -
endElement(string, optional): Понятное человеку описание целевого элемента, используемое для получения разрешения на взаимодействие с ним -
endTarget(string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента -
Только чтение: false
-
-
browser_drop
-
Название: Перенос файлов или данных на элемент
-
Описание: Переносит файлы или данные с указанным MIME-типом на элемент, как если бы они были перетащены извне страницы. Необходимо указать хотя бы один из параметров — "paths" или "data".
-
Параметры:
-
element(string, optional): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с ним -
target(string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента -
paths(array, optional): Абсолютные пути к файлам, которые нужно перенести на элемент. -
data(object, optional): Переносимые данные в виде отображения MIME-типа в строковое значение (например, {"text/plain": "hello", "text/uri-list": "https://example.com"}). -
Только чтение: false
-
-
browser_emulate_media
-
Название: Эмуляция медиа-функций
-
Описание: Эмулирует CSS media features для страницы, например переключение между светлой и тёмной цветовой схемой. Пропущенные параметры остаются без изменений; значение null сбрасывает переопределение.
-
Параметры:
-
colorScheme(optional): Эмулирует медиа-функцию prefers-color-scheme -
reducedMotion(optional): Эмулирует медиа-функцию prefers-reduced-motion -
forcedColors(optional): Эмулирует медиа-функцию forced-colors -
contrast(optional): Эмулирует медиа-функцию prefers-contrast -
media(optional): Изменяет медиа-тип CSS для страницы -
Только чтение: false
-
-
browser_evaluate
-
Название: Выполнение JavaScript
-
Описание: Вычисляет выражение JavaScript на странице или элементе
-
Параметры:
-
element(string, optional): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с ним -
target(string, optional): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента -
function(string): () => { /* code / } или (element) => { / code */ }, если передан element -
filename(string, optional): Имя файла для сохранения результата. Относительные пути разрешаются относительно корня рабочей области. Если параметр не указан, результат возвращается в виде текста. -
Только чтение: false
-
-
browser_file_upload
-
Название: Загрузка файлов
-
Описание: Загружает один или несколько файлов
-
Параметры:
-
paths(array, optional): Абсолютные пути к загружаемым файлам. Можно указать как один файл, так и несколько. Если параметр опущен, выбор файла отменяется. -
Только чтение: false
-
-
browser_fill_form
-
Название: Заполнение формы
-
Описание: Заполняет несколько полей формы
-
Параметры:
-
fields(array): Поля для заполнения -
Только чтение: false
-
-
browser_find
-
Название: Поиск в снимке страницы
-
Описание: Ищет текст или регулярное выражение в снимке доступности (accessibility snapshot) текущей страницы. Возвращает совпавшие узлы снимка с несколькими строками окружающего контекста (наподобие поисковых сниппетов), каждый — по своему пути от корня дерева. Это дешевле, чем захватывать весь снимок целиком, когда нужно лишь найти элемент и его ref.
-
Параметры:
-
text(string, optional): Обычный текст для поиска в снимке страницы (регистронезависимый поиск подстроки). Укажите либо text, либо regex, но не оба одновременно. -
regex(string, optional): Регулярное выражение для поиска в снимке страницы. По умолчанию поиск учитывает регистр; заключите шаблон в слеши, чтобы добавить флаги, например "/error/i" для регистронезависимого поиска. Укажите либо text, либо regex, но не оба одновременно. -
Только чтение: true
-
-
browser_handle_dialog
-
Название: Обработка диалога
-
Описание: Обрабатывает диалоговое окно
-
Параметры:
-
accept(boolean): Принимать ли диалог. -
promptText(string, optional): Текст для поля ввода в случае диалога типа prompt. -
Только чтение: false
-
-
browser_hover
-
Название: Наведение курсора
-
Описание: Наводит курсор на элемент страницы
-
Параметры:
-
element(string, optional): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с ним -
target(string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента -
Только чтение: false
-
-
browser_navigate
-
Название: Переход по URL
-
Описание: Выполняет переход по URL
-
Параметры:
-
url(string): URL для перехода -
Только чтение: false
-
-
browser_navigate_back
-
Название: Назад
-
Описание: Возвращается к предыдущей странице в истории
-
Параметры: отсутствуют
-
Только чтение: false
-
-
browser_network_request
-
Название: Детали сетевого запроса
-
Описание: Возвращает полные сведения (заголовки и тело) одного сетевого запроса или отдельную его часть, если задан
part. Используйте номер из browser_network_requests. -
Параметры:
-
index(integer): Индекс запроса, начиная с 1, как показано в browser_network_requests. -
part(string, optional): Возвращать только эту часть запроса. Опустите, чтобы получить полные сведения. -
filename(string, optional): Имя файла для сохранения результата. Относительные пути разрешаются относительно корня рабочей области. Если параметр не указан, вывод возвращается в виде текста. -
Только чтение: true
-
-
browser_network_requests
-
Название: Список сетевых запросов
-
Описание: Возвращает нумерованный список сетевых запросов с момента загрузки страницы. Используйте browser_network_request с номером, чтобы получить полные сведения.
-
Параметры:
-
static(boolean): Включать ли успешно загруженные статические ресурсы, такие как изображения, шрифты, скрипты и т. д. По умолчанию — false. -
filter(string, optional): Возвращать только запросы, URL которых соответствует этому регулярному выражению (например, "/api/.*user"). -
filename(string, optional): Имя файла для сохранения сетевых запросов. Относительные пути разрешаются относительно корня рабочей области. Если параметр не указан, запросы возвращаются в виде текста. -
Только чтение: true
-
-
browser_press_key
-
Название: Нажатие клавиши
-
Описание: Нажимает клавишу на клавиатуре
-
Параметры:
-
key(string): Имя нажимаемой клавиши или генерируемый символ, напримерArrowLeftилиa -
Только чтение: false
-
-
browser_resize
-
Название: Изменение размера окна браузера
-
Описание: Изменяет размер окна браузера
-
Параметры:
-
width(number): Ширина окна браузера -
height(number): Высота окна браузера -
Только чтение: false
-
-
browser_run_code_unsafe
-
Название: Запуск кода Playwright (небезопасно)
-
Описание: Запускает фрагмент кода Playwright. Небезопасно: выполняет произвольный JavaScript в процессе сервера Playwright и эквивалентно RCE.
-
Параметры:
-
code(string, optional): Функция на JavaScript, содержащая код Playwright для выполнения. Она вызывается с единственным аргументом page, который можно использовать для любых взаимодействий со страницей. Например:async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); } -
filename(string, optional): Загружает код из указанного файла. Относительные пути разрешаются относительно корня рабочей области. Если указаны и code, и filename, параметр code игнорируется.
-
-
Только для чтения: false
-
browser_select_option
-
Название: Выбрать опцию
-
Описание: Выбрать опцию в выпадающем списке
-
Параметры:
-
element(string, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом -
target(string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента -
values(array): Массив значений для выбора в выпадающем списке. Это может быть одно значение или несколько значений. -
Только для чтения: false
-
-
browser_snapshot
-
Название: Снимок страницы
-
Описание: Создаёт снимок доступности текущей страницы; это лучше, чем скриншот
-
Параметры:
-
target(string, необязательно): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента -
filename(string, необязательно): Сохранить снимок в файл вместо возврата его в ответе. Относительные имена файлов разрешаются относительно корня рабочей области. -
depth(number, необязательно): Ограничить глубину дерева снимка -
boxes(boolean, необязательно): Включить ограничивающую рамку каждого элемента в снимок в виде [box=x,y,width,height]. Координаты указаны относительно области просмотра, в CSS-пикселях (Element.getBoundingClientRect) -
Только для чтения: true
-
-
browser_take_screenshot
-
Название: Сделать скриншот
-
Описание: Сделать скриншот текущей страницы. Нельзя выполнять действия на основе скриншота; для действий используйте browser_snapshot.
-
Параметры:
-
element(string, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом -
target(string, необязательно): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента -
type(string, необязательно): Формат изображения для скриншота. Если не задан, определяется по расширению имени файла, иначе png. -
filename(string, необязательно): Имя файла для сохранения скриншота. Относительные имена файлов разрешаются относительно корня рабочей области. Если не указано, скриншот сохраняется в выходной каталог какpage-{timestamp}.{png|jpeg|webp}. -
fullPage(boolean, необязательно): Если true, делает скриншот всей прокручиваемой страницы вместо текущей видимой области просмотра. Нельзя использовать со скриншотами элементов. -
scale(string): Масштаб разрешения изображения. "css" создаёт скриншот размером в CSS-пикселях (меньше, согласованно на разных устройствах). "device" создаёт скриншот высокого разрешения с использованием пикселей устройства (больше, учитывает коэффициент пикселей устройства). По умолчанию css. -
Только для чтения: true
-
-
browser_type
-
Название: Ввести текст
-
Описание: Ввести текст в редактируемый элемент
-
Параметры:
-
element(string, необязательно): Понятное человеку описание элемента, используемое для получения разрешения на взаимодействие с элементом -
target(string): Точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента -
text(string): Текст для ввода в элемент -
submit(boolean, необязательно): Отправлять ли введённый текст (нажать Enter после) -
slowly(boolean, необязательно): Вводить ли по одному символу за раз. Полезно для запуска обработчиков клавиш на странице. По умолчанию весь текст вводится сразу. -
Только для чтения: false
-
-
browser_wait_for
-
Название: Ожидание
-
Описание: Ожидать появления или исчезновения текста либо истечения заданного времени
-
Параметры:
-
time(number, необязательно): Время ожидания в секундах -
text(string, необязательно): Текст, появления которого нужно дождаться -
textGone(string, необязательно): Текст, исчезновения которого нужно дождаться -
Только для чтения: false
-
Управление вкладками
-
browser_tabs
-
Название: Управление вкладками
-
Описание: Создать, закрыть, выбрать вкладку браузера или вывести их список.
-
Параметры:
-
action(string): Выполняемая операция -
index(number, необязательно): Индекс вкладки, используется для закрытия/выбора. Если не указан для закрытия, закрывается текущая вкладка. -
url(string, необязательно): URL для перехода в новой вкладке, используется для new. -
Только для чтения: false
-
Установка браузера
Конфигурация (включается через --caps=config)
-
browser_get_config
-
Название: Получить конфигурацию
-
Описание: Получить итоговую разрешённую конфигурацию после объединения параметров CLI, переменных среды и файла конфигурации.
-
Параметры: Нет
-
Только для чтения: true
-
Сеть (включается через --caps=network)
-
browser_network_state_set
-
Название: Установить состояние сети
-
Описание: Устанавливает сетевое состояние браузера в online или offline. В режиме offline все сетевые запросы будут завершаться ошибкой.
-
Параметры:
-
state(string): Установите "offline", чтобы имитировать автономный режим, или "online", чтобы восстановить сетевое подключение -
Только для чтения: false
-
-
browser_route
-
Название: Имитировать сетевые запросы
-
Описание: Настроить маршрут для имитации сетевых запросов, соответствующих шаблону URL
-
Параметры:
-
pattern(string): Шаблон URL для сопоставления (например, "/api/users", "/*.{png,jpg}") -
status(number, необязательно): HTTP-код состояния для возврата (по умолчанию: 200) -
body(string, необязательно): Тело ответа (текст или строка JSON) -
contentType(string, необязательно): Заголовок Content-Type (например, "application/json", "text/html") -
headers(array, необязательно): Заголовки для добавления в формате "Name: Value" -
removeHeaders(string, необязательно): Разделённый запятыми список имён заголовков для удаления из запроса -
Только для чтения: false
-
-
browser_route_list
-
Название: Список сетевых маршрутов
-
Описание: Показать все активные сетевые маршруты
-
Параметры: Нет
-
Только для чтения: true
-
-
browser_unroute
-
Название: Удалить сетевые маршруты
-
Описание: Удалить сетевые маршруты, соответствующие шаблону (или все маршруты, если шаблон не указан)
-
Параметры:
-
pattern(string, необязательно): Шаблон URL для удаления маршрута (не указывайте, чтобы удалить все маршруты) -
Только для чтения: false
-
Хранилище (включается через --caps=storage)
-
browser_cookie_clear
-
Название: Очистить cookies
-
Описание: Очистить все cookies
-
Параметры: Нет
-
Только для чтения: false
-
-
browser_cookie_delete
-
Название: Удалить cookie
-
Описание: Удалить определённый cookie
-
Параметры:
-
name(string): Имя cookie для удаления -
Только для чтения: false
-
-
browser_cookie_get
-
Название: Получить cookie
-
Описание: Получить определённый cookie по имени
-
Параметры:
-
name(string): Имя cookie для получения -
Только для чтения: true
-
-
browser_cookie_list
-
Название: Список cookies
-
Описание: Показать все cookies (при необходимости с фильтром по домену/пути)
-
Параметры:
-
domain(string, необязательно): Фильтровать cookies по домену -
path(string, необязательно): Фильтровать cookies по пути -
Только для чтения: true
-
-
browser_cookie_set
-
Название: Установить cookie
-
Описание: Установить cookie с необязательными флагами (domain, path, expires, httpOnly, secure, sameSite)
-
Параметры:
-
name(string): Имя cookie -
value(string): Значение cookie -
domain(string, необязательно): Домен cookie -
path(string, необязательно): Путь cookie -
expires(number, необязательно): Срок действия cookie в виде Unix timestamp -
httpOnly(boolean, необязательно): Является ли cookie HTTP-only -
secure(boolean, необязательно): Является ли cookie secure -
sameSite(string, необязательно): Атрибут SameSite cookie -
Только для чтения: false
-
-
browser_localstorage_clear
-
Название: Очистить localStorage
-
Описание: Очистить весь localStorage
-
Параметры: Нет
-
Только для чтения: false
-
-
browser_localstorage_delete
-
Название: Удалить элемент localStorage
-
Описание: Удалить элемент localStorage
-
Параметры:
-
key(string): Ключ для удаления -
Только для чтения: false
-
-
browser_localstorage_get
-
Название: Получить элемент localStorage
-
Описание: Получить элемент localStorage по ключу
-
Параметры:
-
key(string): Ключ для получения -
Только для чтения: true
-
-
browser_localstorage_list
-
Название: Список localStorage
-
Описание: Показать все пары ключ-значение localStorage
-
Параметры: Нет
-
Только для чтения: true
-
-
browser_localstorage_set
-
Название: Установить элемент localStorage
-
Описание: Установить элемент localStorage
-
Параметры:
-
key(string): Ключ для установки -
value(string): Значение для установки -
Только для чтения: false
-
-
browser_sessionstorage_clear
-
Название: Очистить sessionStorage
-
Описание: Очистить весь sessionStorage
-
Параметры: Нет
-
Только для чтения: false
-
-
browser_sessionstorage_delete
-
Название: Удалить элемент sessionStorage
-
Описание: Удалить элемент sessionStorage
-
Параметры:
-
key(string): Ключ для удаления -
Только для чтения: false
-
-
browser_sessionstorage_get
-
Название: Получить элемент sessionStorage
-
Описание: Получить элемент sessionStorage по ключу
-
Параметры:
-
key(string): Ключ для получения -
Только для чтения: true
-
-
browser_sessionstorage_list
-
Название: Список sessionStorage
-
Описание: Показать все пары ключ-значение sessionStorage
-
Параметры: Нет
-
Только для чтения: true
-
-
browser_sessionstorage_set
-
Название: Установить элемент sessionStorage
-
Описание: Установить элемент sessionStorage
-
Параметры:
-
-
key(string): ключ, который нужно установить-
value(string): значение, которое нужно установить -
Только для чтения: false
-
-
browser_set_storage_state
-
Название: Восстановить состояние хранилища
-
Описание: Восстанавливает состояние хранилища (cookies, local storage) из файла. Перед восстановлением удаляет существующие cookies и local storage.
-
Параметры:
-
filename(string): путь к файлу с состоянием хранилища. Относительные пути разрешаются относительно корня рабочей области. -
Только для чтения: false
-
-
browser_storage_state
-
Название: Сохранить состояние хранилища
-
Описание: Сохраняет состояние хранилища (cookies, local storage) в файл для последующего повторного использования
-
Параметры:
-
filename(string, optional): имя файла для сохранения состояния хранилища. Относительные пути разрешаются относительно корня рабочей области. Если не указано, состояние хранилища сохраняется в выходной каталог какstorage-state-{timestamp}.json. -
Только для чтения: true
-
DevTools (включается опционально через --caps=devtools)
-
browser_annotate
-
Название: Аннотировать текущую страницу
-
Описание: Открывает Playwright Dashboard в режиме аннотирования для текущей страницы и ожидает, пока пользователь нанесёт аннотации. Возвращает аннотированный скриншот, ARIA-снимок и список аннотаций.
-
Параметры: отсутствуют
-
Только для чтения: true
-
-
browser_hide_highlight
-
Название: Скрыть подсветку элемента
-
Описание: Удаляет оверлей подсветки, ранее добавленный для элемента.
-
Параметры:
-
element(string, optional): человекочитаемое описание элемента, использованное при добавлении подсветки; должно совпадать со значением, переданным в browser_highlight. -
target(string, optional): точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента -
Только для чтения: true
-
-
browser_highlight
-
Название: Подсветить элемент
-
Описание: Показывает постоянный оверлей подсветки вокруг элемента на странице.
-
Параметры:
-
element(string, optional): человекочитаемое описание элемента, используемое для получения разрешения на взаимодействие с элементом -
target(string): точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента -
style(string, optional): дополнительный инлайн-CSS, применяемый к оверлею подсветки, например "outline: 2px dashed red". -
Только для чтения: true
-
-
browser_resume
-
Название: Возобновить приостановленное выполнение скрипта
-
Описание: Возобновляет выполнение скрипта после паузы. При вызове со значением step, равным true, выполнение снова приостановится перед следующим действием.
-
Параметры:
-
step(boolean, optional): при значении true выполнение снова приостановится перед следующим действием, что позволяет отлаживать сценарий пошагово. -
location(string, optional): приостанавливает выполнение на указанной позиции (файл:строка), например "example.spec.ts:42". -
Только для чтения: false
-
-
browser_start_recording
-
Название: Начать запись действий пользователя
-
Описание: Начинает записывать действия, которые пользователь выполняет в браузере, в виде кода Playwright. Используйте этот инструмент, когда пользователь хочет вручную продемонстрировать сценарий. Когда пользователь сообщит о завершении, вызовите browser_stop_recording, чтобы получить записанные действия.
-
Параметры: отсутствуют
-
Только для чтения: true
-
-
browser_start_tracing
-
Название: Начать трассировку
-
Описание: Запускает запись трассировки
-
Параметры: отсутствуют
-
Только для чтения: true
-
-
browser_start_video
-
Название: Начать запись видео
-
Описание: Запускает видеозапись
-
Параметры:
-
filename(string, optional): имя файла для сохранения видео. Относительные пути разрешаются относительно корня рабочей области. Если не указано, видео сохраняется в выходной каталог какvideo-{timestamp}.webm. -
size(object, optional): размер видео -
fps(number, optional): частота кадров видео в кадрах в секунду, по умолчанию 25 -
cursor(boolean, optional): отрисовывает анимированный курсор мыши, перемещающийся к каждой точке действия. Между действиями добавляется пауза в 800 мс, чтобы курсор успевал переместиться. -
Только для чтения: true
-
-
browser_stop_recording
-
Название: Остановить запись действий пользователя
-
Описание: Останавливает запись, запущенную через browser_start_recording, и возвращает записанные действия в виде кода Playwright.
-
Параметры: отсутствуют
-
Только для чтения: true
-
-
browser_stop_tracing
-
Название: Остановить трассировку
-
Описание: Останавливает запись трассировки
-
Параметры: отсутствуют
-
Только для чтения: true
-
-
browser_stop_video
-
Название: Остановить запись видео
-
Описание: Останавливает видеозапись
-
Параметры: отсутствуют
-
Только для чтения: true
-
-
browser_video_chapter
-
Название: Глава видео
-
Описание: Добавляет маркер главы в видеозапись. Показывает полноэкранную карточку главы с размытым фоном.
-
Параметры:
-
title(string): название главы -
description(string, optional): описание главы -
duration(number, optional): длительность показа карточки главы в миллисекундах -
Только для чтения: true
-
-
browser_video_hide_actions
-
Название: Скрыть оверлеи действий
-
Описание: Прекращает аннотирование действий, выполняемых на странице.
-
Параметры: отсутствуют
-
Только для чтения: true
-
-
browser_video_show_actions
-
Название: Показать оверлеи действий
-
Описание: Аннотирует последующие действия на странице выноской с названием действия; при наличии стилей также отмечает точку действия и подсвечивает целевой элемент. Полезно при видеозаписи или скринкастинге.
-
Параметры:
-
duration(number, optional): как долго каждая аннотация действия остаётся на экране, в миллисекундах. По умолчанию 500. -
position(string, optional): где размещать название действия относительно страницы. По умолчанию — сверху справа. -
cursor(string, optional): оформление курсора для действий указателя. "pointer" (по умолчанию) анимирует курсор мыши от предыдущей точки действия к следующей; "none" отключает оформление курсора. -
style(object, optional): стили оформления действий. -
Только для чтения: true
-
Управление по координатам (включается опционально через --caps=vision)
-
browser_mouse_click_xy
-
Название: Клик
-
Описание: Нажимает кнопку мыши в заданной позиции
-
Параметры:
-
x(number): координата X -
y(number): координата Y -
button(string, optional): кнопка, которую нужно нажать, по умолчанию — левая -
clickCount(number, optional): количество кликов, по умолчанию 1 -
delay(number, optional): время ожидания между нажатием и отпусканием кнопки мыши в миллисекундах, по умолчанию 0 -
Только для чтения: false
-
-
browser_mouse_down
-
Название: Зажать кнопку мыши
-
Описание: Зажимает кнопку мыши
-
Параметры:
-
button(string, optional): кнопка, которую нужно зажать, по умолчанию — левая -
Только для чтения: false
-
-
browser_mouse_drag_xy
-
Название: Перетащить мышью
-
Описание: Зажимает левую кнопку мыши и перетаскивает её в заданную позицию
-
Параметры:
-
startX(number): начальная координата X -
startY(number): начальная координата Y -
endX(number): конечная координата X -
endY(number): конечная координата Y -
Только для чтения: false
-
-
browser_mouse_move_xy
-
Название: Переместить мышь
-
Описание: Перемещает мышь в заданную позицию
-
Параметры:
-
x(number): координата X -
y(number): координата Y -
Только для чтения: false
-
-
browser_mouse_up
-
Название: Отпустить кнопку мыши
-
Описание: Отпускает кнопку мыши
-
Параметры:
-
button(string, optional): кнопка, которую нужно отпустить, по умолчанию — левая -
Только для чтения: false
-
-
browser_mouse_wheel
-
Название: Прокрутить колесо мыши
-
Описание: Прокручивает колесо мыши
-
Параметры:
-
deltaX(number): смещение по X -
deltaY(number): смещение по Y -
Только для чтения: false
-
Генерация PDF (включается опционально через --caps=pdf)
-
browser_pdf_save
-
Название: Сохранить как PDF
-
Описание: Сохраняет страницу в PDF
-
Параметры:
-
filename(string, optional): имя файла для сохранения PDF. Относительные пути разрешаются относительно корня рабочей области. Если не указано, PDF сохраняется в выходной каталог какpage-{timestamp}.pdf. -
Только для чтения: true
-
Тестовые проверки (включается опционально через --caps=testing)
-
browser_generate_locator
-
Название: Создать локатор для элемента
-
Описание: Генерирует локатор для указанного элемента, чтобы использовать его в тестах
-
Параметры:
-
element(string, optional): человекочитаемое описание элемента, используемое для получения разрешения на взаимодействие с элементом -
target(string): точная ссылка на целевой элемент из снимка страницы или уникальный селектор элемента -
Только для чтения: true
-
-
browser_verify_element_visible
-
Название: Проверить видимость элемента
-
Описание: Проверяет, что элемент виден на странице
-
Параметры:
-
role(string): роль элемента. Её можно найти в снимке страницы следующим образом:- {ROLE} "Accessible Name": -
accessibleName(string): доступное имя элемента. Его можно найти в снимке страницы следующим образом:- role "{ACCESSIBLE_NAME}" -
Только для чтения: false
-
-
browser_verify_list_visible
-
Название: Проверить видимость списка
-
Описание: Проверяет, что список виден на странице
-
Параметры:
-
element(string): человекочитаемое описание списка
-
-
target(string): Точная ссылка на целевой элемент, указывающая на список-
items(array): Элементы для проверки -
Только чтение: false
-
-
browser_verify_text_visible
-
Название: Проверка видимости текста
-
Описание: Проверяет, что текст виден на странице. По возможности предпочитайте browser_verify_element_visible.
-
Параметры:
-
text(string): Текст для проверки. Его можно найти в снимке страницы так:- role "Accessible Name": {TEXT}или так:- text: {TEXT} -
Только чтение: false
-
-
browser_verify_value
-
Название: Проверка значения
-
Описание: Проверяет значение элемента
-
Параметры:
-
type(string): Тип элемента -
element(string): Понятное человеку описание элемента -
target(string): Точная ссылка на целевой элемент из снимка страницы -
value(string): Значение для проверки. Для чекбокса используйте "true" или "false". -
Только чтение: false
-