Edited at

Circle CI 上での jest テストが not enough memory となる場合の対処

Circle CI の上で Jest による JS のテストを実行するケースがあるがそこそこの量のテストをかくと、メモリ容量が枯渇してしまう場合がある。

ローカルでは発生しない問題なので少し調査しました。

これは Jest が 子プロセスをそれぞれのテストに対して立ち上げすぎていて、メモリを食いつぶしていることが原因だと考えられます。

Node.js のドキュメントにも起動時間のオーバーヘッドとメモリをそこそこ占有するので多数立ち上げすぎるのは推奨しないと書いてありますね。

解決策としては jest --runInBand のオプションを使うことで 子プロセスをたちあげないようにするのが適当そうです。

子プロセスを立ち上げる行為は並列実行を意図したものなので最近 Node.js に入った worker_thread などの仕組みを利用するのが最適なのかもしれませんね。

以上

ただのドキュメントの参照で恐縮ですが「 Circle CI, Jest, not enough memory」 でランディングした方参考にしてみてください。