Features
Everything you need for AI-native browser testing at enterprise scale.
Token-Efficient Automation API
The JS Agent API (look(), act(), wait()) is purpose-built for LLM consumption. Structured JSON responses with only actionable data — no DOM dumps, no HTML parsing.
- 50-100x smaller responses —
look()returns{role, name, locator, actions}per element, not raw HTML - Diff-mode — subsequent
look()calls return only changes: 70-90% token reduction - Batch operations — a single JS code block can fill forms, click, and navigate in one HTTP request
- Prompt caching — ~84% cache hit rate on the system prompt at 10% of regular input cost
Display-Text Locators
{button}Submit uses visible text instead of CSS selectors or XPath. When the app is refactored and element IDs change, display-text locators keep working.
This dramatically reduces maintenance — the #1 cost of traditional UI test suites. Karate's locator syntax is also shorter: 16 characters vs 30-42 for equivalent Playwright/XPath selectors, saving output tokens across every session.
// Karate Agent — display-text locators
act('{button}Submit', 'click')
act('{input}Email', 'input', 'user@example.com')
act('{a}Sign In', 'click')
// vs. traditional selectors
driver.findElement(By.xpath("//button[contains(text(),'Submit')]")).click()
page.locator('button:has-text("Submit")').click()
Bring Your Own LLM
No vendor lock-in to a specific AI provider. Configure any model your organization has approved — including local models via Ollama.
OpenRouter
100+ modelsAnthropic
Claude (direct)Ollama
Gemma, Llama, localAny OpenAI-compatible
Single env varPer-job model override lets teams A/B test providers. Use smaller models for routine jobs, larger models for exploratory work.
# Provider prefix handles routing
openrouter/anthropic/claude-sonnet-4-6
anthropic/claude-haiku-4-5
ollama/gemma3
ollama/llama3
# Single env var to switch
KARATE_LLM_MODEL=ollama/gemma3
100% Self-Hosted, Air-Gap Compatible
The entire platform — grid server, worker containers, dashboard — runs on your infrastructure. No data leaves your network.
- Session transcripts, screenshots, and recordings stay on your file system
- Suitable for regulated industries: financial services, healthcare, government
- No cloud-based testing tool required
# Single-artifact deployment
docker pull karatelabs/karate-agent:latest
java -jar veriquant.jar grid --port 4444
# Open http://localhost:4444 → ready
# That's it. One jar. One image.
# No microservices. No databases.
# No message queues.
Flow System
Executable .js scripts run at native JavaScript speed. A login flow that takes 5 LLM iterations (~50s) executes in 2 seconds via Flow.run().
- Compose flows — chain login → navigate → fill form → submit
- Self-healing — flow failure returns error + page state. LLM recovers automatically
- Deviation reporting — deviations flagged in the report so teams know which flows need maintenance
- Plain JavaScript — no proprietary DSL, readable by any developer, version in git
MCP & API Access
Every capability is a REST endpoint or curl command. Built-in Model Context Protocol server with Streamable HTTP transport.
- Single
karate_evaltool — LLM writes JS, same as curl - Compatible with Claude Code (
claude mcp add), VS Code Copilot - No sidecar process, no Node.js dependency
/promptendpoint serves contextual API docs the LLM reads on-the-fly
# Connect any LLM agent via curl
curl -X POST http://localhost:4444/sessions/abc/proxy \
-d '{ "js": "agent.look()" }'
# Or via MCP
claude mcp add karate http://localhost:4444/mcp
Recording & Reproducibility
Every session produces a complete audit trail. Recordings accelerate the entire team:
- Failure diagnosis — review video + transcript instead of reproducing 12-step workflows
- Flow development — watch successful autonomous sessions, extract patterns, codify as flows
- Onboarding — new team members watch recordings to learn app navigation and locator patterns
- Stakeholder demos — share recordings with product owners. They see exactly what was tested.
Enterprise SPA Support
Cursor-pointer discovery catches <div onclick> targets in Guidewire, Salesforce, ServiceNow — apps where standard locator strategies fail.
Two-pass element discovery: semantic HTML + ARIA roles first, then cursor:pointer elements. A page with 500 DOM nodes yields ~20-40 actionable elements.