I'm trying to upgrade from ruby 2.4.4 to ruby 2.6.1, and none of my Javascript-enabled cucumber tests work. I get the following error when running a cucumber test:
unknown keyword: write_timeout (ArgumentError)
./features/support/env.rb:58:in `block in <top (required)>'
./features/support/sign_in_step_helper.rb:4:in `sign_in'
./features/step_definitions/session_steps.rb:2:in `"I log in"'
features/quote_wizard/quotes_wizard.feature:40:in `When I log in'
write_timeout
does not exist anywhere in the entire project.
This is what I have in my features/support/env.rb
(auto-generated comments suppressed):
require 'simplecov'
require 'cucumber/rails'
require 'capybara'
require 'capybara/dsl'
require 'capybara/cucumber'
require 'cucumber/rspec/doubles'
require 'selenium-webdriver'
require_relative './download_helper
SimpleCov.at_exit do
puts 'Simplecov complete'
end
Capybara.default_max_wait_time = 5
Capybara.register_driver :chrome do |app|
options = Selenium::WebDriver::Chrome::Options.new(
args: %w[no-sandbox disable-extensions headless] # Remove `headless` to view test runs in browser
)
options.add_argument('--window-size=1920,1080')
options.add_preference(:download,
directory_upgrade: true,
prompt_for_download: false,
default_directory: DownloadHelper::DEFAULT_DIR)
options.add_preference(:browser, set_download_behavior: { behavior: 'allow' })
driver = Capybara::Selenium::Driver.new(app, browser: :chrome, options: options)
bridge = driver.browser.send(:bridge)
path = '/session/:session_id/chromium/send_command'
path[':session_id'] = bridge.session_id
bridge.http.call(:post,
path,
cmd: 'Page.setDownloadBehavior',
params: {
behavior: 'allow',
downloadPath: DownloadHelper::DEFAULT_DIR
})
driver
end
Capybara.javascript_driver = :chrome
ActionController::Base.allow_rescue = false
:truncation instead.
begin
DatabaseCleaner.strategy = :transaction
rescue NameError
raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it."
end
require 'constant_tables'
ConstantTables.load!
Cucumber::Rails::Database.javascript_strategy = :truncation, { except: ConstantTables.table_names }
World(FactoryBot::Syntax::Methods)
EDIT: here is the test part of the Gemfile
group :development, :test do
gem 'parallel_tests'
gem 'site_prism'
gem 'capybara-email'
gem 'cucumber-rails', :require => false
gem 'database_cleaner'
gem 'factory_bot_rails'
gem 'rspec-rails'
gem 'rubocop-rails'
gem 'rubocop-rspec'
gem 'selenium-webdriver'
gem 'shoulda'
gem 'timecop'
gem 'chronic'
gem 'sinatra', '~> 2.0.0.rc2'
gem 'simplecov', :require => false
gem 'paratrooper', '3.0.2'
gem 'platform-api', '2.0'
gem 'activerecord-import'
gem 'rb-readline'
end
I think you should upgrade your gems, check this out:
webmock
They specifically added support for ruby 2.6, maybe is worth the try? Have you checked the others?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With