🛠️ Playwright Best Practices
Webサイトの動作を自動で確認するテスト(
📺 まず動画で見る(YouTube)
▶ 【衝撃】最強のAIエージェント「Claude Code」の最新機能・使い方・プログラミングをAIで効率化する超実践術を解説! ↗
※ jpskill.com 編集部が参考用に選んだ動画です。動画の内容と Skill の挙動は厳密には一致しないことがあります。
📜 元の英語説明(参考)
Use when writing or modifying Playwright tests (.spec.ts, .test.ts with @playwright/test imports).
🇯🇵 日本人クリエイター向け解説
Webサイトの動作を自動で確認するテスト(
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o playwright-best-practices.zip https://jpskill.com/download/4034.zip && unzip -o playwright-best-practices.zip && rm playwright-best-practices.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/4034.zip -OutFile "$d\playwright-best-practices.zip"; Expand-Archive "$d\playwright-best-practices.zip" -DestinationPath $d -Force; ri "$d\playwright-best-practices.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
playwright-best-practices.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
playwright-best-practicesフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-17
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
💬 こう話しかけるだけ — サンプルプロンプト
- › Playwright Best Practices を使って、最小構成のサンプルコードを示して
- › Playwright Best Practices の主な使い方と注意点を教えて
- › Playwright Best Practices を既存プロジェクトに組み込む方法を教えて
これをClaude Code に貼るだけで、このSkillが自動発動します。
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Playwright ベストプラクティス
CLI コンテキスト: コンテキストオーバーフローの防止
Claude Code やその他の CLI エージェントから Playwright テストを実行する際は、冗長な出力がコンテキストウィンドウを消費するのを防ぐため、常に最小限のレポーターを使用してください。
CLI テスト実行には --reporter=line または --reporter=dot を使用してください。 CI または CLAUDE 環境変数が設定されている場合、playwright.config.ts を設定して最小限のレポーターをデフォルトにするようにしてください — 設定スニペットについては playwright-patterns.md を参照してください。
ロケーターの優先順位 (最も堅牢なものから最も堅牢でないものへ)
常にユーザー向けの属性を優先してください。
page.getByRole('button', { name: 'Submit' })— アクセシビリティロールpage.getByLabel('Email')— フォームコントロールのラベルpage.getByPlaceholder('Search...')— 入力プレースホルダーpage.getByText('Welcome')— 表示されるテキスト (非インタラクティブ)page.getByAltText('Logo')— 画像の代替テキストpage.getByTitle('Settings')— title 属性page.getByTestId('submit-btn')— 明示的なテスト契約- CSS/XPath — 最終手段、避ける
コアルール
- Web ファーストのアサーション: 常に
await expect(locator).toBeVisible()を使用し、expect(await locator.isVisible()).toBe(true)は使用しないでください — Web ファーストのマッチャーは自動的に待機し、リトライします。 - テストの分離: 各テストは独自のデータを作成します。テスト間で状態を共有しないでください。
- 認証状態の再利用: セットアッププロジェクトと
storageStateを介して認証状態を保存してください。すべてのテストで UI を介してログインしないでください。 beforeEachよりもフィクスチャ: フィクスチャはセットアップとティアダウンをカプセル化し、オンデマンドで実行され、構成可能です。
アンチパターン
page.waitForTimeout(ms)— 代わりに自動待機ロケーターを使用してください。page.locator('.class')— ロール/ラベル/testid を使用してください。- XPath セレクター — 脆弱です。ユーザー向けの属性を使用してください。
- テスト間の共有状態 — 各テストは独自のデータを作成します。
- すべてのテストでの UI ログイン — セットアッププロジェクトと storageState を使用してください。
- await なしの手動アサーション — Web ファーストのアサーションを使用してください。
- ハードコードされた待機 — Playwright の自動待機に頼ってください。
- CI/エージェントでのデフォルトレポーター —
--reporter=lineまたは--reporter=dotを使用してください。
チェックリスト
- [ ] ロケーターは CSS クラスや XPath ではなく、ロール/ラベル/testid を使用しています。
- [ ] すべてのアサーションは
await expect()Web ファーストマッチャーを使用しています。 - [ ] ページオブジェクトはコンストラクターでロケーターを定義しています。
- [ ]
page.waitForTimeout()はありません — 自動待機を使用しています。 - [ ] テストは分離されています — 共有状態はありません。
- [ ] 認証状態はセットアッププロジェクトを介して再利用されています。
- [ ] ネットワークモックはナビゲーション前に設定されています。
- [ ] テストデータはテストごと、またはフィクスチャを介して作成されています。
- [ ] 複雑なフローにはデバッグログが追加されています。
- [ ] CI/エージェントコンテキストでは最小限のレポーター (
line/dot) が使用されています。
Page Object Model、フィクスチャ、ネットワークモック、および設定例については playwright-patterns.md を参照してください。
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Playwright Best Practices
CLI Context: Prevent Context Overflow
When running Playwright tests from Claude Code or any CLI agent, always use minimal reporters to prevent verbose output from consuming the context window.
Use --reporter=line or --reporter=dot for CLI test runs. Configure playwright.config.ts to default to minimal reporters when CI or CLAUDE env vars are set — see playwright-patterns.md for the config snippet.
Locator Priority (Most to Least Resilient)
Always prefer user-facing attributes:
page.getByRole('button', { name: 'Submit' })— accessibility rolespage.getByLabel('Email')— form control labelspage.getByPlaceholder('Search...')— input placeholderspage.getByText('Welcome')— visible text (non-interactive)page.getByAltText('Logo')— image alt textpage.getByTitle('Settings')— title attributespage.getByTestId('submit-btn')— explicit test contracts- CSS/XPath — last resort, avoid
Core Rules
- Web-first assertions: always
await expect(locator).toBeVisible(), neverexpect(await locator.isVisible()).toBe(true)— web-first matchers auto-wait and retry - Test isolation: each test creates its own data; never share state between tests
- Auth state reuse: save authenticated state via setup project +
storageState; never log in via UI in every test - Fixtures over beforeEach: fixtures encapsulate setup + teardown, run on-demand, and compose
Anti-Patterns
page.waitForTimeout(ms)— use auto-waiting locators insteadpage.locator('.class')— use role/label/testid- XPath selectors — fragile, use user-facing attributes
- Shared state between tests — each test creates own data
- UI login in every test — use setup project + storageState
- Manual assertions without await — use web-first assertions
- Hardcoded waits — rely on Playwright's auto-waiting
- Default reporter in CI/agent — use
--reporter=lineor--reporter=dot
Checklist
- [ ] Locators use role/label/testid, not CSS classes or XPath
- [ ] All assertions use
await expect()web-first matchers - [ ] Page objects define locators in constructor
- [ ] No
page.waitForTimeout()— use auto-waiting - [ ] Tests isolated — no shared state
- [ ] Auth state reused via setup project
- [ ] Network mocks set up before navigation
- [ ] Test data created per-test or via fixtures
- [ ] Debug logging added for complex flows
- [ ] Minimal reporter (
line/dot) used in CI/agent contexts
See playwright-patterns.md for Page Object Model, fixtures, network mocking, and configuration examples.