Inspiration
Repro started with a simple question: can an AI agent reproduce a bug without guessing? Bug reports often describe a symptom without enough evidence or reliable steps. I wanted to build a system that could explore an application in a real browser, collect proof, and create a test that another developer could run. The important idea was to let AI help with the investigation without allowing it to decide whether a bug is real.
What it does
Repro takes a natural-language bug report and a target URL. It explores the application in Chromium, records browser actions and evidence, replays the candidate steps in fresh sessions, minimizes the sequence, and generates a TypeScript Playwright test. The MVP uses a self-hosted storefront called FixtureMart with three intentional bugs:
- A cart total that becomes NaN
- A failed export for delivered orders
- A preferences save error
How we built it
I built Repro as a TypeScript pnpm monorepo. The React and Vite dashboard shows the live job timeline, browser evidence, replay results, generated tests, and downloadable artifacts. The Fastify API manages jobs and server-sent events. Playwright controls Chromium and captures screenshots, traces, video, console logs, and network events. Shared Zod contracts validate hypotheses, actions, signals, and job states. The default planner is deterministic and local, so the MVP works without an API key or external network access. I also added optional provider adapters for Groq, Gemini, OpenAI with gpt-5.6, and other OpenAI-compatible endpoints. The model can suggest typed actions and failure signals, but it cannot return arbitrary browser code or decide the final verdict.
Challenges we ran into
The hardest challenge was proving that a failure was reproducible instead of accidental. Browser state can change between runs, locators can become invalid, and a page error may appear only once. I addressed this with fresh browser contexts, bounded action budgets, locator validation before every action, deterministic fixtures, and replay checks. I also had to handle malformed model output, unsafe actions, sensitive data, failed network requests, and minimization attempts that might remove an important prerequisite. Those cases led to strict schemas, allowlisted origins, redaction, confirmation gates, and deterministic evaluation.
Accomplishments that we're proud of
- Repro completed its MVP reliability run within the FixtureMart scope.
- All three seeded bugs reached REPRODUCED
- Every scenario passed two out of two fresh replay runs
- The minimizer reduced each working sequence
- Generated Playwright tests passed independently
- The project passed 17 automated tests, type checking, reliability checks, and production builds
- Each run produced an evidence bundle with screenshots, traces, logs, and the generated test
- The part i are most proud of is the complete loop from bug report to verified, locally minimized test.
What we learned
I learned that AI automation needs clear boundaries. The model is useful for planning and exploration, but the final decision should come from evidence that the system can check independently. Fresh browser sessions make a major difference. They expose hidden dependencies on cookies, local storage, or previous actions. I also learned that a deterministic demo is not a limitation when it helps prove the product's core behavior. FixtureMart gave us reliable acceptance criteria before adding optional model providers.
What's next for Repro
The next step is to support more explicitly configured applications while keeping the same origin and safety controls. I also want to add:
- CI integrations that run generated reproduction tests automatically
- Broader browser coverage
- Persistent job history and team collaboration
- Better recovery when a locator or model action fails
- More provider options without changing the deterministic evaluator
- Stronger artifact search and sharing
Repro should grow beyond the demo target without losing the rule that evidence, not the model, decides whether a bug is reproduced.
Built With
- codex
- css
- fastify
- gpt-5.6
- playwright
- pnpm
- react
- typescript
- zod
Log in or sign up for Devpost to join the conversation.