mcpField
R
review

review

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

review について

Playwrightのテストファイルを20項目のアンチパターンとベストプラクティスに照らしてレビューするスキルです。テストスイートを保守する担当者向けに、ファイル別の評価、具体的な指摘、カバレッジの不足を示します。

主な機能

  1. 01単一ファイル・ディレクトリ・テストスイートをレビュー
  2. 02Playwrightの20項目のアンチパターンを確認
  3. 03ファイルを評価し具体的な問題を報告
  4. 04エラー・境界ケース・UIのカバレッジ不足を特定
  5. 05重大な問題への修正案を提示

活用シーン

  1. 01マージ前にPlaywrightテストファイルを監査
  2. 02ディレクトリ内で繰り返すテスト上の問題を確認
  3. 03未テストのページや機能を特定

インストール

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

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

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

同梱ファイルanti-patterns.md

詳細

Playwright テストのレビュー

Playwright のテストファイルを体系的に確認し、アンチパターン、見落としているベストプラクティス、カバレッジの不足を特定します。

入力

$ARGUMENTS は次のいずれかです。

  • ファイルパス:指定されたテストファイルをレビューします
  • ディレクトリ:ディレクトリ内のすべてのテストファイルをレビューします
  • 空:プロジェクトの testDir にあるすべてのテストをレビューします

手順

1. コンテキストを収集する
  • プロジェクトの設定を確認するため、playwright.config.ts を読み込みます
  • 対象範囲にあるすべての *.spec.ts/*.spec.js ファイルを一覧表示します
  • 単一のファイルをレビューする場合は、関連するページオブジェクトとフィクスチャも確認します
2. 各ファイルをアンチパターンと照合する

このスキルのディレクトリから anti-patterns.md を読み込みます。20 項目すべてのアンチパターンを確認します。

重大(必ず修正):

  1. waitForTimeout() の使用
  2. Web ファーストではないアサーション(expect(await ...))
  3. baseURL の代わりにハードコードされた URL を使用
  4. ロールベースのセレクターが使える場合に CSS/XPath セレクターを使用
  5. Playwright 呼び出しに await がない
  6. テスト間で可変状態を共有
  7. テストの実行順序への依存

警告(修正を推奨): 8. 50 行を超えるテスト(分割を検討) 9. 名前付き定数を使わないマジックストリング 10. エラー/エッジケースのテストがない 11. ロケーターで実行できる処理に page.evaluate() を使用 12. test.describe() のネストが 2 階層を超えている 13. 汎用的なテスト名(「正常に動作する」「テスト 1」など)

情報(検討): 14. ロケーターが 5 個以上あるページにページオブジェクトがない 15. ファクトリー/フィクスチャではなく、テスト内にデータを直接記述 16. アクセシビリティのアサーションがない 17. UI の比重が大きいページにビジュアルリグレッションテストがない 18. コンソールエラーのアサーションを確認していない 19. 具体的なアサーションの代わりにネットワークアイドル待ちを使用 20. test.describe() によるグループ化がない

3. 各ファイルを評価する

次の基準で 1~10 点を付けます。

  • 9~10:本番環境で使用でき、すべてのゴールデンルールに準拠している
  • 7~8:良好で、軽微な改善の余地がある
  • 5~6:機能するが、アンチパターンがある
  • 3~4:重大な問題があり、不安定になりやすい
  • 1~2:書き直しが必要
4. レビューレポートを作成する

各ファイルについて:

## <filename> — Score: X/10

### Critical
- Line 15: `waitForTimeout(2000)` → use `expect(locator).toBeVisible()`
- Line 28: CSS selector `.btn-submit` → `getByRole('button', { name: "submit" })`

### Warning
- Line 42: Test name "test login" → "should redirect to dashboard after login"

### Suggestions
- Consider adding error case: what happens with invalid credentials?
5. プロジェクト全体をレビューする場合

テストスイート全体をレビューする場合:

  • ファイルごとにサブエージェントを起動して並列でレビューします(同時実行は最大 5 件)
  • または、非常に大規模なスイートでは /batch を使用します
  • 結果を集約してサマリー表を作成します
6. 修正を提案する

重大な問題ごとに、修正後のコードを提示します。ユーザーに「これらの修正を適用しますか? [Yes/No]」と尋ねます。

Yes の場合は、Edit ツールを使ってすべての修正を適用します。

出力

  • ファイルごとのレビューとスコア
  • サマリー:ファイル総数、平均スコア、重大な問題の件数
  • 具体的な修正項目
  • 特定されたカバレッジの不足(テストのないページ/機能)

コメント