2016-09-22 6 views
0

CircleCIでSureniumでCucumberを実行すると、CircleCIのパフォーマンスによってテストが失敗することがあります。一般的なエラーはNet::ReadTimeoutです。これは決してローカルでは発生しません。私はそのエラーからのステップを救助し、それらを再試行したいが、ではないすべての失敗したテストを再実行したい。特定の失敗の場合にのみキュウリのステップを再実行

私は、このエラーを引き起こすような特定のステップにレスキューを組み込むことができましたが、理想的には、それを1回または2回救済するエラーのリストをキュウリに提供することができます最終的にエラーを通過させます。以下のような

何か:

# support/env.rb 
Cucumber.retry_errors = { 
    # error => number of retries 
    "Net::ReadTimeoutError" => 2 
} 

はそのようなものは存在しますか?

答えて

0

あなたがキュウリを探しているようなものを見つけたら、私は驚くでしょう。

実際の障害であり、ランダムなネットワークの不具合だけでなく、間違った問題を解決することが実際の失敗であることを再実行しています。

あなたが探している確認がネットワークなしでできるかどうかは私のアプローチです。エラーが実際にエラーであることを確認するために数回再実行する必要がある場合は、Cucumber以外のツールを使用することも検討してください。しかし、これは別のウサギの穴に私を導いてくれるでしょう。あなたは何回走るべきですか、閾値は何ですか?合格テストを行うために5回のうち3回の実行が合格する必要がありますか?それは私の目の中で非常に醜いです。

0

Seleniumが最初のテストで資産をコンパイルするのに時間がかかったことがこの問題のようです。後続のテストでは、コンパイルされたアセットが使用され、問題はありません。 this Github issueを見た後、私はSeleniumのタイムアウト制限を上げました。

Capybara.register_driver :chrome do |app| 
    http_client = Selenium::WebDriver::Remote::Http::Default.new 
    http_client.timeout = 120 # default is 60 seconds 
    Capybara::Selenium::Driver.new(app, browser: :chrome, http_client: http_client) 
end 
関連する問題