🛠️ Generate
ユーザーが「テストを作成」「E2Eテスト」などテストに関する指示をした際に、Playwrightというツールを使って自動でテストコードを生成し、Webアプリケーションの品質向上を支援するSkill。
📺 まず動画で見る(YouTube)
▶ 【衝撃】最強のAIエージェント「Claude Code」の最新機能・使い方・プログラミングをAIで効率化する超実践術を解説! ↗
※ jpskill.com 編集部が参考用に選んだ動画です。動画の内容と Skill の挙動は厳密には一致しないことがあります。
📜 元の英語説明(参考)
Generate Playwright tests. Use when user says "write tests", "generate tests", "add tests for", "test this component", "e2e test", "create test for", "test this page", or "test this feature".
🇯🇵 日本人クリエイター向け解説
ユーザーが「テストを作成」「E2Eテスト」などテストに関する指示をした際に、Playwrightというツールを使って自動でテストコードを生成し、Webアプリケーションの品質向上を支援するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o generate.zip https://jpskill.com/download/4673.zip && unzip -o generate.zip && rm generate.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/4673.zip -OutFile "$d\generate.zip"; Expand-Archive "$d\generate.zip" -DestinationPath $d -Force; ri "$d\generate.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
generate.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
generateフォルダができる - 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
💬 こう話しかけるだけ — サンプルプロンプト
- › Generate を使って、最小構成のサンプルコードを示して
- › Generate の主な使い方と注意点を教えて
- › Generate を既存プロジェクトに組み込む方法を教えて
これをClaude Code に貼るだけで、このSkillが自動発動します。
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Playwright テストの生成
ユーザーの要望、URL、コンポーネント名、または機能の説明から、本番環境に対応した Playwright テストを生成します。
入力
$ARGUMENTS にはテスト対象が含まれます。例:
"ユーザーはメールアドレスとパスワードでログインできる""チェックアウトフロー""src/components/UserProfile.tsx""フィルター付きの検索ページ"
手順
1. ターゲットの理解
$ARGUMENTS を解析して以下を特定します。
- ユーザーの要望: 検証する動作を抽出します。
- コンポーネントパス: コンポーネントのソースコードを読み取ります。
- ページ/URL: ルートとその要素を特定します。
- 機能名: 関連するアプリ領域にマッピングします。
2. コードベースの探索
Explore サブエージェントを使用してコンテキストを収集します。
playwright.config.tsを読み取り、testDir、baseURL、projectsを確認します。testDir内の既存のテストをチェックし、パターン、フィクスチャ、規約を確認します。- コンポーネントパスが指定されている場合、コンポーネントを読み取り、その props、states、およびインタラクションを理解します。
pages/内の既存のページオブジェクトをチェックします。fixtures/内の既存のフィクスチャをチェックします。- 認証設定 (
auth.setup.tsまたはstorageState設定) をチェックします。
3. テンプレートの選択
このプラグインの templates/ をチェックし、一致するパターンを探します。
| テスト対象... | テンプレートの読み込み元 |
|---|---|
| ログイン/認証フロー | templates/auth/login.md |
| CRUD 操作 | templates/crud/ |
| チェックアウト/支払い | templates/checkout/ |
| 検索/フィルター UI | templates/search/ |
| フォーム送信 | templates/forms/ |
| ダッシュボード/データ | templates/dashboard/ |
| 設定ページ | templates/settings/ |
| オンボーディングフロー | templates/onboarding/ |
| API エンドポイント | templates/api/ |
| アクセシビリティ | templates/accessibility/ |
テンプレートを特定のアプリに合わせて調整します。{{placeholders}} を実際のセレクター、URL、データに置き換えます。
4. テストの生成
以下のルールに従います。
構造:
import { test, expect } from '@playwright/test';
// Import custom fixtures if the project uses them
test.describe('Feature Name', () => {
// Group related behaviors
test('should <expected behavior>', async ({ page }) => {
// Arrange: navigate, set up state
// Act: perform user action
// Assert: verify outcome
});
});
ロケーターの優先順位 (最初に機能するものを使用します):
getByRole()— ボタン、リンク、見出し、フォーム要素getByLabel()— ラベル付きのフォームフィールドgetByText()— 非インタラクティブなテキストコンテンツgetByPlaceholder()— プレースホルダーテキスト付きの入力getByTestId()— セマンティックなオプションが利用できない場合
アサーション — 常にウェブファースト:
// GOOD — 自動リトライ
await expect(page.getByRole('heading')).toBeVisible();
await expect(page.getByRole('alert')).toHaveText('Success');
// BAD — リトライなし
const text = await page.textContent('.msg');
expect(text).toBe('Success');
絶対に使用しないもの:
page.waitForTimeout()page.$(selector)またはpage.$$(selector)- 絶対に必要な場合を除き、生の CSS セレクター
- ロケーターでできることのために
page.evaluate()
常に含めるもの:
- 動作を説明する記述的なテスト名
- ハッピーパスと並行してエラー/エッジケースのテスト
- すべての Playwright 呼び出しに対する適切な
await baseURL相対ナビゲーション (page.goto('/')でありpage.goto('http://...')ではない)
5. プロジェクトの規約に合わせる
- プロジェクトが TypeScript を使用している場合 →
.spec.tsを生成します。 - プロジェクトが JavaScript を使用している場合 →
require()インポート付きの.spec.jsを生成します。 - プロジェクトにページオブジェクトがある場合 → インラインロケーターの代わりにそれらを使用します。
- プロジェクトにカスタムフィクスチャがある場合 → それらをインポートして使用します。
- プロジェクトにテストデータディレクトリがある場合 → そこにテストデータファイルを作成します。
6. サポートファイルの生成 (必要に応じて)
- ページオブジェクト: テストが1ページで5つ以上のユニークなロケーターに触れる場合、ページオブジェクトを作成します。
- フィクスチャ: テストが共有セットアップ (認証、データ) を必要とする場合、フィクスチャを作成または拡張します。
- テストデータ: テストが構造化データを使用する場合、
test-data/に JSON ファイルを作成します。
7. 検証
生成されたテストを実行します。
npx playwright test <generated-file> --reporter=list
失敗した場合:
- エラーを読み取ります。
- テストを修正します (アプリは修正しません)。
- 再度実行します。
- アプリの問題である場合は、ユーザーに報告します。
出力
- パス付きの生成されたテストファイル
- 作成されたすべてのサポートファイル (ページオブジェクト、フィクスチャ、データ)
- テスト実行結果
- カバレッジノート: 現在テストされている動作
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Generate Playwright Tests
Generate production-ready Playwright tests from a user story, URL, component name, or feature description.
Input
$ARGUMENTS contains what to test. Examples:
"user can log in with email and password""the checkout flow""src/components/UserProfile.tsx""the search page with filters"
Steps
1. Understand the Target
Parse $ARGUMENTS to determine:
- User story: Extract the behavior to verify
- Component path: Read the component source code
- Page/URL: Identify the route and its elements
- Feature name: Map to relevant app areas
2. Explore the Codebase
Use the Explore subagent to gather context:
- Read
playwright.config.tsfortestDir,baseURL,projects - Check existing tests in
testDirfor patterns, fixtures, and conventions - If a component path is given, read the component to understand its props, states, and interactions
- Check for existing page objects in
pages/ - Check for existing fixtures in
fixtures/ - Check for auth setup (
auth.setup.tsorstorageStateconfig)
3. Select Templates
Check templates/ in this plugin for matching patterns:
| If testing... | Load template from |
|---|---|
| Login/auth flow | templates/auth/login.md |
| CRUD operations | templates/crud/ |
| Checkout/payment | templates/checkout/ |
| Search/filter UI | templates/search/ |
| Form submission | templates/forms/ |
| Dashboard/data | templates/dashboard/ |
| Settings page | templates/settings/ |
| Onboarding flow | templates/onboarding/ |
| API endpoints | templates/api/ |
| Accessibility | templates/accessibility/ |
Adapt the template to the specific app — replace {{placeholders}} with actual selectors, URLs, and data.
4. Generate the Test
Follow these rules:
Structure:
import { test, expect } from '@playwright/test';
// Import custom fixtures if the project uses them
test.describe('Feature Name', () => {
// Group related behaviors
test('should <expected behavior>', async ({ page }) => {
// Arrange: navigate, set up state
// Act: perform user action
// Assert: verify outcome
});
});
Locator priority (use the first that works):
getByRole()— buttons, links, headings, form elementsgetByLabel()— form fields with labelsgetByText()— non-interactive text contentgetByPlaceholder()— inputs with placeholder textgetByTestId()— when semantic options aren't available
Assertions — always web-first:
// GOOD — auto-retries
await expect(page.getByRole('heading')).toBeVisible();
await expect(page.getByRole('alert')).toHaveText('Success');
// BAD — no retry
const text = await page.textContent('.msg');
expect(text).toBe('Success');
Never use:
page.waitForTimeout()page.$(selector)orpage.$$(selector)- Bare CSS selectors unless absolutely necessary
page.evaluate()for things locators can do
Always include:
- Descriptive test names that explain the behavior
- Error/edge case tests alongside happy path
- Proper
awaiton every Playwright call baseURL-relative navigation (page.goto('/')notpage.goto('http://...'))
5. Match Project Conventions
- If project uses TypeScript → generate
.spec.ts - If project uses JavaScript → generate
.spec.jswithrequire()imports - If project has page objects → use them instead of inline locators
- If project has custom fixtures → import and use them
- If project has a test data directory → create test data files there
6. Generate Supporting Files (If Needed)
- Page object: If the test touches 5+ unique locators on one page, create a page object
- Fixture: If the test needs shared setup (auth, data), create or extend a fixture
- Test data: If the test uses structured data, create a JSON file in
test-data/
7. Verify
Run the generated test:
npx playwright test <generated-file> --reporter=list
If it fails:
- Read the error
- Fix the test (not the app)
- Run again
- If it's an app issue, report it to the user
Output
- Generated test file(s) with path
- Any supporting files created (page objects, fixtures, data)
- Test run result
- Coverage note: what behaviors are now tested