Reputation: 91
ruby '~> 2.6.1'
rails 5.2.3
I have a feature spec that requires executing some javascript in order to populate a an alt field of a datepicker.
the spec:
require 'rails_helper'
Capybara.default_driver = :selenium
Capybara.javascript_driver = :selenium
RSpec.feature "Guest user creates a new order", js: true do
scenario "order is valid" do
area = create(:coverage_area)
visit root_path
click_on "Book Now"
fill_in "zipcode", with: "98168"
page.execute_script('document.querySelector(".datepicker").value = "9/20/2020"')
.
.
.
end
end
I've pinpointed that enabling js:true
on my feature spec immediately causes the following error on the first scenario action:
1) Guest user creates a new order order is valid
Failure/Error: visit root_path
FrozenError:
can't modify frozen String
`block (2 levels) in <top (required)>'
My Gemfile
:
group :development, :test do
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
gem 'rspec-rails'
gem 'rails-controller-testing'
gem 'guard-rspec'
end
group :test do
gem 'capybara', '>= 2.15'
gem 'selenium-webdriver'
gem 'webdrivers', '~> 4.0'
gem "database_cleaner"
gem "factory_girl_rails"
gem "shoulda-matchers"
end
My spec_helper.rb
require 'simplecov'
require 'webdrivers'
.
.
.
After some research, I learned that capybara uses rack test driver
by default which doesn't support javascript, however going through the steps of configuring capybara to use :selenium
for this spec test has no effect on the error.
Upvotes: 2
Views: 743
Reputation: 87
YMMV but, for my coworker and I reinstalling firefox and geckodriver https://github.com/mozilla/geckodriver/releases worked for us.
Upvotes: 1