ruby-on-rails – Capybara:首次测试超时“未能到达服务器,检查DNS和/或服务器状态”,所有其他测试工作正常

我为Spree / Solidus Rails平台维护了几个扩展,并且出于某种原因,特别是在某个扩展中我遇到了Capybara问题,我似乎无法追查.

一旦我构建了测试环境,第一次运行规范的第一次测试总是失败,具体如下:

Capybara::Poltergeist::StatusFailError:
   Request to 'http://127.0.0.1:52234/products' failed to reach server,
   check DNS and/or server status - Timed out with no open resource requests

所有后续规格都通过.如果我再次运行bundle exec rspec spec,那么所有规格都会通过.

我已经尝试将Capybara超时值增加到超高数字:

RSpec.configure do |config|
  config.include Spree::TestingSupport::CapybaraHelpers, type: :feature
  Capybara.register_driver(:poltergeist) do |app|
    Capybara::Poltergeist::Driver.new app, timeout: 90
  end
  Capybara.javascript_driver = :poltergeist
  Capybara.default_max_wait_time = 90
end

但似乎没有效果.

我的所有Travis构建都在第一次运行的第一个规范上失败(并传递其他所有内容),这使得很难维护项目,因为所有PR看起来都是红色的.

任何想法可能会发生在这里?

最佳答案
当Rails在第一次请求时处理资产管道时,很可能这是失败的.尝试在运行测试之前预编译测试模式资产,或者更多地增加驱动程序注册中的超时. Capybara.default_max_wait_time根本不应该影响这一点.

转载注明原文:ruby-on-rails – Capybara:首次测试超时“未能到达服务器,检查DNS和/或服务器状态”,所有其他测试工作正常 - 代码日志