Rspec Net::ReadTimeout在Rails SystemTest中发生

Rspec Net::ReadTimeout在Rails SystemTest中发生,rspec,ruby-on-rails-5,capybara,Rspec,Ruby On Rails 5,Capybara,当执行rspec时,很长一段时间没有响应,然后Net::ReadTimeout:发生,测试失败 目前,我们正在Ubuntu docker上构建rails 5.1.7的开发环境。 在此基础上,为了进行包括js在内的视图测试,使用Seleniu_chrome_headless of system test构建了测试环境 我删除了application.html.erb的源代码,以确定错误发生的位置。 因此,我们发现将超时。 下面是一些代码 application.html.erb <!DOCT

当执行rspec时,很长一段时间没有响应,然后Net::ReadTimeout:发生,测试失败

目前,我们正在Ubuntu docker上构建rails 5.1.7的开发环境。 在此基础上,为了进行包括js在内的视图测试,使用Seleniu_chrome_headless of system test构建了测试环境

我删除了application.html.erb的源代码,以确定错误发生的位置。 因此,我们发现
将超时。 下面是一些代码

application.html.erb

<!DOCTYPE html>
<html>
  <head>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
  </head>

  <body>
  </body>
</html>
rails_helper.rb的一部分

Capybara.register_驱动程序:selenium_chrome_headless do|app|
浏览器\选项=::Selenium::WebDriver::Chrome::options.new

browser_options.args如果响应仅在第一次测试中超时,则可能是构建资产管道花费的时间太长。一种解决方案是在运行测试之前为测试环境预编译资产。另一个潜在问题是,如果您安装的chromedriver与您正在运行的Chrome版本不匹配。您可以通过使用
webdrivers
gem来解决这个问题(首先完全删除
chromedriver助手
gem-包括它安装的任何二进制垫片)


日志/代码带来的其他问题是,您运行的Capybara版本在18个月前发布,现在是更新的时候了(在当前版本中,您可以通过将:timeout选项传递给
Capybara::Selenium::Driver.new
-)来增加通信超时时间。此外,还不清楚为什么要编写实际上是系统规范的视图规范。

如果响应只在第一次测试中超时,则可能是构建资产管道花费的时间太长。一种解决方案是在运行测试之前为测试环境预编译资产。另一个潜在问题是,如果您安装的chromedriver与您正在运行的Chrome版本不匹配。您可以通过使用
webdrivers
gem来解决这个问题(首先完全删除
chromedriver助手
gem-包括它安装的任何二进制垫片)


日志/代码带来的其他问题是,您运行的Capybara版本在18个月前发布,现在是更新的时候了(在当前版本中,您可以通过将:timeout选项传递给
Capybara::Selenium::Driver.new
-)来增加通信超时时间。此外,还不清楚您为什么要编写实际上是系统规范的视图规范。

谢谢您的建议。在执行预编译资产后,我不再超时程序。我还提出了其他建议。非常感谢你的建议。在执行预编译资产后,我不再超时程序。我还提出了其他建议。非常感谢你