Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
E2E テスト入門
Search
Tajima Sachiko
July 18, 2020
Programming
510
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
E2E テスト入門
Demo動画は後日追加します!
#Zli_DMM_LT
Tajima Sachiko
July 18, 2020
More Decks by Tajima Sachiko
See All by Tajima Sachiko
デザインシステムで アクセシビリティ品質が 担保できなかった 「3つの理由」
schktjm
1
130
エラーとアクセシビリティ
schktjm
2
1.9k
コンポーネントライブラリで実現する、アクセシビリティの正しい実装パターン
schktjm
4
1.6k
ゼロから始めるアクセシビリティ啓蒙活動
schktjm
2
3.2k
CLUB p1ass を作った
schktjm
0
260
はじめての npm パッケージ作り
schktjm
1
320
Firebaseでお手軽OGP生成
schktjm
0
640
3時間でつくるいいかんじのポートフォリオサイト
schktjm
1
410
vuexとvue-routerとあれこれ
schktjm
0
1.6k
Other Decks in Programming
See All in Programming
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
270
ソフトウェアラスタライザ
fadis
1
790
Deep dive into the select statement (GopherCon UK)
jespino
0
170
Family mrubyの進捗
kishima
1
100
【DroidKaigi 2026】「アクセシビリティを利用するとき、 アクセシビリティもまたこちらを利用している」 〜マルウェアによる攻撃と防衛について〜
halunoyo
0
410
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
510
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
デプロイ直後のレイテンシスパイクを調べたら、 Railsの仕様にたどり着いた
nhsykym
0
110
AIエージェント時代のコードレビューを設計する
nogu66
6
2.5k
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
640
Swift愛好会100回記念 第1回を振り返る
jollyjoester
0
120
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
1k
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
2
1.4k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
510
Why Our Code Smells
bkeepers
PRO
340
58k
GraphQLとの向き合い方2022年版
quramy
50
15k
Exploring anti-patterns in Rails
aemeredith
3
500
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
58k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
560
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
202
76k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
310
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
The Pragmatic Product Professional
lauravandoore
37
7.4k
So, you think you're a good person
axbom
PRO
2
2.1k
Transcript
e2eテスト入門 2020/7/17 Zli x DMM 合同LT
1.自己紹介 ﹡ Sachiko Tajima ◦ twitter @schktjm ◦ github @schktjm
﹡ 会津大学 B4 DB研(AOJ) ﹡ フロントエンド / デザイン ﹡ AtCoder 緑 2
1. Demo Launching Browser
E2E (End-to-End)テストです! あれは何? 4
﹡ End-to-End Tesing ﹡ e2eテストとはアプリケーションフローが期待 通りに動くかどうかを確認するためにソフト ウェア全体を最初から最後までテストする手 法。 5 E2Eテストとは
1. ログイン画面を表示 2. メールアドレスを入力 3. パスワードを入力 4. ログインボタンをクリック 5. トップページに遷移
6 たとえばログインページだと を自動でテストします
﹡ テスト対象の、コンポーネントの統合やデータ の整合性を実際のユーザーシナリオ(ユーザー が新規登録をするなど)をシミュレーションし たうえで確認ができます。 7 なぜE2Eテストをするの?
﹡ テスト対象の、コンポーネントの統合やデータ の整合性を実際のユーザーシナリオ(ユーザー が新規登録をするなど)をシミュレーションし たうえで確認ができます。 → 手動でテストするのがめんどくさい! → 複雑になればなるほど期待した状態とは?? 8 なぜE2Eテストをするの?
2. E2Eテストツール iikanjinotext
Webフロントエンドにおける種類 ﹡ WebDriver 系 ◦ Selenium (Geb, Selenium WebDriver with
Concordion), WebdriverIO, Nightwatch.js, Testium, Protractor ﹡ (ヘッドレス) ブラウザ自動化系 ◦ Puppeteer, jsdom, Nightmare ﹡ (ヘッドレス) ブラウザ自動化 + テスト系 ◦ Cypress.io, TestCafe, Intern ﹡ Chrome 拡張 ◦ Ghost Inspector 10 E2E テスト自動化ツールをざっと調べたまとめ-Qiita ﹡ 調べたところ一番有名 ﹡ フロントエンドの非同期 処理やSPAには不向き
Webフロントエンドにおける種類 ﹡ WebDriver 系 ◦ Selenium (Geb, Selenium WebDriver with
Concordion), WebdriverIO, Nightwatch.js, Testium, Protractor ﹡ (ヘッドレス) ブラウザ自動化系 ◦ Puppeteer, jsdom, Nightmare ﹡ (ヘッドレス) ブラウザ自動化 + テスト系 ◦ Cypress.io, TestCafe, Intern ﹡ Chrome 拡張 ◦ Ghost Inspector 11 E2E テスト自動化ツールをざっと調べたまとめ-Qiita ﹡ ヘッドレスでChromeや Chromiumを操作できる ﹡ SPAのe2eのテストツー ルとして有名 ﹡ テストをするならテスト ツールを導入する必要が ある
Webフロントエンドにおける種類 ﹡ WebDriver 系 ◦ Selenium (Geb, Selenium WebDriver with
Concordion), WebdriverIO, Nightwatch.js, Testium, Protractor ﹡ (ヘッドレス) ブラウザ自動化系 ◦ Puppeteer, jsdom, Nightmare ﹡ (ヘッドレス) ブラウザ自動化 + テスト系 ◦ Cypress.io, TestCafe, Intern ﹡ Chrome 拡張 ◦ Ghost Inspector 12 E2E テスト自動化ツールをざっと調べたまとめ-Qiita ﹡ テストツールを導入す る必要がない ﹡ 最近ブームっぽい ﹡ ドキュメントが親切で 良かった
3. テストしてみる! コード解説
Cypress.ioを使いました 14
ToDos.tsx(JSXの部分だけ) 15
todos_spec.ts 16 describe(“The todos”, function(){ it("Assertion Text", () => {
const typeText = "texttexttext" cy.visit("/todos") .get("#text-field") .type(typeText) .should("have.value", typeText) }) ... })
cypress.json 17 { “baseUrl”: “http://localhost:3000” } baseUrl を設定しない場合テスト実行時に localhost+ランダムなポート番号でブラウザを開 き、テスト内部の
cy.visit() に当たってから指定されたURLに切り替えるため、テスト開 始時にフラッシュやリロードが入る。
CypressのIDEを立ち上げる 18 $ npx cypress open
テストが実行される 19
所感 20
驚くべき学習コストの低さ 21 ﹡ Cypress.io は Mocha, Chai, jQueryなどの人気で あり有名なツールや フレームワークで構
成されていて学習コ ストが低い
﹡ Canary ﹡ Chrome ﹡ Chromium ﹡ Edge ﹡ Edge
Beta ﹡ Edge Canary 22 Browsers対応すごい ﹡ Edge Dev ﹡ Electron ﹡ Firefox (Beta support) ﹡ Firefox Developer Edition (Beta support) ﹡ Firefox Nightly (Beta support) https://docs.cypress.io/guides/guides/launching-browsers.html#Browsers
スナップショットを撮ってくれる DOM操作の度にスナップショットをとってくれるため、デ バッグがしやすくなっている。 23
簡単だった!!!
Thanks! Twitter: schktjm Code: https://github.com/schktjm/e2e-test 25 Credit: https://www.cypress.io/ E2E テスト自動化ツールをざっと調べたまとめ-Qiita
cypressを触ってみた-Qiita