Test your app
the way a person would.
In English.
Describe what should happen. Testorim spins up Chromium, drives it like a real user, captures everything, and writes up what actually happened — video, trace, accessibility scan, console errors, the lot.
- navigate /login
- type email
- type password
- click Continue
- assert dashboard
Three things Testorim handles
that you currently can't.
Plain English in. Real browser steps out.
No DSL, no test framework, no selectors. You write what you'd tell a new hire on day one. Testorim's planner picks the right Playwright primitives, finds elements with cascading strategies, and self-heals when the page changes.
- Action-aware element resolution (button vs input vs link)
- AI healing if all standard strategies miss
- Procedures replay deterministically — no LLM in the loop
- →type card number field
- →type expiry & CVC
- →click Pay $49
- →assert "Thanks for your order" visible
Real Chromium, real network, real timing.
Not a headless DOM simulator. Tests run in the same engine your users see — with a real cookie jar, real CORS, real navigations. Cross-browser to Firefox + Safari for the bugs Chromium hides.
- WebM video + Playwright trace per run, replayable in trace.playwright.dev
- Network capture with response headers on failed + first-of-origin requests
- Console errors + page exceptions tagged to the step that triggered them
- moderatecolor-contrast3
- seriouslabel1
The report a bug ticket actually needs.
Every run finishes with an AI summary that quotes specific failures, plus the artifacts to back it up. One click and you have a Jira-ready ticket with reproduction steps, expected vs actual, and links to the video and trace.
- Auto-generated bug tickets — paste straight into Jira / Linear
- axe-core a11y violations grouped by impact
- LCP, FCP, TTFB, DCL captured on every final page
Result
Failed — the checkout button rendered but the POST /api/orders silently 500'd. UI showed the success page, but no order row was created.
Suggestion
The /api/orders handler at backend/src/routes/orders.ts:42 is throwing on a missing Stripe customer id. Add a null check and return 4xx instead of 500.
1. Navigate to /checkout
2. Click Pay $49
...
The same test, two ways to write it.
Both produce a passing run, a video, and a report. One of them you can write while you're half-asleep.
import { test, expect } from "@playwright/test";
test("user can sign in", async ({ page }) => {
await page.goto("https://your-app.com/login");
await page
.getByRole("textbox", { name: /email/i })
.fill("test@example.com");
await page.getByRole("button", { name: /^continue$/i }).click();
await page
.getByRole("textbox", { name: /password/i })
.fill(process.env.PASSWORD!);
await page.getByRole("button", { name: /^continue$/i }).click();
await expect(page).toHaveURL(/\/dashboard/);
await expect(
page.getByRole("heading", { name: /welcome/i })
).toBeVisible();
});"Sign in with test@example.com and verify the dashboard loads."
Three things you do. The third is optional.
- I
You describe what should happen.
The chat input is the input. Anything between a one-line smoke test and a fifteen-step checkout walkthrough — Testorim's planner figures out the steps. No DSL, no selectors, no "wait for..." gymnastics.
you"Go to /login, sign in with test@example.com, verify the dashboard loads."
- II
Testorim drives a real Chromium.
Steps stream onto your screen as they execute. Screenshots refresh twice a second. If something fails, the agent stops cleanly — no zombie cursor flailing through three more steps after the page already broke.
- III
Save it as a procedure (or don't).
Loved the run? One click and it becomes a saved procedure that replays without invoking the LLM — paid plans pay cents per re-run. Hated it? Walk away. Nothing was saved.
Free to try. Honest when you grow.
30 runs a month at $0 is enough to know if this fits. Then a flat monthly tier, plus one-time credit packs for a busy week. Every plan is cancel-anytime.
Free
Try it on personal projects.
- 30 test runs / month
- 60 browser minutes / month
- Chromium only
- API response assertions
- Personal workspace only
- 7 days of history
Pro
For solo builders shipping fast.
- 500 test runs / month
- 600 browser minutes / month
- Mobile viewport testing
- Flaky detection (Run 3×)
- Login state reuse
- Video + Playwright trace
- Accessibility scan
- 2 team workspaces · 3 seats
- 90 days of history
Team
For teams that ship together.
- 2,500 test runs / month
- 3,000 browser minutes / month
- Everything in Pro
- Cross-browser (Firefox + Safari)
- DB state verification
- 4 team workspaces · 10 seats
- 365 days of history
Stop writing Playwright specs. Describe the test instead.
Sign up, paste a URL, describe a flow. First report in under two minutes. No credit card.
Start free