テスト自動化のためのGitHub Actions:完全セットアップガイド

GitHub Actionsは現代のソフトウェアチームに最も広く使用されているCI/CDプラットフォームであり、GitHub Actionsで自動テストをセットアップすることは、最もレバレッジの高い品質投資の一つです。すべてのPRに対して自動的に実行され、問題のあるマージをブロックし、手動トリガー不要で開発者に迅速なフィードバックを提供するテスト——これがGitHub Actionsが実現するものです。
このガイドでは、基本的なテストランナーから本番グレードのテスト自動化パイプラインまで、完全なセットアップを解説します。
コアコンセプト
GitHub ActionsのワークフローはYAMLファイルで、`.github/workflows/`に配置し、実行タイミングと実行内容を定義します。テスト自動化における主要なコンセプトは以下の通りです:
トリガー:ワークフローはいつ実行されるか?
- `push` — ブランチへのコミットのプッシュ時
- `pull_request` — すべてのPR時(品質ゲートとして最も重要)
- `schedule` — cronスケジュールによる実行(本番環境の監視用)
- `workflow_dispatch` — 手動トリガー
ジョブ:何が実行されるか?各ジョブは独立した実行環境です。
ステップ:ジョブ内のコマンドとアクションの順序付きリスト。
環境とシークレット:機密情報(APIキー、データベースURL)はワークフローファイルではなく、GitHubシークレットに保存されます。
基本的なテスト自動化のセットアップ
Node.js プロジェクト向けの、最小限かつ完全なワークフロー:
このワークフローは main または develop へのすべての PR で実行され、テストスイートを実行し、カバレッジレポートをアーティファクトとしてアップロードします。
E2E テストの追加
E2E テストには実行中のアプリケーションが必要です。Next.js やその他のフレームワークアプリケーションをプレビュー環境にデプロイしている場合、最も堅牢なアプローチはプレビューデプロイメント URL に対してテストを実行することです:
あるいは、ローカルで実行する Playwright ベースの E2E テストの場合:
PR ステータスチェックとブランチ保護
テストが品質ゲートとして機能するのは、失敗時にマージをブロックする場合のみです。GitHub で以下のように設定してください:
- 「Settings → Branches → Branch protection rules」に移動する
- main(および該当する場合は develop)にルールを追加する
- 「Require status checks to pass before merging」を有効にする
- ワークフロージョブを必須チェックとして追加する
- 「Require branches to be up to date before merging」を有効にする
設定が完了すると、テストが失敗した PR はレビュアーの承認に関わらずマージできなくなります。
テストの並列化
テストスイートが大きくなるにつれて、順次実行は遅くなります。GitHub Actions は並列ジョブをサポートしています:
これにより 4 つの並列テストジョブが実行され、それぞれがテストスイートの 4 分の 1 を実行します。合計実行時間はシャード数で割られます(若干のオーバーヘッドあり)。
TestSprite GitHub App:ゼロ設定の代替手段
YAML 設定なしですべての PR に自動 E2E テストを導入したいチームには、TestSprite の GitHub App がよりシンプルな方法を提供します:
- リポジトリの設定から TestSprite GitHub App をインストールする
- TestSprite ダッシュボードでプレビューデプロイメント URL を設定する
- すべての PR で自動的にフルテストスイートがプレビューデプロイメントに対して実行される
- 結果は PR チェックとして表示され、テストが失敗するとマージがブロックされる
YAML 不要、ランナー設定不要、アーティファクト管理不要。エージェント型テストがカバレッジの生成、実行、レポーティングを自動的に処理します。
スケジュール実行による本番環境のモニタリング
PR テストに加え、本番環境に対するスケジュール実行により、デプロイ以外で発生する問題を検知できます:
これにより、スモークテストが 30 分ごとに本番環境に対して実行され、デプロイ間でクリティカルなフローが失敗した際にアラートを発します。
TestSprite で GitHub Actions テストをセットアップする →