Amplifier bundle · now public

android-tester

Agents that actually see the emulator screen — boot, install, drive, and verify what really rendered.

github.com/microsoft/amplifier-bundle-android-tester
The problem

Four fixes shipped “verified.”
All four were broken on open.

Every one passed unit tests. Every one passed server-side curl. The user found each one broken the moment they opened the app.

The failure is always at the render / interaction layer — and no agent had ever seen the screen. That gap is the entire reason this bundle exists.

What it is

One tool. Three agents.

android_inspector · 19 operations

Emulator lifecycle · install / launch · screenshot · ui_dump · find · tap · type_text · swipe · wait_for · logcat · doctor · create_avd

Specialist agents

  • android-operator — drives the app
  • android-visual-tester — layout & visual
  • android-debugger — root-cause
The rule everything rests on

The accessibility tree is the sensor.
The screenshot is for judgment — never targeting.

Ask a vision model where a button is and it will confidently tell you. It will also be wrong in a way Android will never report.

Coordinates always come from ui_dump. Raw-coordinate tapping exists as a separate tap_xy that always returns a warning.

Measured · same screenshot, same button

61px across. 93px down. Outside the button.

vision model estimate
uiautomator — truth
SourceCenter
uiautomator(941, 168)
vision model(880, 75)
delta−61 px, −93 px
Estimated center falls OUTSIDE the real button.

Android raises no error. The tap hits nothing — or a neighbouring field. One recorded run typed a server URL into the API-key field and reported success.

Proof · pointed at a real app, no hints

It found two defects nobody had reported.

Neither was caught by the existing tests. It also retracted its own false positive after re-testing under controlled pacing.

Multi-session safety

Three projects, one host, no collisions.

Three concurrent boots of the same AVD used to kill all three — an AVD's disk state cannot be opened twice.

Proven with three separate OS processes: one took the lease and booted on port 5558; the other two refused in 0.1s, naming the owning pid, its port, and how long it had been held.
Where it runs

aarch64 Linux included — not an afterthought.

Run doctor first — it reports every host problem at once, each with its fix, instead of failing one at a time.

Verification

Numbers, not adjectives.

332
unit tests
0
lint / type errors
PASS
bundle validation
14/14
MS repo audit

Every capability was proven against a live emulator — not only unit-tested.

Get it

Install, then run doctor.

amplifier bundle add \
  git+https://github.com/microsoft/amplifier-bundle-android-tester@main#subdirectory=behaviors/android-tester.yaml \
  --app

Then just ask an agent to test your app. It will boot the emulator, install the APK, drive the UI, and tell you what is actually broken.

github.com/microsoft/amplifier-bundle-android-tester
More Amplifier Stories →
← → navigate