jpskill.com
🛠️ 開発・MCP コミュニティ 🔴 エンジニア向け 👤 エンジニア・AI開発者

🛠️ Generate

generate

ユーザーが「テストを作成」「E2Eテスト」などテストに関する指示をした際に、Playwrightというツールを使って自動でテストコードを生成し、Webアプリケーションの品質向上を支援するSkill。

⏱ 障害ポストモーテム 1日 → 1時間

📺 まず動画で見る(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本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
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
🪟 Windows (PowerShell)
$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. 1. 下の青いボタンを押して generate.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → generate フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

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 を読み取り、testDirbaseURLprojects を確認します。
  • 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
  });
});

ロケーターの優先順位 (最初に機能するものを使用します):

  1. getByRole() — ボタン、リンク、見出し、フォーム要素
  2. getByLabel() — ラベル付きのフォームフィールド
  3. getByText() — 非インタラクティブなテキストコンテンツ
  4. getByPlaceholder() — プレースホルダーテキスト付きの入力
  5. 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

失敗した場合:

  1. エラーを読み取ります。
  2. テストを修正します (アプリは修正しません)。
  3. 再度実行します。
  4. アプリの問題である場合は、ユーザーに報告します。

出力

  • パス付きの生成されたテストファイル
  • 作成されたすべてのサポートファイル (ページオブジェクト、フィクスチャ、データ)
  • テスト実行結果
  • カバレッジノート: 現在テストされている動作
📜 原文 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.ts for testDir, baseURL, projects
  • Check existing tests in testDir for 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.ts or storageState config)

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):

  1. getByRole() — buttons, links, headings, form elements
  2. getByLabel() — form fields with labels
  3. getByText() — non-interactive text content
  4. getByPlaceholder() — inputs with placeholder text
  5. getByTestId() — 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) or page.$$(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 await on every Playwright call
  • baseURL-relative navigation (page.goto('/') not page.goto('http://...'))

5. Match Project Conventions

  • If project uses TypeScript → generate .spec.ts
  • If project uses JavaScript → generate .spec.js with require() 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:

  1. Read the error
  2. Fix the test (not the app)
  3. Run again
  4. 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