Skipbox

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

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

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

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

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

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

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

分課金でループを回すと

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

GitHub の額は、GitHub Team に含まれる無料分を引いたあとの請求です。シャード 4つでループを回せば、最後の行が 4つ分になります。自分のチームの分数は、トップページの料金計算で出せます。

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

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

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

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

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

Skipbox でループに渡せるもの

一日中回しても定額

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

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

準備をくり返さない

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

毎回きれいに始まる

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

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

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

くわしくはジョブの分離のしくみにあります。

まず 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コアのランナーで 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。です(GitHub Team の無料分を引いたあと)。Skipbox のプラン S は 4 vCPU のジョブを 1つずつ一日中動かして月 6,000 円の定額なので、毎月 参考値:2026年11月10日の為替レート・1ドル=158.22円。米ドルの料金を、このレートで円に換算した概算です。安くなります。

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

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

不安定な(flaky な)E2E テストを見つけるには?

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

2026年11月11日 更新

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

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

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

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