Skipbox

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つです。

--shard=1/4 でジョブに分けても、シャードごとに npm ci とブラウザーのインストールがくり返されます。分課金なら、その準備の分数もシャードの数だけ請求されます。

遅いスイートのコスト

E2E テストはマージの前の最後のチェックなので、チーム全員がそれを待ちます。20分かかるスイートを 1日 30回の push で走らせれば、待ち時間は 1日 10時間です。遅いランナーでだけ落ちる不安定なテストがあれば、再実行がさらに上乗せされます。

分課金では、その分数がすべて請求に乗ります。

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 のジョブは 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/
  1. Skipbox に GitHub でログインする
  2. Skipbox の GitHub アプリを入れて、使うリポジトリを選ぶ
  3. 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日 更新

常に warm なキャッシュで CI/CD を高速化するなら

専用ランナーを定額で。実行時間は無制限

フル稼働なら GitHub の 1/12 の費用。定額だから一日中動かせる。GitHub の 7倍のキャッシュ容量。

  • カード不要
  • GitHub でログイン
  • いつでも解約