Почему 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
Другие вопросы по тегам