pj
fe86e91aff
feat(web-runtime): named() and cross-extractor read guard
2026-06-01 21:06:55 +05:30
pj
159bcb6dce
feat(spec): add named() to Extracted handle type
2026-06-01 21:06:23 +05:30
pj
955d0a67ff
test(bundler): cover named-export globalThis registration
2026-06-01 21:04:19 +05:30
pj
e156fbc5f6
refactor(bundler): reuse registration trailer in web bundler
2026-06-01 21:04:17 +05:30
pj
868ab78c8e
refactor(bundler): inject globalThis trailer from spec named exports
2026-06-01 21:04:14 +05:30
pj
9a2cb61561
test(spec): cover fluent value generators determinism and chaining
2026-06-01 21:02:26 +05:30
pj
d65c0cd448
feat(spec): add fluent seeded value generators (strings/integers/emails/edgeCaseText)
2026-06-01 21:01:50 +05:30
pj
02d884c9b9
refactor(spec): extract samplerRng into shared sampler-rng module
2026-06-01 21:01:47 +05:30
pj
f249581792
docs(spec): rename pressKey generator to pressKeys
2026-06-01 20:59:17 +05:30
pj
3509156ea1
test(spec): update pressKeys generator export name
2026-06-01 20:59:05 +05:30
pj
fbab57f722
refactor(spec): update barrel re-exports for pressKeys
2026-06-01 20:58:53 +05:30
pj
4b4aa9f74e
refactor(spec): rename pressKey generator export to pressKeys
2026-06-01 20:58:23 +05:30
pj
0526ac4bfa
test(verifier): assert goja picker against the same cross-runtime golden
...
Drop the node-subprocess coupling: the goja side now installs a stub
__sanderlingHost__ with the fixed candidate list and asserts the committed
golden, matching pkg/spec/test/parity.test.ts.
2026-06-01 17:27:18 +05:30
pj
e3bb9aeeb2
test(spec): golden-fixture cross-runtime parity gate for the node picker
...
Replace the env-driven parity harness with a shared scenario module and a
committed golden the node picker asserts independently. The goja side asserts
the same golden, so neither runtime invokes the other at test time.
2026-06-01 17:27:14 +05:30
pj
0fa6968a5a
test(runner): summary reports no unsupported verbs on a clean run
2026-06-01 17:20:09 +05:30
pj
58b57d8f3c
test(verifier): unsupported verbs collected deduped in first-seen order
2026-06-01 17:20:09 +05:30
pj
65ba5345a3
test(verifier): cross-runtime goja/node parity gate on the shared picker
2026-06-01 17:20:04 +05:30
pj
dba182b96f
feat(testrun): surface unsupported verbs in run report
2026-06-01 17:14:39 +05:30
pj
1a17734ce0
refactor(runner): collapse WebDriver forks behind ActionSource/ExtractorSource
2026-06-01 17:14:35 +05:30
pj
0436c6094e
feat(verifier): collect unsupported verbs for the run report
2026-06-01 17:14:32 +05:30
pj
26f638f021
test(runner): bundle authored specs with the goja runtime entry
2026-06-01 16:59:23 +05:30
pj
aee5d8110a
test(verifier): author specs through the shared picker path
2026-06-01 16:59:23 +05:30
pj
f8e3baf439
refactor(runner): decode V8 actions via the unified DecodeAction; wire goja runtime
2026-06-01 16:59:18 +05:30
pj
411aefe25f
refactor(verifier): goja host + shared picker replace the duplicate Go picker
2026-06-01 16:59:12 +05:30
pj
59cb77d29c
refactor(verifier): one DecodeAction reads the unified flat wire contract
2026-06-01 16:59:04 +05:30
pj
50cb9e98cb
feat(spec): serialize selector-only string targets for the runner to re-resolve
2026-06-01 16:58:59 +05:30
pj
1a9d82711f
refactor(spec): drop the legacy goja bridge fields from action factories
2026-06-01 16:58:59 +05:30
pj
76c68b84ac
feat(testrun): bundle the goja runtime entry so the verifier runs the shared picker
2026-06-01 16:43:50 +05:30
pj
45366ddde5
feat(bundler): optional RuntimeFile prepends a runtime-entry import via stdin
2026-06-01 16:43:50 +05:30
pj
bf89f3b1cf
feat(spec): goja runtime entry wires the shared picker over the Go host
2026-06-01 16:42:48 +05:30
pj
7a5fc9aca5
refactor(spec): picker emits native selector + scroll endpoints, setup precedence
2026-06-01 16:42:38 +05:30
pj
6600994ef1
test(spec): cover the WEB Host surface and seed precision
...
Replace the deleted-picker tests with Host coverage: platform()==web,
seedHi() parsing a 64-bit seed without Number precision loss, seedLo()==0,
reportUnsupported warning, the installed next-action/extractor globals, and
queryCandidates verb routing + per-tick caching over a querySelectorAll stub.
2026-06-01 16:37:42 +05:30
pj
b23bd516a8
refactor(spec): web-runtime becomes the WEB Host, delegates to shared picker
...
Delete the duplicate picker (resolveGenerator/pickWeighted/randomTap/
randomInput/randomSwipe/randomPressKey/pickFromArray, the mulberry32 PRNG,
and the snake_case serializeAction) plus the __sanderling__ action factory
binds. web-runtime now implements Host (platform/seedHi/seedLo from the
injected 64-bit seed via BigInt, queryCandidates over the live DOM with a
per-tick cache, reportUnsupported) and calls installRuntime so both engines
run pick.ts over the same Pcg. Swipe/longPress/scroll follow the verbs.ts
matrix instead of silently returning null. Keeps the DOM helpers (selector
translation, queryElement, elementHandle, buildState, sanitize, extractors)
and the global locking. Net -214 lines (741 -> 527).
2026-06-01 16:37:37 +05:30
pj
b6a706699b
refactor(spec): installRuntime accepts a lazy root resolver
...
The web bundle imports the runtime before the spec, so the action root
on globalThis.actions only exists after the spec evaluates. Accept a
function form so the goja and web hosts resolve the root per tick.
2026-06-01 16:37:30 +05:30
pj
26e27832a2
test(spec): tolerate legacy bridge fields on builtin nodes
2026-06-01 16:31:37 +05:30
pj
58585b88b2
fix(spec): web runtime walks the spec's globalThis.actions data tree
2026-06-01 16:31:37 +05:30
pj
ee54c474b6
refactor(spec): bridge data-tree nodes to the legacy goja picker tags
2026-06-01 16:31:37 +05:30
pj
c9d8f165b1
test(spec): runtime-entry serializeAction wire-contract round-trip
2026-06-01 16:27:29 +05:30
pj
51200ed829
test(spec): assert data-tree shapes for action factories
2026-06-01 16:27:29 +05:30
pj
804cee70d2
feat(spec): export LongPress/Scroll/longPresses/scrolls factories
2026-06-01 16:27:29 +05:30
pj
e18feff5fe
feat(spec): shared runtime-entry installs next-action over pick.ts
2026-06-01 16:24:24 +05:30
pj
06ae965387
refactor(spec): wire from() sampling through the picker rng
2026-06-01 16:24:24 +05:30
pj
fe3ebd0484
refactor(spec): actions.ts returns pure GeneratorNode data trees
2026-06-01 16:24:20 +05:30
pj
b34f73f3f7
test(spec): picker draw-order and determinism
2026-06-01 16:13:53 +05:30
pj
3e9f0b9367
test(spec): verb matrix and warn-once semantics
2026-06-01 16:13:53 +05:30
pj
d253d68b52
feat(spec): deterministic shared action picker
2026-06-01 16:13:47 +05:30
pj
a4bbd71e04
feat(spec): verb support matrix and warn-once helper
2026-06-01 16:13:47 +05:30
pj
af9dd6c741
feat(spec): action-tree types and Host interface
2026-06-01 16:13:44 +05:30
pj
882c3fb053
feat(spec): shared input corpus and press-key pools
2026-06-01 16:13:44 +05:30
pj
39f2197b2f
test(spec): assert pcg.ts matches the PCG golden fixture
2026-06-01 16:09:02 +05:30