Haiku

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

LabelMeaning
availableProduction-ready, used daily.
comingCompiler scaffolding landed; runner integration in progress.
experimentalGeneration works; runner ergonomics still settling — read the output before trusting it.

Targets

UI testing

  • iOSavailable. XCUITest under the hood.
  • macOScoming.
  • Webcoming.
  • Androidcoming.

Backend testing

  • Pythonavailable. pytest under the hood.
  • Rustavailable. cargo test under the hood.
  • Goexperimental.
  • TypeScriptexperimental.
  • Javaexperimental.

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.

On this page