The LLM never sees a passing run.
Run an LLM call once when you save a .flow.md. Commit the IR cache. From then on, runs are deterministic — same input, same output.
Open-source, self-healing E2E testing for React Native & Expo.
Describe the scenario in plain prose; klera compiles it into a self-healing flow that runs on real devices. No API key, no it() blocks, no QA bottleneck.
Waiting for the agent to draft the flow…One file, three months apart. The button got renamed twice and moved once; the prose stayed the same. The matcher walks a strategy ladder and recovers across drift it can resolve.
Enter the test fixtures, tap sign-in, then assert the home feed loads.email: test@klera.dev
password: hunter2-passThe planner is a build-time compiler. The runtime is a deterministic IR walker. Unplug the model and your existing flows still pass.
Run an LLM call once when you save a .flow.md. Commit the IR cache. From then on, runs are deterministic — same input, same output.
The planner sees the prose flow and the element-graph snapshot — nothing else. Secrets are scrubbed from every wire-bound payload before it leaves the process.
Anthropic API, your local Claude / Codex / Gemini CLI, an MCP server, or paste-into-any-chat. All produce identical IR. Edit one config line to switch. No vendor lock-in.
A verdict, a suspect commit, frames, and a written narrative. Open the report and you know whether to revert, update the flow, or rerun.
The runtime tapped “Place order”, but the next screen never mounted. The element graph shows the button transitioning to disabled — no navigation event followed.
- Tap “Place order” and confirm the order receipt appears.
+ Pick a saved card, tap “Place order”, and confirm the order receipt appears.| Capability | klera | Detox | Maestro | Appium |
|---|---|---|---|---|
| Prose-first authoring (no API key) | ✓ | ⛔ | ⛔ | ⛔ |
| Save-on-compile dev loop (Metro plugin) | ✓ | ⛔ | ⛔ | ⛔ |
| Coding-agent integration (AGENTS.md) | ✓ | ⛔ | ⛔ | ⛔ |
| Self-healing under UI drift | ✓ | ⛔ | ⛔ | ⛔ |
| Auto-triage on failure | ✓ | ⛔ | ⛔ | ⛔ |
| Visual flow-diff in PRs | ✓ | ⛔ | ⛔ | ⛔ |
| Reads existing Maestro YAML flows | ✓ | ⛔ | ✓ | ⛔ |
| Visual regression diff | ✓ | ◐ | ✓ | ◐ |
| Network mocking + assertions | ✓ | ◐ | ⛔ | ◐ |
| tap (by testID / label / text) | ✓ | ✓ | ✓ | ✓ |
| type text into input | ✓ | ✓ | ✓ | ✓ |
| swipe (direction or coordinate) | ✓ | ✓ | ✓ | ✓ |
| Hardware back (Android only) | ✓ | ✓ | ✓ | ✓ |
| Permission grant (Android runtime) | ✓ | ✓ | ✓ | ✓ |
One command and a flows/ directory. Works against bare Expo and managed RN projects. Free, MIT licensed, no account.
klera init scaffolds the prose flow, the IR cache, the Metro plugin, and the AGENTS.md brief. After it finishes, save a prose change and watch the flow run.