pj 9abd0511bd fix(verifier): refresh predicate errors per step
EvaluateProperties short-circuits once an Always-property latches to
violated, so the underlying goja predicate stops being called and
formula.err keeps whatever it threw at step 1. The runner logs
PredicateError every step a property is violated, which made every
subsequent log line repeat the step-1 throw. That looks like the spec
runtime is seeing stale state, but it is just stale error reporting.

EvaluateProperties now invokes every registered predicate once per step
purely to refresh formula.err. Verdicts are unaffected. The thunk
itself stops latching so the new value wins on whichever path runs first.
2026-04-26 15:44:01 +07:00
2026-04-25 20:04:29 +07:00
2026-04-25 20:04:29 +07:00
2026-04-25 20:04:29 +07:00
2026-04-25 20:04:29 +07:00

sanderling

Autonomous property-based testing for mobile apps. Specs in TypeScript. Core in Go. Drives the app under test through Maestro.

Alpha. Android emulator only. Full scope in the v0.1.0 roadmap.

Docs

After a sanderling test run, browse traces locally with sanderling inspect. It opens a web UI for stepping through actions, screenshots, snapshots, residual formulas, and exceptions.


sanderling

sanderling, a wading bird that probes the shoreline for bugs that lie beneath.

S
Description
No description provided
Readme Apache-2.0
51 MiB
0 Stars 1 Watchers 0 Forks
Languages
Go 74.6%
TypeScript 15.2%
Kotlin 5.5%
Shell 2.7%
Swift 1%
Other 0.9%