Rspec 和 Chrome/headless 标志
Rspec and Chrome/headless flag
我有 headless Chrome 和 Chrome 正在为我的 Rspec 测试工作。我想要一个标志在两者之间切换,这样我就可以在需要时看到测试发生,在不需要时隐藏它们。我怎样才能实现类似的东西:
rspec --headless
现在我把这个秘密绑定到 .env
var:
Capybara.javascript_driver = Rails.application.secrets.headless ? :headless_chrome : :chrome
好吧,重写 env var 是可行的。
HEADLESS=true rspec
嗯,我个人是用这段代码来注册驱动的:
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=0 rspec
在您的 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
我有 headless Chrome 和 Chrome 正在为我的 Rspec 测试工作。我想要一个标志在两者之间切换,这样我就可以在需要时看到测试发生,在不需要时隐藏它们。我怎样才能实现类似的东西:
rspec --headless
现在我把这个秘密绑定到 .env
var:
Capybara.javascript_driver = Rails.application.secrets.headless ? :headless_chrome : :chrome
好吧,重写 env var 是可行的。
HEADLESS=true rspec
嗯,我个人是用这段代码来注册驱动的:
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=0 rspec
在您的 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