Your tests tell a story.
Now your CI can read it.
razo gives every Playwright control a human name and narrates every action twice: a readable report, and a structured artifact an AI can analyze. When a test fails, you get the business story — not a stack trace.
Start free with GitHubFree · no card requiredPlaywright says
Error: locator('[data-testid="status"]')
timed out after 30000msThe same failure, narrated by razo
- Type "mi-llavero" into field "Filename"
- Choose "3MF" in select "Format"
- Click button "Export"
- Assert label "Export status" has text "Exported mi-llavero.3mf (Standard)"
expected: Exported mi-llavero.3mf (Standard) actual: Error: missing fields
AI analysis
The export never happened: a filename was typed and a format chosen, but no step ever selected a quality — the app correctly rejected the export. Fix: add quality.select('Standard') before clicking Export.How it works
Three steps to narrated CI
1
Install razo
Name your controls, wire the reporter in your Playwright config.
npm i -D @razohq/razo
2
Upload from CI
One project token, two lines in your workflow.
npx razo-upload
3
Read the story
Failures get an AI analysis and a browsable narrated history, per project.
The artifact
Every failure is structured
{
"action": "assert-text",
"name": "Export status",
"expected": "Exported mi-llavero.3mf (Standard)",
"actual": "Error: missing fields",
"status": "failed"
}The payoff
The AI reads the story
The export never happened: a filename was typed and a format chosen, but no step ever selected a quality — the app correctly rejected the export. Fix: add quality.select('Standard') before clicking Export.
Pricing
Start free, upgrade when it earns it
Free
Unlimited projects and runs · 30-day narrated history · 3 trial AI analyses · unlimited BYO-key analyses via the OSS CLI.
Start free