qa-ai-agents
by abchahal
README.md
# QA AI Agents
An AI-powered QA automation pipeline built with TypeScript, Claude API, and the Model Context Protocol (MCP).
## Architecture
Four specialised agents run in sequence, each grounded in feature requirements, business rules, and API contracts:
1. **Agent 1 — Functional Tester**: Generates test scenarios across happy path, negative, security, edge cases, UI states, and business rules
2. **Agent 2 — Test Architect**: Assigns each scenario to the correct test pyramid layer (unit / API / component / E2E), sets automation priority (P1/P2/P3), and flags manual-only scenarios
3. **Agent 3 — Test Engineer**: Writes production-grade Playwright tests for unit, API, and component layers using Page Object Model (POM). E2E tests are excluded — these are handled at SIT/UAT level
4. **Agent 4 — Code Reviewer**: Audits generated tests for selector quality, assertion completeness, and Playwright best practices
## MCP Server
Exposes the pipeline as 4 MCP tools callable from Claude Desktop or Claude Code:
- `run_qa_pipeline` — full 4-agent pipeline
- `generate_test_scenarios` — Agent 1 only
- `set_feature_input` — write to input/feature.md
- `get_pipeline_report` — read last pipeline report
## Tech Stack
- TypeScript + Node.js
- Anthropic Claude API (Sonnet 4.6 + Haiku 4.5)
- Ollama (local LLM support — toggle via USE_OLLAMA)
- Playwright (generated test output)
- Model Context Protocol (MCP) SDK
---
## Setup
```bash
git clone https://github.com/abchahal/qa-ai-agents.git
cd qa-ai-agents
npm install
cp .env.example .env
# Add your ANTHROPIC_API_KEY to .env
```
---
## Running the pipeline
```bash
# Via terminal
npm run pipeline
# Via Claude Desktop / Claude Code
# Type: "Run the full QA pipeline using input/feature.md"
```
---
## Input files
| File | Purpose |
|---|---|
| `input/feature.md` | Feature requirements, business rules, UI selectors |
| `input/api-contract.json` | API schema (optional) |
| `input/source.js` | Source code context (optional) |
---
## Output
```
output/
├── pages/ ← Page Object classes (one per page, shared across scenarios)
├── tests/
│ ├── unit/ ← Unit test spec files
│ ├── api/ ← API test spec files
│ └── component/ ← Component test spec files
└── pipeline_report.md
```
---
## Model Strategy
| Agent | Model | Reason |
|---|---|---|
| Agent 1 | Haiku 4.5 | Structured JSON output |
| Agent 2 | Haiku 4.5 | Classification task |
| Agent 3 | Sonnet 4.6 | Code generation — requires higher quality output |
| Agent 4 | Haiku 4.5 | Analysis and scoring |
---
## MCP Setup via CLI
### Step 1 — Create the batch file
Create `start-mcp.bat` in the project root:
```batch
@echo off
cd /d "C:\path\to\qa-ai-agents"
node --loader ts-node/esm src/server.ts
```
Replace `C:\path\to\qa-ai-agents` with your actual project path.
### Step 2 — Register the MCP server
```bash
claude mcp add -s user qa-ai-agents "C:\path\to\qa-ai-agents\start-mcp.bat"
```
### Step 3 — Verify connection
```bash
# List all MCP servers and their status
claude mcp list
# Check your server specifically
claude mcp get qa-ai-agents
```
Expected output:
```
qa-ai-agents:
Scope: User config (available in all your projects)
Status: ✔ Connected
Type: stdio
Command: C:\path\to\qa-ai-agents\start-mcp.bat
```
### Step 4 — Remove the server (if needed)
```bash
claude mcp remove qa-ai-agents -s user
```
---
## Switching between Ollama and Claude API
### Ollama → Claude API
**Step 1 — Update `.env`:**
```
USE_OLLAMA=false
ANTHROPIC_API_KEY=sk-ant-your-actual-key-here
```
**Step 2 — Restart the MCP server to pick up new env:**
```bash
claude mcp remove qa-ai-agents -s user
claude mcp add -s user qa-ai-agents "C:\path\to\qa-ai-agents\start-mcp.bat"
```
**Step 3 — Verify correct provider is loaded:**
```bash
npm run agent1
```
You should see:
```
Using Claude API: claude-sonnet-4-6
```
---
### Claude API → Ollama
**Step 1 — Make sure Ollama is running and model is pulled:**
```bash
ollama list
# Should show qwen2.5-coder:7b or your preferred model
```
If model is not pulled yet:
```bash
ollama pull qwen2.5-coder:7b
```
**Step 2 — Update `.env`:**
```
USE_OLLAMA=true
OLLAMA_MODEL=qwen2.5-coder:7b
```
**Step 3 — Restart the MCP server:**
```bash
claude mcp remove qa-ai-agents -s user
claude mcp add -s user qa-ai-agents "C:\path\to\qa-ai-agents\start-mcp.bat"
```
**Step 4 — Verify correct provider is loaded:**
```bash
npm run agent1
```
You should see:
```
Using Ollama local model: qwen2.5-coder:7b
```
---
### Provider comparison
| | Ollama (local) | Claude API (cloud) |
|---|---|---|
| Cost | Free | ~$0.18 per pipeline run |
| Speed | 15–25 minutes | 45–90 seconds |
| Quality | Good | Best |
| Internet required | No | Yes |
| Best for | Development and debugging | Production runs and demos |
> **Tip:** Use `USE_OLLAMA=true` while writing and debugging agent code to avoid burning API credits. Switch to `USE_OLLAMA=false` for actual pipeline runs and portfolio demos.
---
## Environment variables
| Variable | Required | Description |
|---|---|---|
| `ANTHROPIC_API_KEY` | Yes (if USE_OLLAMA=false) | Your Anthropic API key from console.anthropic.com |
| `USE_OLLAMA` | Yes | `true` for local Ollama, `false` for Claude API |
| `OLLAMA_MODEL` | No | Ollama model name. Default: `qwen2.5-coder:7b` |This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues