# E2E テストを一日中回す：GitHub Actions を定額で

> E2E テストを push のたびと 15分ごとのスケジュールで一日中回せば、エージェントのコミットによる退行や不安定なテストが数分で見つかります。GitHub の 4コアのランナーを 1か月動かし続けると 約 79,170 円。Skipbox の S なら月 6,000 円の定額で、ブラウザーも専用マシンに残ります。

コーディングエージェントは、昼も夜もコードを push します。エージェントが書く単体テストに見えないもの、つまりログイン・決済・変更のまわりの画面がまだ一緒に動くかを確かめるのが E2E テストです。夜に 1回しか回さないチームは、朝にマージされた退行を次の夜まで見つけられず、その上に 1日分のマージが積み上がります。一日中回せばそれは防げますが、分課金のランナーでは CI でいちばん高くつきます。4 vCPU のランナー 1つを 1か月動かし続けると、GitHub では 約 79,170 円です。

Skipbox なら、そのループが月 6,000 円の定額・実行時間無制限で回ります。マシンはアカウント専用で、ブラウザーとパッケージが実行のあいだも残ります。移行は `runs-on: skipbox` の 1行だけです。

- 4 vCPU のランナーを 1か月動かし続けると、GitHub は 約 79,170 円、Skipbox は 6,000 円
- 15分ごとでも 5分ごとでも請求は同じ。役に立つだけ回せます
- ブラウザー、npm のキャッシュ、Docker のイメージがマシンに残るので、1日 96回の実行でも毎回入れ直しません

**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-continuous-e2e-testing-github-actions-ja)

## push のたびに、そしてループで回す

1つのワークフローに、きっかけを 2つ入れます。

- **プルリクエストへの push のたび。** マージの前に退行を止めます。
- **main やステージングに向けた 15分ごとのスケジュール。** 不安定なテスト、すり抜けた退行、自分のコードの外の故障（決済のサンドボックス、認証のプロバイダー、ブラウザーの更新）が数分で見つかります。

GitHub のスケジュールは最短 5分ごとで、既定のブランチの最新のコミットで動きます。concurrency のグループを使えばループが積み上がらず、Playwright のリトライで落ちてから通ったテストに flaky の印がつきます。50回に 1回落ちるテストも、1週間隠れたりせず、一日に 2回ほど出てきます。

## 分課金でループを回すと

15分ごとなら 1日 96回です。シャードをいくつか使えば、ランナーは毎日ほとんど一日中動いています。

| 4 vCPU の E2E の 1か月 | 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 円** |
| 1か月動かし続ける | 約 79,170 円 | 6,000 円 | **約 73,170 円** |

