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
Scaling Emulators for Better Testing: Droidcon ...
Search
Amanjeet Singh
December 17, 2025
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Scaling Emulators for Better Testing: Droidcon 2025
Amanjeet Singh
December 17, 2025
More Decks by Amanjeet Singh
See All by Amanjeet Singh
Scaling Android Emulators with Cloud
amanjeetsingh150
0
150
Maestro: A paradigm shift in UI testing
amanjeetsingh150
1
370
Chasing Performance Issues Methodically
amanjeetsingh150
0
430
Coroutines and Rx: A battle towards Asynchrony
amanjeetsingh150
1
270
Coroutines and Rx: A battle towards Asynchronicity
amanjeetsingh150
2
340
Journey of APK from Compile to Start
amanjeetsingh150
5
620
Journey to understand Observer and Pub-Sub Pattern
amanjeetsingh150
3
260
Dependency Injection on iOS
amanjeetsingh150
0
210
Journey of APK from compilation to installation
amanjeetsingh150
0
300
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
350
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
430
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
73
41k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
360
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
400
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
660
The Language of Interfaces
destraynor
162
27k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Why Our Code Smells
bkeepers
PRO
340
58k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
Transcript
Scaling Emulators for Better Testing Amanjeet Singh https://www.amanjeet.me/
• Open source • Community > 5k+ members • Stars
~ 9k ⭐ • Cross Platform Maestro: E2E testing Framework
Why Moving to Cloud?
Why Moving to Cloud? “Running parallel tests, faster feedback for
releasing apps”
How to run on cloud?
Cloud Providers
Cloud Providers
Self Hosted
Self Hosted
Self Hosted
Self Hosted
Why Self Hosted?
Why Self Hosted in 500 mg app?
Why Self Hosted in 500 mg app? • Add to
cart fl ow in fl aky network.
• Launching 500mg consumer app on TvOS/WatchOS • Add to
cart fl ow in fl aky network. Why Self Hosted in 500 mg app?
• Supporting 500mg app for multiple locale • Launching 500mg
consumer app on TvOS/WatchOS • Add to cart fl ow in fl aky network. Why Self Hosted in 500 mg app?
• Supporting 500mg app for multiple locale • Launching 500mg
consumer app on TvOS/WatchOS • Add to cart fl ow in fl aky network. • You don’t want to spend money 🤣 Why Self Hosted in 500 mg app?
• Supporting 500mg app for multiple locale • Launching 500mg
consumer app on TvOS/WatchOS • Add to cart fl ow in fl aky network. • You don’t want to spend money 🤣 More Control Why Self Hosted in 500 mg app?
Helping Tom 👨💻 From 500mg
Project: Setup Emulators Infra
• Setup Android Virtual Devices (AVDs) • Giving AVDs superpowers
• Deployment of AVDs and Launching them Project: Setup Emulators Infra
Setup Android Virtual Devices (AVDs) • CLI ✅, Android Studio
GUI ❌
Setup Android Virtual Devices (AVDs) • CLI ✅, Android Studio
GUI ❌ • CLI ✅, Android Studio GUI Creating AVD Downloading AVDs Selecting the con fi gurations
• Download and Creating AVDs Setup Android Virtual Devices (AVDs)
• Applying con fi guration to AVD Setup Android Virtual
Devices (AVDs)
Super Powers Unlocked
Super Powers Unlocked Issue I: API 29 breaks in every
other release - Crash rate stuck at ~94% 📉
Super Powers Unlocked Issue I: API 29 breaks in every
other release - Crash rate stuck at ~94% 📉
Super Powers Unlocked Issue II: Expanding to watchOS + tvOS
— need platform parity ⌚📺
Super Powers Unlocked Issue II: Expanding to watchOS + tvOS
— need platform parity ⌚📺
Super Powers Unlocked Issue III: New Android versions every year
— must stay ahead 🚀
Super Powers Unlocked Issue III: New Android versions every year
— must stay ahead 🚀
Setup Android Virtual Devices (AVDs) Project: Setup Emulators Infra ✅
android-36, 8 Gib emulator, arm-64, 4 CPU core 👉
Setup Android Virtual Devices (AVDs) Project: Setup Emulators Infra ✅
Launch Emulators ✅
Let’s Deploy 🚀
It works, But 🥲
Issue Category I
Issue Category I • Issue I: Chrome Welcome Screen
Issue Category I • Issue I: Chrome Welcome Screen •
Issue II: Timing issues, due to animations
Issue Category I • Issue I: Chrome Welcome Screen •
Issue III: Different apps interfering • Issue II: Timing issues, due to animations
Issue Category I • Issue I: Chrome Welcome Screen •
Issue III: Different apps interfering • Issue II: Timing issues, due to animations • Issue IV: I don’t know where my test taps
Issue Category I • Issue V: Screen recording limit of
3 mins • Issue I: Chrome Welcome Screen • Issue III: Different apps interfering • Issue II: Timing issues, due to animations • Issue IV: I don’t know where my test taps https://maestro.dev/blog/ fi xing-androids-3-minute-screen-recording-limitation
Tom-Man got Covered 👨💻
Tom-Man got Covered 👨💻
Tom-Man got Covered 👨💻 Super Power: Emulator Snapshots
Emulator Snapshots
Emulator Snapshots • Boot Emulator
Emulator Snapshots • Boot Emulator • Apply the adb con
fi gurations
Emulator Snapshots • Boot Emulator • Apply the adb con
fi gurations • Backup the qcow2 image and swap it with original
Emulator Snapshots • Boot Emulator • Apply the adb con
fi gurations • Backup the qcow2 image and swap it with original • Launch the emulator and don’t save snapshot during test fi nish
Issue Category II Product Team @ 500mg
Requirement I • Requirement I: We need to test 500
mg with different locales
Tom-Man discovering Powers! 👨💻
Locale Superpower ✅
Requirement II • We must test 500mg under flaky, edge-speed
networks, because users are not able to order
Super Power: Emulator Options 👨💻
Super Power: Emulator Options 👨💻
Super Power: Emulator Options 👨💻
• We must test 500 mg in low ram device
Super Power: Emulator Options 👨💻
Issue Category III
Issue Category III • Emulator disconnects in middle of test,
adbd dies randomly.
Issue Category III • Emulator disconnects in middle of test,
adbd dies randomly. • 500 mg flow for KYC works locally but not on cloud 🥲
Issue Category III • Emulator disconnects in middle of test,
adbd dies randomly. • 500 mg flow for KYC works locally but not on cloud 🥲 Issue X: Only happens on cloud and not local 👉
Super Power: Emulator Logs 👨💻
Super Power: Emulator Logs 👨💻 Idea: Using emulator logs around
the time of failure for better debugging
Super Power: Emulator Logs 👨💻 Idea: Using emulator logs around
the time of failure for better debugging
Super Power: Emulator Logs 👨💻 Idea: Using emulator logs around
the time of failure for better debugging
POV of CI at 500mg! • Emulator Snapshots • Emulator
Command line Options • Emulator logs • 500mg Test Driver APK for Locale
Finally Works ✅
Fin 🙋