A regression test
for your agent.
Aurat executes changed application code against reviewed model and tool fixtures. The workspace helps you inspect and compare the resulting reports.
Start locally
git clone https://github.com/8dazo/aurat.git cd aurat npm ci npm run demo
The bundled demo needs no provider credentials. Run npm test to verify duplicate-action, wrong-argument and wrong-output regressions.
Add a scenario
Install Aurat from a reviewed repository commit or a local tarball. Configure your model client with OPENAI_BASE_URL, wrap external tool boundaries with wrapTool, and report the final output.
import { wrapTool, reportOutput } from "aurat/testing";
const createTicket = wrapTool("create_ticket",
args => ticketClient.create(args));
const ticket = await createTicket({title: "Broken login"});
reportOutput({ticketId: ticket.id});Capture in a controlled environment: record mode calls real providers and tools. Review and sanitize fixtures before committing them. Then define exact output, schemas, tool counts or ordering constraints.
Full scenario reference ↗Connect reports
- Create a project with its GitHub repository URL.
- Run
aurat test --report .aurat/report.jsonlocally or in CI. - Import the JSON report into the project's workspace.
- Open a run and select a passing run as your baseline.
Reports are stored privately under your signed-in account. The current connection uses report imports; it does not claim automatic GitHub synchronization or hosted execution. GitHub Actions can upload the report as an artifact for you to import.
Understand results
| PASS | All assertions and fixture coverage passed. |
|---|---|
| FAIL | The executed behavior violated an assertion. |
| INCOMPLETE | A fixture was missed, exhausted or left unused, or the guard did not start. |
| INFRA_ERROR | Setup, timeout or execution infrastructure failed. |
Only an all-PASS suite exits successfully. A new prompt can legitimately need a new fixture; review that change instead of automatically accepting a new baseline.
Current limits
Node HTTP interception is not an OS sandbox. Native drivers, raw sockets, filesystem access and unwrapped side effects remain outside the replay boundary. Tool capture is sequential; SSE timing is not reconstructed. Secret redaction does not detect every kind of private information.
Use synthetic fixtures and disposable environments. Uploaded reports are limited to 1 MiB and 200 scenarios. This preview has no billing, background CI sync or team permission management.