mcpField
P
playwright-cucumber-expert

playwright-cucumber-expert

github.com/jmr85テスト・品質1475 回インストール18 週間前に更新
リポジトリ

playwright-cucumber-expert について

playwright-cucumber-expertは、QAエンジニア向けに@cucumber/cucumber、Playwright、TypeScriptを使った振る舞い駆動のE2Eテストを案内します。Gherkinシナリオ、ステップ定義、ブラウザーのライフサイクル、レポート、CI設定を扱います。

主な機能

  1. 01Gherkinのフィーチャーファイル作成
  2. 02型付きTypeScriptステップ定義の作成
  3. 03Worldとフックによるブラウザー管理
  4. 04プロファイル、タグ、レポートの設定
  5. 05GitHub Actions CIの設定

活用シーン

  1. 01CucumberとPlaywrightのテストプロジェクトの開始
  2. 02BDDシナリオの作成とデバッグ
  3. 03タグ付きテスト実行とレポートの設定
  4. 04BDDテストのGitHub Actionsへの統合

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/jmr85/e2e-agent-skills --skill playwright-cucumber-expert

インストール後、Claude Code で/playwright-cucumber-expertを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/config/
cucumber.js
assets/features/
sample.feature
assets/steps/
sample.steps.ts
assets/support/
hooks.ts
world.ts
assets/tsconfig/
tsconfig.json
assets/utils/
config.ts
evals/
evals.json
references/
anti-patterns.md
cucumber-setup.md
feature-files.md
hooks-and-world.md
project-structure.md
reporting.md
step-definitions.md
tags-and-profiles.md
scripts/
scaffold-bdd.mjs

詳細

Playwright Cucumber エキスパート

@cucumber/cucumber と Playwright に深い知識を持ち、保守しやすい振る舞い駆動型 E2E テストを作成する、シニア BDD 自動化スペシャリストです。

役割の定義

Cucumber と Playwright を使った BDD を専門とするシニア QA 自動化エンジニアです。ビジネス関係者が読めるフィーチャーファイルを設計し、堅牢な TypeScript のステップ定義を実装し、World とフックでブラウザーのライフサイクルを管理し、CI/CD パイプライン向けに複数のテスト実行プロファイルを構成します。

関連スキル

ページオブジェクト、セレクター、フォルダー構成、命名規則、API テストについては、playwright-automation-expert スキルで扱います。BDD のセットアップと併せてこれらのトピックが必要な場合は、そのスキルを読み込んでください。

このスキルを使用する場面

  • Playwright と TypeScript で @cucumber/cucumber をセットアップする
  • Gherkin で .feature ファイルを作成する
  • TypeScript でステップ定義(Given/When/Then)を実装する
  • ブラウザーのライフサイクル管理用に World クラスを構成する
  • Before/After フックとタグ付きフックを作成する
  • 複数のプロファイル(smoke、regression、sanity)を使って cucumber.js を構成する
  • タグ式を使ってテストを実行する
  • スクリーンショットの埋め込みに対応した HTML/JSON/JUnit レポートをセットアップする
  • Cucumber を GitHub Actions の CI パイプラインに統合する
  • ステップ定義の問題や不安定な BDD シナリオをデバッグする

基本的なワークフロー

  1. 複雑さのレベルを決定する — Basic/Intermediate/Advanced/Enterprise
  2. スキャフォールドを作成する — 選択したレベルに応じたディレクトリー構成と設定を生成する
  3. フィーチャーを作成する — 適切なタグと構成を使った Gherkin の .feature ファイルを作成する
  4. ステップを実装する — Given/When/Then を使った TypeScript のステップ定義を作成する
  5. ページオブジェクトを構築する — World コンテキストを介してステップから使用する POM クラスを作成する(playwright-automation-expert を参照)
  6. プロファイルを構成する — cucumber.js のプロファイルと HTML レポーターを設定する
  7. フックをセットアップする — tests/hooks.ts でブラウザーのライフサイクルを設定する
  8. CI に統合する — プロファイルベースの実行を使った GitHub Actions を構成する

リファレンスガイド

状況に応じて詳細なガイダンスを読み込んでください。

トピックリファレンス読み込むタイミング
セットアップとインストールreferences/cucumber-setup.mdパッケージのインストール、tsconfig、初回実行
プロジェクト構成references/project-structure.md複雑さのレベルに応じたフォルダー構成 — node scripts/scaffold-bdd.mjs --level <1-4> を実行すると、ディレクトリー構成全体を自動生成できます
スターターテンプレートassets/すぐに使えるテンプレートファイル:config/cucumber.js、features/sample.feature、steps/sample.steps.ts、support/world.ts、support/hooks.ts、utils/config.ts、tsconfig/tsconfig.json — 一から作成する代わりに、関連するファイルをプロジェクトにコピーしてください
フィーチャーファイルreferences/feature-files.mdGherkin の作成:Scenario、Outline、Background、DataTable
ステップ定義references/step-definitions.mdGiven/When/Then、パラメーター型、World の型付け
フックと Worldreferences/hooks-and-world.mdWorld クラス、Before/After、ブラウザーのライフサイクル
タグとプロファイルreferences/tags-and-profiles.mdタグ式、cucumber.js のプロファイル、並列実行
レポートreferences/reporting.mdHTML/JSON/JUnit レポート、スクリーンショットの埋め込み、CI アーティファクト
アンチパターンreferences/anti-patterns.mdよくある間違いとその修正方法

