mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-02 11:07:10 +00:00
a2dbcd15797d41ca27feb8faf32825b79158af7b
preflightDevice was called only after web and both iOS branches had already returned, so it never saw a platform other than android, and it returns nil for anything but ios. The comment above the call said it was Android's java check; Android's java check is in runPreflight. Its premise was wrong too: a physical iOS device is runner-only over usbmux and needs no JVM. The replacement test asserts an iOS host with no java passes preflight. Also corrects two comments in the same file that still described iOS as routing through the JVM sidecar, one of them naming an IosDriverBackend type that exists nowhere in the tree.
sanderling
Autonomous property-based testing for mobile and web apps.
You write rules that must always hold about your app. sanderling explores the app on its own for minutes or hours, performing thousands of taps, swipes, and inputs, and records every step where a rule breaks. No scripted test paths. One TypeScript spec runs against Android, iOS, and web builds of the same app.
import { extract, always } from "@sanderling/spec";
import { defaultActions } from "@sanderling/spec/defaults";
import { noUncaughtExceptions } from "@sanderling/spec/defaults/properties";
const balance = extract("balance", s =>
parseInt(s.ax.find({ testTag: "Balance" })?.text ?? "0", 10));
export const properties = {
noUncaughtExceptions,
balanceNeverNegative: always(() => balance.current >= 0),
};
export const actionsRoot = defaultActions;
Every run produces a trace: one JSON line and one screenshot per step. sanderling replay opens it in a web UI for stepping through actions, screenshots, property timelines, and violations.
Alpha. Android, iOS, and web (Chrome driver only). Full scope in the v0.1.0 roadmap.
Docs
- Introduction: what property-based testing is and how sanderling works
- Case study: Folio: sanderling finding a real bug in a mobile app
- Getting started: install the CLI and run it against Folio
- Spec language reference
- Examples: folio (KMP, Android/iOS/web), folio-web (React + Vite)
- Architecture for contributors
sanderling, a wading bird that probes the shoreline for bugs that lie beneath.
Languages
Go
74.6%
TypeScript
15.2%
Kotlin
5.5%
Shell
2.7%
Swift
1%
Other
0.9%