8

Rails 5.1 系统测试的文档有点少。我无法获得执行 javascript 运行的无头测试。我认为一种方法需要安装和运行 xvf。但这比我在其他版本的 rails 中运行 capybara 时更习惯于手动设置。

实现这一目标的最直接方法是什么?

4

1 回答 1

10

在 Rails 5.1 系统测试中,使用的驱动程序由driven_byApplicationSystemTestCase (test/application_system_test_case.rb) 中的调用设置。假设您已将 capybara-webkit 驱动程序注册为“webkit”,您应该能够做到

driven_by :webkit

如果您在 linux/mac 上使用 Chrome 59+,另一个可能的选择是使用 headless chrome

Capybara.register_driver :headless_chrome do |app|
  Capybara::Selenium::Driver.new(app, :browser => :chrome, :args => ['headless'])
end

然后在你的测试用例类中

driven_by :headless_chrome

这为您提供了一个无头版本的 chrome,因此不会出现 capybara-webkit/poltergeist 不支持当前 Web 标准的问题。不幸的是,目前 chromedriver 在 JS 系统模式方面存在问题(警报、确认、提示 - capybara master 分支中的解决方法),如果您在测试期间尝试关闭窗口,则会挂起。希望这两个问题将很快得到解决。

另请注意,rails 5.1 应该已经消除了大多数人测试对 database_cleaner 的需求,因为它已经在测试模式下处理了多个线程之间的单个数据库连接的共享。

于 2017-05-05T20:26:55.020 回答