🎮
GitHub ActionsでのE2Eテスト失敗時に自動で修復するActionsを試す
概要
E2Eテスト直すの面倒くさい
生成AIやってくれるとは言っても、面倒くさい
ただひたすらに面倒くさい作業を自動化してみた
使用技術
- Playwright
- GitHub Actions
- Claude Code GitHub Actions
イメージ
完成イメージ
E2Eテスト失敗
↓
E2E Auto Fix ワークフロー起動
↓
Claude Codeがレポートを分析
↓
テストコードを自動修正
↓
修正PRを自動作成
具体例
記事は人力ですが、実装はほぼClaude Codeに書かせていますので、要所を。
1. workflow_run トリガー
on:
workflow_run:
workflows: ["E2E"]
types: [completed]
E2Eワークフローが完了したときにトリガーするように
2. 無限ループ防止
if: |
github.event.workflow_run.conclusion == 'failure' &&
!startsWith(github.event.workflow_run.head_branch, 'fix/e2e-auto-')
自動修復で作成されたブランチ(fix/e2e-auto-*)からは再度トリガーしないように
3. Rate Limiting
concurrency:
group: e2e-auto-fix-${{ github.event.workflow_run.head_branch }}
cancel-in-progress: true
フレーキーテストで何度もCIが失敗すると、自動修復も何度もトリガーされるので、concurrencyで同一ブランチの実行を1つに制限
4. claude_args でツール制限
claude_args: --allowed-tools "Read,Edit,Write,Bash(git add:*),Bash(git commit:*),..."
5. Claude Skills の活用
prompt: |
1. まず .claude/skills/e2e-debug/SKILL.md を読んで、E2Eデバッグの手順を確認してください
プロンプトで SKILL.md を明示的に読むよう指示
.claude/skills/e2e-debug/
├── SKILL.md # スキルの説明と手順
└── (参考ファイル)
SKILL.md にエラーパターンと解決策を定義しておくと、Claude Codeが一貫した方法でテストを修復
参考リンク
備考
簡単なE2Eテストであればわりかしすんなり直してくれますが、
複雑そうな失敗だとどうなることか・・・ちょっと考えたくはない
Discussion