rspec-retryを使ってテストを再実行するときの設定方法

不安定なテストを再実行してくれるrspec-retryを試している。サンプルを見てもいまいち書き方がよくわからなかった。

rspec-retry

Jenkins Pipelineのretryがうまく動いてくれていたので安泰かと思ったのだけれど、

https://daipresents.wordpress.com/2017/jenkins-pipeline-retry/

これだとジョブ全体を再実行してしまうので、ジョブ内で bundle exec rspec test_spec.rb とか書いている場合、test_spec.rbの中にあるit全部が再実行されてしまう。できれば失敗したitだけ実行したいもの。

なので個別にケースをコントロールできそうなrspec-retryを使うことにした。

サンプルには、config.around :each, :js do |ex|と書けば、”# run retry only on features ”とあるのでFeaturesレベルでリトライをしてくれるそうだ。

https://gist.github.com/daipresents/96d2de61dcff3c1067c667d720d6cda6.js?file=spec_helper.rb

でもって、テストケースには:retry => 3を追加している。

https://gist.github.com/daipresents/96d2de61dcff3c1067c667d720d6cda6.js?file=sample_spec.rb

多分それぞれは排他的に設定できて、以下のように書けば、全 it に :retry => 3を書く必要がなくなる。

https://gist.github.com/daipresents/96d2de61dcff3c1067c667d720d6cda6.js?file=my_sample_spec.rb

example.run_with_retryexample.runでもうまく動いたし、2回も:retry => 3を核のやだなーと思ったので使わず。

ex.metadataでそれぞれのexampleの情報を取ったり設定できるのを学んだ。

広告