如何在Capybara/Poltergeist中测试JavaScript错误

vov*_*van 7 rspec ruby-on-rails capybara poltergeist

我需要检查页面是否有JavaScript错误.

capybara-webkit的解决方案 http://blog.55minutes.com/2013/10/test-javascript-with-capybara-webkit/

require 'spec_helper'

feature 'Home' do
  it 'should not have JavaScript errors', :js => true do
    visit(root_path)
    expect(page).not_to have_errors
  end
end

如何使一个看起来像Poltergeist一样?

spec_helper.rb

...
require 'capybara/rails'
require 'capybara/selenium/driver'
...


selenium_hub_host = "selenium"
selenium_hub_port = "100"
selenium_url = "http://#{selenium_hub_host}:#{selenium_hub_port}/wd/hub"

...
Capybara.register_driver :selenium_remote do |app|
  options = {}
  options[:browser] = :remote
  capabilities = Selenium::WebDriver::Remote::Capabilities.firefox
  capabilities[:platform] = :any
  capabilities[:takes_screenshot] = true
  options[:url] = selenium_url
  options[:desired_capabilities] = capabilities
  Capybara::Selenium::Driver.new(app, options)
end

Capybara.javascript_driver = :selenium_remote
Capybara.default_max_wait_time = 30

Capybara.server do |app, port|
  require 'rack/handler/thin'
  Rack::Handler::Thin.run(app, :Host => '0.0.0.0', :Port => port)
end

...
Run Code Online (Sandbox Code Playgroud)

bma*_*ets 0

您的问题中所附的教程链接描述了:

  • rspec和配置capybaracapybara-webkit

但在你的问题标题中你提到poltergeist。在这种情况下,您不需要设置capybara-webkit!您应该使用这套宝石:

  • rspeccapybarapoltergeistpoltergeist使用phantomjs

请阅读以下内容:http ://tutorials.jumpstartlab.com/topics/capybara/capybara_and_phantom.html

希望对您有帮助!