Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
0
45
Scaling Emulators for Better Testing: Droidcon 2025
Amanjeet Singh
December 17, 2025
Tweet
Share
More Decks by Amanjeet Singh
See All by Amanjeet Singh
Scaling Android Emulators with Cloud
amanjeetsingh150
0
120
Maestro: A paradigm shift in UI testing
amanjeetsingh150
1
330
Chasing Performance Issues Methodically
amanjeetsingh150
0
390
Coroutines and Rx: A battle towards Asynchrony
amanjeetsingh150
1
210
Coroutines and Rx: A battle towards Asynchronicity
amanjeetsingh150
2
280
Journey of APK from Compile to Start
amanjeetsingh150
5
530
Journey to understand Observer and Pub-Sub Pattern
amanjeetsingh150
3
200
Dependency Injection on iOS
amanjeetsingh150
0
160
Journey of APK from compilation to installation
amanjeetsingh150
0
240
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.3k
Side Projects
sachag
455
43k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
1
110
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
286
14k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
A designer walks into a library…
pauljervisheath
210
24k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Designing for Performance
lara
610
69k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Making Projects Easy
brettharned
120
6.5k
Statistics for Hackers
jakevdp
799
230k
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 🙋