mcpField
F
fix

fix

github.com/alirezarezvaniテスト・品質28.9k1.6k 回インストール3 日前に更新
リポジトリ

fix について

再現、トレース、失敗分類を通じて、Playwright の失敗や不安定なテストを診断・修正するスキルです。修正後はテストを繰り返し実行して安定性を確認し、再発防止策も提案します。

主な機能

  1. 01失敗や不安定な動作の再現
  2. 02診断用テストトレースの取得
  3. 03失敗を4種類に分類
  4. 04分類に応じた修正の適用
  5. 05反復実行による安定性の確認

活用シーン

  1. 01断続的に失敗するテストの調査
  2. 02CI でのみ発生する失敗の診断
  3. 03修正によって不安定さが解消したか確認

インストール

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

$npx skills add https://github.com/alirezarezvani/claude-skills --skill fix

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

同梱ファイルflaky-taxonomy.md

詳細

失敗するテスト、または不安定なテストを修正する

体系的な分類に基づいて、失敗する、または断続的に成功する Playwright テストを診断して修正します。

入力

$ARGUMENTS には以下が含まれます。

  • テストファイルのパス:e2e/login.spec.ts
  • テスト名:"should redirect after login"
  • 説明:"checkout テストが CI では失敗するが、ローカルでは成功する"

手順

1. 失敗を再現する

エラーを記録するため、テストを実行します。

npx playwright test <file> --reporter=list

テストが成功する場合は、不安定な可能性があります。バーンインを実行します。

npx playwright test <file> --repeat-each=10 --reporter=list

それでも成功する場合は、並列ワーカーを使って試します。

npx playwright test --fully-parallel --workers=4 --repeat-each=5
2. トレースを取得する

完全なトレースを有効にして実行します。

npx playwright test <file> --trace=on --retries=0

トレースの出力を読み取ります。利用できる場合は、/debug を使ってトレースファイルを分析します。

3. 失敗を分類する

このスキルのディレクトリから flaky-taxonomy.md を読み込みます。

失敗するテストは、次の4つのカテゴリのいずれかに該当します。

カテゴリ症状診断
タイミング/非同期処理どの環境でも断続的に失敗する--repeat-each=20 でローカルに再現する
テストの分離テストスイートでは失敗するが、単独では成功する--workers=1 --grep "test name" では成功する
環境CI では失敗するが、ローカルでは成功するCI とローカルのスクリーンショット/トレースを比較する
インフラストラクチャランダムに発生し、パターンがないエラーにブラウザー内部への言及がある
4. 的を絞った修正を適用する

タイミング/非同期処理:

  • waitForTimeout() を web-first アサーションに置き換える
  • Playwright の呼び出しに不足している await を追加する
  • アサーションの前に、特定のネットワーク応答を待つ
  • 要素を操作する前に toBeVisible() を使う

テストの分離:

  • テスト間で共有される可変状態を取り除く
  • API またはフィクスチャを使って、テストごとにテストデータを作成する
  • テストデータには一意の識別子(タイムスタンプ、ランダムな文字列)を使う
  • データベースの状態が漏れていないか確認する

環境:

  • ローカルと CI のビューポートサイズを一致させる
  • スクリーンショットにおけるフォントのレンダリング差異を考慮する
  • CI 環境に合わせるため、ローカルで docker を使う
  • タイムゾーンに依存するアサーションを確認する

インフラストラクチャ:

  • CI の実行環境が遅い場合はタイムアウトを延長する
  • CI 設定にリトライを追加する(retries: 2)
  • ブラウザーの OOM を確認する(並列ワーカー数を減らす)
  • ブラウザーの依存関係がインストールされていることを確認する
5. 修正を検証する

安定性を確認するため、テストを10回実行します。

npx playwright test <file> --repeat-each=10 --reporter=list

10回すべて成功する必要があります。1回でも失敗した場合は、手順3に戻ります。

6. 再発を防止する

以下を提案します。

  • 未設定の場合は、retries: 2 を指定して CI に追加する
  • 設定で trace: 'on-first-retry' を有効にする
  • 修正パターンをプロジェクトのテスト規約ドキュメントに追加する

出力

  • 根本原因のカテゴリと具体的な問題
  • 適用した修正(差分を含む)
  • 検証結果(10回中10回成功)
  • 再発防止の推奨事項

コメント