ruby '~> 2.6.1'
rails 5.2.3
У меня есть спецификация функции, которая требует выполнения некоторого javascript для заполнения поля alt средства выбора даты.
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
Я точно определил, что включение js:true
в моей спецификации функций немедленно вызывает следующую ошибку при первом действии сценария:
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'
.
.
.
После некоторого исследования я узнал, что капибара по умолчанию использует rack test driver
, который не поддерживает javascript, однако, выполнив шаги по настройке капибары для использования :selenium
дляэтот тест спецификации не влияет на ошибку.