Tapp gives coding agents hands and eyes on iOS simulators, Android emulators and devices, and browser apps. Inspect screens, explore technical failures, save journeys as deterministic tests, and gate reviewed behavior in CI.
Or run the package directly: npx -y @aarwitz/tapp@latest init . --explore
Tapp drives the real target through its native accessibility surface, captures inspectable evidence, and keeps the same Flow and gate contract across supported platforms.
A generic XCUITest harness drives accessible simulator apps. No Tapp SDK, Appium, or WebDriverAgent is added to the app.
ADB and UIAutomator provide black-box driving on a connected emulator or device. Install an APK or let Tapp build a detected Gradle target.
Playwright Chromium explores an owned browser app and checks technical behavior such as failed requests, broken assets and links, uncaught exceptions, and placeholder links.
Use the Agent Skill first, call the npm CLI directly, add MCP for inline images and persistent sessions, or run the same deterministic gate in GitHub Actions.
Windows can host Android and web testing when their prerequisites are installed. Windows desktop UI apps such as WinForms, WPF, and WinUI are not currently supported targets.
Tapp can discover broadly, then distill the highest-value behavior into reusable Tasks and reviewable business contracts. The deterministic suite runs in CI without a model or API key.
tapp_open_appLaunch the app, get a screenshot + accessibility tree back in seconds.
tapp_session_*Interactive driving — the Playwright loop. Tap, type, swipe, back, wait.
tapp_exploreAutonomous exploration on iOS, Android, or web returns an observation
{findings[], coverage, inconclusive}. It is not a release verdict.
tapp_flow_*Record a session as a replayable Flow, or generate one from a goal in plain English.
tapp_boot_simulatorSimulator + app install management — list, boot, install.
tapp_healthDiagnostics, capture history, marker parsing.
Tapp explores like a user and surfaces crashes, failed sign-ins, dead buttons, stuck loading
screens, navigation dead ends — and on web, uncaught exceptions, failed requests, and broken
links. Exploration observes (findings + evidence, never a ship verdict). The
gate judges: the same evidence + contracts + baseline always produce the same
outcome. A shallow run is inconclusive, never a pass. Optional model-assisted
authoring and advisory analysis never silently become deterministic gate authority.
Required deterministic checks ran and passed.
A deterministic violation or regression was observed.
Required evidence couldn't be obtained — fails closed.
Explore broadly, preserve important journeys as reviewed Flows or contracts, and install the same engine as a portable GitHub Action. Every PR answers one question with evidence: did this break important behavior that worked in the reviewed baseline?