mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-02 19:17:10 +00:00
* fix(runner): warn on malformed screen snapshot screenFromSnapshot swallowed json.Unmarshal errors, so a non-string screen value silently became "" in the step log and trace while the verifier still saw the raw JSON. Return the error and warn at the call site, matching the hierarchy warning pattern. * docs: clarify --avd is optional for uatu test The CLI accepts --avd as an empty-string default (cmd/uatu/main.go:49) and only requires it when no device is connected and multiple AVDs exist (cmd/uatu/android_env.go:63). Docs and examples that showed it as required or always-passed were misleading.
51 lines
1.4 KiB
Markdown
51 lines
1.4 KiB
Markdown
# 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](https://priyanshujain.github.io/uatu/manual/getting-started.html))
|
|
- 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
|
|
|
|
```sh
|
|
just install
|
|
```
|
|
|
|
## Run a test
|
|
|
|
```sh
|
|
just test
|
|
```
|
|
|
|
If no device is connected, uatu boots the single AVD it finds. With multiple
|
|
AVDs, pick one:
|
|
|
|
```sh
|
|
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=`)
|