sleep
またはwait_until
は、webpageupdatesによると、最近のバージョンのCapybaraでは無効です。カピバラは働くために睡眠が必要ですか?
しかし、sleep(1)
の呼び出しをテストに追加すると、高速なマシンでのみ動作する一連のテストがあります。
def unix_wait
case RbConfig::CONFIG['host_os']
when /darwin/
when /linux-gnu/
sleep(1)
end
end
、私は昔のUbuntu 12.04 quadcoreを持っている:
describe "dosimeters page" do
before do
click_link("Dosimeter Read History", :match=>:first)
end
...
は私がようunix_wait
を定義した
describe "dosimeters page" do
before do
unix_wait
click_link("Dosimeter Read History", :match=>:first)
end
...
は次のようになります。それは、のように見えるのテストですラップトップはJenkinsでこれらのテストを実行しており、すべてはunix_wait
コールなしでうまくいきます。 Ubuntu 13.10を実行しているhexacoreデスクトップとmacbook proのラップトップでランダムにテストに失敗しましたが、unix_wait
コールを追加するとテストに合格します。
テストの失敗自体は、失敗のロード(一部の実行ではCSS要素が失われているが他のものではない)を示しており、サイトを手動でロードしたときに実際にテストされるものが機能します。
ここで適切な行動は何ですか?明らかに、sleep
はテスト中に許可されておらず、wait_until
もありません。しかし、睡眠は働いていますが、それは私にとって非常に原油のようです。 #synchronized
を見ているべきですか?私がブログ投稿から集めたものから、click_link
と呼ぶと既に呼び出されており、テストはまだ失敗しています。
ここで受け入れられるプロトコルは何ですか?
私はそれが重要だと思うので、私は追加する必要があります:これらはすべてjavascriptのテストです。私はqt4(qt5ではなく)上に構築されたcapybara-webkitを使用しています。私はデバッグステップとしてpoltergeistやその他のjavascriptドライバに切り替えることを検討しています。
デバッグにwebdriverを使用できますが、同様の問題があります。 –
私はajaxを使うときにcapybara-webkitと同じ問題を抱えています。私はポルターガイストがこれを解決できるかどうか分かりませんが、試してみる価値があります。 – basgys
あなたはあなたが見ている失敗をもっと説明できますか?私は "css elements missing"が本当に必要とするものが何であるか明確ではない。 – Shepmaster