Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Upcoming SlideShare
What to Upload to SlideShare
Next
Download to read offline and view in fullscreen.

0

Share

Download to read offline

ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介

Download to read offline

scenario内の一部分をリトライできるrspec-retry_exについて紹介しています。
ブログもご覧ください。https://tech.enechange.co.jp/entry/2019/02/22/083700

Related Books

Free with a 30 day trial from Scribd

See all
  • Be the first to like this

ランダムにおちるfeature_system spec対策rspec-retry_ex の 紹介

  1. 1. rspec-retry_ex の 紹介 ランダムにおちる feature/system spec 対策 2019.02.20 Otemachi.rb #14 Yuya Taki
  2. 2. ・新卒で某SIerに就職 ・渋谷の企業にてRuby on Railsを学ぶ ・2016年10月にENECHANGEにjoin ・よちよち.kotlinを気まぐれに開催 Name : Yuya Taki GitHub : yuyasat Qiita : yuyasat ・gemのロゴを書いたり… (commitはしていない) ・たまにQiitaの記事を書いたり… ・○よ○よ風ゲームをReact.jsで実装した り [2] self.inspect [1] https://github.com/muramurasan/okuribito [2] http://poject.herokuapp.com/ [1]
  3. 3. CI(Continuous Integration)で落ちたり通ったり しませんか?
  4. 4. 落ちたり 通ったり
  5. 5. 理由は・・・ 良くわからない。 でも大抵落ちてるのは・・
  6. 6. あこーでぃおん
  7. 7. も一度回してみたら通る RebuildしてOKだったらよしとしてもいいのではと 誰かが言っていた そこで・・
  8. 8. RSpec::Retry ・scenario単位でリトライ https://github.com/NoRedInk/rspec- retry scenario 'create user', retry: 3 do visit root_path expect(page).to have_content 'hoge' fill_in 'user[email]', with: 'fuga@example.com' fill_in 'user[password]', with: 'password' click_button 'Submit' end
  9. 9. 一つの申し込みページに複数のアコーディオン scenario単位でリトライしても複数のうちどこかで 落ちる
  10. 10. 特定のexpecだけリトライしたい expect(page).to have_content 'hoge' find('label[for=have_bill]').click expect(find('have_bill_element')).to be_visible expect(page).to have_content 'fuga'
  11. 11. なかったので作りました。 こんな感じで使います。 retry_ex(count: 3) do find('label[for=have_bill]').click expect(find('have_bill_element')).to be_visible end
  12. 12. 実装のポイント RSpec3.3から導入されたaggregate_faiulresを参考 def run @counter += 1 yield rescue RSpec::Expectations::ExpectationNotMetError => e retry if @counter < count raise e end https://github.com/yuyasat/rspec-retry_ex/blob/master/lib/rspec/retry_ex/retry_handler.rb
  13. 13. まとめ ・CIで落ちたり落ちなかったりするテストに2種類のリトライ機 構で対応 ・scenario単位でのリトライできるgemはあった が、expect単位でリトライできるgemはなかっ たため、rspec-retry_exというgemを自作 ・CIでテストが安定して通るようになった ・ブログ記事
  14. 14. ご清聴ありがとうございました。

scenario内の一部分をリトライできるrspec-retry_exについて紹介しています。 ブログもご覧ください。https://tech.enechange.co.jp/entry/2019/02/22/083700

Views

Total views

872

On Slideshare

0

From embeds

0

Number of embeds

388

Actions

Downloads

2

Shares

0

Comments

0

Likes

0

×