使用Poltergeist和Capybara的默认驱动程序

时间:2016-04-22 04:10:52

标签: ruby-on-rails ruby-on-rails-4 rspec capybara poltergeist

我的设置是使用poltergeist作为我所有测试的Capybara驱动程序,包括JS和非JS。

# spec/rails_helper.rb
require "capybara/poltergeist"

# ...
# ...

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, js_errors: true)
end

Capybara.configure do |config|
  config.ignore_hidden_elements = true
  Capybara.default_driver = :poltergeist
  Capybara.javascript_driver = :poltergeist
end

我有一些测试,我确认即使禁用了javascript,我的应用上的某些功能仍然有效。对于那些测试,我当然会使用js: false禁用javascript。

describe "accessibility" do
  describe "JavaScript disabled", js: false do
    before(:each) { visit root_path }

    it "user can still log in" do
      # ...
    end
  end
end

但是,我注意到这些js:false测试仍在使用JavaScript 。我可以通过在JavaScript中将调试语句打印到控制台日志来确认这一点。

有没有办法在使用poltergeist时禁用JavaScript?或者是否始终启用?将poltergeist用作非JS驱动程序甚至是有效的吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

不,似乎没有办法在没有Javascript的情况下使用poltergeist(除非你自己修改了poltergeist)。根据{{​​3}},它需要phantomjs的支持,这可以在this Github issue中获得,但不能在master中获得。