Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jest + Puppeteer によるE2Eテストで確認作業を短縮してみた / End-t...

bake0937
October 26, 2020

Jest + Puppeteer によるE2Eテストで確認作業を短縮してみた / End-to-end testing by Jest + Puppeteer shortened the confirmation work

「ゆるWeb勉強会@札幌 OnLine #9」での登壇資料です.
https://mild-web-sap.connpass.com/event/192074/

bake0937

October 26, 2020
Tweet

More Decks by bake0937

Other Decks in Programming

Transcript

  1. 現実
 特集ページ
 A広告
 B広告
 記事ページ
 C広告
 D広告
 カテゴリページ
 E広告
 G広告


    PRページ
 H広告
 I広告
 新着ページ
 J広告
 連載ページ
 K広告
 L広告
 F広告

  2. 現実
 特集ページ
 A広告
 B広告
 記事ページ
 C広告
 D広告
 カテゴリページ
 E広告
 G広告


    PRページ
 H広告
 I広告
 連載ページ
 K広告
 L広告
 F広告
 A,B広告 ヨシ!
 J広告
 新着ページ

  3. 現実
 特集ページ
 A広告
 B広告
 記事ページ
 C広告
 D広告
 カテゴリページ
 E広告
 G広告


    PRページ
 H広告
 I広告
 連載ページ
 K広告
 L広告
 F広告
 J広告
 新着ページ
 C,D広告 ヨシ!

  4. 現実
 特集ページ
 A広告
 B広告
 記事ページ
 C広告
 D広告
 カテゴリページ
 E広告
 G広告


    PRページ
 H広告
 I広告
 連載ページ
 K広告
 L広告
 F広告
 J広告
 新着ページ
 E,F,G広告 ヨシ!

  5. 現実
 特集ページ
 A広告
 B広告
 記事ページ
 C広告
 D広告
 カテゴリページ
 E広告
 G広告


    PRページ
 H広告
 I広告
 新着ページ
 J広告
 連載ページ
 K広告
 L広告
 F広告
 H,I広告 ヨシ!

  6. 現実
 特集ページ
 A広告
 B広告
 記事ページ
 C広告
 D広告
 カテゴリページ
 E広告
 G広告


    PRページ
 H広告
 I広告
 新着ページ
 J広告
 連載ページ
 K広告
 L広告
 F広告
 J広告 ヨシ!

  7. 現実
 特集ページ
 A広告
 B広告
 記事ページ
 C広告
 D広告
 カテゴリページ
 E広告
 G広告


    PRページ
 H広告
 I広告
 新着ページ
 J広告
 連載ページ
 K広告
 L広告
 F広告
 K,L広告 ヨシ!

  8. 現実
 特集ページ
 A広告
 B広告
 記事ページ
 C広告
 D広告
 カテゴリページ
 E広告
 G広告


    PRページ
 H広告
 I広告
 新着ページ
 J広告
 連載ページ
 K広告
 L広告
 F広告
 K,L広告 ヨシ!
 他の広告やページも結構ある!

  9. 特集ページ
 A広告
 B広告
 記事ページ
 C広告
 D広告
 カテゴリページ
 E広告
 G広告
 PRページ


    H広告
 I広告
 新着ページ
 J広告
 連載ページ
 K広告
 L広告
 F広告
 お...終わった...

  10. 特集ページ
 A広告
 B広告
 記事ページ
 C広告
 D広告
 カテゴリページ
 E広告
 G広告
 PRページ


    H広告
 I広告
 新着ページ
 J広告
 連載ページ
 K広告
 L広告
 F広告
 お...終わった...
 あ!スマホ版も確認必要だよ 

  11. 特集ページ
 A広告
 B広告
 記事ページ
 C広告
 D広告
 カテゴリページ
 E広告
 G広告
 PRページ


    H広告
 I広告
 新着ページ
 J広告
 連載ページ
 K広告
 L広告
 F広告
 え!?..あぁ...そうだった... 

  12. もう辛い...
 特集ページ
 A広告
 B広告
 記事ページ
 C広告
 D広告
 カテゴリページ
 E広告
 G広告


    PRページ
 H広告
 I広告
 新着ページ
 J広告
 連載ページ
 K広告
 L広告
 F広告

  13. 特集ページ
 A広告
 B広告
 記事ページ
 C広告
 D広告
 カテゴリページ
 E広告
 G広告
 PRページ


    H広告
 I広告
 新着ページ
 J広告
 連載ページ
 K広告
 L広告
 F広告
 結局,確認作業で半日掛かることに..

  14. E2Eテストとは
 • End to End(端から端まで) Test の略
 
 • 基本的には人が操作をして確認をするが,E2Eテストを自動化

    するツールがある
 ◦ RPAツールの裏側で動いていたりする
 
 • E2Eテストを自動化するツールとして Selenium, Puppeteer, Cypress.io など沢山ある

  15. E2Eテストを自動化する方法
 • RSpec + System Spec の導入
 ◦ minitest を使っているため断念

    
 • minitest + SystemTestCase の導入
 ◦ Rails のバージョンが5.0系のため断念 
 • minitest + Capybara + selenium-webdriver の導入
 ◦ 今後のRailsのバージョンを上げた時に書き換えが必要になりそうと判 断し,断念 
 • Jest + Puppeteer を導入
 ◦ Ruby, Rails 側のアップデートの作業を切り離して導入できる
 ◦ 前々から JS のテスティングフレームワークを入れたかった
 ◦ Puppeteer で Headless Chrome を操作してみたかった

  16. 導入手順
 • Puppeteer の Dockerfile を作成
 ◦ 後日 GitHub に

    アップします 
 • E2Eテスト用のディレクトリを作成
 ◦ パッケージを追加
 ▪ jest, puppeteer, jest-puppeteer
 ▪ dotenv もあると便利
 • ひらすらテストを書く

  17. まとめ
 • Jest + Puppeteer で E2Eテストを導入した
 • 確認作業を半日 →

    約2分まで短縮した
 • 課題もありつつも,速く・安全に質を保証 する手段を得ることができた