Files
sanderling/examples/sample-app
pj 00f66ba48d fix: pre-v0.1 review feedback (#14)
* fix(sdk-android): add @JvmOverloads to Uatu.start

Java callers can now invoke start(application) without supplying a
Configuration, matching the Kotlin default-arg ergonomics.

* feat(agent): add protocol_version to HELLO handshake

ProtocolVersion=1 lives on Message and is set by Hello(). Server.Accept
rejects mismatches with a clear error. SDK upgrades that don't change
the wire format keep the same protocol_version; bump on breaking changes.

* test(agent): assert protocol_version in Hello round-trip

* feat(sdk-android): send protocol_version=1 in HELLO

Mirrors agent.ProtocolVersion on the Go side. Bump in lockstep with
the Go constant when the wire format breaks.

* chore(sample-app): pull @uatu/spec from npm next tag

Replaces the file: dep. Copy-paste users can now npm install against
the registry. The release workflow publishes pre-release tags to
npm dist-tag 'next', so the sample tracks the latest rc without
manual version bumps. Lockfile currently resolves to 0.0.1-rc3.
2026-04-18 18:00:12 +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 connected device (or the AVD named via AVD=)