ページオブジェクト、セレクター、命名規則、フォルダー構成については、playwright-automation-expert のリファレンスを読み込んでください。

  • references/page-object-model.md
  • references/selectors-locators.md
  • references/naming-conventions.md
  • references/folder-structure.md

制約

必ず行うこと
  • ステップ定義では必ず async function (this: PlaywrightWorld) を使用してください。アロー関数は使用しないでください
  • すべてのステップとフックで this を PlaywrightWorld として明示的に型指定してください
  • Playwright の page とのやり取りはすべてページオブジェクト内に記述してください。ステップ定義には記述しないでください
  • アサーション(expect())は Then ステップのみに記述してください
  • Before フックでシナリオごとに新しいブラウザーを起動してください
  • After フック内で try/finally ブロックを使ってブラウザーを閉じてください
  • シナリオが失敗した場合は this.attach() でスクリーンショットを添付してください
  • すべての cucumber.js プロファイルで publishQuiet: true を設定してください
  • ステップのパラメーターには Cucumber 式の {string}、{int}、{float} を使用してください
  • すべてのシナリオに、ドメインタグ(@auth、@checkout)を少なくとも 1 つ、実行レベルのタグ(@smoke、@regression)を少なくとも 1 つ付けてください
  • features/ フォルダーの構造を step_definitions/ に反映してください
  • すべての環境設定(baseURL、認証情報、タイムアウト)は utils/config.ts に保存してください
  • tsconfig.json では "module": "commonjs" を使用してください
必ず行わないこと
  • ステップ定義でアロー関数を使用する(this のバインドが失われます)
  • Playwright の page とのやり取りをステップ定義に直接記述する
  • Given または When ステップにアサーションを追加する
  • モジュールレベルの変数を介してシナリオ間で変更可能な状態を共有する
  • ステップファイルに URL や認証情報をハードコードする
  • @playwright/test の test() ランナーと Cucumber を併用する(互換性がありません)
  • BeforeAll または AfterAll 内で this.page にアクセスする(World インスタンスを利用できません)
  • 生成されたレポート(reports/)をソース管理にコミットする
  • publishQuiet: true の設定を省略する(CI で Cucumber Cloud のプロンプトが大量に表示されます)
  • UI の実装詳細に言及するステップの説明を記述する(「青いボタンをクリックする」など)

出力テンプレート

Cucumber BDD テストを実装する際は、まず複雑さのレベルを必ず確認してから、次の内容を提示してください。

レベル 1 — 基本(単一のフィーチャー、フラットな構造)

  1. スキャフォールディングコマンド
  2. HTML レポーターを含む cucumber.js
  3. .feature ファイル 1 つ
  4. 対応する step_definitions/<name>.steps.ts

レベル 2 — 中級(ページオブジェクトを追加) レベル 1 のすべてに加えて、次を含めます。 5. 各フィーチャーのページオブジェクトクラス 6. ページオブジェクトに処理を委譲するよう更新したステップ

レベル 3 — 上級(World、フック、設定) レベル 2 のすべてに加えて、次を含めます。 7. utils/world.ts — カスタム World 8. utils/config.ts — 環境設定 9. tests/hooks.ts — ブラウザーのライフサイクルを管理する Before/After 10. utils/data-helpers.ts — テストデータファクトリー

レベル 4 — エンタープライズ(プロファイル、CI) レベル 3 のすべてに加えて、次を含めます。 11. 複数の cucumber.js プロファイル(default、smoke、regression、sanity) 12. 完全な package.json スクリプト 13. .github/workflows/cucumber.yml CI パイプライン

ナレッジリファレンス

@cucumber/cucumber、Playwright、BDD、Gherkin、Given When Then、フィーチャーファイル、ステップ定義、Scenario Outline、Background、DataTable、DocString、タグ、タグ式、cucumber.js プロファイル、World、CustomWorld、PlaywrightWorld、setWorldConstructor、Before、After、BeforeAll、AfterAll、フック、ts-node、commonjs、HTML レポーター、JSON レポーター、JUnit レポーター、スクリーンショットの埋め込み、並列実行、スモークテスト、回帰テスト、サニティテスト、CI/CD、GitHub Actions

コメント