Michał Pierzchała
00ba0be101
fix: speed up and simplify scrollintoview @ref ( #87 )
2026-02-20 19:43:05 +01:00
Michał Pierzchała
2fd2bf50fe
chore: remove dead ios runner command paths ( #88 )
2026-02-20 19:38:16 +01:00
Michał Pierzchała
8eea063374
feat: add iOS device record support via runner ( #83 )
...
* feat: add iOS device record support via runner
* refactor: simplify record command pathways
* fix: harden iOS record runner failure handling
* chore: emit diagnostic on iOS record stop runner failure
* fix: clear ios device runner cache in build:xcuitest
* chore: drop unused clean-derived env from build script
* fix: stage iOS device recordings via runner temp file
* fix: prefer requested iOS record path with permission fallback
* fix: disable iOS record fallback for explicit output paths
* refactor: remove iOS record fallback staging path flow
* fix: resolve record output paths from request cwd
* chore: log resolved record output path in diagnostics
* fix: avoid app activation when starting iOS recording
* refactor: streamline iOS recording setup paths
* fix: copy iOS device recordings back to host path
* fix: copy iOS recordings from runner test container
* feat: add configurable iOS recording fps
* fix: disable xcode test diagnostics for runner sessions
* fix: use wall-clock timestamps for iOS recording
* feat: default iOS recording to uncapped fps
* fix: recover stale ios runner recording state
* fix: preserve app focus when starting iOS recording
* docs: clarify iOS device recording capture model
* fix: tighten iOS device record start ownership checks
* refactor: collocate iOS record context checks
* refactor: derive uncapped recorder timescale from interval
2026-02-20 18:41:07 +01:00
Michał Pierzchała
345b7eee7d
fix: harden ios runner resilience and cancellation ( #85 )
2026-02-20 17:18:37 +01:00
Michał Pierzchała
fc10613ecd
fix: harden iOS runner command execution ( #72 )
...
* fix: harden iOS runner command execution
* fix: tighten iOS runner error semantics
* fix: harden runner interactions after snapshot
2026-02-18 16:13:18 +01:00
Michał Pierzchała
99cc68463c
fix: align press/click behavior and honor fast press cadence on iOS ( #70 )
...
* fix: align press and click semantics and reduce iOS tap latency
* perf: batch repeated iOS taps in runner
* perf: add opt-in tap batching for repeated iOS presses
* perf: batch repeated iOS swipes in runner
* fix: preserve interaction series semantics in record/replay
* test: cover click/press interaction handler paths
* refactor: dedupe replay and interaction series helpers
* fix: unify press/click double-tap behavior
* refactor: add interactor doubleTap and alias docs
* refactor: normalize click alias to press path
2026-02-18 16:02:45 +01:00
Michał Pierzchała
106a5f661d
chore(breaking): remove AX snapshot backend and trim npm artifacts ( #62 )
...
* chore: remove AX snapshot backend and trim npm artifacts
* docs: remove AX backend references from commands page
* chore: update website
2026-02-17 12:00:21 +01:00
Michał Pierzchała
ac078905c6
refactor: stabilize iOS app/session and daemon startup flows ( #64 )
...
* refactor: stabilize iOS app/session and daemon startup flows
* fix: wait for android app launch completion
* fix: address review findings for iOS appstate and daemon flows
* fixups
2026-02-16 18:19:17 +01:00
Michał Pierzchała
06a8778157
Enable iOS device core parity and align docs/skills ( #55 )
...
* Add iOS device runner support and document platform matrix
* ios: make signing identity override-only
* ios: address PR55 review follow-ups
* docs: remove v1 phrasing from support messages
* ios appstate: prefer xctest before ax fallback
* docs: clarify ios runner derived path override behavior
* ios: harden runner polling and appstate fallback
* ios: remove automatic AX fallback paths
* docs: clarify no automatic AX fallback
* ios: replace ad-hoc runner poll sleep with retry policy
* Harden iOS runner timeouts and cleanup safety
* args: align scrollintoview schema with capabilities
* test: skip iOS integration flows on CI by default
2026-02-15 21:12:10 +01:00
Michał Pierzchała
64d27c18d0
Add consolidated gesture controls for press and swipe ( #54 )
...
* Add gesture series controls for press and swipe
* Normalize iOS swipe timing to safe duration
* Harden daemon startup for integration runs
2026-02-14 13:55:58 +01:00
Michał Pierzchała
613974ab71
Handle iOS system blocker alerts in snapshots ( #38 )
2026-02-11 19:05:19 +01:00
Michał Pierzchała
6a064f229d
fix: update IPHONEOS_DEPLOYMENT_TARGET to 15.6 ( #42 )
2026-02-11 10:07:58 +01:00
Michał Pierzchała
4aed3fba72
fix: support TouchableOpacity as [other] on iOS when has content ( #31 )
...
* fix: support TouchableOpacity as [other] on iOS when has content
* update snapshot ios
2026-02-09 19:07:04 +01:00
Michał Pierzchała
2e8680518d
fix: iOS snapshot not showing password fields ( #29 )
2026-02-09 13:29:05 +01:00
Michał Pierzchała
828284d7e3
fix: set min iOS deployment target to 15.6 ( #27 )
...
* fix: set min iOS deployment target to 15.6
* increase timeout for iOS
2026-02-09 12:39:02 +01:00
Michał Pierzchała
d2954f6fd3
fix: missing long-press on iOS simulator ( #26 )
...
* feat: for self-healing e2e tests; assertions
* fix: support long-press on iOS simulators via XCTest runner
The long-press command was failing on iOS simulators because dispatch.ts
called interactor.longPress() which mapped to a stub in ios/index.ts
that always threw UNSUPPORTED_OPERATION. Unlike press, type, fill, etc.,
the long-press case was missing the iOS simulator routing through the
XCTest runner.
Rather than adding yet another platform branch in dispatch.ts, this
refactors the Interactor abstraction to absorb runner routing internally.
getInteractor() now accepts an optional RunnerContext; when the device is
an iOS simulator, it returns an interactor whose tap/longPress/focus/
type/fill/scroll/scrollIntoView methods route through
runIosRunnerCommand. This removes 7 scattered if-ios-simulator branches
from dispatch.ts, making it impossible to forget runner routing for
future commands.
Changes:
- Swift runner: add longPress command type + longPressAt helper using
XCUICoordinate.press(forDuration:)
- runner-client.ts: add longPress to RunnerCommand type + durationMs field
- interactors.ts: add RunnerContext type, createIosSimulatorInteractor()
that routes through the XCTest runner, move invertScrollDirection here
- dispatch.ts: pass RunnerContext to getInteractor, remove all iOS sim
branching for interactor commands (-90 lines)
Co-authored-by: Cursor <cursoragent@cursor.com >
* restore attempts
* refactor: unify iOS interactor, remove dead input stubs
Since runnerContext is always passed and the capability matrix ensures
iOS only runs on simulators in v1, the two iOS interactor code paths
collapse into one: shared methods (open, close, screenshot) plus runner
overrides spread on top. No branch needed.
This deletes 7 dead iOS input stubs from ios/index.ts (pressIos,
longPressIos, focusIos, typeIos, fillIos, scrollIos, scrollIntoViewIos)
that only ever threw UNSUPPORTED_OPERATION errors.
Co-authored-by: Cursor <cursoragent@cursor.com >
* cleanup
* fixup save-script
* update
---------
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-02-09 12:06:26 +01:00
Michał Pierzchała
d8440a6645
fix: make fill clear input and progressively fill the input ( #17 )
...
* fix: make fill clear input and progressively fill the input
* fixup ios
* improve text fill reliability
2026-02-06 12:16:20 +01:00
Jano
992959c23e
feat(ios): add pinch gesture for zoom on iOS simulators ( #11 )
...
- Add 'pinch' CLI command: pinch <scale> [x y] (scale > 1 zoom in, < 1 zoom out)
- Implement in dispatch, runner-client (RunnerCommand + scale param), Swift runner
- Use double-tap + drag workaround for map zoom (tap center, drag up/down)
instead of XCUITest pinch(withScale:velocity:) which pans on map views
- Update commands.md and agent-device skill with pinch usage and best practices
- Fix skill reference: recording.md -> video-recording.md
Co-authored-by: Jano Detzel <jano.detzel@ewe-go.de >
2026-02-05 17:51:36 +01:00
Michał Pierzchała
d8b1800dc0
fix long-running timeouts for session app
2026-02-05 07:59:31 +01:00
Michał Pierzchała
1d6994440c
perf: improve xctest backend speed dramatically and make default
2026-02-04 22:35:18 +01:00
Michał Pierzchała
701a5ea31e
refactor ios-runner; add skills
2026-02-02 20:33:01 +01:00
Michał Pierzchała
24926c0351
improve grouping mechnism for tabbar etc
2026-02-02 17:32:16 +01:00
Michał Pierzchała
8845eb2c79
feat: home, app-switcher, wait for
2026-02-02 16:57:50 +01:00
Michał Pierzchała
0f90c61e7c
remove rect; adjust error messages
2026-02-02 14:06:11 +01:00
Michał Pierzchała
13dc88eb83
setup base publish
2026-01-31 18:23:16 +01:00
Michał Pierzchała
2221c886d0
make clicking work where it supposed to
2026-01-31 14:21:59 +01:00
Michał Pierzchała
fb53d72b63
feat: AX snapshot goes brrrr
2026-01-31 12:52:04 +01:00
Michał Pierzchała
f060fc7fca
snapshot accessibility tree
2026-01-30 21:05:58 +01:00
Michał Pierzchała
4da4745a6c
initial commit
2026-01-30 19:41:00 +01:00