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
テストライブラリによってコンポーネントテストの実行時間はどう変わるか / compone...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Daichi KUDO
February 14, 2025
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
テストライブラリによってコンポーネントテストの実行時間はどう変わるか / component-test-performance-by-library
https://voicy.connpass.com/event/342447/
Startup Angular #9 バレンタインLT会 での発表資料
Daichi KUDO
February 14, 2025
More Decks by Daichi KUDO
See All by Daichi KUDO
pnpmでできるサプライチェーン攻撃への備え / Pnpm Security Practices
da1chi
2
640
ゲームから学ぶUX設計 / UX Design Inspired from Games
da1chi
0
370
エンジニアが始める UXリサーチ 入門 / Introduction of UX Research
da1chi
0
530
登壇は dynamic! な営みである / speech is dynamic
da1chi
0
790
Web Components で実現する Hotwire とフロントエンドフレームワークの橋渡し / Bridging with Web Components
da1chi
3
6.6k
Hotwireで簡単に非同期処理のユーザー通知を作る / broadcast using Turbo
da1chi
1
190
Blue/Greenデプロイの導入による 運用フローの改善
da1chi
1
1.2k
Featured
See All Featured
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
170
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.4k
Practical Orchestrator
shlominoach
191
11k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.2k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
340
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
200
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
250
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
240
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
62
44k
The agentic SEO stack - context over prompts
schlessera
0
820
Transcript
テストライブラリによって コンポーネントテストの実行時間は どう変わるか? Startup Angular #9 バレンタインLT会 2025-02-14 @Classi. Corp
daichi(だいち)
daichi(だいち) 2022〜2025 Angular, Tools, CI/CD @da1chi24
コンポーネントテストとは
コンポーネントテストとは ① 対象のコンポーネントをレンダリングする
コンポーネントテストとは ② レンダリングしたコンポーネントを操作する
コンポーネントテストとは ③ 振る舞いを検証する
利用できるライブラリ Jasmine jest Web Test Runner vitest 📝 右にいくほど新しい
どれを選べばいいのか?
実行時間で比較してみよう
用意したコンポーネント
1. 各 input に値を入力 2. Submit ボタンをクリック 3. EventEmitterが発火し、入力された値が formData()
の引数として渡される 実施するテストケース
ひたすら実行しコマンド実行〜終了まで計測 ✖ 1000
• Karma (Headless Chrome) • Web Test Runner (Headless Chrome)
• Jest (jsdom) • Vitest + Webdriverio (Headless Chrome) • Vitest + Playwright (Headless Chromium) • Vitest + jsdom 検証するテストライブラリ
計測結果 ※あくまで参考値なので雰囲気だけ掴んでもらえると GitHub Actionsで実行した結果をグラフにしたもの https://github.com/kudoas/benchmark-component-test-for-angular/actions/runs/13299959177/job/37139499475 🥇 🥈 🥉
なぜ実行時間に差が出るのか?
🗂 glob • テスト対象の実行ファイルの集計 🛠 setup (テスト集計後〜テスト実行前) • テスト実行環境の準備、依存関係の解決、テストコードの変換 etc.
🧪 assertion • テストの実行 テストを実行するステップをざっくりいうと...
計測結果をステップで分けると傾向が見えるかも 📝GlobとSetupを分割して計測するの難しかったので、 Assertion以外の時間としてまとめています
Glob + Setup
テストコードを変換するバンドルツールの違い Webpack jest Web Test Runner vitest ts-jest
esbuild は Glob + Setup の時間が短い 📝ただし今回はテストファイルは少ないため、大きな差になっていない可能性あり +α
Assertion
Node.jsでエミュレートしてレンダリングする DOM API を実行し、コンポーネントを操作する コンポーネントがレンダリングされる場所の違い jsdom jest vitest ➕
実際のブラウザでコンポーネントをレンダリングする 実際のブラウザでコンポーネントを操作する コンポーネントがレンダリングされる場所の違い vitest ➕ webdriverio or playwright Web Test
Runner
ブラウザ操作のアーキテクチャの違い https://zenn.dev/togami2864/articles/65af759b4a34f6 📝優良記事なので興味ある方はぜひ! 今回使ったライブラリのものだけ話します
一方向にHTTP通信を行って操作する。間にDriverが必要 毎回通信するため、ブラウザ操作に時間がかかる Webdriver Protocol ➕ webdriverio Browser Automation Tools Protocols
– Webdriver vs CDP
WebSocketでコネクションする。Driverを介さない Webdriver Protocolよりも安定していて速い Chrome Devtools Protocol (CDP) Playwright 01: Selenium
- Playwright architecture comparison playwright Web Test Runner
Assertionはwebdriver > jsdom ≒ CDP 📝 CDPがjsdomと同じくらいの時間になったのが意外🧐 +α CDP CDP
jsdom jsdom webdriver
(余裕あったら) Karmaのアーキテクチャ https://karma-runner.github.io/6.4/intro/how-it-works.html 実行プロセス ① Node.js のサーバーが起動 ② ブラウザを立ち上げて websocketで通信
③ ブラウザ上に配置された iframe でテストスクリプトを実行する 👉 起動までは時間がかかるが、テストの実行自体は早 い
📝 周辺ライブラリやプロトコルの組み合わせによって、同じ テストでも実行時間は異なる ⚠ かなり限られた状況での検証だったので、実運用だと違 う場合は十分ありうる 知見ある方はぜひ話しましょう! 最後に、テストの実行時間と一概に言っても...
daichi(だいち) 2022〜2025 Angular, Tools, CI/CD @da1chi24
• コンポーネントテストの手法とその効果を考える • 次世代のブラウザテスト自動化プロトコルWeb Driver BiDi • Playwright 01: Selenium
- Playwright architecture comparison • Browser Automation Tools Protocols – Webdriver vs CDP この発表で参考にさせていただいた資料一覧