flowbaton

module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 6, 2026 License: Apache-2.0

README

FlowBaton

FlowBaton is a pre-alpha mobile UI automation toolkit. It provides a Go CLI, an Android device agent, and an iOS Simulator runner under the Apache-2.0 license.

The repository currently supports local development and device testing. A public v1 release has not been published.

Requirements

  • Go 1.25 or newer
  • Android SDK and Java 17 for Android work
  • Xcode with an installed iOS Simulator runtime for iOS work
  • XcodeGen 2.44.1 for the iOS Xcode project

Build and test

go test ./...
go vet ./...
go build -o ./flowbaton ./cmd/flowbaton
./flowbaton --version

Android checks:

cd drivers/android
./gradlew --no-daemon --dependency-verification strict \
  :core:test :agent:lintDebug :agent:assembleDebug :agent:assembleDebugAndroidTest

iOS checks:

xcodegen generate --spec drivers/ios/project.yml --project drivers/ios
swift test --package-path drivers/ios
xcrun swift-format lint --strict --recursive \
  drivers/ios/Sources drivers/ios/Tests drivers/ios/UITests
xcodebuild -project drivers/ios/FlowBatonIOSRunner.xcodeproj \
  -scheme FlowBatonIOSRunnerUITests \
  -destination 'generic/platform=iOS Simulator' \
  build-for-testing

CLI

Inspect a flow without starting a device:

printf 'appId: com.example.app\n---\n- tapOn: "Continue"\n' | \
  go run ./cmd/flowbaton check-syntax -

Prepare a platform driver and run a flow:

go run ./cmd/flowbaton driver-setup -p android
go run ./cmd/flowbaton test -p android --device emulator-5554 path/to/flow.yaml

The device example requires a configured Android SDK, a running emulator, and a flow file for the application under test.

Use go run ./cmd/flowbaton to print the current command summary.

Project documents

The machine-readable API contracts live in contracts/. Product behavior is specified in specs/.

Directories

Path Synopsis
cmd
flowbaton command
contracts
device-session/v1
Package devicesessionv1 implements the normative semantic checks that JSON Schema cannot express across authenticated context, lease fencing, and time.
Package devicesessionv1 implements the normative semantic checks that JSON Schema cannot express across authenticated context, lease fencing, and time.
integration/v1
Package integrationv1 implements the normative cross-field checks for the public FlowBaton Integration v1 handshake.
Package integrationv1 implements the normative cross-field checks for the public FlowBaton Integration v1 handshake.
internal
aiengine
Package aiengine implements engine.AIPredictionEngine on top of langchaingo's provider-agnostic llms.Model.
Package aiengine implements engine.AIPredictionEngine on top of langchaingo's provider-agnostic llms.Model.
android/grpcwire
Package grpcwire is a minimal gRPC-over-h2c client for the Android agent.
Package grpcwire is a minimal gRPC-over-h2c client for the Android agent.
android/pbwire
Package pbwire is a hand-rolled proto3 codec for exactly the messages of proto/flowbaton_android.proto.
Package pbwire is a hand-rolled proto3 codec for exactly the messages of proto/flowbaton_android.proto.
assets
The fixtures in this package are representative, non-installable payloads.
The fixtures in this package are representative, non-installable payloads.
capability
Package capability owns FlowBaton's executable support classifications and graph-wide fail-closed analysis.
Package capability owns FlowBaton's executable support classifications and graph-wide fail-closed analysis.
cli
Package cli contains side-effect-free command orchestration for FlowBaton.
Package cli contains side-effect-free command orchestration for FlowBaton.
device
Package device defines the platform-neutral device contract.
Package device defines the platform-neutral device contract.
engine
Package engine owns the deterministic host execution foundation.
Package engine owns the deterministic host execution foundation.
enginetest
Package enginetest provides deterministic host-side test doubles for the execution engine and other callers of the frozen device contract.
Package enginetest provides deterministic host-side test doubles for the execution engine and other callers of the frozen device contract.
flow
Package flow parses FlowBaton's isolated YAML contracts into model nodes.
Package flow parses FlowBaton's isolated YAML contracts into model nodes.
hierarchy
Package hierarchy provides platform-neutral geometry and normalized tree helpers over the frozen device DTOs.
Package hierarchy provides platform-neutral geometry and normalized tree helpers over the frozen device DTOs.
imagecheck
Package imagecheck provides deterministic, host-side encoded image inspection without external dependencies.
Package imagecheck provides deterministic, host-side encoded image inspection without external dependencies.
ios
Package ios is the host-side client for the iOS XCTest runner's HTTP API.
Package ios is the host-side client for the iOS XCTest runner's HTTP API.
js
matching
Package matching implements exact platform-neutral selector matching over a normalized hierarchy.
Package matching implements exact platform-neutral selector matching over a normalized hierarchy.
model
Package model defines FlowBaton's versioned, device-independent flow contract.
Package model defines FlowBaton's versioned, device-independent flow contract.
version
Package version owns the host binary's link-time version string.
Package version owns the host binary's link-time version string.
web
Package web is the Chrome DevTools Protocol execution surface.
Package web is the Chrome DevTools Protocol execution surface.
workspace
Package workspace turns operator input — files, directories, CLI tag filters — into the ordered set of flows a run will execute.
Package workspace turns operator input — files, directories, CLI tag filters — into the ordered set of flows a run will execute.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL