dánwòdánwò

Platforms

Android setup

Get this machine ready to test a React Native or Expo app on an Android emulator with danwo.

danwo runs the same tests, invariants and fault matrix against a React Native or Expo app on an Android emulator. The app's calls go through danwo's proxy, so Stripe and the rest are emulated there too. This page gets the machine ready.

What you need

NeedWhy
Android Studioit brings the Android SDK (adb, the emulator) and a JDK
a Google APIs system imagedanwo needs root to trust its certificate; Play Store images can't be rooted
an AVDthe virtual device danwo boots

Create the emulator

Install Android Studio

Install it, open it once, and let it download the SDK.

Add a Google APIs image

In Device Manager, create a device and pick a system image whose target says Google APIs, not Google Play. On Apple silicon use arm64-v8a; on Intel and Linux, x86_64:

system-images;android-34;google_apis;arm64-v8a

Name the AVD

Give it a short name, such as danwo_spike. Your config refers to it by that name.

Check the machine

npx @danwo/cli device doctor --platform android
ok    Android SDK: ~/Library/Android/sdk
ok    adb: ~/Library/Android/sdk/platform-tools/adb
ok    emulator: ~/Library/Android/sdk/emulator/emulator
ok    system images: rootable: system-images/android-34/google_apis/arm64-v8a
ok    AVD danwo_spike: system-images/android-34/google_apis/arm64-v8a
ok    JDK: /Applications/Android Studio.app/Contents/jbr/Contents/Home

Each line is ok, warn or a failure with what to do. It also warns about an emulator left with a proxy setting from an earlier run, and about images missing their files.

Apps that pin their TLS certificates ignore danwo's certificate, so their calls can't be emulated. Turn pinning off in the build you test.

What works on Android today

WorksNot yet
locators, expect, screenshots, the agenthover, setInputFiles, dragTo
Custom Tabs (a web checkout inside the app)reading mail from a test, saved sessions
the fault matrix, on one emulator or severalFlutter apps (their accessibility tree is thin)
time travel for your services and backendmoving the device's own clock

Next

On this page

Run it on every pull request

A GitHub check and one comment per pull request, with the flight records attached.

Set up CI