zeno-mobile-runner 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +192 -2
- package/FEATURES.md +50 -7
- package/README.md +168 -120
- package/build.zig.zon +3 -3
- package/clients/README.md +60 -3
- package/clients/go/README.md +12 -0
- package/clients/go/zmr/client.go +142 -0
- package/clients/kotlin/README.md +18 -1
- package/clients/kotlin/build.gradle.kts +1 -1
- package/clients/kotlin/src/main/kotlin/dev/zmr/ZmrClient.kt +76 -1
- package/clients/python/README.md +19 -0
- package/clients/python/pyproject.toml +1 -1
- package/clients/python/zmr_client.py +33 -0
- package/clients/rust/Cargo.lock +1 -1
- package/clients/rust/Cargo.toml +1 -1
- package/clients/rust/README.md +25 -1
- package/clients/rust/src/lib.rs +201 -0
- package/clients/swift/README.md +18 -0
- package/clients/swift/Sources/ZMRClient/ZMRClient.swift +82 -0
- package/clients/typescript/README.md +16 -0
- package/clients/typescript/index.d.ts +12 -0
- package/clients/typescript/index.mjs +16 -0
- package/clients/typescript/package.json +1 -1
- package/docs/agent-discovery.md +151 -22
- package/docs/ai-agents.md +99 -11
- package/docs/benchmarking.md +49 -3
- package/docs/benchmarks/2026-06-09-android-workflow.md +73 -0
- package/docs/benchmarks/2026-06-09-android-workflow.results.jsonl +20 -0
- package/docs/benchmarks/2026-06-09-framework-baseline-status.md +32 -0
- package/docs/benchmarks/2026-06-09-ios-appium-comparison.md +115 -0
- package/docs/benchmarks/2026-06-09-ios-appium-comparison.results.jsonl +40 -0
- package/docs/benchmarks/2026-06-09-ios-demo.md +90 -0
- package/docs/benchmarks/2026-06-09-ios-demo.results.jsonl +20 -0
- package/docs/benchmarks/2026-06-09-ios-maestro-comparison.md +128 -0
- package/docs/benchmarks/2026-06-09-ios-maestro-comparison.results.jsonl +40 -0
- package/docs/benchmarks/2026-06-09-ios-workflow-comparison.md +143 -0
- package/docs/benchmarks/2026-06-09-ios-workflow-comparison.results.jsonl +40 -0
- package/docs/benchmarks/2026-06-09-ios-xctest-floor.md +106 -0
- package/docs/benchmarks/2026-06-09-ios-xctest-floor.results.jsonl +40 -0
- package/docs/benchmarks/README.md +36 -0
- package/docs/benchmarks/benchmark-lab-v1.json +155 -0
- package/docs/benchmarks/benchmark-lab-v1.md +95 -0
- package/docs/clients.md +26 -6
- package/docs/demo.md +40 -1
- package/docs/expo-smoke.md +8 -8
- package/docs/frameworks.md +10 -0
- package/docs/install.md +3 -2
- package/docs/npm.md +100 -4
- package/docs/production-readiness.md +123 -0
- package/docs/protocol-fixtures/core-session.responses.jsonl +1 -1
- package/docs/protocol.md +215 -16
- package/docs/scenario-authoring.md +18 -0
- package/docs/trace-privacy.md +9 -0
- package/docs/troubleshooting.md +7 -1
- package/examples/android-workflow.json +79 -0
- package/examples/ios-shim-workflow.json +79 -0
- package/examples/react-native-expo-workflow.json +75 -0
- package/npm/agents.mjs +16 -0
- package/npm/commands.mjs +9 -5
- package/package.json +6 -1
- package/prebuilds/darwin-arm64/zmr +0 -0
- package/prebuilds/darwin-x64/zmr +0 -0
- package/prebuilds/linux-arm64/zmr +0 -0
- package/prebuilds/linux-x64/zmr +0 -0
- package/schemas/README.md +4 -0
- package/schemas/discover-output.schema.json +83 -0
- package/schemas/draft-output.schema.json +58 -0
- package/schemas/explore-output.schema.json +94 -0
- package/schemas/inspect-output.schema.json +88 -0
- package/schemas/run-output.schema.json +2 -0
- package/scripts/benchmark-lab.py +253 -0
- package/scripts/create-android-demo-app.sh +324 -29
- package/scripts/create-ios-demo-app.sh +174 -7
- package/scripts/create-react-native-expo-demo-app.sh +727 -0
- package/scripts/demo.sh +3 -0
- package/scripts/install-ios-shim.sh +2 -2
- package/scripts/release-readiness.py +43 -0
- package/scripts/run-android-pilot.sh +35 -9
- package/scripts/run-ios-pilot.sh +11 -4
- package/shims/ios/ZMRShim.swift +10 -0
- package/shims/ios/ZMRShimUITestCase.swift +42 -0
- package/shims/ios/protocol.md +1 -0
- package/skills/zmr-mobile-testing/SKILL.md +28 -3
- package/src/cli_discover.zig +239 -0
- package/src/cli_draft.zig +924 -0
- package/src/cli_explore.zig +136 -0
- package/src/cli_import.zig +31 -15
- package/src/cli_inspect.zig +310 -0
- package/src/cli_output.zig +26 -2
- package/src/cli_run.zig +28 -0
- package/src/cli_trace.zig +45 -15
- package/src/cli_validate.zig +12 -6
- package/src/errors.zig +9 -0
- package/src/ios.zig +49 -12
- package/src/ios_shim.zig +36 -2
- package/src/json_rpc_methods.zig +85 -11
- package/src/json_rpc_params.zig +8 -0
- package/src/json_rpc_protocol.zig +1 -1
- package/src/json_rpc_trace.zig +112 -0
- package/src/main.zig +27 -2
- package/src/mcp.zig +209 -6
- package/src/mcp_protocol.zig +29 -1
- package/src/mcp_trace.zig +126 -4
- package/src/report.zig +186 -0
- package/src/runner.zig +26 -4
- package/src/runner_actions.zig +10 -0
- package/src/runner_diagnostics.zig +31 -1
- package/src/runner_events.zig +70 -7
- package/src/runner_native.zig +17 -1
- package/src/runner_waits.zig +82 -19
- package/src/scaffold.zig +28 -12
- package/src/scenario.zig +32 -4
- package/src/schema_registry.zig +4 -0
- package/src/version.zig +1 -1
- package/viewer/app.js +23 -3
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,196 @@ All notable changes to Zeno Mobile Runner are tracked here.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
## 0.2.0 (2026-06-10)
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Added a public-safe iOS simulator benchmark evidence pack with 20 repeated
|
|
12
|
+
runs of the generated iOS smoke scenario.
|
|
13
|
+
- Added a public-safe iOS simulator baseline runner benchmark comparison on the
|
|
14
|
+
same generated demo app.
|
|
15
|
+
- Added a second public-safe iOS baseline comparison plus a native shim floor
|
|
16
|
+
evidence pack for the generated demo app.
|
|
17
|
+
- Added a richer public-safe iOS workflow benchmark pack covering profile
|
|
18
|
+
entry, catalog selection, save, review, and final-state assertion on the
|
|
19
|
+
generated demo app.
|
|
20
|
+
- Added the first Android workflow benchmark pack for the generated demo app,
|
|
21
|
+
covering 20 repeated UIAutomator-path ZMR runs.
|
|
22
|
+
- Added a generated React Native/Expo benchmark fixture with stable `testID`
|
|
23
|
+
values, accessibility labels, deep-link setup, and Android/iOS ZMR workflow
|
|
24
|
+
scenarios.
|
|
25
|
+
- The trace viewer loads a served bundle directly from
|
|
26
|
+
`viewer/index.html?bundle=<url>`, so CI artifact links and shared triage can
|
|
27
|
+
open a trace without manual file selection.
|
|
28
|
+
- The iOS XCTest shim cold-build timeout is tunable with the
|
|
29
|
+
`ZMR_IOS_SHIM_TIMEOUT_MS` environment variable for slower CI hardware.
|
|
30
|
+
- Added a nightly `device-smoke` GitHub Actions workflow that runs the public
|
|
31
|
+
demo apps on a real Android emulator and iOS simulator and uploads traces,
|
|
32
|
+
reports, and redacted bundles as evidence artifacts.
|
|
33
|
+
- Added real captured screenshots under `docs/assets/` (trace viewer, device
|
|
34
|
+
screens, CLI failure-diagnosis loop, HTML report) plus
|
|
35
|
+
`scripts/capture-screenshots.sh` to regenerate them from fresh demo runs.
|
|
36
|
+
The assets ship in the repository only, not in the npm package.
|
|
37
|
+
- Added Mermaid architecture, verification-loop, trace-lifecycle, and
|
|
38
|
+
trace-to-test diagrams to the README and core docs, and rewrote the README
|
|
39
|
+
around the AI-coding-agent verification workflow.
|
|
40
|
+
|
|
41
|
+
### Fixed
|
|
42
|
+
|
|
43
|
+
- `zmr validate`, `zmr report`, `zmr export`, and `zmr import` now accept
|
|
44
|
+
flags before positional arguments, matching the documented command forms,
|
|
45
|
+
and unknown-flag errors print a help hint.
|
|
46
|
+
- Generated Android demo scenarios clear app state before launching so
|
|
47
|
+
repeated runs no longer fail on leftover screens from a previous session.
|
|
48
|
+
|
|
49
|
+
- Fixed generated iOS shim one-shot log file creation on macOS by using a
|
|
50
|
+
portable `mktemp` template with `XXXXXX` at the end.
|
|
51
|
+
- Skipped the slow iOS system-open confirmation probe for simulator custom URL
|
|
52
|
+
schemes while keeping it for universal web links.
|
|
53
|
+
|
|
54
|
+
## 0.1.8 (2026-06-06)
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
|
|
58
|
+
- `zmr-release-readiness --target production` now enforces an
|
|
59
|
+
`agent workflow smoke` gate, satisfied by the local release gate or
|
|
60
|
+
structured MCP/JSON-RPC, trace, discovery, validation, and redacted-export
|
|
61
|
+
evidence.
|
|
62
|
+
|
|
63
|
+
## 0.1.7 (2026-06-06)
|
|
64
|
+
|
|
65
|
+
### Added
|
|
66
|
+
|
|
67
|
+
- Added MCP `assert_visible`, `assert_not_visible`, and `assert_healthy` tools
|
|
68
|
+
so MCP agents can use assertion-grade checks without dropping to JSON-RPC.
|
|
69
|
+
- Added MCP `erase_text`, `hide_keyboard`, `wait_not_visible`, `wait_any`, and
|
|
70
|
+
`scroll_until_visible` tools so agents can cover common mobile flow control
|
|
71
|
+
without dropping to JSON-RPC.
|
|
72
|
+
- Added MCP `install_app`, `launch_app`, `stop_app`, `clear_state`, and
|
|
73
|
+
`swipe` tools so MCP agents can run full app lifecycle and gesture flows.
|
|
74
|
+
- Added MCP `open_link`, unscoped `type`, and `press_back` trace events so
|
|
75
|
+
trace-backed discovery sees full simple action sessions from MCP agents.
|
|
76
|
+
- Added MCP `trace_events` cursor metadata so MCP agents get `afterSeq`,
|
|
77
|
+
`nextSeq`, and `latestSeq` parity with JSON-RPC trace polling.
|
|
78
|
+
- Added JSON-RPC `trace.explain` and MCP `trace_explain` so live agents can
|
|
79
|
+
get the same failure summary, diagnostics, and next commands as
|
|
80
|
+
`zmr explain --json` without leaving the session.
|
|
81
|
+
- Added TypeScript, Python, Go, Rust, Swift, and Kotlin trace explanation helpers
|
|
82
|
+
so reference clients can call JSON-RPC `trace.explain` directly.
|
|
83
|
+
- Added `zmr explore --from-trace <trace-dir> --out <scenario.json> --goal
|
|
84
|
+
<goal> --include-actions --validate --json` as a review-first CLI
|
|
85
|
+
exploration handoff for agents. It reuses trace-backed discovery, carries the
|
|
86
|
+
goal in JSON, and returns explicit guardrails instead of claiming autonomous
|
|
87
|
+
crawling.
|
|
88
|
+
- Added JSON-RPC `trace.explore` and MCP `trace_explore` so live agents can
|
|
89
|
+
generate the same goal-carrying, review-required scenario draft without
|
|
90
|
+
leaving the active traced session.
|
|
91
|
+
- Added TypeScript `exploreTrace()`, Python `explore_trace()`, Go
|
|
92
|
+
`ExploreTrace()`, Rust `explore_trace()`, Swift `exploreTrace()`, and Kotlin
|
|
93
|
+
`exploreTrace()` helpers for the new JSON-RPC exploration method.
|
|
94
|
+
- Added trace discovery auditing: `trace.discover` records a `trace.discover` event
|
|
95
|
+
for JSON-RPC and MCP agent sessions so generated scenario candidates are
|
|
96
|
+
visible in the trace.
|
|
97
|
+
- Added `zmr draft --from-trace <trace-dir> --out <scenario.json> --json` for
|
|
98
|
+
trace-backed, review-first scenario drafting. The command reads the latest
|
|
99
|
+
semantic snapshot artifact and writes a conservative surface-smoke scenario
|
|
100
|
+
with `launch`, `snapshot`, and stable `assertVisible` checks only.
|
|
101
|
+
- Added `zmr draft --include-actions` so agent sessions can turn supported
|
|
102
|
+
successful trace actions into reviewable replay drafts while unsupported
|
|
103
|
+
events are skipped with warnings instead of guessed.
|
|
104
|
+
- Added `zmr discover --from-trace <trace-dir> --out <scenario.json>
|
|
105
|
+
--include-actions --validate --json` as the first-class trace-to-test handoff
|
|
106
|
+
for agents. It reuses the review-first draft engine, can validate the
|
|
107
|
+
generated scenario before returning, and reports `mode: "discover"` for
|
|
108
|
+
tooling.
|
|
109
|
+
- Added JSON-RPC `trace.discover` and MCP `trace_discover` so live agents can
|
|
110
|
+
generate the same trace-backed scenario candidate without shelling out to the
|
|
111
|
+
CLI after a session.
|
|
112
|
+
- Added JSON-RPC `scenario.validate` and MCP `scenario_validate` so agents can
|
|
113
|
+
validate generated or edited scenario files in-band before running them.
|
|
114
|
+
- Added TypeScript `discoverTrace()` and Python `discover_trace()` helpers for
|
|
115
|
+
the new JSON-RPC discovery method.
|
|
116
|
+
- Added TypeScript `validateScenario()` and Python `validate_scenario()`
|
|
117
|
+
helpers for in-band scenario validation.
|
|
118
|
+
- Added Go `DiscoverTrace()` and `ValidateScenario()` helpers so Go agents can
|
|
119
|
+
use the same trace-to-test and validation loop without raw JSON-RPC calls.
|
|
120
|
+
- Added Rust `discover_trace()` and `validate_scenario()` helpers so Rust
|
|
121
|
+
agents and host-side harnesses can use the same trace-to-test and validation
|
|
122
|
+
loop without raw JSON-RPC calls.
|
|
123
|
+
- Added Swift `discoverTrace()` and `validateScenario()` helpers so macOS
|
|
124
|
+
host-side agents can use the same trace-to-test and validation loop without
|
|
125
|
+
raw JSON-RPC calls.
|
|
126
|
+
- Added Kotlin `discoverTrace()` and `validateScenario()` helpers plus an
|
|
127
|
+
always-run source parity test so Kotlin host-side agents keep the same
|
|
128
|
+
trace-to-test and validation entry points even on machines without Gradle.
|
|
129
|
+
- Added a trace-backed discovery handoff to traced `zmr run --json`
|
|
130
|
+
`nextCommands`, so agents can generate a reviewable replay scenario directly
|
|
131
|
+
from a run summary.
|
|
132
|
+
- Added `zmr run --discover-out <scenario.json> --json` so traced runs can
|
|
133
|
+
write and validate the reviewable replay scenario before returning the run
|
|
134
|
+
summary.
|
|
135
|
+
- Added replay coverage metadata to `zmr draft --json`, `zmr discover --json`,
|
|
136
|
+
and embedded run discovery output so agents can see how many trace actions
|
|
137
|
+
became replay steps and how many were skipped.
|
|
138
|
+
- Added coordinate-complete `ui.swipe` trace replay so JSON-RPC sessions and
|
|
139
|
+
traced `zmr run` flows can carry swipes into generated replay scenarios
|
|
140
|
+
without guessing missing coordinates.
|
|
141
|
+
- Added traced `pressBack` replay parity for `zmr run`, so generated replay
|
|
142
|
+
scenarios preserve back-navigation steps from ordinary scenario runs.
|
|
143
|
+
- Added direction and timeout preserving `scrollUntilVisible` trace replay so
|
|
144
|
+
generated scenarios keep the original scroll intent from traced runs and
|
|
145
|
+
live agent sessions.
|
|
146
|
+
- Added selector and timeout preserving wait replay so trace-backed discovery
|
|
147
|
+
keeps successful `waitVisible`, `waitNotVisible`, and matched `waitAny`
|
|
148
|
+
steps from ordinary scenario runs.
|
|
149
|
+
- Added timeout context to native selector wait trace events and timeout
|
|
150
|
+
diagnostics, so real-device shim traces carry the same timing evidence as
|
|
151
|
+
snapshot-backed waits.
|
|
152
|
+
- Added replay metadata for successful `assertNoneVisible` and timed
|
|
153
|
+
`assertHealthy` trace events, so generated replay scenarios preserve
|
|
154
|
+
assertion intent instead of dropping those checks.
|
|
155
|
+
- Added selector and timeout preserving `assertVisible` and `assertNotVisible`
|
|
156
|
+
replay so trace-backed discovery keeps assertion intent distinct from waits.
|
|
157
|
+
- Added `zmr report --junit <report.xml>` so trace directories and benchmark
|
|
158
|
+
result directories can produce CI-friendly JUnit XML alongside HTML reports.
|
|
159
|
+
- Updated generated app report and reliability scripts to write `junit.xml`
|
|
160
|
+
beside `report.html` by default.
|
|
161
|
+
- Updated Android and iOS pilot wrappers to emit `junit.xml` beside every
|
|
162
|
+
generated `report.html`.
|
|
163
|
+
- Updated CI and tagged release workflows to retain generated run evidence as
|
|
164
|
+
GitHub Actions artifacts: CI keeps traces, coverage output, and the built
|
|
165
|
+
`zmr` binary for 14 days, while releases keep the generated `dist/` bundle
|
|
166
|
+
for 30 days.
|
|
167
|
+
- Updated artifact upload workflow steps to a Node 24-compatible
|
|
168
|
+
`actions/upload-artifact` major so CI stays ahead of GitHub Actions runtime
|
|
169
|
+
deprecations.
|
|
170
|
+
- Added `schemas/draft-output.schema.json` and included it in `zmr schemas
|
|
171
|
+
--json`.
|
|
172
|
+
- Added `schemas/discover-output.schema.json` and included it in `zmr schemas
|
|
173
|
+
--json`.
|
|
174
|
+
|
|
175
|
+
## 0.1.6 (2026-06-05)
|
|
176
|
+
|
|
177
|
+
### Added
|
|
178
|
+
|
|
179
|
+
- Added `zmr inspect --json` as a read-only app and agent handoff command. It
|
|
180
|
+
reports app-local config status, `.zmr/AGENTS.md` presence, configured
|
|
181
|
+
Android/iOS smoke scenarios, safe next commands, and explicit claim limits
|
|
182
|
+
without launching devices or writing tests.
|
|
183
|
+
- Added `schemas/inspect-output.schema.json` and included it in `zmr schemas
|
|
184
|
+
--json` for generated clients and agent tooling.
|
|
185
|
+
|
|
186
|
+
### Changed
|
|
187
|
+
|
|
188
|
+
- Tagged release workflow now uses npm trusted publishing instead of a
|
|
189
|
+
long-lived `NPM_TOKEN` secret.
|
|
190
|
+
- Fixed the tagged release publish step so npm receives the generated local
|
|
191
|
+
tarball instead of interpreting the path as a GitHub package spec.
|
|
192
|
+
- Updated the tagged release workflow to Node 24 so npm trusted publishing can
|
|
193
|
+
use the GitHub Actions OIDC identity with a current npm CLI.
|
|
194
|
+
- Added a public production-readiness checklist that ties release, framework,
|
|
195
|
+
reliability, trace privacy, and agent workflow claims to concrete evidence.
|
|
196
|
+
|
|
7
197
|
## 0.1.3 (2026-06-03)
|
|
8
198
|
|
|
9
199
|
### Fixed
|
|
@@ -329,8 +519,8 @@ All notable changes to Zeno Mobile Runner are tracked here.
|
|
|
329
519
|
- Tagged release workflow now publishes GitHub artifact attestation for release
|
|
330
520
|
archives and metadata.
|
|
331
521
|
- Tagged release workflow now builds the npm tarball, attests it, uploads it
|
|
332
|
-
with the release assets, and
|
|
333
|
-
|
|
522
|
+
with the release assets, and can publish with npm provenance from supported
|
|
523
|
+
CI.
|
|
334
524
|
- Release manifests and checksum verification now include generated npm
|
|
335
525
|
tarballs when present.
|
|
336
526
|
- Native selector wait timeouts now capture one final snapshot when possible,
|
package/FEATURES.md
CHANGED
|
@@ -22,7 +22,8 @@ state, and writes deterministic traces. It does not embed an LLM.
|
|
|
22
22
|
|
|
23
23
|
- npm-first installation with `zeno-mobile-runner` as a dev dependency.
|
|
24
24
|
- `npx zmr-wizard` scaffolds `.zmr/config.json`, Android and iOS smoke
|
|
25
|
-
scenarios, optional app package scripts,
|
|
25
|
+
scenarios, optional app package scripts, HTML/JUnit report scripts, and
|
|
26
|
+
`traces/` gitignore rules.
|
|
26
27
|
- `zmr init --app` provides the same app-local bootstrap for source and archive
|
|
27
28
|
installs.
|
|
28
29
|
- `.zmr/config.json` is schema validated, auto-discovered from app checkouts,
|
|
@@ -34,14 +35,44 @@ state, and writes deterministic traces. It does not embed an LLM.
|
|
|
34
35
|
|
|
35
36
|
- JSON-RPC v1 over newline-delimited stdio or localhost TCP.
|
|
36
37
|
- MCP stdio server with mobile-native tools for AI agents, including semantic
|
|
37
|
-
snapshots, selector actions, waits, trace polling,
|
|
38
|
+
snapshots, selector actions, waits, assertions, trace polling, trace
|
|
39
|
+
exploration, trace discovery, and trace export.
|
|
38
40
|
- `runner.capabilities`, `device.list`, `session.create`,
|
|
39
41
|
`observe.snapshot`, `observe.semanticSnapshot`, UI actions, waits,
|
|
40
|
-
assertions, live trace events,
|
|
42
|
+
assertions, scenario validation, live trace events, trace-backed exploration,
|
|
43
|
+
trace-backed discovery, and redacted trace export.
|
|
41
44
|
- TypeScript, Python, Go, Rust, Swift, and Kotlin reference clients.
|
|
42
45
|
- Machine-readable CLI output for `zmr version --json`, `zmr schemas --json`,
|
|
43
|
-
`zmr
|
|
46
|
+
`zmr inspect --json`, `zmr doctor --json`, `zmr devices --json`,
|
|
47
|
+
`zmr discover --json`, `zmr draft --json`, `zmr validate --json`,
|
|
44
48
|
`zmr run --json`, and `zmr explain --json`.
|
|
49
|
+
- Traced `zmr run --json` output includes executable follow-up commands for
|
|
50
|
+
reports, failure explanation, trace-backed scenario discovery, and redacted
|
|
51
|
+
export.
|
|
52
|
+
- `zmr run --discover-out <scenario.json> --json` can generate and validate a
|
|
53
|
+
reviewable replay scenario from the trace immediately after the run.
|
|
54
|
+
- `zmr explore --from-trace --goal ... --json` gives CLI agents a
|
|
55
|
+
goal-carrying, review-first exploration handoff with explicit guardrails,
|
|
56
|
+
replay coverage, validation, and deterministic next commands.
|
|
57
|
+
- JSON-RPC `trace.explore` and MCP `trace_explore` expose the same
|
|
58
|
+
goal-carrying, review-required trace exploration from active traced sessions.
|
|
59
|
+
- `zmr discover --from-trace` turns a traced agent session into a reviewable
|
|
60
|
+
scenario candidate and can validate the generated scenario before returning.
|
|
61
|
+
- `zmr draft --from-trace` turns a traced semantic snapshot into a reviewable
|
|
62
|
+
surface-smoke scenario with conservative `assertVisible` checks.
|
|
63
|
+
- `zmr draft --include-actions` can turn supported successful trace actions
|
|
64
|
+
into a replay draft while warning instead of guessing unsupported events.
|
|
65
|
+
Wait replay preserves selectors and timeouts when the trace records them.
|
|
66
|
+
Native selector wait traces include timeout context for successful waits and
|
|
67
|
+
timeout diagnostics.
|
|
68
|
+
Assertion replay preserves `assertVisible` and `assertNotVisible` selectors
|
|
69
|
+
and timeouts, `assertNoneVisible` selector arrays, and `assertHealthy`
|
|
70
|
+
timeouts when the trace records them.
|
|
71
|
+
Selector scroll replay preserves direction and timeout when the trace records
|
|
72
|
+
them.
|
|
73
|
+
- Draft and discover JSON include `replay` coverage metadata so agents can
|
|
74
|
+
compare trace action events considered for replay, generated replay steps,
|
|
75
|
+
and skipped events.
|
|
45
76
|
- Public JSON Schemas for scenarios, snapshots, semantic snapshots, action
|
|
46
77
|
results, trace events, protocol messages, setup diagnostics, and release
|
|
47
78
|
manifests.
|
|
@@ -58,6 +89,8 @@ state, and writes deterministic traces. It does not embed an LLM.
|
|
|
58
89
|
- Wait and retry behavior around transient observation failures.
|
|
59
90
|
- Import helper for a documented subset of common mobile-flow YAML commands
|
|
60
91
|
into native `.zmr/*.json` scenarios.
|
|
92
|
+
- Trace-backed draft helper for generating reviewable surface and replay
|
|
93
|
+
scenarios from observed UI state and successful supported trace actions.
|
|
61
94
|
|
|
62
95
|
## Traces And Diagnostics
|
|
63
96
|
|
|
@@ -68,6 +101,10 @@ state, and writes deterministic traces. It does not embed an LLM.
|
|
|
68
101
|
selected node details, payloads, artifact links, and snapshot replay
|
|
69
102
|
controls.
|
|
70
103
|
- `zmr explain` summarizes failed traces for humans and agents.
|
|
104
|
+
- `zmr report --junit <report.xml>` writes CI-friendly JUnit XML for trace
|
|
105
|
+
directories and benchmark result directories.
|
|
106
|
+
- Android and iOS pilot wrappers emit `junit.xml` next to generated HTML
|
|
107
|
+
reports, so CI can collect the same artifacts used by app-local scripts.
|
|
71
108
|
- Redacted `.zmrtrace` export can replace or omit screenshots, omit screen
|
|
72
109
|
recordings, and redact common secrets plus app-configured denylist fields.
|
|
73
110
|
|
|
@@ -75,6 +112,8 @@ state, and writes deterministic traces. It does not embed an LLM.
|
|
|
75
112
|
|
|
76
113
|
- `zmr-benchmark` repeats ZMR scenarios with pass-rate, failure-count, and p95
|
|
77
114
|
duration gates.
|
|
115
|
+
- Benchmark directories can be rendered as both HTML and JUnit XML artifacts
|
|
116
|
+
with `zmr report`.
|
|
78
117
|
- `zmr-benchmark-command` records normalized rows for app-local baseline
|
|
79
118
|
commands without hardcoding another tool.
|
|
80
119
|
- `zmr-compare-benchmarks` compares candidate and baseline rows into generic
|
|
@@ -89,17 +128,21 @@ state, and writes deterministic traces. It does not embed an LLM.
|
|
|
89
128
|
- Release archive builder with checksums, SPDX SBOM, third-party notices,
|
|
90
129
|
generated Homebrew formula, and `RELEASE_MANIFEST.json`.
|
|
91
130
|
- npm package tarball generation with bundled prebuilt binaries.
|
|
92
|
-
- `zmr-release-readiness` checks repeated app/device evidence
|
|
93
|
-
want a machine-readable readiness
|
|
131
|
+
- `zmr-release-readiness` checks repeated app/device evidence and the
|
|
132
|
+
agent workflow smoke for teams that want a machine-readable readiness
|
|
133
|
+
summary.
|
|
94
134
|
- Tagged release workflow with artifact attestation and optional npm
|
|
95
135
|
provenance publishing.
|
|
136
|
+
- CI workflow retains run traces, coverage output, and built runner artifacts
|
|
137
|
+
for 14 days; tagged release workflow retains the generated `dist/` bundle
|
|
138
|
+
for 30 days.
|
|
96
139
|
- Security, contribution, trace privacy, troubleshooting, protocol versioning,
|
|
97
140
|
app integration, benchmarking, and npm packaging docs.
|
|
98
141
|
- Reusable agent skill under `skills/zmr-mobile-testing/`.
|
|
99
142
|
|
|
100
143
|
## Current Limitations
|
|
101
144
|
|
|
102
|
-
- Current release status is `0.
|
|
145
|
+
- Current release status is `0.2.0`, a public developer preview rather than
|
|
103
146
|
a production-stable `1.0.0`.
|
|
104
147
|
- Physical iOS log capture is still simulator-first. Physical iOS screenshots
|
|
105
148
|
are available when the XCTest/XCUIAutomation shim is configured.
|