Сконфигурируйте RSpec для использования Capybara.javascript_driver для всех спецификаций запроса

Возможно ли глобально настроить RSpec для использования драйвера JavaScript Capybara (по умолчанию или пользовательского) для всех спецификаций запроса? Иногда мы забываем добавить вручную js: true на каждый запрос спецификации, и это немного раздражает.

3 ответа

Решение

В spec_helper.rb установите следующее:

  config.before(:each) do
    if example.metadata[:type] == :request
      Capybara.current_driver = :selenium # or equivalent javascript driver you are using
    else
      Capybara.use_default_driver # presumed to be :rack_test
    end
  end

Для более поздних версий capybara и rspec важно проверить, является ли тип "особенным"

config.before(:each) do
  if [:request, :feature].include? example.metadata[:type]
    Capybara.current_driver = :poltergeist # or equivalent javascript driver you are using
  else
    Capybara.use_default_driver # presumed to be :rack_test
  end
end

или для RSpec 3 (пропуск example в блок)

config.before(:each) do |example|
  if [:request, :feature].include? example.metadata[:type]
    Capybara.current_driver = :poltergeist # or equivalent javascript driver you are using
  else
    Capybara.use_default_driver # presumed to be :rack_test
  end
end

Обратитесь к этому решению, если вы хотите запустить все тестовые случаи одновременно.

Rspec + Capybara опционально меняют драйвер JS

Другие вопросы по тегам