TestOps Evolution Forge is an autonomous multi-agent IDE built on Cloud.ru Evolution that generates, executes, debugs, and self-maintains automated tests.
The system simulates the work of a Senior QA Automation engineer: it "sees" the interface through a browser, analyzes the project architecture via AST, plans test scenarios, and learns from its own mistakes by storing experience in a vector knowledge base.
The system doesn't make the same mistake twice.
- Lesson Extraction: After a successful bug fix (
Auto-Fix), the agent formulates a brief technical "lesson" (e.g., "In this project, dropdowns need force=True"). - RAG Knowledge Base: Lessons are stored in ChromaDB. When generating new tests, the analyst automatically pulls in relevant knowledge, preventing recurring bugs.
You control the process rather than just watching.
- Test Plan Review: The Analyst agent builds a detailed test plan before writing code.
- Approval Gate: The process pauses, letting you edit the plan, add steps, or change logic via the UI before the Coder starts working.
The agent doesn't guess locators — it sees them.
- Launches a headless browser (Playwright) via the WebInspector service.
- Scans the live DOM, highlighting semantically important elements.
- Extracts real
data-testid,id,class, and ARIA attributes. - Generates code that works on the first run.
Need to cover all functionality with tests at once?
- The analyst splits a complex request (e.g., "Test the entire purchase flow") into atomic scenarios.
- The system runs code generation for each scenario in parallel, drastically speeding up the process.
For complex integration tests, a ReAct mode is enabled:
- The agent gets the
read_file,search_code, andfile_treetools. - It autonomously navigates your Git repository, studies existing Page Objects, models, and API clients to reuse the project's code.
A built-in Scheduler works while you sleep:
- Every 6 hours it runs a "Health Check" for existing tests.
- On failure, the Trace Inspector activates: it unpacks
trace.zip, extracts the DOM snapshot at the moment of the error, network logs, and console errors. - The Debugger Agent analyzes the context, fixes the test, and notifies you of the repair.
Multi-stage validation before saving code:
- Security Check: AST analysis blocks dangerous imports (
os,subprocess,sys). - Strict Linter: Auto-formatting via
ruff, checks for Allure decorators. - Locator Dry Run: A "trial run" of found locators on the live page to rule out hallucinations.
The project is built on LangGraph (agent orchestration), Celery/Redis (async tasks), and Docker-in-Docker (execution isolation).
graph TD
User((User)) --> Router
subgraph "Planning Phase"
Router -->|Analysis| Analyst
Analyst -->|Draft Plan| HumanGate{Human Approval}
end
subgraph "Coding Phase"
HumanGate -->|Approved| Routing{Context Type}
Routing -->|Simple UI| FeatureCoder
Routing -->|Existing Repo| RepoExplorer
Routing -->|Bulk Gen| BatchAgent
end
subgraph "Validation Loop"
FeatureCoder --> Reviewer
RepoExplorer --> Reviewer
BatchAgent --> Reviewer
Reviewer -->|Invalid| Debugger
Debugger --> Reviewer
end
subgraph "Execution & Healing"
Reviewer -->|Valid| QueueTask[Celery Task]
QueueTask --> Redis[(Redis Broker)]
Redis --> Worker[Celery Worker]
Worker --> Executor[Docker Sandbox]
Executor -->|Success| Report[Allure Report]
Executor -->|Failure| TraceInspector
TraceInspector -->|Context| AutoFix[Auto-Fix Workflow]
AutoFix --> Debugger
AutoFix -->|Success| Memory[Save Lesson]
end
Scheduler -.->|Health Check| QueueTask
- Frontend: Nginx serves static files (React SPA) and proxies the API.
- Backend: A FastAPI service manages the agent graph (LangGraph) and event streaming (SSE).
- Worker: A separate container for executing tests so it doesn't block the API.
- DinD (Docker-in-Docker): Tests run in ephemeral
testops-runnercontainers that are destroyed after a run.
| Layer | Technologies |
|---|---|
| Frontend | React 19, Vite 7, Tailwind CSS v4, Zustand 5, Monaco Editor |
| Backend | Python 3.11, FastAPI, Pydantic, SQLAlchemy 2.0 (Async) |
| AI Core | LangGraph, LangChain, Cloud.ru Evolution (Qwen 2.5/3 Coder) |
| Async & Broker | Celery, Redis (Pub/Sub for log streaming) |
| Database | PostgreSQL (History), ChromaDB (Vector Memory) |
| Testing Engine | Playwright, Pytest, Allure |
| Code Analysis | AST (Python), JavaParser, Regex (JS/TS), Tree-Sitter |
- Docker & Docker Compose
- An API Key for Cloud.ru Evolution (or any OpenAI-compatible provider)
-
Clone the repository:
git clone https://github.com/ShutovKS/copilot-audit.git cd copilot-audit -
Configure the environment: Create a
backend/.envfile based on the example:cp backend/.env.example backend/.env
Edit
backend/.envand provide yourCLOUD_RU_API_KEY. -
Start the stack:
docker-compose up --build -d --force-recreate
-
Access the services:
- 💻 Frontend:
http://localhost - 🔌 Backend API:
http://localhost:8000/docs - 📊 Allure Reports: Available inside the UI after a test run.
- 💻 Frontend:
- Prompt: "Write an authorization test for https://example.com. Check the validation for an invalid email."
- Result: The system visits the site, studies the DOM, and generates a Playwright test.
- Action: Click the 📎 (Upload ZIP) button or the Git icon, and provide a repository link.
- Prompt: "Use the PageObjects from the repository and write a test for adding a product to the cart."
- Result: The agent finds existing page classes and uses their methods.
- Situation: You ran a test and it failed.
- Action: Click the Auto-Fix button in the editor.
- Result: The Debugger agent analyzes the logs, screenshots, and traces, rewrites the code, and suggests a fix.
- Action: The test works perfectly? Click Export.
- Result: The system creates a branch and a Merge Request in your GitLab project.
Built with ❤️ by Team NonSleepers for TestOps Evolution Hackathon