Rspec和Chrome /无头标志

时间:2019-01-31 20:55:05

标签: ruby-on-rails google-chrome rspec capybara

我有无头的Chrome和可用于Rspec测试的Chrome。我想要一个在两者之间切换的标志,这样我可以看到测试在需要时进行,而在不需要时隐藏它们。我该如何实现类似这样的东西:

rspec --headless

现在我只是将这个秘密与.env变量相关联:

Capybara.javascript_driver = Rails.application.secrets.headless ? :headless_chrome : :chrome

3 个答案:

答案 0 :(得分:1)

好吧,覆盖env var的工作原理就是这样。

HEADLESS=true rspec

答案 1 :(得分:0)

嗯,我个人使用此代码注册驱动程序:

Capybara.register_driver :chrome do |app|
  capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
    chromeOptions: {
      args: [
        ('headless' if ENV.fetch('HEADLESS', '1') == '1')
      ].compact
    }   
  )

  Capybara::Selenium::Driver.new(
    app,
    browser: :chrome,
    desired_capabilities: capabilities
  )
end

然后在.env中将变量默认设置为HEADLESS或不设置为HEADLESS,然后如果要覆盖它,只需键入HEADLESS=0 rspec

答案 2 :(得分:0)

在rails_helper.rb中,您应该创建一个这样的语句:

RSpec.configure do |config|

  config.before(:each) do
    if  ENV['HEADLESS'] == 'true'
      Capybara.current_driver = :selenium_chrome_headless
    else
      Capybara.current_driver = :selenium_chrome
    end
  end
end

然后在运行规格时发送变量

$ HEADLESS=true rspec ./spec/features