Next.js 敵対的QA&エッジケース注入 (nextjs-adversarial-qa)
作成者の確認バイアスを排除するために、コードレビューとエッジケーステストを独立した敵対的監査サブエージェントに委任するための特別なワークフロー。
[!TIP] 参考ドキュメント:
- 一般的な落とし穴とアンチパターン:
references/pitfalls.md
アーキテクチャルールと標準
1. 公平な監査人の原則
- コンポーネントを作成したプライマリエージェントは、エッジケースを自己認定してはなりません。
invoke_subagentを使用して独立したサブエージェントを起動し、コードを監査し、敵対的なアサーションを注入する必要があります。
2. 敵対的エッジケースの範囲 ([ComponentName].edge.test.tsx)
サブエージェントは、開発者が頻繁に見落とすシナリオを対象とした [ComponentName].edge.test.tsx を作成する必要があります。
- 境界値: 空文字列、null/undefined入力、非常に長い文字列、Unicodeおよびペルシャ語RTLグリフ(
"سلام دنیا")。 - プロップの組み合わせ: オプションフラグの未処理の組み合わせ。
- ネットワーク&エラー状態: 非同期拒否、不正なペイロード、低速ストリーム。
- 深いアクセシビリティとモーション: キーボードナビゲーション(
Enter、Space、Tab、Escape)、aria-expanded、aria-busy、aria-live、フォーカストラップ、prefers-reduced-motion。 - 負荷とライフサイクル: 高速な再レンダリング、アンマウントクリーンアップ、タイマーの後片付け。
3. 不変の敵対的テストの原則
- テストの修正または緩和は厳格に禁止: 開発者は
[ComponentName].edge.test.tsx内のアサーションを削除または弱めることを許可されていません。 - テストを修正するのではなく、コードを修正: 敵対的テストが失敗した場合は、コンポーネント(
[ComponentName].tsx)またはストーリー([ComponentName].stories.tsx)を修正してエッジケースを適切に処理してください。
ワークフローステップ
-
ステップ1: 敵対的監査サブエージェントを起動
invoke_subagentを以下の内容で呼び出します:TypeName:"self"Role:"Adversarial Code & QA Auditor"Model:"inherit"Prompt: 監査人に[ComponentName].tsx、[ComponentName]Skeleton.tsx、[ComponentName].test.tsx、[ComponentName].stories.tsxを検査するよう指示し、コンポーネントディレクトリに[ComponentName].edge.test.tsxを生成させます。
-
ステップ2: 監査人が
[ComponentName].edge.test.tsxを注入- 監査人がエッジケースアサーションを作成し、レビューを完了します。
-
ステップ3: 敵対的テストの実行と自動修復
- エッジケーステストスイートを実行:
pnpm test -- <target_component_dir>/[ComponentName].edge.test.tsx - いずれかのテストが失敗した場合は、すべてのエッジテストがエラー0で合格するまでコンポーネントの実装を修正します。
- エッジケーステストスイートを実行: