
不安定なテストを再実行してくれる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レベルでリトライをしてくれるそうだ。
でもって、テストケースには:retry => 3を追加している。
多分それぞれは排他的に設定できて、以下のように書けば、全 it に :retry => 3を書く必要がなくなる。
example.run_with_retryはexample.runでもうまく動いたし、2回も:retry => 3を核のやだなーと思ったので使わず。
ex.metadataでそれぞれのexampleの情報を取ったり設定できるのを学んだ。