Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
10
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@oieioi

Capybara の e2e テストで Chrome が Selenium::WebDriver::Error でたまにクラッシュする

問題

Capybara と Headless Chrome で e2e テストを走らせてる時、以下のような例外がたまに起きて困っていた。CIとかVMで走らせてる時に起きがちだった。

Selenium::WebDriver::Error::UnknownError:
  unknown error: session deleted because of page crash
  from unknown error: cannot determine loading status
  from tab crashed

こんなんとか

Selenium::WebDriver::Error::NoSuchDriverError:
  invalid session id

こんなん。

解決策(対症療法だけど)

同じ問題になってる方がいた。 Selenium::WebDriver::Error::NoSuchDriverError - Today I Learned

Finally, after spotting this comment we’ve reduced chrome window size from 1920,1200 to 1440,900 and the problem is no longer present.

「テストに使うブラウザのサイズを小さくしたら起きなくなった」とのこと。上記のリンクを辿って Chromium のバグリポート読むと、原因不明だけどメモリーが切れ気味になると起こる、みたいな報告がいくつか。Issue 1884: headless : session deleted because of page crash

じゃあそうしてみよう。このあたりを参考に

config/capybara.rb
Capybara.register_driver :selenium_chrome do |app|
  options = Selenium::WebDriver::Chrome::Options.new
  options.add_argument('headless')
  options.add_argument('window-size=1440,990')
  Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
end

で、なんとなく起きなくなった。また起きたらもうちょっとウィンドウサイズを小さくしよう。

TODO: 根本解決の方法がわかったら更新する。

追記(結論)

CIのスペックをあげるのが正解だと思う。メモリ盛ると起こらないです。

10
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
10
Help us understand the problem. What is going on with this article?