Как настроить Capybara для работы с Poltergeist?
у меня есть тест интеграции RSpec, который должен выполнить некоторый JavaScript. Я включил Poltergeist и установил PhantomJS, но всякий раз, когда я запускаю пример, я получаю эту ошибку:
Failure/Error: page.execute_script("$('form')[0].submit();")
Capybara::NotSupportedByDriverError:
Capybara::Driver::Base#execute_script
спецификация:
require 'spec_helper'
describe "Signup", :type => :feature do
describe "workflow" do
it "ensures entry of contact information" do
visit 'signup/action'
# snip - use Capybara to fill out form elements
page.execute_script("$('form')[0].submit();")
page.should have_content("Name can't be blank")
page.should have_content("Email can't be blank")
# snip - use Capybara to fill out more form elements
page.execute_script("$('form')[0].submit();")
page.should have_content("Next page")
end
end
end
Я думаю, проблема в том, что я не уверен, как указать, что Capybara должна использовать Poltergeist в качестве драйвера JavaScript. The документация полтергейст говорит:
установка
добавьте полтергейст в свой Gemfile, и в вашей тестовой установке добавьте:
require 'capybara/poltergeist'
Capybara.javascript_driver = :poltergeist
но он не говорит, в какой именно файл он должен войти. Это и говорит:
настройки
можно настроить так, что капибара устанавливает Poltegeist через следующий код в настройках тест:
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, options)
end
но мне неясно, нужно ли или когда мне нужно будет включить это в мои тесты. И снова я ... не знаю, куда его положить, если понадобится.
что я упустил?
- где мне нужно поместить конфигурацию для Capybara и Poltergiest, и что именно нужно сказать (или как я могу определить это для себя)?
- есть ли шаг или часть конфигурации, которую я пропустил?
1 ответов
положить js: true
в вашей строке описания. Я знаю, что мне пришлось сделать это для спецификаций функций в приложении на работе:
describe "Signup", :type => :feature, :js => true do
Я не вижу никакой другой конфигурации. Было некоторое время назад, когда я его установил:)
вы можете просто вызвать методы конфигурации драйвера Capybara один раз перед вашим RSpec.настроить блок:
Capybara.default_selector = :css
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new(app, :window_size => [1920, 1080], :phantomjs_logger => nil)
end
Capybara.javascript_driver = :poltergeist
RSpec.configure do |config|
также обязательно используйте усечение, а не транзакцию с Database cleaner. Poltergeist работает в отдельном потоке, поэтому у вас, вероятно, будет странная БД при использовании транзакций.
редактировать
Ах, истинная вещь js упоминается здесь:https://github.com/jnicklas/capybara#using-capybara-with-rspec в капибаре читай.