Rails プロジェクト用の大きなキュウリ スイートがあります。それはすべてカピバラであり、主に Firefox 経由で行われます。
最近、私たちは失敗を経験し始めました。私は頭を悩ませています。これは次のようになります。
- ある時点で (常に同じ)、カピバラ
visit
はページを読み込もうとしてスタックし、最終的にカピバラは探している要素を見つけるためにタイムアウトします (以下のトレースを参照)。他のすべての機能での後続のすべての訪問もタイムアウトします。 - 問題が発生した機能がスタンドアロンで実行されている場合、問題は解消されます。
- 障害の直前にデバッガー (binding.pry) をスティックすると、問題はなくなります。
- スタックしているときに、Firefox のアドレス バーで Enter キーを押すと、リクエストがすぐに通過し、テストが続行され、問題なく完了します。
関連する場合と関連しない場合がある 1 つの詳細: 複数のセッション ( capybara using_session
) を使用しているため、障害が発生するまでに 3 つの firefox インスタンスが存在します。しかし、繰り返しになりますが、その前に 3 つのインスタンスが喜んで通過します。
私の仲間のマシンにも同じ動作が現れます。
レールログに疑わしいものはありません。通過しようとしているその要求の兆候はありません。
OSX 10.8.2、ruby 1.9.3、rails 3.2.6、sqlite3、最新のカピバラ/セレン。
エラー スタック トレース:
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に追加するのと同じくらい簡単です。試してみる価値があるかもしれません。