mcpField
E
e2e-panther-playwright

e2e-panther-playwright

github.com/dev-toolingsテスト・品質22771 回インストール3 週間前に更新
リポジトリ

e2e-panther-playwright について

SymfonyのブラウザーE2Eテスト向けスキルで、Pantherを使い、WebKitやトレースなどにはPlaywrightを別途利用します。セットアップ、明示的な待機、アサーション、CIでのデバッグを扱います。

主な機能

  1. 01Pantherによる実ブラウザーテスト
  2. 02クロスブラウザー用途のPlaywright
  3. 03明示的な待機と状態アサーション
  4. 04ドライバーとCIの設定案内

活用シーン

  1. 01JavaScript主体のフローをテスト
  2. 02ログインや決済フローを検証
  3. 03CIのブラウザーテストをデバッグ

インストール

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

$npx skills add https://github.com/dev-toolings/superpowers-symfony --skill e2e-panther-playwright

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

同梱ファイルreference.md

詳細

E2e Panther Playwright(Symfony)

使用する場面

  • JavaScript や、ログイン、購入手続き、サインアップなどの複数ページにわたるフローで、実際のブラウザーが必要な場合。
  • クライアント側のレンダリングに依存するため、WebTestCase では動作を確認できない場合。
  • WebDriver では対応できないクロスブラウザーの要件(WebKit、トレース、動画)がある場合。Playwright を別途実行してください。
  • CI でのみ失敗するブラウザーテストをデバッグする場合。

デフォルトのワークフロー

  1. クライアントを選択します。実際のブラウザーを使う場合は static::createPantherClient()、JavaScript が不要な場合は static::createClient() を使用します。
  2. symfony/panther と dbrekelmans/bdi をインストールし、vendor/bin/bdi detect drivers を実行して、phpunit.dist.xml に ServerExtension を登録します。
  3. PantherTestCase を継承し、明示的な待機を使ってフローを実行します。waitFor()、waitForVisibility()、waitForElementToContain() を使用します。
  4. 将来の状態は assertSelectorWillExist() または assertSelectorWillContain()、現在の状態は assertSelectorIsVisible() でアサートします。
  5. テストスイートは tests/E2E に配置し、テスト間でデータベースをリセットします(DAMADoctrineTestBundle または Foundry)。
  6. PANTHER_NO_HEADLESS=1 と --debug でデバッグします。CI では PANTHER_NO_SANDBOX=1 を設定します。

注意事項

  • 暗黙のタイミングに依存しないでください。すべての非同期ステップに waitFor* または assertSelectorWill* を使用します。
  • スタイル用のクラスではなく、data-testid 属性を対象にします。
  • takeScreenshot() または PANTHER_ERROR_SCREENSHOT_DIR によって書き込まれた PNG ファイルは削除し、コミットしないでください。
  • E2E は時間がかかります。重要な経路のみを対象とし、ユニットテストとは分けてください。

段階的な情報開示

  • 実行時の方針とリスク管理には、このファイルを使用します。
  • 実装の詳細が必要な場合は、リファレンスを開きます。

出力要件

  • クライアントの種類と使用した待機方法を記載した E2E テストファイル。
  • ドライバーのセットアップ、ServerExtension の登録、およびローカル環境と CI で必要な PANTHER_* 変数。
  • スクリーンショットを削除したことの確認。

リファレンス

  • reference.md

コメント