15
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-04-01

問題

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のスペックをあげるのが正解だと思う。メモリ盛ると起こらないです。

15
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?