mcpField
E
e2e

e2e

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

e2e について

開発者向けの E2E テストスキルです。失敗を不安定、古いテスト、バグ、未検証に分類し、修正と報告を案内します。バグと判断する前に仕様を確認します。

主な機能

  1. 01テスト失敗の分類
  2. 02テスト環境の確認
  3. 03分類別の修正指針
  4. 04再実行と結果報告

活用シーン

  1. 01断続的なテスト失敗の診断
  2. 02意図的な変更に伴うテスト更新
  3. 03仕様に反する動作の修正

インストール

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

$npx skills add https://github.com/alleneubank/claude-code --skill e2e

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

詳細

E2E テスト

失敗の分類

E2E テストの失敗は、必ず次のいずれかに分類されます。

A. 不安定(テストインフラの問題)

  • 競合状態、タイミングに依存するアサーション、古くなったセレクター、待機の不足
  • 症状:再試行すると成功するが、断続的に失敗する

B. 古くなっている(テストが実装に合わなくなっている)

  • 意図的に変更された以前の動作をテストがアサートしている、またはセレクターが削除済みの要素を参照している
  • 症状:一貫して失敗するが、アプリは正しく動作する

C. バグ(実装が仕様に一致していない)

  • テストは仕様で定義された動作を正しくアサートしているが、コードが誤っている
  • 検証対象となる仕様が存在する場合に限り、バグに分類します
  • 仕様が存在しない場合は「未検証の失敗」に分類し、ユーザーに報告します

カテゴリ別の修正ルール

不安定なテストの修正:

  • waitForTimeout を、自動で待機するロケーターに置き換えます
  • 壊れやすい CSS セレクターを getByRole/getByLabel/getByTestId に置き換えます
  • expect() のウェブファーストアサーションを使って競合状態を修正します
  • モック/ルートの設定順序を修正します(ナビゲーションの前に設定します)
  • 任意の遅延を追加してはいけません — 根本的な待機の問題を修正します
  • アサーションをリトライループで囲んではいけません — フレームワーク組み込みのリトライを使用します

古くなったテストの修正:

  • テストのアサーションを現在の(正しい)動作に合わせて更新します
  • セレクターを現在の DOM/API に合わせて更新します
  • ソースコードを変更してはいけません — 実装は正しく、テストが古くなっています

バグの修正:

  • 想定される動作を定義している仕様のセクションを引用します
  • 仕様に合わせてソースコードを修正します
  • 修正を完了する前に、単体テストが必ず存在していなければなりません — 不足している場合は、まずテストを作成します(TDD)
  • バグのあるコードに合わせて E2E テストのアサーションを変更してはいけません
  • 仕様の裏付けなしに、API コントラクトやインターフェースを変更してはいけません
  • 仕様が存在しない場合は、ユーザーに「バグですか、それとも古くなったテストですか?」と確認します

ソースコードの変更範囲

E2E テストの修正では、アプリケーションロジック、API コントラクト、データベーススキーマ、設定のデフォルト値を変更してはいけません。唯一の例外は、仕様で正しい動作が明示され、その修正を単体テストでカバーするバグ修正です。

ワークフロー

ステップ 1:テストインフラを確認する
  1. E2E の設定を見つけます:playwright.config.ts、vitest.config.ts、またはプロジェクト固有の設定
  2. package.json を読み、標準の E2E コマンドを確認します
  3. 開発サーバーまたは Tilt 環境が必要かどうか、また起動中かどうかを確認します
  4. 仕様ファイルを見つけます:*.spec.md、docs/*.spec.md — バグの判断における信頼できる情報源です
ステップ 2:テストを実行する
# Playwright
yarn playwright test --reporter=line

# Or project-specific
yarn test:e2e

失敗を次のように分類します。

テストファイルエラーカテゴリ
ログインフローauth.spec.ts:42セレクターの待機がタイムアウト未分類
ステップ 3:分類する

失敗ごとに、テストファイルと、テスト対象のソースコードを読み、対応する仕様ファイルがあるか確認して、カテゴリ(不安定/古くなっている/バグ/未検証)を割り当てます。

ステップ 4:カテゴリ別に修正する

次の順序で修正を適用します:まず不安定なテスト(他のテストの妨げを取り除くため)、次に古くなったテスト、最後にバグ。

ステップ 5:再実行して報告する
## E2E Results

**Run**: `yarn test:e2e` on <date>
**Result**: X/Y passed

### Fixed
- FLAKY: `auth.spec.ts:42` - replaced waitForTimeout with getByRole wait
- OUTDATED: `profile.spec.ts:88` - updated selector after header redesign
- BUG: `transfer.spec.ts:120` - fixed amount validation per SPEC.md#transfers

### Remaining Failures
- UNVERIFIED: `settings.spec.ts:55` - no spec, needs user decision

### Unit Tests Added
- `src/transfer.test.ts` - amount validation edge cases (covers BUG fix)

非同期処理、フレークの分類、事前チェックのパターンについては、testing-best-practices を参照してください。

コメント