Overview
Every target Haiku supports and how to choose one. The filename's extension picks the target; this page tells you what each one means.
Haiku dispatches by filename. A spec named login.ios.haiku runs through the
iOS Simulator; test_parser.py.haiku runs through pytest; cache.rs.haiku
runs through cargo test. There is no command-line flag for "which
platform" — the filename is the contract.
Status legend
| Label | Meaning |
|---|---|
| available | Production-ready, used daily. |
| coming | Compiler scaffolding landed; runner integration in progress. |
| experimental | Generation works; runner ergonomics still settling — read the output before trusting it. |
Targets
UI testing
Backend testing
- Python — available. pytest under the hood.
- Rust — available.
cargo testunder the hood. - Go — experimental.
- TypeScript — experimental.
- Java — experimental.
How to choose
Pick the extension that matches the runner you already use. Haiku does not
inject its own runner — it generates the artifact the chosen target's native
tooling expects (.sim action sequences for iOS, test_*.py modules for
Python, *_test.rs files in your crate's tests/ directory for Rust, and so
on). If a target works with your CI today, the Haiku-generated test works
with it too.
For the canonical filename → target mapping with every extension Haiku recognises, see The .haiku file format.