GitHub Actions 上で Playwright のテストを並列実行したい
Playwright はテスト実行時に使用する worker 数を増やすことで、テストの並列実行ができるっぽいので試してみる。
デフォルトの worker 数を確認する
実行する環境によって変わるらしく、搭載している CPU core の半分の数になるみたい。
Defaults to half of the number of logical CPU cores. Learn more about parallelism and sharding with Playwright Test.
試しに自分の環境で確認してみる。(macOS)
$ sysctl -n hw.physicalcpu
10
10 core だった👀
worker 数はテストを実行すると確認できるので見てみる。
Running xxx tests using 5 workers
...
5 workers
になっているので、確かに CPU core の半分の数が設定されてる。
GitHub Actions 上で実行した時のデフォルトの worker 数を確認する
まずは GitHub Actions で実行した時のデフォルトの worker 数の確認から。
これは Playwright の設定ファイルに記載されてた。
import type { PlaywrightTestConfig } from '@playwright/test';
import { devices } from '@playwright/test';
const config: PlaywrightTestConfig = {
...
// ここで設定されてる
workers: process.env.CI ? 1 : undefined,
...
};
export default config;
どうやら、CI 上だと問答無用で 1 になるっぽい。
GitHub Actions の CPU core 数を確認する
現在使用しているジョブの実行環境は ubuntu-latest
。
下記のドキュメントを見る限り、2 core っぽい。
雑に CPU core 数を確認するコマンドをワークフローに追加して実行してみる。
...
- name: echo CPU core
run: cat /proc/cpuinfo | grep processor | wc -l
...
確かに 2 core だった。
GitHub Actions の core をフルに使ってみる
GitHub Actions 上のジョブは 2core ということが分かったので、Playwright の worker 数もそれに合わせてみる。
import type { PlaywrightTestConfig } from '@playwright/test';
import { devices } from '@playwright/test';
const config: PlaywrightTestConfig = {
...
+ workers: process.env.CI ? 2 : undefined,
...
};
export default config;
この状態で GitHub Actions 上でテストを実行してみると...
Running xxx tests using 2 workers
worker 数が2になっているのでうまく設定できてそう。
ただ、テストの実行時間はあまり変わってない...🤔
GitHub Actions で使用する runner の CPU core 数は増やせる?
一応増やすことはできるっぽい。
ただ、
注: 2 コアを超える Windows ランナーおよび Ubuntu ランナーには、エンタイトルメント (分) を使用できません。 これらのランナーは、パブリック リポジトリを含め、常に課金されます。 詳しくは、「GitHub Actions の課金について」を参照してください。
とある通り、プランの利用枠は使えないみたい。
今回も抑えつつ、できればCIの時間を短縮したい...くらいの温度感だったので、この方法は見送る。
GitHub Actions の matrix のパラメータと Playwright の shard を組み合わせれば並列実行できた。