🎮

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