Turn a user-reported bug into a regression test.
Capture structural evidence, generate a Playwright reproduction, and verify the fix without recording screens, input values, or page text.
test('StepStitch reproduction', async ({ page }) => {
// TODO: authenticate as a synthetic test user if the flow requires it.
// [NAVIGATION] /accounts/:id
await page.goto('https://staging.example.test/accounts/1001');
// [NAVIGATION] /accounts/:id/transfer
await page.goto('https://staging.example.test/accounts/1001/transfer');
// [CLICK] /accounts/:id/transfer
await page.locator('[data-testid=payee-select]').click();
// [CLICK] /accounts/:id/transfer
await page.locator('[data-testid=amount-input]').click();
// [CLICK] /accounts/:id/transfer
const endpoint0 = new RegExp('/api/accounts/[^/]+/transfers$');
const response0 = page.waitForResponse(
(r) => endpoint0.test(new URL(r.url()).pathname) && r.request().method() === 'POST',
);
await page.locator('[data-testid=review-transfer]').click();
// expected API failure: /api/accounts/:id/transfers (HTTP 500)
const res0 = await response0;
expect(res0.status(), 'no server error from /api/accounts/:id/transfers').toBeLessThan(500);
});In plain words
No jargon. Three steps from a customer’s bad moment to a fix that stays fixed.
A customer hits a problem
Something breaks while they are using your app, like a payment that will not go through.
StepStitch records the steps, not the screen
It records which control was used and what failed. It never captures screens, input values, or page text; free text is scrubbed server-side.
Your team reproduces it and proves the fix
In one click it becomes a test that fails on the bug and passes once it is fixed, so it stays fixed.
See exactly what your team gets
Follow a generated trace from structural timeline to replayability score, privacy posture, and runnable Playwright test. The panel always states its source.
$ npx playwright test stepstitch-repro.spec.ts
Running StepStitch reproduction…
From one report to a verified fix
StepStitch perceives, scores, compiles, and drafts. It never plans or acts on its own. The autonomy stays in your stack.
Perceive
A user reports a bug. StepStitch stores a scrubbed, structural trace.
list_recent_traces
Score
A deterministic 0 to 1 score and an A to F grade say if it reproduces.
get_replayability_score
Reproduce
Fetch a deterministic Playwright test built from the trace. Text only.
generate_playwright_repro
Verify
Run it in your CI or sandbox. Red turns green once the fix lands.
get_verifications
Fix, human-gated
Draft a pull request with the regression test. A reviewer decides whether to merge.
github_bridge
Not session replay, not error tracking
Session replay and error tracking are useful for observation. StepStitch is built for a different output: a deterministic regression test backed by minimized structural evidence.
| Capability | Session replayFullStory, LogRocket | OpenReplayOpen-source replay | APM and errorsSentry, Datadog | StepStitchIssue-to-repro |
|---|---|---|---|---|
| Avoids screen, page text, and input capture | Replay is the product | Records DOM | Varies by signal | By architecture |
| Data-minimization posture | Requires configuration | DOM replay | Varies by signal | No screens, input values or page text; free text scrubbed server-side |
| Proves the bug is reproducible | No | No | No | 0 to 1 score, A to F grade |
| Output is a regression test | A video | Exports a script | A stack trace | Asserting Playwright test |
| Self-hosted and auditable | SaaS only | Open source | SaaS only | Apache-2.0, self-host |
| Native to agent networks | No | No | No | MCP, 13 scoped tools |
What these columns are based on
- Session replay (FullStory, LogRocket): Session-replay tools reconstruct the user's session as a watchable recording; masking is a configuration applied on top. vendor documentation, checked 2026-08-04.
- OpenReplay: OpenReplay is self-hosted and open source, and still produces a session recording as its primary artifact. vendor documentation, checked 2026-08-04.
- APM and error tracking (Sentry, Datadog): Error and APM tools capture stack traces and breadcrumbs from the failure, and offer session replay as a separate product. vendor documentation, checked 2026-08-04.
Products change. These were read on 2026-08-04; if something here is out of date, tell us and we will correct it.
Private evidence, independently verified
The AI receives the structure of the failure without screens, input values, or page text. A fix is confirmed only after the same frozen test fails and then passes.
Provable minimization
The evidence pipeline is deny-by-default: a strict allowlist of structural fields, forbidden keys treated as leak signals, and a strict mode that refuses a payload outright rather than storing it.
- A hand-rolled hostile POST cannot persist the values it carries: the server scrubs every ingestion before storage, independent of the SDK, and records what it stripped.
- stepstitch policy verify runs your own hostile fixtures through the live scrub boundary and reports, per fixture, whether it was rejected, dropped or redacted.
Independent verification
The test bytes and execution envelope are frozen, the red run is measured before any fix exists, and the rerun is measured by StepStitch. The proposing agent holds no credential that could record a verdict.
- confirmed_fixed is derived from two measured runs: the same frozen test failing before the fix and passing after, never from a caller asserting it.
- The credential handed to a coding agent cannot write a verdict: the verify scope sits outside the agent scope ladder, so the token that proposes a fix can never be the token that records it worked.
Book a pilot
Self-host the open-source core today, or talk to us about a managed pilot with white-glove integration and a compliance packet for your reviewers.