review について
Playwrightのテストファイルを20項目のアンチパターンとベストプラクティスに照らしてレビューするスキルです。テストスイートを保守する担当者向けに、ファイル別の評価、具体的な指摘、カバレッジの不足を示します。
主な機能
- 01単一ファイル・ディレクトリ・テストスイートをレビュー
- 02Playwrightの20項目のアンチパターンを確認
- 03ファイルを評価し具体的な問題を報告
- 04エラー・境界ケース・UIのカバレッジ不足を特定
- 05重大な問題への修正案を提示
活用シーン
- 01マージ前にPlaywrightテストファイルを監査
- 02ディレクトリ内で繰り返すテスト上の問題を確認
- 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 項目すべてのアンチパターンを確認します。
重大(必ず修正):
waitForTimeout()の使用- Web ファーストではないアサーション(
expect(await ...)) baseURLの代わりにハードコードされた URL を使用- ロールベースのセレクターが使える場合に CSS/XPath セレクターを使用
- Playwright 呼び出しに
awaitがない - テスト間で可変状態を共有
- テストの実行順序への依存
警告(修正を推奨):
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 ツールを使ってすべての修正を適用します。
出力
- ファイルごとのレビューとスコア
- サマリー:ファイル総数、平均スコア、重大な問題の件数
- 具体的な修正項目
- 特定されたカバレッジの不足(テストのないページ/機能)