我有无头的Chrome和可用于Rspec测试的Chrome。我想要一个在两者之间切换的标志,这样我可以看到测试在需要时进行,而在不需要时隐藏它们。我该如何实现类似这样的东西:
rspec --headless
现在我只是将这个秘密与.env
变量相关联:
Capybara.javascript_driver = Rails.application.secrets.headless ? :headless_chrome : :chrome
答案 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