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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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根本不应该影响这一点。

以上是关于Capybara:首次测试超时“未能到达服务器,检查DNS和/或服务器状态”,所有其他测试工作正常的主要内容,如果未能解决你的问题,请参考以下文章

使用 Quilljs 和 capybara-webkit 进行 Capybara 测试

如何在测试之间重复使用 Capybara 会话?

如何使用 Capybara 测试 OPTIONS 请求?

验收测试(Capybara)找不到我的提交按钮

Capybara:测试何时禁用 cookie、localStorage 和 sessionStorage

Rails - 失去与集成测试和 Capybara 的会话 - CSRF 相关?