Write tests your whole team can read. Execute with direct widget-tree access — no accessibility layer, no WebDriver overhead.
test "user can log in" open the app tap "Sign In" type "user@test.com" into "Email" type "secret" into "Password" tap "Continue" see "Dashboard" <!-- 7 lines. Done. -->
Two components. One WebSocket. Zero flakiness.
Parses .probe files, manages devices, dispatches commands, generates reports
Go · 15MB binaryRuns inside your app. Walks widget tree, executes actions, captures screenshots
Dart · dev dependencyNo plugins to install. No extra packages. Batteries included.
ProbeScript reads like English. No locators, no async/await. QA, product, and engineering can all read the tests.
The Dart agent in your app reads the live widget tree. No XPath, no accessibility bridge, and widget keys work as selectors.
Re-runs on file save with hot-reload awareness. No recompilation of the test between runs.
Same tests on Android emulators, iOS simulators, and physical devices. WiFi mode for physical iOS devices. Permissions, lifecycle, and platform quirks handled automatically.
Record taps, swipes, and text input on a real device. FlutterProbe writes the .probe file as you interact. probe test --record also keeps a step-by-step recording of each test: screenshots, widget trees and the app's Dart HTTP calls, viewable offline.
Screenshot baselines with configurable pixel thresholds — full screen or cropped to a single widget. Catch unintended UI changes before they ship.
Mock API responses directly in test files. No external packages, no separate mock server.
see "checkout looks correct" with ai — against your own OpenAI/Anthropic key or a fully local model. Screenshot redaction built in; nothing routes through our servers.
Drive pickers and share sheets outside the Flutter tree with tap native and see native. Android via uiautomator — no extra dependencies.
JUnit XML, JSON, HTML reports. Official Docker image. GitHub Actions workflow included. Test sharding with --shard N.
Same login test. Different experience.
probe-convert handles 7 source formats. 100% construct coverage.
Single binary. No runtime deps.
brew install AlphaWaveSystems/tap/probeScaffolds config and test directory.
probe initPlain English in a .probe file.
tests/login.probeAgainst any connected device.
probe test tests/ -vYes. FlutterProbe supports physical iOS devices via USB or WiFi. WiFi is recommended — it provides a stable, drop-free connection. USB-C cables can cause intermittent disconnects due to charge/data mode switching. Build with --dart-define=PROBE_WIFI=true and connect with --host <device-ip>.
USB-C cables switch between charging and data transfer modes, which momentarily disconnects the device. FlutterProbe auto-reconnects (up to 2 retries), but this adds latency. Switch to WiFi testing to eliminate drops entirely, or use a USB-A cable which doesn’t have this issue.
restart the app work over WiFi?Yes. The CLI pre-shares a token with the agent before restarting. After restart, the agent uses the pre-shared token — no USB log reading needed.
clear app data, allow/deny permission, and set location are skipped with a warning on physical iOS devices (no simulator sandbox access). On Android physical devices, only set location is unsupported. All other operations work normally.
Add flutter_probe_agent as a dev dependency and call ProbeAgent.start() in your main entrypoint, guarded by --dart-define=PROBE_AGENT=true. No other changes needed. The agent is stripped from release builds.
Yes. FlutterProbe includes GitHub Actions workflows for Android (ubuntu + emulator) and iOS (macOS + simulator) with 3-way test sharding, automated app build, and HTML report generation. Use --format junit -o results.xml for CI integration.
Probe Cloud, hosted test reports, is a preview and the service is not live yet. The first 10 teams try it free during the beta and get 50% off for life when paid plans launch, in exchange for feedback. The CLI stays free.
Free to use for any purpose, including production, except offering a competing hosted testing service (the CLI is under BSL 1.1; the Dart agent is MIT).