playwright-cucumber-expert について
playwright-cucumber-expertは、QAエンジニア向けに@cucumber/cucumber、Playwright、TypeScriptを使った振る舞い駆動のE2Eテストを案内します。Gherkinシナリオ、ステップ定義、ブラウザーのライフサイクル、レポート、CI設定を扱います。
主な機能
- 01Gherkinのフィーチャーファイル作成
- 02型付きTypeScriptステップ定義の作成
- 03Worldとフックによるブラウザー管理
- 04プロファイル、タグ、レポートの設定
- 05GitHub Actions CIの設定
活用シーン
- 01CucumberとPlaywrightのテストプロジェクトの開始
- 02BDDシナリオの作成とデバッグ
- 03タグ付きテスト実行とレポートの設定
- 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.jsassets/features/sample.featureassets/steps/sample.steps.tsassets/support/hooks.tsworld.tsassets/tsconfig/tsconfig.jsonassets/utils/config.tsevals/evals.jsonreferences/anti-patterns.mdcucumber-setup.mdfeature-files.mdhooks-and-world.mdproject-structure.mdreporting.mdstep-definitions.mdtags-and-profiles.mdscripts/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 シナリオをデバッグする
基本的なワークフロー
- 複雑さのレベルを決定する — Basic/Intermediate/Advanced/Enterprise
- スキャフォールドを作成する — 選択したレベルに応じたディレクトリー構成と設定を生成する
- フィーチャーを作成する — 適切なタグと構成を使った Gherkin の
.featureファイルを作成する - ステップを実装する —
Given/When/Thenを使った TypeScript のステップ定義を作成する - ページオブジェクトを構築する — World コンテキストを介してステップから使用する POM クラスを作成する(
playwright-automation-expertを参照) - プロファイルを構成する —
cucumber.jsのプロファイルと HTML レポーターを設定する - フックをセットアップする —
tests/hooks.tsでブラウザーのライフサイクルを設定する - 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.md | Gherkin の作成:Scenario、Outline、Background、DataTable |
| ステップ定義 | references/step-definitions.md | Given/When/Then、パラメーター型、World の型付け |
| フックと World | references/hooks-and-world.md | World クラス、Before/After、ブラウザーのライフサイクル |
| タグとプロファイル | references/tags-and-profiles.md | タグ式、cucumber.js のプロファイル、並列実行 |
| レポート | references/reporting.md | HTML/JSON/JUnit レポート、スクリーンショットの埋め込み、CI アーティファクト |
| アンチパターン | references/anti-patterns.md | よくある間違いとその修正方法 |
ページオブジェクト、セレクター、命名規則、フォルダー構成については、
playwright-automation-expertのリファレンスを読み込んでください。
references/page-object-model.mdreferences/selectors-locators.mdreferences/naming-conventions.mdreferences/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 — 基本(単一のフィーチャー、フラットな構造)
- スキャフォールディングコマンド
- HTML レポーターを含む
cucumber.js .featureファイル 1 つ- 対応する
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