PRIVATE BETA / Onboarding engineering design partners

Autonomous browser agents that compile into deterministic Playwright specs.

ReproGrid runs on every pull request against your preview deployments. Our agents explore real user flows over CDP, catch functional and state regressions, and hand your engineers a reproducible .spec.ts with full network and DOM traces.

Zero selector maintenance • Self-healing AST cache • [email protected]
TARGET: https://checkout-pr-418.preview.acme.dev BROWSER: Chromium 133 (CDP)
PASS agent.navigate("/billing/upgrade")

AXTree snapshot captured (412 nodes) • Session hydrated via storageState

210ms
HEAL agent.act("Apply promo code TEAM25 and select Annual")

Selector [data-testid="apply-coupon"] removed in commit a81c4f9. Re-bound via AXTree role button[name="Apply"].

380ms
REGRESSION agent.assert("Subscription confirmation modal renders")
1,140ms

Uncaught exception in client bundle + HTTP 500 on POST /api/v2/subscriptions

Response: {"error": "invalid_key", "detail": "proration_date required"}
Root Cause: Frontend sends prorationDate (camelCase); API schema in PR #418 expects proration_date.
COMPILED REPRO SPEC
// Run locally in one command:
// $ npx reprogrid replay rg_94f8a2

import { test, expect } from '@playwright/test';

test('repro: 500 on annual upgrade with coupon', async ({ page }) => {
  await page.goto('/billing/upgrade');
  await page.getByRole('radio', { name: /Annual/i }).check();
  await page.getByPlaceholder('Promo code').fill('TEAM25');
  await page.getByRole('button', { name: 'Apply' }).click();

  const [res] = await Promise.all([
    page.waitForResponse('/api/v2/subscriptions'),
    page.getByRole('button', { name: 'Confirm' }).click(),
  ]);

  expect(res.status()).toBe(200); // Returns 500
});
Bundle: trace.zip + network.har 3/3 deterministic repros
01 / Hybrid Execution Engine

Explore with multimodal agents. Execute at Playwright speed.

Running an LLM on every click is slow and non-deterministic. Hand-writing CSS selectors breaks every sprint. ReproGrid combines agentic exploration with deterministic AST compilation.

LAYER 01 • PERCEPTION

CDP + Accessibility Tree Grounding

Instead of relying solely on brittle screenshots or raw HTML dumps, ReproGrid hooks directly into the Chrome DevTools Protocol (CDP) to fuse the live Accessibility Tree (AXTree), computed layout bounds, and visual frames.

CDPPage.captureSnapshot() + AXNode graph
LAYER 02 • COMPILATION

Self-Healing Deterministic Cache

Once an agent resolves an intent (act("Upgrade to Annual")), ReproGrid compiles the path into deterministic Playwright locators. Subsequent CI runs execute in milliseconds—only invoking the agent when the UI drifts.

Zero LLM latency on cached paths
LAYER 03 • TELEMETRY

Full-Stack Trace Correlation

When an assertion fails, ReproGrid correlates the exact DOM mutation, console stack trace, and failing network payload with the git diff in your pull request—pinpointing which commit introduced the bug.

Native Playwright trace.zip + HAR export
02 / Composable Primitives

Write intents in plain English or drop straight into Playwright.

Mix natural-language agent actions with standard Playwright assertions in the same test file, or let ReproGrid autonomously discover and fuzz critical user journeys from your staging URL alone.

  • rg.explore() — Autonomous multi-step flow discovery
  • rg.act() — Semantic UI interaction with auto-healing
  • rg.extract() — Typed Zod schema extraction from live DOM
  • rg.exportSpec() — Eject to pure @playwright/test anytime
Compatible with Playwright 1.49+, Stagehand workflows, and standard CI runners.
journeys/team-invite.repro.ts TypeScript SDK
import { test, expect } from '@reprogrid/playwright';
import { z } from 'zod';

test('admin can invite member with RBAC role and verify audit log', async ({ page, rg }) => {
  await page.goto(process.env.PREVIEW_URL);

  // Semantic action: adapts to UI refactors, compiles to cached Playwright locator
  await rg.act('Open workspace settings and invite [email protected] as Billing Admin');

  // Extract structured state directly from the rendered DOM
  const inviteRow = await rg.extract({
    instruction: 'Extract the pending invite row for [email protected]',
    schema: z.object({
      email: z.string(),
      role: z.enum(['Billing Admin', 'Member', 'Owner']),
      status: z.string(),
    }),
  });

  expect(inviteRow).toEqual({
    email: '[email protected]',
    role: 'Billing Admin',
    status: 'Pending',
  });
});
03 / Continuous Verification

Gate every Vercel, Render, or ephemeral PR environment.

Trigger suites automatically when your preview URL goes live, or point ReproGrid at a staging environment after merge.

01 / TRIGGER
GitHub Actions & Deployment Webhooks

Listens for deployment_status events from Vercel, Netlify, Fly.io, or Kubernetes preview namespaces.

02 / PARALLEL FLEET
Isolated Headless Browser Grid

Spins up 50+ parallel ephemeral Chromium sessions with pre-authenticated storage states and deterministic network mocking.

03 / TRIAGE & REPLAY
One-Command Local Reproduction

Engineers run npx reprogrid replay <id> to launch the exact failing browser state locally with Playwright Inspector attached.

04 / Security & Isolation

Built for private staging networks and strict data boundaries.

Your staging environments, auth tokens, and source code never leave isolated execution boundaries.

Ephemeral MicroVM Sandboxes

Every test run executes inside a dedicated, single-tenant browser microVM that is destroyed immediately after teardown.

Zero Model Training

DOM snapshots, HAR logs, and application data are never used to train foundation models or shared across tenants.

Private Tunnel & Static Egress

Test internal staging environments behind Cloudflare Access, Tailscale, or IP allowlists via static egress IPs or local CLI tunnels.

Encrypted Credential Vault

Inject short-lived preview bypass tokens, OAuth sessions, and TOTP secrets at runtime with envelope encryption.

About ReproGrid

Built by engineers obsessed with developer velocity and deterministic software.

ReproGrid is built by Trench Tech, Inc. We started ReproGrid after spending too many nights debugging "cannot reproduce" tickets and maintaining flaky Playwright suites that broke on every UI tweak.

Design Partner Program

Ship without staging blindspots

We work directly with your engineering team to wire up your first 10 critical user journeys in under 30 minutes.