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