Files
sanderling/examples/sample-app
pj 16e55086d8 fix(runner): surface focus-tap errors in InputText (#12)
* fix(runner): surface focus-tap errors in InputText action

A failed Tap/TapSelector before InputText was swallowed, so text typed
into the wrong field (or no field) still reported success. Return the
error so the step fails explicitly.

* feat(sample-app): add username EditText and snapshot

Gives the spec a real EditText target (content-desc: username_field)
so the InputText action path can be exercised end-to-end. The typed
value is mirrored into MainActivity.username and surfaced as the
"username" snapshot for spec assertions.

* feat(sample-app): exercise InputText action against username field

Adds typeUsername action and usernameNeverShrinks property to the
sample spec, and extends the integration test to assert the bundled
spec emits an InputText(desc:username_field, "alice") action and that
the property correctly violates when a snapshot reports a shorter
string.
2026-04-18 16:51:35 +07:00
..

uatu sample app

Tiny Android app wired to the uatu SDK, plus a TypeScript spec that drives it. Use it as a reference for integrating uatu into your own app.

Prerequisites

  • uatu CLI on PATH (see getting started)
  • Android SDK installed (uatu auto-discovers adb and emulator under $ANDROID_HOME, ~/Library/Android/sdk, or the Homebrew cask; nothing to export if you use a standard install)
  • just task runner

Install the app

just install

Run a test

just test

If no device is connected, uatu boots the single AVD it finds. With multiple AVDs, pick one:

just AVD=Pixel_7 test

Persistent settings can live in .env alongside the justfile:

AVD=Pixel_7
DURATION=5m

Traces land in ./runs/<timestamp>/.

How the pieces connect

  • android/build.gradle.kts depends on io.github.priyanshujain:sdk-android from Maven Central
  • android/src/main/kotlin/.../SampleApplication.kt calls Uatu.start(this) and registers snapshot extractors (app_state, click_count)
  • spec.ts imports @uatu/spec (see package.json), reads those snapshots, asserts properties on them, and weights the actions the fuzzer picks from
  • just test invokes uatu test against the installed APK on the named AVD