Playwright MCP
公式Playwrightの公式MCPサーバー。ブラウザ自動化、ページ検査、スクリーンショット、およびClaude、Cursor、その他のAIエージェントからのWeb操作に対応。
Playwright MCPで何ができますか?
- アクセシビリティツリーの閲覧 — AIにページのナビゲーションと構造化されたアクセシビリティスナップショットの読み取りを依頼。ビジョンモデルは不要です。
- 永続的なブラウザセッション —
--user-data-dirまたは--storage-stateを使用してログイン状態を会話間で保持し、認証済みワークフローを実現。 - マルチブラウザ自動化 —
--browserフラグでChromium、Firefox、WebKit、Edgeを操作し、クロスエンジンテストを実行。 - デバイスエミュレーション —
--deviceで「iPhone 15」などのモバイルデバイスをシミュレート、または汎用の--mobileモードでレスポンシブテストを実施。 - コード生成 —
--codegenオプションを使用して、TypeScript、Python、Java、C# でPlaywrightテストスクリプトを生成。 - 分離されたテストコンテキスト —
--isolatedフラグでセッションを実行し、ブラウザを閉じるたびにすべての状態を破棄。
ドキュメント
Playwright MCP
Playwright を利用したブラウザ自動化機能を提供する Model Context Protocol (MCP) サーバーです。Playwright を使用して、LLM が構造化されたアクセシビリティスナップショットを通じてウェブページと対話できるようにします。スクリーンショットや視覚に特化したモデルは不要です。
Playwright MCP と Playwright CLI の比較
このパッケージは Playwright への MCP インターフェースを提供します。コーディングエージェントを使用している場合は、代わりに CLI+SKILLS を利用するとよいでしょう。
-
CLI: 最新のコーディングエージェントは、MCP よりも SKILL として公開される CLI ベースのワークフローを好む傾向があります。CLI 呼び出しはトークン効率が高いためです。大きなツールスキーマや冗長なアクセシビリティツリーをモデルコンテキストに読み込むことを避け、エージェントが簡潔で目的に特化したコマンドを通じて動作できるようにします。これにより、CLI + SKILLs は、限られたコンテキストウィンドウ内でブラウザ自動化と大規模なコードベース、テスト、推論のバランスを取る必要がある高スループットのコーディングエージェントに適しています。
Playwright CLI with 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"
]
}
}
}
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
Claude Code CLI を使用して 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
Codex CLI を使用して 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"
または、Factory droid 内で /mcp と入力して、MCP サーバーを管理するための対話型 UI を開きます。
詳細については、Factory MCP ドキュメント を参照してください。
Gemini CLI
MCP インストール ガイド に従い、上記の標準設定を使用します。
Goose
ボタンをクリックしてインストール:
または手動でインストール:
Advanced settings -> Extensions -> Add custom extension に移動します。任意の名前を付け、タイプ STDIO を使用し、command を npx @playwright/mcp に設定します。「Add Extension」をクリックします。
Grok
Grok CLI を使用して 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
Junie CLI で Playwright MCP サーバーを追加するには:
/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
VSCode または IntelliJ で Qodo Gen チャットパネルを開きます → Connect more tools → + Add new MCP → 上記の標準設定を貼り付けます。
Save をクリックします。
VS Code
ボタンをクリックしてインストール:
または手動でインストール:
MCP インストール ガイド に従い、上記の標準設定を使用します。VS Code CLI を使用して Playwright MCP サーバーをインストールすることもできます:
# For VS Code
code --add-mcp '{"name":"playwright","command":"npx","args":["@playwright/mcp@latest"]}'
インストール後、Playwright MCP サーバーは VS Code の GitHub Copilot エージェントで使用できるようになります。
Warp
Settings -> AI -> Manage MCP Servers -> + Add に移動して MCP サーバーを追加 します。上記の標準設定を使用します。
または、Warp プロンプトでスラッシュコマンド /add-mcp を使用し、上記の標準設定を貼り付けます:
{
"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 | ブラウザがリクエストを許可する信頼されたオリジンのセミコロン区切りリスト。デフォルトはすべて許可。重要: セキュリティ境界としては機能せず、リダイレクトには影響しません。 env PLAYWRIGHT_MCP_ALLOWED_ORIGINS |
| --allow-unrestricted-file-access | ワークスペースルート外のファイルへのアクセスを許可します。file:// URL への無制限アクセスも許可します。デフォルトでは、ファイルシステムへのアクセスはワークスペースのルートディレクトリ(ルートが設定されていない場合は cwd)のみに制限され、file:// URL へのナビゲーションはブロックされます。 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 エンドポイントへの接続タイムアウト(ミリ秒)。デフォルトは 30000ms 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 | 汎用モバイルデバイスをエミュレートします(Chromium では Pixel 10、WebKit では iPhone 17)。モバイルページは通常軽量で、トークンを節約できます。--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...> | Playwright ページオブジェクトで評価する TypeScript ファイルへのパス 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 | テスト ID に使用する属性を指定します。デフォルトは "data-testid" env PLAYWRIGHT_MCP_TEST_ID_ATTRIBUTE |
| --timeout-action | アクションタイムアウトをミリ秒で指定します。デフォルトは 5000ms env PLAYWRIGHT_MCP_TIMEOUT_ACTION |
| --timeout-navigation | ナビゲーションタイムアウトをミリ秒で指定します。デフォルトは 60000ms env PLAYWRIGHT_MCP_TIMEOUT_NAVIGATION |
| --timeout-settle | 各アクション後にトリガーされた処理が落ち着くまでの待機時間(ミリ秒)。デフォルトは 500ms 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] 永続プロファイルは一度に 1 つのブラウザインスタンスでのみ使用できるため、同じワークスペースを共有する同時 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引数を使用してストレージ状態ファイルで開始します。これにより、ファイルから Cookie とローカルストレージが分離ブラウザコンテキストに読み込まれます。
ページ状態については、以下を使用できます:
--init-pageは、Playwright ページオブジェクトで評価される TypeScript ファイルを指定します。これにより、ページをセットアップするための任意のコードを実行できます。
// 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 のワーカープロセスからヘッド付きブラウザを実行する場合は、DISPLAY を含む環境から MCP サーバーを実行し、HTTP トランスポートを有効にするために --port フラグを渡します。
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
- タイトル: マウスをドラッグ
- 説明: 2つの要素間でドラッグアンドドロップを実行します
- パラメータ:
startElement(文字列, 任意): 要素との対話の許可を得るために使用される、人間が読めるソース要素の説明startTarget(文字列): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクタendElement(文字列, 任意): 要素との対話の許可を得るために使用される、人間が読めるターゲット要素の説明endTarget(文字列): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクタ
- 読み取り専用: false
- browser_drop
- タイトル: 要素にファイルまたはデータをドロップ
- 説明: ページの外部からドラッグされたかのように、要素にファイルまたはMIMEタイプのデータをドロップします。「paths」または「data」の少なくとも1つを指定する必要があります。
- パラメータ:
element(文字列, 任意): 要素との対話の許可を得るために使用される、人間が読める要素の説明target(文字列): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクタpaths(配列, 任意): 要素にドロップするファイルの絶対パス。data(オブジェクト, 任意): ドロップするデータ。MIMEタイプから文字列値へのマップ(例: {"text/plain": "hello", "text/uri-list": "https://example.com"})。
- 読み取り専用: false
- browser_evaluate
- タイトル: JavaScriptを評価
- 説明: ページまたは要素上でJavaScript式を評価します
- パラメータ:
element(文字列, 任意): 要素との対話の許可を得るために使用される、人間が読める要素の説明target(文字列, 任意): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクタfunction(文字列): () => { /* code / } または要素が指定された場合は (element) => { / code */ }filename(文字列, 任意): 結果を保存するファイル名。指定しない場合、結果はテキストとして返されます。
- 読み取り専用: false
- browser_file_upload
- タイトル: ファイルをアップロード
- 説明: 1つまたは複数のファイルをアップロードします
- パラメータ:
paths(配列, 任意): アップロードするファイルの絶対パス。単一ファイルまたは複数ファイルを指定できます。省略した場合、ファイル選択はキャンセルされます。
- 読み取り専用: false
- browser_fill_form
- タイトル: フォームに入力
- 説明: 複数のフォームフィールドに入力します
- パラメータ:
fields(配列): 入力するフィールド
- 読み取り専用: false
- browser_find
- タイトル: ページスナップショット内を検索
- 説明: 現在のページのアクセシビリティスナップショット内でテキストまたは正規表現を検索します。一致するスナップショットノードを、周囲の数行のコンテキスト(検索スニペットのようなもの)とともに返します。各ノードはツリーのルートからのパスの下に表示されます。これは、要素とそのrefを見つけるだけでよい場合に、スナップショット全体を取得するよりもコストが低くなります。
- パラメータ:
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(整数): browser_network_requests によって出力された、リクエストの1から始まるインデックス。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コードスニペットを実行します。安全でない: Playwrightサーバープロセス内で任意のJavaScriptを実行し、RCEと同等です。
- パラメータ:
code(文字列, 任意): 実行するPlaywrightコードを含むJavaScript関数。単一の引数 page で呼び出され、任意のページ操作に使用できます。例:async (page) => { await page.getByRole('button', { name: 'Submit' }).click(); return await page.title(); }filename(文字列, 任意): 指定されたファイルからコードを読み込みます。code と filename の両方が指定された場合、code は無視されます。
- 読み取り専用: false
- browser_select_option
- タイトル: オプションを選択
- 説明: ドロップダウンでオプションを選択します
- パラメータ:
element(文字列, 任意): 要素との対話の許可を得るために使用される、人間が読める要素の説明target(文字列): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクタvalues(配列): ドロップダウンで選択する値の配列。単一の値または複数の値を指定できます。
- 読み取り専用: false
- browser_snapshot
- タイトル: ページスナップショット
- 説明: 現在のページのアクセシビリティスナップショットを取得します。これはスクリーンショットよりも優れています
- パラメータ:
target(文字列, 任意): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクタfilename(文字列, 任意): スナップショットをレスポンスで返す代わりにマークダウンファイルに保存します。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(ブール値, 任意): 一度に1文字ずつ入力するかどうか。ページ内のキーハンドラーをトリガーするのに役立ちます。デフォルトでは、テキスト全体が一度に入力されます。
- 読み取り専用: false
- browser_wait_for
- タイトル: 待機
- 説明: テキストが表示されるか消えるまで、または指定した時間が経過するまで待機します
- パラメータ:
time(数値, 任意): 待機する秒数text(文字列, 任意): 待機するテキストtextGone(文字列, 任意): 消えるまで待機するテキスト
- 読み取り専用: false
タブ管理
- browser_tabs
- タイトル: タブを管理
- 説明: ブラウザのタブを一覧表示、作成、閉じる、または選択します。
- パラメータ:
action(文字列): 実行する操作index(数値, 任意): タブのインデックス。close/select で使用します。close で省略した場合、現在のタブが閉じられます。url(文字列, 任意): 新しいタブで開く URL。new で使用します。
- 読み取り専用: 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(配列, 任意): "Name: Value" 形式で追加するヘッダーremoveHeaders(文字列, 任意): リクエストから削除するヘッダー名のカンマ区切りリスト
- 読み取り専用: false
- browser_route_list
- タイトル: ネットワークルートを一覧表示
- 説明: アクティブなネットワークルートをすべて一覧表示します
- パラメータ: なし
- 読み取り専用: true
- browser_unroute
- タイトル: ネットワークルートを削除
- 説明: パターンに一致するネットワークルートを削除します (パターンを指定しない場合はすべてのルートを削除)
- パラメータ:
pattern(文字列, 任意): ルートを解除する URL パターン (省略するとすべてのルートを削除)
- 読み取り専用: false
ストレージ (--caps=storage でオプトイン)
- browser_cookie_clear
- タイトル: クッキーをクリア
- 説明: すべてのクッキーをクリアします
- パラメータ: なし
- 読み取り専用: false
- browser_cookie_delete
- タイトル: クッキーを削除
- 説明: 特定のクッキーを削除します
- パラメータ:
name(文字列): 削除するクッキー名
- 読み取り専用: false
- browser_cookie_get
- タイトル: クッキーを取得
- 説明: 名前で特定のクッキーを取得します
- パラメータ:
name(文字列): 取得するクッキー名
- 読み取り専用: true
- browser_cookie_list
- タイトル: クッキーを一覧表示
- 説明: すべてのクッキーを一覧表示します (ドメイン/パスでフィルタリング可能)
- パラメータ:
domain(文字列, 任意): ドメインでクッキーをフィルタリングpath(文字列, 任意): パスでクッキーをフィルタリング
- 読み取り専用: true
- browser_cookie_set
- タイトル: クッキーを設定
- 説明: オプションのフラグ (ドメイン、パス、有効期限、httpOnly、secure、sameSite) を指定してクッキーを設定します
- パラメータ:
name(文字列): クッキー名value(文字列): クッキーの値domain(文字列, 任意): クッキーのドメインpath(文字列, 任意): クッキーのパスexpires(数値, 任意): Unix タイムスタンプでのクッキーの有効期限httpOnly(ブール値, 任意): クッキーが HTTP のみかどうかsecure(ブール値, 任意): クッキーがセキュアかどうかsameSite(文字列, 任意): クッキーの SameSite 属性
- 読み取り専用: 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
- タイトル: ストレージ状態を復元
- 説明: ファイルからストレージ状態 (クッキー、ローカルストレージ) を復元します。復元前に既存のクッキーとローカルストレージをクリアします。
- パラメータ:
filename(文字列): 復元元のストレージ状態ファイルへのパス
- 読み取り専用: false
- browser_storage_state
- タイトル: ストレージ状態を保存
- 説明: 後で再利用するためにストレージ状態 (クッキー、ローカルストレージ) をファイルに保存します
- パラメータ:
filename(文字列, 任意): ストレージ状態を保存するファイル名。指定しない場合はstorage-state-{timestamp}.jsonがデフォルトになります。
- 読み取り専用: true
DevTools (--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
- タイトル: 一時停止したスクリプトの実行を再開
- 説明: 一時停止後のスクリプト実行を再開します。step を 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(数値, 任意): クリック回数、デフォルトは1delay(数値, 任意): マウスダウンとマウスアップの間の待機時間(ミリ秒)、デフォルトは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。スナップショットで次のように確認できます:- {ROLE} "Accessible Name":accessibleName(文字列): 要素のACCESSIBLE_NAME。スナップショットで次のように確認できます:- role "{ACCESSIBLE_NAME}"
- 読み取り専用: false
- browser_verify_list_visible
- タイトル: リストの表示を確認
- 説明: リストがページ上に表示されていることを確認します
- パラメータ:
element(文字列): 人間が読めるリストの説明target(文字列): リストを指す正確なターゲット要素参照items(配列): 確認する項目
- 読み取り専用: false
- browser_verify_text_visible
- タイトル: テキストの表示を確認
- 説明: テキストがページ上に表示されていることを確認します。可能であればbrowser_verify_element_visibleを優先してください。
- パラメータ:
text(文字列): 確認するTEXT。スナップショットで次のように確認できます:- role "Accessible Name": {TEXT}または次のように:- text: {TEXT}
- 読み取り専用: false
- browser_verify_value
- タイトル: 値を確認
- 説明: 要素の値を確認します
- パラメータ:
type(文字列): 要素のタイプelement(文字列): 人間が読める要素の説明target(文字列): ページスナップショットからの正確なターゲット要素参照value(文字列): 確認する値。チェックボックスの場合は、"true"または"false"を使用します。
- 読み取り専用: false