AI-powered test case review and improvement tool. Integrates with TestIT, uses any OpenAI-compatible LLM endpoint.
| Service | Port | Description |
|---|---|---|
backend |
8000 | FastAPI — TestIT proxy, LLM review/improve pipeline |
browser-use-runner |
8008 | FastAPI — AI browser agent runner |
frontend |
3000 | Vite + React UI |
Requirements: Docker Desktop (Linux / macOS / Windows)
# 1. Clone
git clone git@github.com:DKorolev94/qa-ai-tool.git && cd qa-ai-tool
# 2. Configure
cp .env.example .env
# Edit .env — set at minimum: LLM_API_KEY, LLM_MODEL, TESTIT_BASE_URL, TESTIT_PRIVATE_TOKEN
# 3. Start dev (hot-reload, bind mounts — works on Linux + macOS incl. Apple Silicon)
docker compose up --build
# 4. Open
open http://localhost:3000# Prod mode (built frontend, named volumes)
docker compose -f docker-compose.prod.yml up --build
# Stop
docker compose downApple Silicon note:
platform: linux/amd64is already set forbrowser-use-runnerin both compose files — Rosetta handles the emulation automatically.
Requirements: Python 3.10+, Node.js 18+, uv (pip install uv)
# All services at once (uses Makefile)
make dev
# Or individually:
# Backend
cd backend && python -m venv venv && source venv/bin/activate
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
# browser-use-runner
cd browser-use-runner && uv sync
uv run uvicorn main:app --host 0.0.0.0 --port 8008 --reload
# Frontend
cd frontend && npm install && npm run devmake stop # kill all local services
make restart # stop + start
make status # check portsCopy .env.example to .env in the project root and fill in the values.
| Variable | Example | Description |
|---|---|---|
LLM_BASE_URL |
https://api.openai.com/v1 |
OpenAI-compatible endpoint |
LLM_API_KEY |
sk-... |
API key (ollama for local Ollama) |
LLM_MODEL |
gpt-4o-mini |
Model for review/improve (needs structured JSON output) |
RUNNER_LLM_MODEL |
gpt-4o |
Model for browser agent (strong reasoning recommended) |
TESTIT_BASE_URL |
https://testit.example.com |
TestIT instance URL |
TESTIT_PRIVATE_TOKEN |
your_token |
TestIT private token |
TESTIT_PROJECT_UUID |
uuid |
Default project UUID |
Everything else (timeouts, preflight, temperature, browser runner tuning) has working defaults — see .env.example.
# OpenAI
LLM_BASE_URL=https://api.openai.com/v1
LLM_API_KEY=sk-...
LLM_MODEL=gpt-4o-mini
# DeepSeek
LLM_BASE_URL=https://api.deepseek.com/v1
LLM_MODEL=deepseek-chat
# Ollama (local, outside Docker)
LLM_BASE_URL=http://localhost:11434/v1
LLM_API_KEY=ollama
LLM_MODEL=gemma3:4b
# Ollama inside Docker (Linux)
LLM_BASE_URL=http://host.docker.internal:11434/v1
# Also add to docker-compose.yml under browser-use-runner:
# extra_hosts: ["host.docker.internal:host-gateway"]