# Playwright を GitHub Actions で速く回す方法

> GitHub Actions の Playwright が遅いのは、ジョブのたびにブラウザーを入れ直し、プライベートリポジトリの 2 CPU のランナーでワーカー 1つで動くからです。Skipbox ならブラウザーがマシンに残り、最大 16 vCPU で月 6,000 円の定額。4 vCPU を月 20,000分使うなら、毎月 約 29,120 円安くなります。

Playwright のテストが、手元より GitHub Actions のほうがずっと遅い。プルリクエストのたびに、チームはその遅いほうを待っています。原因の半分は準備で、ジョブのたびにブラウザー 3つとシステムのパッケージを入れ直しています。残りの半分はコアで、プライベートリポジトリの `ubuntu-latest` では Playwright のワーカーは 1つです。

Skipbox なら、同じワークフローがアカウント専用のマシンで動きます。ブラウザーはジョブのあとも入ったままで、マシンは最大 16 vCPU。月 6,000 円の定額で実行時間は無制限です。移行は `runs-on: skipbox` の 1行だけです。

- ブラウザーがマシンに残るので、`playwright install` のダウンロードを毎回くり返しません
- 4・8・16 vCPU から選べて、Playwright の既定のワーカーもそれに合わせて増えます
- 4 vCPU を月 20,000分使うと、GitHub は 約 35,120 円、Skipbox は 6,000 円

**GitHub Actions を月額固定・使い放題に** Skipbox は、アカウント専用のマシンで GitHub Actions のジョブを動かします。何分動かしても月 6,000 円。ジョブが終わっても Docker のレイヤーと依存パッケージのキャッシュが残るので、次のジョブはすぐ始まります。

4 vCPU のランナーを月 20,000分 使うと、GitHub 約 35,120 円 → Skipbox 6,000 円。毎月 約 29,120 円お得。

移行は `runs-on: skipbox` に 1行書き換えるだけです。

[7日間無料で試す](https://app.skipbox.dev/sign-in?ref=g-playwright-github-actions-ja)

## 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分 | 約 16,140 円 | 6,000 円 | **約 10,140 円** |
| 20,000分 | 約 35,120 円 | 6,000 円 | **約 29,120 円** |
| 30,000分 | 約 54,110 円 | 6,000 円 | **約 48,110 円** |
| 常時稼働 | 約 79,170 円 | 6,000 円 | **約 73,170 円** |

GitHub の額は、GitHub Team に含まれる無料分を引いたあとの請求です。自分のチームの分数は、[トップページの料金計算](https://skipbox.dev/?lang=ja&ref=g-playwright-github-actions-ja#cost)で出せます。

いちばん増えているのが 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行書き換えるだけ

```yaml
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/`）を専用のマシンに残し、次のジョブで使います。「毎回クリーン」なら、ジョブごとに新しいマシンで動きます。
- 書き込み権限のない人のコード（フォークからのプルリクエストなど）は、使い捨ての新しいマシンで動きます。

くわしくは[ジョブの分離のしくみ](https://docs.skipbox.dev/ja/isolation)にあります。

## まず自分のスイートで試す

カード不要で、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 更新 · https://skipbox.dev/ja/guides/playwright-github-actions
