開発環境
- Ruby 2.7.2
- Docker 3
- RSpec
- Selenium
背景
seleniumによるchromeのブラウザテストで、Ajaxによるボタン押下処理の自動テストを作成していました。
発生したエラー
Failures:
1.1) Failure/Error: first("input[value='ログイン']").click
Selenium::WebDriver::Error::WebDriverError:
tab crashed
(Session info: chrome=89.0.4389.82)
beforeで記述したログイン処理にてエラーが起きました。
頻度としては2回に1回程度で、ブラウザテストの不安定さによるものが原因と考えられました。
調査したところ、メモリーが切れた場合に、生じるエラーとのことでした。
https://bugs.chromium.org/p/chromedriver/issues/detail?id=1884
解決策
docker環境で確保されるメモリサイズが小さいことが原因と予想しました。
docker-compose.ymlからメモリーサイズを変えられることがわかったため、下記のように修正しました。
docker-compose.yml
chrome:
image: selenium/standalone-chrome
ports:
- "4444:4444"
shm_size: '2gb' #追加
結果
無事に治りました。
これでも治らない場合は、以下の対応が考えられます。
① メモリサイズを2gbよりも大きく変更
② 表示ブラウザの画面サイズを小さくする設定に変更
参考資料