You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Browse filesBrowse the repository at this point in the historyBrowse files
authored and
Richard Wheeler
committed
feat(codegen): mobile capture (Layer 3), verified live; flip codegen to shipped (v5.1.0)
Add the native-mobile codegen capture layer and wire it into the CLI, then
mark the codegen recorder shipped across the docs.
mobile/codegen_capture.v + _test.v:
- Pure, offline-tested core: quote-aware accessibility-tree XML parser
(parse_nodes), smallest-area hit-test (hit_test_index), getevent stream
parser (GetEventParser), coordinate scaling (scale_point), wm-size /
getevent -lp parsers, and per-platform selector synthesis matching the
mobile/selectors.v priority (test-id -> resource-id/label -> text -> role
-> positional xpath).
- Live MobileRecorder (record_tap_at / record_assert_at / record_text /
flush_pending_edit / emit) reusing page_source / tap_at / element_attribute,
plus adb helpers (screen_size, touch_axis_max, start_touch_stream).
tools/codegen.v:
- Wire `android` (passive getevent loop, Enter to stop) and `ios` (assisted
tap/text/assert/done REPL), replacing the prior "not available" stub.
Verified: 24 offline tests; generated mobile program type-checks; and a live
round-trip on the Android emulator (Pixel AVD, API 34; UiAutomator2 v10.2.1)
re-resolved 5/5 synthesized selectors against the running tree.
Docs: flip codegen Planned->shipped in COMPARISON.md,
COMPARISON_WITH_PLAYWRIGHT.md, docs/preview/comparison-table.html, and
DocsPage.jsx; add CHANGELOG 5.1.0; update README; bump v.mod to 5.1.0.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: COMPARISON_WITH_PLAYWRIGHT.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -75,7 +75,6 @@ surface and BiDi for the event-driven features. Playwright achieves the same via
75
75
| Feature | Why deferred |
76
76
|---------|--------------|
77
77
| Real video capture | No standardized BiDi screencast yet; would need periodic screenshots + ffmpeg. The screenshot/PDF primitives are the building blocks. |
78
-
| Codegen / session recorder | Not built yet, but a real authoring-time gap — it bootstraps the locator-writing loop, which is the main cost of writing a suite. On the roadmap; a standards-based version would emit semantic `get_by_*` locators from the accessibility tree, not raw coordinates. |
79
78
80
79
---
81
80
@@ -154,7 +153,8 @@ last as it's the most driver-dependent).
154
153
Vebidor now offers Playwright-style ergonomics (one-call launch, lazy auto-waiting
See [COMPARISON_WITH_PLAYWRIGHT.md](COMPARISON_WITH_PLAYWRIGHT.md) for the full Playwright/Selenium feature mapping.
687
687
688
+
## ✨ What's New in v5.1.0
689
+
690
+
**🎬 Codegen / session recorder** — record a live session and emit runnable
691
+
vebidor source via [`tools/codegen.v`](tools/codegen.v). Web capture runs over
692
+
WebDriver-BiDi; **native mobile** capture is new — Android is passive (taps read
693
+
from `adb getevent`, hit-tested against the live accessibility tree), iOS is an
694
+
assisted REPL. Both synthesize semantic `get_by_*` locators rather than brittle
695
+
coordinates. Verified live on the Android emulator (5/5 synthesized selectors
696
+
re-resolved on-device). See [CODEGEN_HANDOFF.md](CODEGEN_HANDOFF.md).
697
+
688
698
## ✨ What's New in v5.0.0
689
699
690
700
**📱 Native mobile automation** — a new [`vebidor.mobile`](mobile/) module that drives
@@ -867,11 +877,11 @@ For issues, questions, or contributions:
867
877
868
878
**Status**: Production-ready for web automation (Playwright-style API + WebDriver-BiDi on top of 100% Selenium parity) and native mobile automation (iOS via WebDriverAgent + Android via UiAutomator2). 🎉
869
879
870
-
**Version**: 5.0.0 (adds `vebidor.mobile` — native iOS/Android app automation; web stack unchanged: Playwright-style Locators/assertions, `launch()`, WebDriver-BiDi, mobile emulation, 4-browser support)
880
+
**Version**: 5.1.0 (adds a codegen recorder for web + native mobile — emits semantic `get_by_*` locators; on top of v5.0.0's `vebidor.mobile` and the unchanged web stack: Playwright-style Locators/assertions, `launch()`, WebDriver-BiDi, mobile emulation, 4-browser support)
**Latest Update**: 2026-06-03 - v5.1.0 codegen recorder for web + native mobile (a11y-tree → semantic `get_by_*` locators; mobile capture verified live on the Android emulator)
<tr><tdclass="feature">Codegen recorder</td><tdclass="has"><spanclass="em">✅</span> Web + mobile</td><tdclass="has"><spanclass="em">✅</span></td><tdclass="note">emits semantic <code>get_by_*</code> locators (a11y-tree → not raw coords)</td></tr>
0 commit comments