💯
Jest の shard オプションと GitHub Actions の matrix strategy を使用して並列にテストを実行する
Jest の shard オプション
Jest の v28 のリリースで CLI に --shard
というオプションが追加されました。
このオプションは jest --shard=1/3
という形で jest を実行すると、最初の 1/3 だけのテストを実行する仕組みを提供しています。
GitHub Actions の matrix strategy
matrix strategy は job に指定すると、事前に列挙した変数ごとに job を実行する仕組みです。
以下のように書くと、shard
がそれぞれ 1/4
、2/4
、3/4
、4/4
の4つの値を取る4つの job が並列に実行されます。
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
shard: [1/4, 2/4, 3/4, 4/4]
この仕組みと Jest の shard オプションを組み合わせることで、テストを並列に実行することができます。
サンプルリポジトリ
これを試したサンプルリポジトリは次のリンクです。
git push
して Actions を実行すると、画像のように4つの job でそれぞれ異なるテストファイルが実行されています。
まとめ
これまで GitHub Actions で並列にテストを実行するには、事前にテストファイルを分割して、テストファイル名を明示的に jest に与える方法しかありませんでした。
しかし v28 で導入された --shard
オプションによって簡単に並列テストを実行できるようになりました。
Discussion