先日こんな記事を書いていました。
この記事では、Capybaraの設定について取り上げていたのですが、CapybaraがInvalid session idのエラーを起こす原因については特定できていませんでした。おそらくメモリが不足しているから、という推測はありましたが、どうやらそれで決定のようです。
ひとまず、シングルプロセスでのテストの完走は果たしたので、2並列で行なったところ、そちらも完走しました🎉🎉🎉
しかし、3並列にしたらいきなり落ちまくりました😱
やはりメモリ不足が原因のようです。
Chromeのコンテナにメモリを設定するには?
以下の記事を参考にしました。
この記事で紹介されていた記事に書いてありました。
shmサイズとな!?
shmサイズは、Chromeがコンテンツをダウンロードした際の一時ファイル領域のサイズのようです。複数のChromeを立ち上げると、ここが枯渇してしまい、クラッシュするようです。 shmサイズはデフォルトで64mらしいので、並列実行する分、多めに設定してみます。
shmサイズを設定する
shmサイズを設定するには、docker-compose.ymlのchromeの箇所を修正します。
version: '3.3' services: # 略 chrome: image: selenium/standalone-chrome:latest shm_size: 256m # とりあえず4倍に… ports: - '4444:4444' volumes: - ./tmp/download:/tmp/download # 略
この設定で4並列でテストを実行したところ、問題なくテストが完了しました🥳🥳🥳
ようやくCircleCIの設定にいけそうです。