Three repositories, five AI agents, one continuous loop: generating tests from requirements, writing automation code from plain English, classifying CI failures, fixing broken locators, and adapting tests when the product changes. Engineers review a PR at the end. They don't do all the work in the middle anymore.

The System at a Glance

Three repos, each with a distinct responsibility. AI Test Studio is the browser interface engineers open. It signs users in, runs the Test Design Agent itself, and proxies the other agent requests to QA Agent Network, the AI backbone running four independent Claude-powered agents. Both read from and write to Jarvis, the Java/Maven automation framework where all generated test code lives.

Engineer's Browser
AI Test Studio
Python · Flask · port 5001
Test Design → TestRail
RAG Chat → ChromaDB
Agent pages · live runs · history
Admin · Knowledge Base · Analytics
HTTP proxy
▶
QA Agent Network
Python · Claude CLI · port 6001
Test Authoring Agent
Test Triaging Agent
Test Healing Agent
Test Adaptation Agent
reads / writes
Jarvis
Java · Maven · TestNG
Playwright, UI tests
REST-Assured, API tests
Appium, Mobile tests

Six Features. One Closed Loop.

Each feature is a standalone workflow. Together, the output of one stage feeds the next, closing the loop from requirements all the way to verified, self-healing automation that keeps up with the product.

Test Design Agent
01 · Test Design Agent
Requirements → TestRail-Ready Test Cases
Paste requirements or drop a Confluence URL. The AI cross-references your existing TestRail coverage and generates structured test cases only for uncovered gaps: positive, negative, and edge cases, with one-click push to TestRail.
About a minute
Full deep dive
Test Authoring Agent
02 · Test Authoring Agent
Plain English → GitHub PR
Describe what to automate. The agent parses the intent, navigates the real staging environment via Playwright MCP to confirm selectors, generates compilable Java code, runs Maven to verify it, and raises a PR. Five steps. No human in the loop until review.
About 15 minutes
Full deep dive
Test Triaging Agent
03 · Test Triaging Agent
AI Classifies Every CI Failure Automatically
After every build, the agent scouts MySQL for unanalysed failures, diagnoses why each element was missing, classifies each failure as PRODUCT BUG or AUTOMATION ISSUE using Claude, then has a second, independent Claude pass challenge the classifications before the report ships to Slack.
Independently reviewed before it ships
Full deep dive
Test Healing Agent
04 · Test Healing Agent
Diagnose, Fix the Locator, Prove It
Takes locator failures from the triaging agent, or any failing test you name, and works out why the element was missing. Stale locators are fixed by a deterministic engine (Claude only when it can't), every fix is proven by re-running the real test, and a PR is raised.
$0 when the engine proves the fix
Full deep dive
Test Adaptation Agent
05 · Test Adaptation Agent
Product Changed? Tests Updated Before They Fail
Write a plain-English change note. The agent explores the live product, updates the affected tests' steps inside a transaction, and proves each test still checks what it did before: frozen intent contracts, 14 guards, and a PR a human always reviews.
Before the tests go red
Full deep dive
Talk to Tests
06 · Talk to Tests
Ask Any Question About Your Test Coverage
A natural-language chat interface over the entire QA knowledge base: synced TestRail cases and Confluence specs, all embedded in ChromaDB. Answers are grounded in your actual documentation, not generic AI knowledge.
Instant · no manual search
Full deep dive

The Closed Loop

CI runs → failures to MySQL → Triaging Agent diagnoses & classifies → Healing Agent fixes stale locators → PR raised → engineer merges → next CI run passes

And when the product itself changes: change note → Adaptation Agent explores and updates the tests → reviewed PR → tests updated before they go red. When healing finds a page that was rebuilt rather than re-labelled, it drafts that change note itself.

Key Numbers

~1 min
Requirements → TestRail-ready test cases
~15 min
Plain English → GitHub PR ready for review
~70%
Time saved on automation effort
Last 10 runs
Of pass/fail history shown for every flaky test in the triage report
$0
Model cost of a locator fix the deterministic engine can prove
Every PR
Reviewed by an engineer: the agents never merge their own changes

Built for a Team

The Studio is a shared workspace, not a single-user demo. Everyone signs in; new sign-ups wait for an admin's approval. Agent runs that push a PR each get their own isolated git worktree, so several run at once, and a busy server queues the rest fairly, so one person's ten runs can't starve everyone else. Every run is attributed to the person who started it.

An Analytics page shows what the AI work cost and what it saved. Agent cost is exact, reported by the Claude CLI itself, while the Studio's own LLM calls are estimated from a rate card, so the two are shown side by side and never added together. Time saved credits each output with a human-minutes baseline and subtracts the machine's own run time.

Analytics page in the AI Test Studio admin portal
Admin → Analytics: runs, tests produced, LLM calls, tokens, spend and estimated time saved across the authoring, healing and adaptation agents, with a daily trend and a per-agent breakdown.

The Key Design Insight: CLAUDE.md

Every AI agent reads one file before doing anything: Jarvis/CLAUDE.md, a plain-text conventions file defining every naming rule, class pattern, and DO/DON'T for the Java framework.

Why this matters

Change the framework → update CLAUDE.md → every agent adapts on the next run. No prompt engineering buried in Python scripts. The conventions live in the repo, version-controlled and reviewable alongside the code itself.

What We Learned Building This

📄
CLAUDE.md beats any prompt

A well-maintained conventions file in the target repo is what keeps all agent output aligned with your codebase. Invest here before you invest anywhere else in prompt engineering.

⚔️
Adversarial review matters at scale

A single model classifying 50 CI failures will make confident mistakes. A second, independent review pass (a separate call with no shared context, then structured debate rounds) catches those mistakes before they reach the report.

🔔
Fail noisily, not silently

When an agent can't finish, it says why. Authoring still raises its PR marked NEEDS-REVIEW with what failed and what Claude tried; healing stops with the diagnosed cause instead of guessing. Engineers fix it in minutes instead of starting blind.

🎭
Playwright MCP is underrated

Confirming selectors against the real staging environment before generating code eliminates an entire class of first-run failures. A few minutes in the browser upfront is cheaper than debugging guessed selectors later.

🩺
A green test is not proof

The easiest way to make a failing check pass is to weaken it. So healing diagnoses before it edits, authoring freezes assertions before it fixes, and adaptation checks every edit against a contract frozen before it started.

📐
Deterministic first, model second

Fingerprints recorded on green runs let a plain scoring engine propose most locator fixes: offline, provably unique, at no cost. The model is the fallback, not the first resort.

Tech Stack

AI / Models
Claude Sonnet 5 OpenAI Gemini Ollama
RAG / Vector
ChromaDB LangChain BM25 hybrid search
Browser
Playwright MCP Playwright Java Playwright Python
Test Layer
REST-Assured Appium BrowserStack Maven TestNG
Infrastructure
Flask 3.0 Server-Sent Events MySQL GitHub CLI Slack Bot API

Explore each feature in depth

All three repos are open source. Each feature has a full deep-dive page covering the implementation, pipeline steps, screenshots, and design decisions.