0
votes

Currently in my Ruby on Rails application cucumber test are being run with the capybara gem and using selenium.

Recently after a system update to Ubuntu 16.04 the tests started failing with EOFError: end of file reached errors

Additionally, it also occasionally includes the following error.

session not created exception
from unknown error: Runtime.executionContextCreated has invalid 'context': {"auxData": "frameId":"14314.1","isDefault":true},"id":1,"name":"","origin":"://"}
(Session info: chrome=54.0.2840.59)
(Driver info: chromedriver=2.21.371461 (633e689b520b25f3e264a2ede6b74ccc23cb636a),platform=Linux 4.4.0-43-generic x86_64) (Selenium::WebDriver::Error::SessionNotCreatedError)

This question also refers to something similar but with minitest.

This what I believe to be the relevant part of the capybara env.rb file:

require 'cucumber/rails'
require 'capybara'
require 'capybara/cucumber'
require 'capybara-screenshot'
require 'capybara-screenshot/cucumber'
require 'rails/test_help'
require 'minitest/rails'
require 'mocha/mini_test'
require 'headless'
require 'selenium-webdriver'
require 'rack_session_access/capybara'
require 'webmock/cucumber'
WebMock.allow_net_connect!
include Sprig::Helpers

ActionController::Base.allow_rescue = false
Dir.mkdir('test_result') unless File.exist?('test_result')
# Remove/comment out the lines below if your app doesn't have a database.
# For some databases (like MongoDB and CouchDB) you may need to use :truncation instead.
begin
 DatabaseCleaner.strategy = :truncation, { only: [] }
 DatabaseCleaner.clean_with :truncation, { only: [] }  

rescue NameError
  raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end

Capybara.register_driver :selenium do |app|
  client = Selenium::WebDriver::Remote::Http::Default.new
  client.timeout = 15
  Capybara::Selenium::Driver.new(app, browser: :chrome, http_client: client)
end

Capybara.default_driver = :selenium
Capybara.javascript_driver = :selenium
Capybara.raise_server_errors = true
Capybara.default_selector = :css
Capybara.default_max_wait_time = 15
Capybara.save_and_open_page_path = 'tmp/capybara'

I've looked over at a thread in the capybara-webkit gem that looks related, but I'm not actually using webkit.

Any help would be appreciated.

1
Upgrade your chromedriver to the latest release - 2.24Thomas Walpole
@TomWalpole That led me down the right path. I made an edit to the original post. Thanks for your help, I was going crazy.JWitter

1 Answers

3
votes

Turns out I'm using a gem called chromedriver-helper that was using rbenv to override the version of chromedriver that was actually being used by capybara and selenium to run the tests. The gem readme said to try running chromedriver-update in the context of the rails app, which cleared everything up.