
不安定なテストを再実行してくれる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_retry
はexample.run
でもうまく動いたし、2回も:retry => 3
を核のやだなーと思ったので使わず。
ex.metadata
でそれぞれのexample
の情報を取ったり設定できるのを学んだ。