Skip to main content

Aumate QA Agent

Framework-agnostic auto-healing for test automation. Works with any test framework, any language, any LLM provider.

your-project/
├── agent/           ← copy from this repo (or pip install)
├── qa_heal.py       ← standalone runner
└── .qa-agent/
    └── config.yaml  ← auto-generated

Quick Start (30 seconds)

Copy into your project:

cp -r agent qa_heal.py /path/to/your-project/
cd /path/to/your-project

Run healing:

python qa_heal.py                        # heal broken tests
python qa_heal.py --apply                 # heal + apply fix to disk
python qa_heal.py --test                  # just run tests, no healing
python qa_heal.py --test-file tests/foo.spec.ts --test-name "my test"

Or install via pip:

pip install aumate-qa-agent
qa-agent init
qa-agent heal

How It Works

Your existing tests run normally
        |
        v
Failure detected (locator, timing, assertion, etc.)
        |
        v
DOM evidence collected from your project
        |
        v
Candidates generated (deterministic + optional AI)
        |
        v
Each candidate tested in isolated sandbox copy
        |
        v
PASS → Patch displayed (or auto-applied)
FAIL → Next candidate tried

No Test Code Changes Needed

The agent observes your existing tests. You don't modify a single line of test code.

Safety Guarantees

  • No LLM has direct write access — the validation engine is the sole gatekeeper
  • Application defects are never hidden — only automation defects (broken locators, timing) are healed
  • Sandbox validation — patches are tested in an isolated copy of your project first
  • Secrets are masked — no credentials, tokens, or passwords sent to LLMs

Supported Frameworks (built-in)

Framework Languages
Playwright TypeScript, JavaScript, Python
Selenium Python, Java, JavaScript

Adding a new adapter requires implementing one interface:

from agent.adapters.base import FrameworkAdapter

class MyAdapter(FrameworkAdapter):
    @property
    def name(self) -> str: ...
    def detect(self, project_root: str) -> AdapterDetectionResult: ...
    def run_tests(self, project_root, test_file, test_name, custom_command) -> TestRunResult: ...
    def parse_test_result(self, raw_output, exit_code, duration) -> TestRunResult: ...
    def capture_evidence(self, project_root, failure) -> FailureEvidence: ...
    def patch_code(self, source_code, old_locator, new_locator) -> str: ...

Third-party adapters can be shipped as separate pip packages:

# in their pyproject.toml
[project.entry-points."qa_agent_adapter"]
cypress = "my_package:CypressAdapter"

Supported LLM Providers

Provider Env Variable Notes
Google Gemini GEMINI_API_KEY Default
OpenAI OPENAI_API_KEY
Groq GROQ_API_KEY Free tier available
Ollama OLLAMA_API_KEY Local, no API key needed
OPENROUTER_API_KEY Multi-model hub
Azure OpenAI AZURE_OPENAI_API_KEY Enterprise
# Configure LLM
python qa_heal.py --llm-provider openai --llm-model gpt-4o-mini

# Or set env var
set GEMINI_API_KEY=your-key

Works without any LLM configured — deterministic healing runs fully offline.

Configuration

Auto-generated at .qa-agent/config.yaml on first run:

project:
  name: my-project
  framework: playwright
  language: typescript
  test_command: npx playwright test

healing:
  mode: approval          # "auto" | "approval" | "safe"
  auto_apply_threshold: 95.0
  deterministic_first: true

llm:
  primary:
    provider: gemini
    model: gemini-2.5-flash

security:
  mask_secrets: true
  strict_privacy: false

validation:
  rerun_failed_test: true
  run_related_tests: true

Healing Memory

Successful fixes are cached in ~/.qa-agent/memory.db. Recurring failures skip the LLM entirely and apply the historical fix immediately.

CLI Commands

qa-agent init          # auto-detect project + generate config
qa-agent detect        # show detected framework, language, runner
qa-agent doctor        # system health check
qa-agent config llm    # configure LLM provider
qa-agent test          # run tests through agent
qa-agent heal          # auto-heal failures
qa-agent heal --apply  # heal + write fix to source
qa-agent history       # view healing memory
qa-agent version       # show version

Project Structure

aumate-qa-agent/
├── agent/
│   ├── core/
│   │   ├── orchestrator.py      # main workflow
│   │   ├── execution_context.py # standardized data model
│   │   ├── failure_detector.py  # classify failures
│   │   ├── confidence_engine.py # score candidates
│   │   ├── validation_engine.py # sandbox testing
│   │   ├── plugins.py           # adapter discovery/registry
│   │   └── test_runner.py       # universal test execution
│   ├── adapters/
│   │   ├── base.py              # adapter interface
│   │   ├── playwright.py        # Playwright adapter
│   │   └── selenium_adapter.py  # Selenium adapter
│   ├── healing/
│   │   ├── base.py              # strategy interface
│   │   ├── locator.py           # deterministic locator healing
│   │   ├── timing.py            # timing/race condition healing
│   │   ├── assertion.py         # assertion healing (guarded)
│   │   └── ai_reasoner.py       # AI-powered healing
│   ├── ai/
│   │   ├── provider.py          # LLM base interface
│   │   ├── router.py            # multi-provider registry
│   │   └── providers/           # Gemini, OpenAI, Groq, Ollama...
│   ├── memory/healing_history.py  # SQLite persistence
│   ├── git/manager.py           # diff, patch, branch
│   ├── project/                  # detection, config, doctor
│   └── security/masking.py      # secret redaction
├── cli/main.py             # CLI entry point
├── qa_heal.py              # standalone runner (drop into any project)
├── pyproject.toml          # pip-installable package
└── ARCHITECTURE.md         # full architecture spec

Requirements

  • Python 3.9+
  • Your existing test framework (Playwright, Selenium, etc.)
  • Node.js (for Playwright/Cypress Web projects)

License

MIT

Metadata

Release files for aumate-qa-agent 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aumate-qa-agent 1.0.0
File Size Uploaded Provenance
aumate_qa_agent-1.0.0.tar.gz 49.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for aumate-qa-agent 1.0.0
File Interpreter ABI Platform
aumate_qa_agent-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 104.9 kB

Release files / aumate_qa_agent-1.0.0.tar.gz

Download URL aumate_qa_agent-1.0.0.tar.gz
Size 49.5 kB
Tags Source
SHA-256 checksum
How to use checksums
5d2cd6780267dad4a7a892d5c1e0269f79330b9abff4bee8fb5ba4a4ce00e48c
BLAKE2b-256 checksum
How to use checksums
765cf2542da2fec9d40b093578a9d030cc4d97b8bcf95602b454dc4790731e97
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / aumate_qa_agent-1.0.0-py3-none-any.whl

Download URL aumate_qa_agent-1.0.0-py3-none-any.whl
Size 55.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5b9ec22179f1b99492ca463bfbf9a6d765fc4bf5e849ad3c9f4ce344b1d075d5
BLAKE2b-256 checksum
How to use checksums
c6f1cec1f6fc9c7af9ff6f0096307396504cee922de48a5fc8670c880b461000
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for aumate-qa-agent 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page