Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
TestCaféでE2Eテスト!
Search
Azusa Okamoto
May 28, 2022
Programming
160
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TestCaféでE2Eテスト!
Azusa Okamoto
May 28, 2022
More Decks by Azusa Okamoto
See All by Azusa Okamoto
GraphQLでAPI開発 やってみよう!
azunyan
0
49
「わたし色」の見方で拓く世界
azunyan
0
33
ちゃんとSvelte, Hello Worldした!
azunyan
0
86
最近取り組んでいることについて喋ってみる
azunyan
0
28
フロントエンドエンジニアが関数型プログラミングに出会った話
azunyan
0
130
TECH WOMAN KANSAIの 取り組みと今後~2024年の振り返りと2025年へ~
azunyan
0
110
Go初心者が開発やってみた!
azunyan
1
590
デブサミウーマン2023 アウトプットって何が良いの?
azunyan
0
1.3k
個人的に楽しかった実装2022
azunyan
0
160
Other Decks in Programming
See All in Programming
ChromeでローカルLLM
ryu1013
0
130
APNsからLive Activityを開始する話
yumnumm
0
170
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
380
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
210
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
980
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
470
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.9k
Workers Cache を知る
syumai
0
360
Are APIs Still Relevant in the AI Era?
soyuka
0
460
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
golang-bob.pdf
iwatsukayura
0
130
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.5k
First, design no harm
axbom
PRO
2
1.3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Amusing Abliteration
ianozsvald
1
340
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Fireside Chat
paigeccino
43
4.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
22k
Google's AI Overviews - The New Search
badams
0
1.6k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
630
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
850
Transcript
TestCaféでE2Eテスト! あずにゃん 20220528_とにかくほめる!マウントなしのLT会
自己紹介 ・フロントエンドエンジニア ・気づけば、2年目... 【言語】 JavaScript, TypeScript 【FW・ライブラリ】 React, Vue.js @azunyan_eng
今日お話しすること 1. E2Eテストとは? 2. TestCaféとは? 3. 主な使い方 4. 実践! 5.
感想や学び 6. 参考資料
1. E2Eテストとは? 2. TestCaféとは? 3. 主な使い方 4. 実践! 5. 感想や学び
6. 参考資料
E2Eテストとは? システム全体をテストする。 ユーザが利用する時のように、ブラウザ操作をしながら テスト。
1. E2Eテストとは? 3. 主な使い方 4. 実践! 5. 感想や学び 6. 参考資料
2. TestCaféとは?
TestCaféとは? ・E2Eテスト自動化フレームワーク。 ・JavaScript/TypeScriptで記述。 ・複数のブラウザに対応 ・複数のブラウザで同時実行できる。
TestCaféとは? const const homeTab = ( ). ( ). (
); = . ( ). ( ); . ( . ). ( ); tabs homeTab tabs Selector find nth child nth expect eql '#root' 'div' 'a' 'Home' 2 0 awaitt innerText (例)
手動でポチポチ...。 手動の操作不要! TestCaféなし TestCaféあり
1. E2Eテストとは? 2. TestCaféとは? 4. 実践! 5. 感想や学び 6. 参考資料
3. 主な使い方
主な使い方 ①要素関係(取り出してくるなど...) ②テスト関係
innerText value 要素のテキストを取得。 input要素のテキストを 取得。
(例) // innerText // value const const = . (
). ; = . ( ). ; pageTitle pageContents inputForm form $ formName child find 'h1' `input[name=" "]` innerText value { }
getStyleProperty() 要素が持つ、指定したCSSのプロパティの値を取得。
(例) // 背景色を取ってくる。 const = . ( ); activeBG homeTab
getStyleProperty 'background-color'
hasAttribute() その要素が指定した属性を持っているかどうかを返す。
(例) const = . ( ); btnWithDisabled submitBtn hasAttribute 'disabled'
click() 要素をクリックする。
click() (例) const const = ( ). ( ). (
); = . ( ). ( ); . ( ); navTabs formTab navTabs formTab Selector find nth child nth click '#root' 'div' 'a' 2 1 await t
typeText() テキストを入力する。
click() (例) const true . await inputForm form inputForm =
( ); find typeText `input[name="name"]` 'テスト花子' . ( , , : ); t { } replace
eql() notEql() 値が合っているか。 値が異なっているか。
click() (例) // クラス名で指定することも可能 // await t.expect(対象要素).eql(想定している結果); const const =
( ). ( ); = . ( ). ; . ( ). ( ); modal modalText modal modalText Selector child child expect eql '.test-modal' 'div' 'p' 'Modalが出現!!' innerText t await
ok() notOk() 値がtrueであるか。 値がfalseであるか。
click() (例) // ok() // notOk() await await . (
. ( )). (); . ( . ( )). (); t t expect hasAttribute ok expect hasAttribute notOk submitBtn submitBtn 'disabled' 'disabled'
takeScreenshot() スクリーンショットを撮影。 指定したパスに保存される。
click() (例) await . ( : , : ); t
takeScreenshot { 'result/checkHomeTabContents.png' } path fullPage true
1. E2Eテストとは? 2. TestCaféとは? 3. 主な使い方 5. 感想や学び 6. 参考資料
4. 実践!
実践! 表示されている内容や要素が持つ属性などを利用して、 テストしていく!
実践! 〜主なテスト内容〜 ・Homeタブが表示されているか。
実践! 〜主なテスト内容〜 ・Formタブが表示されているか。 ・初期状態で、送信ボタンが無効になっているか。 ・初期値が合っているか。 ・フォームに入力できるか。 ・フォーム入力後、送信ボタンが有効になっているか。
実践! 〜主なテスト内容〜 ・Buttonsタブが表示されているか。 ・モーダルが表示されるか。 ・モーダルを消すことができるか。
動かしてみる!!
1. E2Eテストとは? 2. TestCaféとは? 3. 主な使い方 4. 実践! 6. 参考資料
5. 感想や学び
感想や学び ・「現状」だけでなく、「今後」のことも考慮して要素 を指定! ・色関係や改行ありテキスト判定において、制約がある のになかなか気がつけずて手間取った。 ・画面仕様をじっくり見る機会になり、プロジェクトに 途中から参画しても仕様把握に繋がって助かった!
感想や学び ・コマンドを実行すると、ブラウザが立ち上がって、自 動でテストできるのは便利! ・テストコード作成初心者でも、メソッドを組み合わせ ていくことで問題なく扱えた!
1. E2Eテストとは? 2. TestCaféとは? 3. 主な使い方 4. 実践! 5. 感想や学び
6. 参考資料
参考資料 TestCafé公式ドキュメント
ご清聴ありがとう ございました!