Playwright を GitHub Actions で速く回す方法
Playwright のテストが、手元より GitHub Actions のほうがずっと遅い。プルリクエストのたびに、チームはその遅いほうを待っています。原因の半分は準備で、ジョブのたびにブラウザー 3つとシステムのパッケージを入れ直しています。残りの半分はコアで、プライベートリポジトリの ubuntu-latest では Playwright のワーカーは 1つです。
Skipbox なら、同じワークフローがアカウント専用のマシンで動きます。ブラウザーはジョブのあとも入ったままで、マシンは最大 16 vCPU。月 6,000 円の定額で実行時間は無制限です。移行は runs-on: skipbox の 1行だけです。
GitHub Actions での Playwright の動き方
Playwright が示す CI の組み方は、1つのジョブで 3つのコマンドです。npm ci、ブラウザーとシステムのパッケージを入れる npx playwright install --with-deps、そして npx playwright test。テストが落ちても HTML のレポートをアーティファクトに残します。npm init playwright@latest を使えば、このワークフローが .github/workflows/playwright.yml にできます。
速さを決めるのは、次の 2つです。
| GitHub ホストランナー | Skipbox | |
|---|---|---|
| ブラウザー | ジョブのたびにダウンロードして入れる。戻す時間が変わらないので、Playwright はキャッシュを勧めていない | ジョブのあともマシンに入ったまま |
| ワーカー(既定は CPU の半分) | プライベートリポジトリの ubuntu-latest(2 CPU)なら 1つ | ラベルで選んだ 4・8・16 vCPU の半分 |
--shard=1/4 でジョブに分けても、シャードごとに npm ci とブラウザーのインストールがくり返されます。分課金なら、その準備の分数もシャードの数だけ請求されます。
遅いスイートのコスト
E2E テストはマージの前の最後のチェックなので、チーム全員がそれを待ちます。20分かかるスイートを 1日 30回の push で走らせれば、待ち時間は 1日 10時間です。遅いランナーでだけ落ちる不安定なテストがあれば、再実行がさらに上乗せされます。
分課金では、その分数がすべて請求に乗ります。
| 月の実行時間(4 vCPU) | GitHub | Skipbox S | 毎月の差額 |
|---|---|---|---|
| 10,000分 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
| 20,000分 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
| 30,000分 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
| 常時稼働 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 | 6,000 円 | 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。 |
GitHub の額は、GitHub Team に含まれる無料分を引いたあとの請求です。自分のチームの分数は、トップページの料金計算で出せます。
いちばん増えているのが E2E の分数です。コーディングエージェントは時間を選ばずプルリクエストを開き、そのたびにスイートが走ります。夜に 1回だった E2E を、push のたびに回すチームが増えています。
自分で速くしようとすると
GitHub ホストランナーのまま速くするなら、こういう作業が続きます。
- matrix でシャードに分け、最後のジョブで blob のレポートをまとめる
- 2 CPU では描画が遅いので、タイムアウトを CI 用に延ばす
- Playwright の Docker イメージに替え、タグを Playwright のバージョンとそろえ続ける
- 大きいランナーを分課金で借りるか、セルフホストランナーを立ててブラウザーと OS を自分で更新する
どれも、持ち続ける YAML と払う分数を増やします。Skipbox なら、ブラウザーはディスクに残り、コアはラベルで選べます。
Skipbox でスイートに渡せるもの
ブラウザーが残る
プランごとにアカウント専用のマシンがつき、ジョブのあとも残ります。~/.cache/ms-playwright のブラウザー、npm のキャッシュ、Docker のイメージが次のジョブの前からディスクにあるので、npx playwright install --with-deps はそれを見つけるだけです。
ワーカーを増やせる
マシンはラベルで選びます。vCPU が多いほど既定のワーカーが増え、メモリが多いほど同時に開けるブラウザーが増えます。
| ラベル | マシン | 月額 |
|---|---|---|
skipbox | 4 vCPU・メモリ 16 GB | 6,000 円(S) |
skipbox-8x16 | 8 vCPU・メモリ 16 GB | 12,000 円(M) |
skipbox-16x32 | 16 vCPU・メモリ 32 GB | 23,000 円(L) |
何分回しても同じ額
シャードもリトライも再実行も、請求を変えません。Skipbox のジョブは GitHub の分数を使わないので、GitHub の予算で止まることもありません。
管理は要らない
イメージは Ubuntu 24.04 で、パスワードなしの sudo と、Playwright のブラウザーが使うシステムのライブラリが入っています。更新、ジョブごとの後片付け、ヘルスチェックと自動復旧は Skipbox が行います。
移行は runs-on を 1行書き換えるだけ
name: Playwright Tests
on: [push, pull_request]
jobs:
test:
runs-on: skipbox # ubuntu-latest から書き換える
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
node-version: lts/*
- run: npm ci
- run: npx playwright install --with-deps
- run: npx playwright test
- uses: actions/upload-artifact@v5
if: "!cancelled()"
with:
name: playwright-report
path: playwright-report/
- Skipbox に GitHub でログインする
- Skipbox の GitHub アプリを入れて、使うリポジトリを選ぶ
runs-onを書き換えて push する
セキュリティ
- マシンはアカウントごとの専用です。ほかの会社のジョブと同じマシンで動くことはありません。
- ジョブが終わるたびに、ランナーの認証情報、プロセスとコンテナをすべて消します。ブラウザーとキャッシュは残します。2026年11月13日からは、チェックアウトしたコードと Cargo のビルド結果(
target/)を専用のマシンに残し、次のジョブで使います。「毎回クリーン」なら、ジョブごとに新しいマシンで動きます。 - 書き込み権限のない人のコード(フォークからのプルリクエストなど)は、使い捨ての新しいマシンで動きます。
くわしくはジョブの分離のしくみにあります。
まず自分のスイートで試す
カード不要で、7日間かジョブの合計 3,000分まで無料です。Playwright のジョブを runs-on: skipbox に替えて続けて 2回動かし、2回目のステップの時間を GitHub と比べてください。
よくある質問
GitHub Actions で Playwright を動かすには?
1つのジョブで npm ci、npx playwright install --with-deps、npx playwright test の順に動かし、テストが落ちても動くステップでレポートをアーティファクトに上げます。Python なら python -m playwright install --with-deps のあとに pytest です。Skipbox で動かすなら、runs-on を skipbox に書き換えるだけです。
GitHub Actions の Playwright が遅いのはなぜ?
理由は 2つです。ジョブが毎回新しい VM で始まるので、テストの前に Chromium・Firefox・WebKit とシステムのパッケージを入れ直します。そして Playwright の workers の既定は CPU の半分なので、プライベートリポジトリの ubuntu-latest(2 CPU)ではワーカーが 1つです。Skipbox はブラウザーをマシンに残し、4・8・16 vCPU のマシンを選べます。
Playwright のブラウザーは GitHub Actions でキャッシュするべき?
毎回新しい VM で始まるランナーでは、Playwright 自身が勧めていません。キャッシュを戻す時間がダウンロードとほとんど変わらず、Linux ではシステムのパッケージもキャッシュできないからです。Skipbox ではキャッシュの設定自体が要りません。ブラウザーは ~/.cache/ms-playwright に残り、次のジョブがそこで見つけます。
GitHub Actions で Playwright の workers はいくつになる?
既定では論理 CPU の半分です。プライベートリポジトリの ubuntu-latest は 2 CPU なので 1つです。ワーカーごとにブラウザーが開くので、増やすにはコアとメモリの両方が要ります。Skipbox なら runs-on: skipbox-8x16 で 8 vCPU・16 GB です。
Skipbox で Playwright を無料で試せる?
試せます。カード不要で、7日間かジョブの合計 3,000分まで無料です。マシンは 4 vCPU・16 GB です。Playwright のジョブを runs-on: skipbox に替えて、続けて 2回動かしてください。
2026年11月11日 更新