mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-02 11:07:10 +00:00
* feat(cli): add Version var and version subcommand * build(gradle): introduce uatu.version property for lockstep releases * build(sdk-android): swap GitHub Packages for vanniktech Maven Central plugin * build(spec-api): make package publish-ready for npm * ci(release): add goreleaser config for cross-platform uatu CLI builds * ci: add ci and release GitHub Actions workflows * ci: restrict ci.yml to PR + workflow_dispatch (no direct push to master) * docs(release): add local release targets, env example, and install docs * build(sdk-android): make signAllPublications conditional on signing key * ci(release): stage sidecar JAR at embed path before go build * chore(spec-api): regenerate package-lock for updated package.json * ci: install protoc-gen-go plugins before buf generate * ci: bump Node to 22 (required for --experimental-strip-types)
@uatu/spec
TypeScript spec API for uatu — a property-based UI fuzzer for mobile apps.
Spec authors write specs in TypeScript that describe what an app should always do (safety invariants), generate weighted actions to exercise the app, and extract structured state from the accessibility tree. The uatu CLI picks up the spec and drives the app under test.
Install
npm install --save-dev @uatu/spec
Usage
import { extract, always, actions, Tap, weighted } from "@uatu/spec";
export const spec = {
extract: extract((tree) => ({
onHomeScreen: tree.some((n) => n.text === "Home"),
})),
always: always(({ state }) => state.onHomeScreen || !state.startedOnHome),
actions: actions(({ tree }) =>
weighted([
[1, Tap(tree.first((n) => n.text === "Checkout"))],
]),
),
};
Version compatibility
@uatu/spec is released in lockstep with the uatu CLI. Pin the same major/minor version as your installed uatu binary.
License
Apache-2.0