1. なぜ GitHub Actions で Playwright を動かすのか
-
自動テストの継続実行: すべてのプルリクエスト/main ブランチへの push ごとに e2e テストを走らせ、リグレッションを即時検知できる
-
マルチ OS・ブラウザ検証: job matrix を使えば Ubuntu・Windows・macOS や Chromium・Firefox・WebKit を同時にテスト可能
-
レポートの自動公開: テスト結果(HTML Report・trace・動画)をアーティファクトとして保存し、失敗時にデバッグを容易にするため playwright.dev
2. 前提条件
| 項目 | 内容 |
|---|---|
| リポジトリ | Node.js プロジェクト(package.json に @playwright/test が追加済み) |
| GitHub Secrets | 特別な環境変数が必要な場合のみ設定(例: CI 実行用トークン) |
| Playwright ブラウザ | CI 内で headless かつ必要な OS 依存パッケージを自動インストールするため --with-deps を使用 |
3. 最小構成の workflow (.github/workflows/playwright.yml)
.github/workflows/playwright.yml)
ポイント解説
-
actions/setup-node@v4で Node 20 を使用(2024 年以降の推奨バージョン) docs.github.com -
npx playwright install --with-deps-
Playwright ブラウザと OS 依存ライブラリを一括インストール
-
-
always()でテスト失敗時でもレポートをアップロードし、Pull Request 画面からダウンロード可
4. マトリックスでマルチプラットフォーム/ブラウザに対応
-
npx playwright test --project ${{ matrix.browser }}のように各ブラウザ用 Project を指定 -
並列実行 → 合計 9 ジョブが同時に走り、プラットフォーム間差分を即座に検知可能 playwright.dev
5. キャッシュによる高速化
-
npm モジュールと Playwright ブラウザ を同一キーでキャッシュ
-
初回を除きジョブ時間を 30–60 % 短縮できる
6. アーティファクトとデバッグ支援
| 種類 | 生成方法 | 目的 |
|---|---|---|
| HTML Report | --reporter html(デフォルト) |
テスト結果の一覧を可視化 |
| Trace | --trace on-first-retry |
失敗テストのステップ録画・DOM snapshot |
| Video / Screenshot | use: { video: 'on', screenshot: 'only-on-failure' } |
視覚的デバッグ |
| アップロード | actions/upload-artifact |
GitHub UI から取得 |
Playwright 1.46 以降、失敗時の trace が HTML Report に埋め込まれるため、artifact ひとつで両方確認可能 playwright.dev
7. ベストプラクティスまとめ
-
npx playwright initで初期化すると、雛形の workflow とサンプルテストが生成される browsercat.com -
環境変数
CI=trueが自動でセットされ、CI モード用のタイムアウトやリトライが有効 -
ジョブ失敗時の再実行 (
playwright test --retries 2) を活用して flakiness を低減 -
並列度調整: GitHub Actions のデフォルト並列数(2 vCPU)を考慮し
--workers=2などで負荷を最適化 -
Self-hosted Runner を使う場合はブラウザバイナリを事前インストールし、
playwright install chromiumのみで高速化
8. 参考リンク
-
Playwright 公式「Setting up CI」ガイド(GitHub Actions 章) playwright.dev
-
Microsoft 公式 playwright-github-action(CLI ラッパー) github.com
-
GitHub Docs「setup-node」アクション解説 docs.github.com
以上が、GitHub Actions 上で Playwright テストを安全かつ効率的に実行するための詳細手順です。
ChatGPT4o 生成日:2025/06/22