9

我们有一个用于 Rails 项目的大型黄瓜套件。这都是水豚,主要是通过 Firefox。

最近我们开始经历失败,我正在努力解决问题。这是它的样子:

  • 在某些时候(总是一样),capybaravisit在尝试加载页面时卡住了,capybara 最终超时以查找正在寻找的任何元素(请参见下面的跟踪);每个其他功能中的每次后续访问也会超时;
  • 如果它发生的功能独立运行,问题就会消失;
  • 如果在失败之前粘贴调试器(binding.pry),问题就会消失;
  • 当它被卡住时,如果我在 Firefox 地址栏中按 Enter 键,请求会立即通过,测试会继续并完成,没有任何问题。

一个可能相关也可能不相关的细节:我们正在使用多个会话(capybara using_session),所以到失败时有三个 firefox 实例。但是话又说回来,在此之前有三个实例愉快地过去了。

我伴侣的机器上也出现了同样的行为。

Rails 日志中没有任何可疑之处。没有迹象表明该请求正试图通过。

OSX 10.8.2,ruby 1.9.3,rails 3.2.6,sqlite3,最新的 capybara/selenium。


错误堆栈跟踪:

  Timeout::Error (Timeout::Error)
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/protocol.rb:146:in `rescue in rbuf_fill'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/protocol.rb:140:in `rbuf_fill'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:2551:in `read_new'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:1316:in `catch'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:1293:in `request'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:1286:in `block in request'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:745:in `start'
  /Users/artem/.rbenv/versions/1.9.3-p194-perf/lib/ruby/1.9.1/net/http.rb:1284:in `request'
  (eval):2:in `has_css?'
  ./features/step_definitions/home_page_steps.rb:70:in `/^I am taken to the products page on the retailer site$/'
  features/home_page.feature:21:in `Then I am taken to the products page on the retailer site'
  Timeout::Error (Timeout::Error)


编辑

bundle update似乎让它消失了


编辑 2

如果您遇到类似的问题并且您正在使用 FireBug (capybara/firebug),请尝试禁用它。


编辑 3

我突然想到,自从我们从 webrick 切换到瘦(在测试/开发中)之后,这从未发生过。gem 'thin'就像在 Gemfile中添加一样简单。也许值得尝试一下。

4

1 回答 1

2

bundle update似乎让它消失了

于 2013-01-11T10:28:11.717 回答