playwright-dev は何をしますか?
Playwrightの開発方法を解説 - APIの追加、MCPツール、CLIコマンド、ベンダー依存関係について。
概要
このスキルは、Playwrightプロジェクトの開発ワークフローを理解し、新しい機能を追加したり、既存のコードを修正したりするためのガイドを提供します。主に以下のトピックをカバーします。
- APIの追加: Playwrightの公開API(例:
page.goto())を新しく追加する手順。 - MCPツール: Model Context Protocol (MCP) に対応したツールの統合方法。
- CLIコマンド: Playwrightコマンドラインツール(
npx playwright)に新しいコマンドを追加する方法。 - ベンダー依存関係: 外部ライブラリやプロトコル定義(例: Chrome DevTools Protocol)の管理と更新方法。
前提条件
- Node.js (バージョン18以上)
- Git
- TypeScriptの基本的な知識
- Playwrightプロジェクトのクローン
git clone https://github.com/microsoft/playwright.git
cd playwright
開発の流れ
-
フィーチャーブランチを作成する: 新機能や修正ごとにブランチを切ります。
git checkout -b my-feature-branch -
ソースコードを変更する: 修正内容に応じて適切なディレクトリ(
packages/playwright-core/src/など)でコードを編集します。 -
テストを追加する: 変更を検証するためのテスト(ユニットテスト、統合テスト)を追加します。テストは
tests/ディレクトリに配置します。 -
ビルドとテストを実行する: 変更が正しく動作することを確認します。
npm run build npm run test -
コミットしてプルリクエストを作成する: 変更内容をコミットし、GitHub上でプルリクエストを開きます。
APIの追加
新しいAPIを追加するには、以下の手順に従います。
- 型定義を更新する:
packages/playwright-core/types/types.d.tsで新しいメソッドやプロパティの型を定義します。 - 実装を追加する: 対応するソースファイル(例:
packages/playwright-core/src/server/frames.ts)にロジックを実装します。 - テストを書く: 新しいAPIが期待通りに動作することを確認するテストを
tests/に追加します。 - ドキュメントを生成する:
npm run docを実行して、自動生成されるAPIドキュメントを更新します。
MCPツールの統合
MCPツールは、mcp パッケージ内で管理されています。新しいツールを追加する場合は、以下の手順を参考にしてください。
- ツール定義を作成する:
packages/mcp/src/tools/に新しいツールの定義ファイル(TypeScript)を作成します。 - ツールを登録する:
packages/mcp/src/server.tsで新しいツールをサーバーに登録します。 - テストを追加する: 新しいツールの機能を検証するテストを
packages/mcp/tests/に追加します。
CLIコマンドの追加
新しいCLIコマンドを追加するには、packages/playwright-core/src/cli/ 以下のファイルを編集します。
- コマンドを定義する:
cli.tsまたは関連するファイルで、新しいコマンドの定義と処理を追加します。 - ヘルプテキストを更新する: コマンドの説明やオプションをヘルプメッセージに追加します。
- テストを追加する: CLIコマンドの動作を確認するテストを
tests/cli/に追加します。
ベンダー依存関係の管理
Playwrightは、ブラウザベンダーが提供するプロトコルやバイナリに依存しています。これらの更新は vendor/ ディレクトリで管理されます。
- プロトコル定義の更新:
vendor/protocol/以下のJSONファイルをベンダーが公開する最新バージョンに置き換えます。 - ブラウザバイナリの更新:
vendor/browsers.jsonで新しいバージョンを指定し、npm run buildを実行して反映します。
補足情報
- Playwrightの全体的なアーキテクチャについては、公式ドキュメント を参照してください。
- コントリビューションガイドラインは CONTRIBUTING.md に記載されています。
- 問題がある場合は、GitHub Issues で報告してください。