feat: physical device support, WiFi testing, HTTP fallback (v0.5.1)#39
Merged
feat: physical device support, WiFi testing, HTTP fallback (v0.5.1)#39
Conversation
|
All contributors have signed the CLA ✍️ ✅ |
066e16b to
62ce902
Compare
bb3f0ec to
476214a
Compare
476214a to
71c5d4e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Complete physical device support for iOS and Android, with HTTP fallback transport and WiFi testing mode.
Physical Device Infrastructure
xcrun devicectl, token viaidevicesyslog, port forwarding via managediproxyPOST /probe/rpc): stateless transport for physical devices — each command is an independent HTTP request, no persistent connection to dropProbeClientinterface: both WebSocketClientandHTTPClientsatisfy it, enabling transport-agnostic executionWiFi Testing (recommended for physical iOS)
--host <ip>flag to connect directly to device WiFi IP (no USB, no iproxy)--token <token>flag to skip USB-dependent token auto-detection--dart-define=PROBE_WIFI=truebinds agent to0.0.0.0for network accessProbeScript Enhancements
tap "X" if visiblesyntax — silently skips when widget not found (also works withtype,clear,long press,double tap)take screenshot "name"— no longer requirescalledkeywordonTapfallback forSemantics-wrapped widgets on physical devicesConnection Resilience
EnsureIProxy()/EnsureADB()— automatic tool validation and stale process cleanupPhysical Device Behavior
tap,type,see, etc.restart the apptake screenshotclear app dataallow/deny permissionset locationFiles Changed (3 commits, 38 files, +1727 / -131)
New files:
internal/probelink/http_client.go— HTTP POST transportinternal/probelink/http_client_test.go— HTTP client testsinternal/probelink/iface.go—ProbeClientinterfaceinternal/ios/devicectl.go— Physical iOS device opscmd/probe,cli,ios,devicepackagesCore changes:
probe_agent/lib/src/server.dart— HTTP POST endpoint + WiFi bind supportprobe_agent/lib/src/executor.dart— Direct onTap fallback, unique pointer IDsprobe_agent/lib/src/finder.dart— Visibility filteringprobe_agent/lib/src/agent.dart— Profile/release mode, PROBE_WIFI supportinternal/parser/—if visiblesuffix, screenshot name fixinternal/runner/— ProbeClient interface, auto-reconnect, UseHTTP flaginternal/cli/test.go— --host, --token flags, iproxy/ADB managementinternal/device/manager.go— EnsureADB, EnsureIProxy, physical detectionTest Results
go test ./...— 115+ tests pass across all 15 packagesgo build ./...— compiles cleanlyTest plan
if visiblesyntax parsing and executioncalledkeyword🤖 Generated with Claude Code