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"
      ]
    }
  }
}

Install in VS Code Install in VS Code Insiders

Amp

Amp の VS Code 拡張機能の設定画面、または settings.json ファイルを更新して追加します:

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

Amp CLI セットアップ:

以下の amp mcp add コマンドで追加します

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

Antigravity の設定、または設定ファイルを更新して追加します:

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

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

ボタンをクリックしてインストール:

Install in 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

ボタンをクリックしてインストール:

Install in Goose

または手動でインストール:

Advanced settings -> Extensions -> Add custom extension に移動します。任意の名前を付け、タイプ STDIO を使用し、commandnpx @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 サーバーを追加するには:

  1. /mcp と入力します
  2. Ctrl+A を押して新しい MCP サーバーを追加します
  3. リストから Playwright を選択します

または、.junie/mcp/mcp.json に追加します:

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

詳細については、Junie MCP 設定ドキュメント を参照してください。

Kiro

Add to Kiro

MCP サーバーの ドキュメント に従います。例えば .kiro/settings/mcp.json の場合:

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

ボタンをクリックしてインストール:

Add MCP Server playwright to LM Studio

または手動でインストール:

右サイドバーの Program -> Install -> Edit mcp.json に移動します。上記の標準設定を使用します。

opencode

MCP サーバーの ドキュメント に従います。例えば ~/.config/opencode/opencode.json の場合:

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

Qodo Gen

VSCode または IntelliJ で Qodo Gen チャットパネルを開きます → Connect more tools → + Add new MCP → 上記の標準設定を貼り付けます。

Save をクリックします。

VS Code

ボタンをクリックしてインストール:

Install in VS Code Install in VS Code Insiders

または手動でインストール:

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-errorshttps エラーを無視します
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-sessionPlaywright 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 (数値, 任意): クリック回数、デフォルトは1
      • delay (数値, 任意): マウスダウンとマウスアップの間の待機時間(ミリ秒)、デフォルトは0
    • 読み取り専用: false
  • browser_mouse_down
    • タイトル: マウスダウンを押す
    • 説明: マウスダウンを押します
    • パラメータ:
      • button (文字列, 任意): 押すボタン、デフォルトは左
    • 読み取り専用: false
  • browser_mouse_drag_xy
    • タイトル: マウスをドラッグ
    • 説明: 左マウスボタンを指定された位置までドラッグします
    • パラメータ:
      • startX (数値): 開始X座標
      • startY (数値): 開始Y座標
      • endX (数値): 終了X座標
      • endY (数値): 終了Y座標
    • 読み取り専用: false
  • browser_mouse_move_xy
    • タイトル: マウスを移動
    • 説明: マウスを指定された位置に移動します
    • パラメータ:
      • x (数値): X座標
      • y (数値): Y座標
    • 読み取り専用: false
  • browser_mouse_up
    • タイトル: マウスアップを押す
    • 説明: マウスアップを押します
    • パラメータ:
      • button (文字列, 任意): 押すボタン、デフォルトは左
    • 読み取り専用: false
  • browser_mouse_wheel
    • タイトル: マウスホイールをスクロール
    • 説明: マウスホイールをスクロールします
    • パラメータ:
      • deltaX (数値): Xデルタ
      • deltaY (数値): Yデルタ
    • 読み取り専用: false
PDF生成(--caps=pdfでオプトイン)
  • browser_pdf_save
    • タイトル: PDFとして保存
    • 説明: ページをPDFとして保存します
    • パラメータ:
      • filename (文字列, 任意): PDFを保存するファイル名。指定しない場合はデフォルトでpage-{timestamp}.pdfになります。出力ディレクトリ内に収めるため、相対ファイル名を推奨します。
    • 読み取り専用: true
テストアサーション(--caps=testingでオプトイン)
  • browser_generate_locator
    • タイトル: 要素のロケーターを作成
    • 説明: テストで使用する指定された要素のロケーターを生成します
    • パラメータ:
      • element (文字列, 任意): 要素と対話する許可を得るために使用される人間が読める要素の説明
      • target (文字列): ページスナップショットからの正確なターゲット要素参照、または一意の要素セレクター
    • 読み取り専用: true
  • browser_verify_element_visible
    • タイトル: 要素の表示を確認
    • 説明: 要素がページ上に表示されていることを確認します
    • パラメータ:
      • role (文字列): 要素のROLE。スナップショットで次のように確認できます: - {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