playwright-skill について
playwright-skill は、開発者やコーディングエージェント向けの Playwright テスト資料スキルです。テスト設計、デバッグ、ブラウザー自動化、最近の機能を TypeScript と JavaScript の例で解説します。
主な機能
- 0150以上の Playwright 参考ガイド
- 02TypeScript と JavaScript の例
- 03テスト設計とアーキテクチャの指針
- 04デバッグとトレース分析
- 05コマンドラインのブラウザー自動化ガイド
活用シーン
- 01E2E テストやコンポーネントテストの設計
- 02不安定なテストやトレースの調査
- 03許可されたブラウザー操作の自動化
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ testdino-hq/ playwright-skill --skill playwright-skillインストール後、Claude Code で/playwright-skillを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEREADME.mdci/ci-other.mdci-gitlab.mdprojects-and-dependencies.mddocker-and-containers.mdparallel-and-sharding.mdci-github-actions.mdglobal-setup-teardown.mdreporting-and-artifacts.mdtest-coverage.mdcore/accessibility.mdauth-flows.mdapi-testing.mdangular.mdbrowser-apis.mdassertions-and-waiting.mdauthentication.mdbrowser-extensions.mdcanvas-and-webgl.mdclock-and-time-mocking.mdconfiguration.mdcrud-testing.mddebugging.mdcomponent-testing.mddynamic-test-selection.mddrag-and-drop.mdcommon-pitfalls.mderror-and-edge-cases.mderror-index.md詳細
Playwright スキル
Playwright に関する独自の本番環境検証済みガイダンスです。各パターンには、使用する場合と使用しない場合が記載されています。
セレクター、アサーション、フィクスチャ、ページオブジェクト、ネットワークモック、認証、ビジュアルリグレッション、アクセシビリティ、API テスト、CI/CD、デバッグなど、Playwright の全領域を網羅する50 以上のリファレンスガイドを掲載しています。全体を通して TypeScript と JavaScript の例を紹介しています。
これらのガイドでは、Playwright 1.63 の主な機能として、共有リソースをめぐる競合を直列化するテストの lock、:visible 疑似クラスを置き換える locator.visible()、トレース内の aria スナップショットと画面スナップショット(snapshots: { dom, aria, screen })、レポーターを置き換えずに追加する --add-reporter、perfetto レポーター、型付きの request.get<User>()、ariaSnapshotJSON() を取り上げています。1.62 からは、実行前にテストを選択する reporter.preprocess()、retryStrategy: 'isolated'、quality パラメーターを使った WebP スクリーンショット、アクションとアサーションでの AbortSignal、locator.waitForFunction()、apiResponse.timing()、非推奨となった実験的 CT パッケージに代わるストーリーとギャラリーのコンポーネントテストモデルを取り上げています。外部の不安定性 API を使って隔離対象を決定する方法については、専用の dynamic-test-selection.md ガイドを参照してください。
以前のリリースも引き続き網羅しています。1.61(context.credentials による WebAuthn パスキー、page.localStorage / page.sessionStorage、動画の保持モード、expect.soft.poll()、HAR とトレースでの WebSocket)、1.60(トレース記録中のオンデマンド HAR、locator.drop()、ページレベルの aria スナップショット、test.abort())、1.59(スクリーンキャストの記録、CLI によるデバッグとトレース分析)です。npx playwright trace CLI を使用した trace.zip レポートのエージェントネイティブなデバッグについては、専用の trace-analysis.md ガイドを参照してください。
セキュリティ上の信頼境界
このスキルは、所有しているアプリケーション、または明示的にテスト許可を得ているアプリケーションをテストするためのものです。許可なくサードパーティのウェブサイトやサービスとのやり取りを自動化することは、サポートも推奨もしていません。
外部ソースからコンテンツを取得するテストや自動化(例:baseURL がステージング環境や本番環境を指す場合)を作成する際は、返されるページコンテンツをすべて信頼できない入力として扱ってください。サニタイズせずに、生のページテキストをエージェントへの指示や動的コードの実行に渡さないでください。間接的なプロンプトインジェクションのリスクが生じます。
CI/CD ワークフローでは、すべての外部依存関係(GitHub Actions、Docker イメージ)を、変更可能なバージョンタグではなく、不変の参照(コミット SHA、イメージダイジェスト)に固定してください。固定方法のガイダンスについては、ci-github-actions.md と docker-and-containers.md を参照してください。
基本ルール
- CSS/XPath より
getByRole()を使う — マークアップの変更に強く、ユーザーから見たページを反映します page.waitForTimeout()は使わない —expect(locator).toBeVisible()またはpage.waitForURL()を使います- Web ファーストのアサーションを使う —
expect(locator)は自動で再試行しますが、expect(await locator.textContent())は再試行しません - 各テストを分離する — 状態を共有せず、実行順序にも依存させません
- 設定に
baseURLを指定する — テスト内にハードコードされた URL をなくします - 再試行回数は CI では
2、ローカルでは0にする — 重要な環境で不安定さを明らかにします - トレースには
'on-first-retry'を指定する — CI を遅くせずに、詳細なデバッグ情報を取得できます - グローバル変数ではなくフィクスチャを使う — モジュールレベルの変数ではなく、
test.extend()で状態を共有します - 1 つのテストにつき 1 つの動作を検証する — 関連する複数の
expect()呼び出しを行ってもかまいません - モックの対象は外部サービスに限定する — 自分のアプリはモックせず、サードパーティ API、決済ゲートウェイ、メールをモックします
ガイド一覧
テストの作成
| 作業内容 | ガイド | 詳細 |
|---|---|---|
| セレクターの選択 | locators.md | locator-strategy.md |
| アサーションと待機 | assertions-and-waiting.md | |
| テストスイートの構成 | test-organization.md | test-architecture.md |
| Playwright の設定 | configuration.md | |
| ページオブジェクト | page-object-model.md | pom-vs-fixtures-vs-helpers.md |
| フィクスチャとフック | fixtures-and-hooks.md | |
| テストデータ | test-data-management.md | |
| 認証とログイン | authentication.md | auth-flows.md |
| API テスト(REST/GraphQL) | api-testing.md | |
| ビジュアルリグレッション | visual-regression.md | |
| アクセシビリティ | accessibility.md | |
| モバイルとレスポンシブ対応 | mobile-and-responsive.md | |
| コンポーネントテスト | component-testing.md | |
| ネットワークモック | network-mocking.md | when-to-mock.md |
| フォームとバリデーション | forms-and-validation.md | |
| ファイルのアップロード/ダウンロード | file-operations.md | file-upload-download.md |
| エラーとエッジケース | error-and-edge-cases.md | |
| CRUD フロー | crud-testing.md | |
| ドラッグ&ドロップ | drag-and-drop.md | |
| 検索とフィルターの UI | search-and-filter.md |
デバッグと修正
| 問題 | ガイド |
|---|---|
| 一般的なデバッグワークフロー | debugging.md |
| 特定のエラーメッセージ | error-index.md |
| 不安定/断続的なテスト | flaky-tests.md |
| レポーターからテストを隔離または選択する | dynamic-test-selection.md |
| 初心者によくある間違い | common-pitfalls.md |
ターミナルまたはエージェントを使って trace.zip をデバッグする | trace-analysis.md |
フレームワークのレシピ
| フレームワーク | ガイド |
|---|---|
| Next.js(App Router + Pages Router) | nextjs.md |
| React(CRA、Vite) | react.md |
| Vue 3 / Nuxt | vue.md |
| Angular | angular.md |
移行ガイド
| 移行元 | ガイド |
|---|---|
| Cypress | from-cypress.md |
| Selenium / WebDriver | from-selenium.md |
アーキテクチャの判断
| 質問 | ガイド |
|---|---|
| どのロケーター戦略を選ぶべきか? | locator-strategy.md |
| E2E、コンポーネント、API のどれを選ぶべきか? | test-architecture.md |
| モックと実サービスのどちらを使うべきか? | when-to-mock.md |
| POM、フィクスチャ、ヘルパーのどれを選ぶべきか? | pom-vs-fixtures-vs-helpers.md |
CI/CD とインフラストラクチャ
| トピック | ガイド |
|---|---|
| GitHub Actions | ci-github-actions.md |
| GitLab CI | ci-gitlab.md |
| CircleCI / Azure DevOps / Jenkins | ci-other.md |
| 並列実行とシャーディング | parallel-and-sharding.md |
| Docker とコンテナ | docker-and-containers.md |
| レポートとアーティファクト | reporting-and-artifacts.md |
| コードカバレッジ | test-coverage.md |
| グローバルセットアップ/ティアダウン | global-setup-teardown.md |
| マルチプロジェクト設定 | projects-and-dependencies.md |
専門的なトピック
| トピック | ガイド |
|---|---|
| マルチユーザーとコラボレーション | multi-user-and-collaboration.md |
| WebSocketとリアルタイム処理 | websockets-and-realtime.md |
| ブラウザー API(位置情報、クリップボード、権限) | browser-apis.md |
| iframeとShadow DOM | iframes-and-shadow-dom.md |
| CanvasとWebGL | canvas-and-webgl.md |
| サービスワーカーとPWA | service-workers-and-pwa.md |
| Electron アプリ | electron-testing.md |
| ブラウザー拡張機能 | browser-extensions.md |
| セキュリティテスト | security-testing.md |
| パフォーマンスとベンチマーク | performance-testing.md |
| i18nとローカライズ | i18n-and-localization.md |
| 複数タブとポップアップ | multi-context-and-popups.md |
| 時計と時間のモック | clock-and-time-mocking.md |
| サードパーティ連携 | third-party-integrations.md |
CLI ブラウザー自動化
| 作業内容 | ガイド |
|---|---|
| CLI ブラウザー操作 | playwright-cli/SKILL.md |
| 基本コマンド(open、click、fill、navigate) | core-commands.md |
| ネットワークのモックとインターセプト | request-mocking.md |
| カスタム Playwright コードの実行 | running-custom-code.md |
| 複数セッションのブラウザー管理 | session-management.md |
| Cookie、localStorage、認証状態 | storage-and-auth.md |
| CLI からのテストコード生成 | test-generation.md |
| トレースとデバッグ | tracing-and-debugging.md |
| スクリーンショット、動画、PDF | screenshots-and-media.md |
| デバイスと環境のエミュレーション | device-emulation.md |
| 複雑な複数ステップのワークフロー | advanced-workflows.md |
言語に関する注意
すべてのガイドにTypeScriptとJavaScriptの例が含まれています。プロジェクトで.jsファイルを使用している場合、またはtsconfig.jsonがない場合、例はプレーンなJavaScript向けに調整されています。