ホーム
Bajutsu(馬術)は、自然言語で書いた、あるいは記録したテストシナリオを受け取り、アプリを操作し(タップ、入力、スワイプ、待機)、結果を機械が検証できるアサーションで確かめます。プラットフォームに依存する箇所は一つだけで、それは UI を操作するバックエンドです。バックエンドを差し替えれば、同じシナリオが別のターゲットで動きます。
核となる姿勢¶
- AI は著者であり失敗の調査役であって、判定者では決してない。 AI はシナリオを書くことと失敗を調べることを助けますが、
runは完全に決定的で、合否は機械によるアサーションだけから決まります。モデルは判定に関わりません。 - 二つのティア。 ティア1は AI による実操作(探索と著述)、ティア2は CI を守る決定的なランナーです。
- 決定性の最優先。 固定の
sleepは使わず、条件待ちだけを使います。曖昧なセレクタは、最初に一致したものをタップせず、その場で失敗します。 - プラットフォームは一つのバックエンド。 決定的なコアは特定のプラットフォームを前提としません。バックエンドを足すか差し替えれば、同じシナリオ形式とランナーと CLI が、変わらないまま新しいプラットフォームを対象にします。
状況(pre-alpha)¶
決定的なコア、AI の著述ループ(record と crawl)、evidence サブシステム、codegen、自己修復の triage は、いずれも実装済みでユニットテストも揃っており、シミュレータは要りません。iOS の idb / XCUITest バックエンドはシミュレータ上で end-to-end に検証済み、Android(adb)バックエンドはエミュレータ上で end-to-end に検証済みで、web(Playwright)バックエンドは Linux のゲートでブラウザに対して決定的な run を動かします。
クイックスタート¶
uv sync --group dev # .venv と依存と開発ツール
bajutsu record --target <name> --goal "..." [--out f.yaml] # ティア1: AI が探索して記録
bajutsu run --target <name> [--scenario f.yaml] # ティア2: 決定的な合否
Getting started のチュートリアルが、導入からユニットテスト、シナリオ、実機実行、レポートまでを順にたどります。Mac のないマシンでは、web トラックが同じループをブラウザ(Playwright backend)に対してたどります。Xcode も Simulator も要りません。
機能のハイライト¶
- AI で著述:
recordとcrawlがアプリを探索し、手で直せるシナリオを書きます。 - 決定的なランナー:条件待ち、安定度のはしご、曖昧なときは推測で進めず失敗するセレクタ。
- evidence サブシステム:スクリーンショット、UI 階層、ネットワークを、指定したポリシーで取得します。
- 自己修復の triage:AI が失敗を調べ、修正案を出します。CI の経路の外です。
- codegen:シナリオを、同等のネイティブテスト(iOS 向け XCUITest、web 向け Playwright、Android 向け UI Automator)に変換します。
- MCP と web UI:MCP クライアントから、あるいはローカルの
serveUI から Bajutsu を操作します。
バックエンドとプラットフォーム¶
| プラットフォーム | バックエンド | 状況 |
|---|---|---|
| iOS シミュレータ | idb / XCUITest | 実機上で end-to-end に検証済み |
| Web | Playwright | Linux のゲート上で end-to-end に検証済み |
| Android | adb | エミュレータ上で end-to-end に検証済み |
| Flutter | (予定) | 次 |
さらに詳しく¶
- ドキュメント概要:推奨読書順に並べた、機能ごとのリファレンス。
- Getting started · Concepts · 用語集 · API リファレンス
- ロードマップ · 設計の根拠(DESIGN.md) · GitHub