このツールについて
ほとんどのテストスイートには同じ CI の骨組みが必要です。コードをチェックアウトし、ランタイムをインストールし、依存関係とブラウザをインストールし、テストを実行し、失敗したときにはレポートを残す、というものです。このツールは、Playwright(TypeScript)、Cypress、Java と Maven を使う Selenium、pytest 向けにそのワークフローを、公式アクションの現行メジャーバージョン(checkout@v4、setup-node@v4、setup-java@v4、setup-python@v5、cache@v4、upload-artifact@v4)を使って作成します。Playwright では、--shard=i/n でスイートを並列ジョブに分割し、Playwright のドキュメントにあるパターンに従って blob レポートを 1 つの HTML レポートにマージできます。スケジュール実行には、GitHub Actions の要件どおり UTC の 5 フィールド cron を使います。
使い方
- フレームワークとランタイムのバージョンを選び、トリガー(push、pull_request、cron スケジュール、手動の workflow_dispatch)を選びます。
- ブラウザと、Playwright の場合はシャード数を選びます。特に理由がなければ、キャッシュとレポートのアップロードはオンのままにします。
- YAML をコピーまたはダウンロードしてリポジトリの .github/workflows/ に保存し、npm ci や pip install -r requirements.txt などのコマンドがプロジェクトに合っているか確認します。
テスト用 GitHub Actions ワークフロー生成ツール のよくある質問
スケジュールが想定と違う時刻に実行されるのはなぜですか?
GitHub Actions は cron を UTC で評価するため、ローカルのタイムゾーンから変換してください。また、混雑時にはスケジュール実行の開始が遅れることがあり、パブリックリポジトリではリポジトリの活動が 60 日間ないとスケジュールされたワークフローが自動的に無効になります。
ここでの Playwright のシャーディングはどう動きますか?
マトリクスがシャードごとに 1 つのジョブを起動し、それぞれが blob レポーターで npx playwright test --shard=i/n を実行します。後続のジョブがすべての blob レポートをダウンロードし、npx playwright merge-reports を実行して、1 つの HTML レポートのアーティファクトを作成します。
ブラウザごとに --project フラグがあるのはなぜですか?
Playwright は playwright.config.ts で定義したプロジェクトでブラウザを選択します。生成されたコマンドは選択したブラウザごとに --project=<name> を渡すため、それらのプロジェクト名が設定ファイルに存在している必要があります。すべてのプロジェクトを実行するにはフラグを削除してください。
テストユーザーのパスワードなどの認証情報はどこに置けばよいですか?
リポジトリまたは環境のシークレットとして保存し、env ブロックで ${{ secrets.NAME }} として参照します。ワークフローファイルに直接コミットしないでください。