Почему Poltergeist не зарегистрирован как драйвер для Capybara при использовании с Guard/Konacha?
У меня возникли проблемы с использованием Poltergeist в качестве драйвера для Capybara в тестах в Коначе с Guard.
У меня есть следующее в config/initializers/konacha.rb:
Konacha.configure do |config|
require 'capybara/poltergeist'
config.spec_dir = "spec/javascripts"
config.spec_matcher = /_spec\.|_test\./
config.driver = :poltergeist
config.stylesheets = %w(manifest_public)
end if defined?(Konacha)
Мои тесты успешно выполняются в Poltergeist с bundle exec rake konacha:run
Тем не менее, когда я использую следующий Guardfile:
guard :konacha, driver: :poltergeist do
watch(%r{^app/assets/javascripts/(.*)\.js(\.coffee)?$}) { |m| "#{m[1]}_spec.js" }
watch(%r{^spec/javascripts/.+_spec(\.js|\.js\.coffee)$})
end
Охранник жалуется при запуске Коначи:
14:18:05 - ИНФОРМАЦИЯ - Старт Коначи
14:18:05 - ОШИБКА -Capybara::DriverNotFoundError: драйвер не вызван:poltergeist был найден, доступные драйверы::rack_test,:selenium>
1 ответ
Я нашел решение, которое работает, но кажется немного хакерским, поэтому, если кто-то хочет предложить что-то лучшее, я весь в ушах. Я понял, что инициализатор Konacha не загружается до тех пор, пока Guard не загрузит Konacha, поэтому мне пришлось повторить регистрацию Capybara::Poltergeist
водитель в Guardfile:
require 'capybara/poltergeist'
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, {:js_errors => true})
end
guard :konacha, driver: :poltergeist do
watch(%r{^app/assets/javascripts/(.*)\.js(\.coffee)?$}) { |m| "#{m[1]}_spec.js" }
watch(%r{^spec/javascripts/.+_spec(\.js|\.js\.coffee)$})
end