documentation for Rails 5.1 system tests有点稀疏。我无法进行执行javascript运行的无头测试。我认为一种方法需要安装和运行xvf。但这比我在其他版本的rails中运行capybara时使用的手动设置要多。
实现这一目标最简单的方法是什么?
答案 0 :(得分:10)
在Rails 5.1系统测试中,使用的驱动程序由ApplicationSystemTestCase(test / application_system_test_case.rb)中的driven_by :webkit
调用设置。假设您已将capybara-webkit驱动程序注册为“webkit”,您应该可以
Capybara.register_driver :headless_chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome, :args => ['headless'])
end
如果你在linux / mac上使用Chrome 59+,另一个可能的选择是使用无头镀铬
driven_by :headless_chrome
然后在您的测试用例类中
{{1}}
这给你一个无头版的chrome,所以没有capybara-webkit / poltergeist的问题不支持当前的网络标准。不幸的是,目前chromedriver在JS系统模式中存在问题(警报,确认,提示 - 在capybara master分支中解决)并且如果您在测试期间尝试关闭窗口,则会挂起。希望这两个问题很快就会解决。
另请注意,rails 5.1应该已经删除了对大多数人测试的database_cleaner的需求,因为它已经处理了在测试模式下多个线程之间共享单个数据库连接。