GitHub の額は、GitHub Team に含まれる無料分を引いたあとの請求です。シャード 4つでループを回せば、最後の行が 4つ分になります。自分のチームの分数は、[トップページの料金計算](https://skipbox.dev/?lang=ja&ref=g-continuous-e2e-testing-github-actions-ja#cost)で出せます。

この請求があるから、多くのチームは E2E を一日中は回しません。その代わりに時間で払っています。夜にエージェントがマージした退行は朝まで見つからず、その上にコミットが重なり、原因を探す時間はループが節約したはずの時間を超えます。GitHub によると、エージェントの下書きから始まるプルリクエストは 2026年9月に 40% を超えました（3月は 17%）。分課金の請求を予算で抑えれば、月の途中でジョブが止まり、ループがいちばん要るときに止まります。

## 自分でループを回そうとすると

GitHub ホストランナーのまま払える額に収めるには、こういう作業になります。

- スケジュールを 1時間ごとや夜 1回に減らし、見つかるのが遅くなるのを受け入れる
- どのきっかけでどのテストを走らせるかを、予算に合わせて調整し続ける
- シャードで早く終わらせ、そのぶん準備の分数をシャードの数だけ払う
- ループ用にセルフホストランナーを立て、ブラウザー・OS・ディスクを自分で保守する

Skipbox なら、どれだけ回しても請求は同じで、マシンの面倒もだれも見る必要がありません。

## Skipbox でループに渡せるもの

### 一日中回しても定額

どのプランも、一日中ジョブを動かして実行時間は無制限です。Skipbox のジョブは GitHub の分数を使わないので、GitHub の予算でループが止まることはありません。

| プラン | マシン | 月額 |
|---|---|---|
| S | 4 vCPU・メモリ 16 GB | 6,000 円 |
| M | 8 vCPU・メモリ 16 GB | 12,000 円 |
| L | 16 vCPU・メモリ 32 GB | 23,000 円 |

同時に動くシャードの数は、プランの vCPU の合計で決まります。`runs-on: skipbox` のシャード 4つなら、S を 4つか L を 1つで同時に動きます。あふれたシャードは順番を待ちます。

### 準備をくり返さない

プランごとにアカウント専用のマシンがつき、ジョブのあとも残ります。`~/.cache/ms-playwright` のブラウザー、npm のキャッシュ、アプリやサービスの Docker のイメージが、次の実行の前からディスクにあります。

### 毎回きれいに始まる

ジョブが終わるたびに、ランナーの認証情報、プロセスとすべてのコンテナを消し、ヘルスチェックを走らせます。通らないマシンは、まっさらなイメージから作り直します。2026年11月13日からは、チェックアウトしたコードと Cargo のビルド結果（`target/`）を専用のマシンに残し、次のジョブで使います。「毎回クリーン」なら、ジョブごとに新しいマシンで動きます。

## 移行は runs-on を 1行書き換えるだけ

```yaml
name: E2E
on:
  pull_request:
  schedule:
    - cron: "*/15 * * * *"
concurrency:
  group: e2e-${{ github.ref }}
  cancel-in-progress: ${{ github.event_name == 'pull_request' }}
jobs:
  e2e:
    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
```

1. Skipbox に GitHub でログインする
2. Skipbox の GitHub アプリを入れて、使うリポジトリを選ぶ
3. `runs-on` を書き換えて push する

## セキュリティ

- マシンはアカウントごとの専用です。ほかの会社のジョブと同じマシンで動くことはありません。
- ジョブが終わるたびに、ランナーの認証情報、プロセスとコンテナをすべて消します。2026年11月13日からは、チェックアウトしたコードと Cargo のビルド結果（`target/`）を専用のマシンに残し、次のジョブで使います。「毎回クリーン」なら、ジョブごとに新しいマシンで動きます。
- 書き込み権限のない人のコード（フォークからのプルリクエストなど）は、使い捨ての新しいマシンで動きます。

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

## まず 1日回してみる

カード不要で、7日間かジョブの合計 3,000分まで無料です。トライアルでは `runs-on: skipbox` のジョブが 1つずつ動きます。E2E のジョブを移してスケジュールをオンにし、定額で回る 1日分の実行を見てください。

## よくある質問

### E2E テストは push のたびに走らせるべき？

コミットの多くをエージェントが書くなら、走らせるべきです。単体テストは変わった関数を確かめ、E2E テストはログイン・決済・そのまわりの画面がまだ一緒に動くかを確かめます。Skipbox のような定額のランナーなら、push のたびとスケジュールで回しても、夜に 1回回すのと請求は同じです。

### GitHub Actions のスケジュールはどれくらいの間隔で動かせる？

最短で 5分ごとです。スケジュール実行は既定のブランチの最新のコミットで動き、GitHub が混んでいるときは遅れて始まることがあります。よく使われるのは 15分ごとで、1日 96回です。Skipbox なら 15分ごとでも 5分ごとでも請求は変わりません。

### E2E テストを一日中回すと、GitHub Actions ではいくらかかる？

4 vCPU のランナー 1つを 1か月動かし続けると、GitHub の 4コアのランナーで 約 79,170 円です（GitHub Team の無料分を引いたあと）。Skipbox のプラン S は 4 vCPU のジョブを 1つずつ一日中動かして月 6,000 円の定額なので、毎月 約 73,170 円安くなります。

### Skipbox で Playwright のシャードを同時に動かすには？

同時に動くジョブの数は、持っているプランの vCPU の合計で決まります。4 vCPU の runs-on: skipbox のシャード 4つは、S を 4つか L を 1つで同時に動きます。足りない分のシャードは順番を待ち、前のジョブが終わりしだい始まります。

### 不安定な（flaky な）E2E テストを見つけるには？

CI でリトライをオンにします。Playwright は、落ちてからリトライで通ったテストを passed とも failed とも分けて flaky とし、レポートに並べます。ループで回していれば、同じ不安定なテストが一日に何度も出てくるので、スプリントを待たずに一日で見つかります。

2026-11-11 更新 · https://skipbox.dev/ja/guides/continuous-e2e-testing-github-actions
