Specification-first
test automation
Turn Excel, PDF, DOCX, Markdown, and JSON specs into canonical test cases — executed for real on Chromium & Vitest. Deterministic. Inspectable. Fail-closed.
The host agent decides what.
TIRAI decides how.
Most test tools start from code. TIRAI starts from specifications. The host AI reads your spec, writes canonical JSON artifacts, and TIRAI executes them deterministically — no guessing, no silent fallbacks.
Everything downstream of the spec
is deterministic.
No model calls inside the tool. No credentials stored. No silent guessing.
Multi-source ingestion
Excel, PDF, DOCX, Markdown, CSV, JSON, remote HTML — one canonical pipeline regardless of format.
Canonical JSON artifacts
Requirements, plans, cases live as validated JSON in .tirai/artifacts/ — truth between spec and execution.
Real browser execution
Playwright drives actual Chromium. DOM-id and positional locators guaranteed unique; ambiguous targets block.
Secret refs, not secrets
secret://env:NAME resolves at runtime through auth refs — credentials never enter artifacts.
Fail-closed validation
Unconfigured envs, stale specs, ambiguous elements, missing cleanup — exit 2, never a silent pass.
Multi-format export
JSON, Excel, Markdown, PDF, DOCX — export cases without mutating the source of truth.
One command surface.
Init → ingest → import → approve → execute → report. Deterministic, inspectable, CI-ready.
No guessing.
Ever.
TIRAI is a pure tool. The host agent supplies semantic understanding; TIRAI supplies deterministic validation, execution, and reporting. Anything ambiguous or unconfigured fails closed — visibly.
- ▸Zero AI calls at runtimegenerationAiCalls = executionAiCalls = agenticFallbacks = 0
- ▸Secret refs onlyusernameRef / passwordRef / tokenRef / extraRefs — env vars at runtime, never stored
- ▸Approval gatereview approve binds a case to a route before it can execute; stale fingerprints reject
- ▸Mutation requires cleanupdata-mutating steps must declare a cleanup plan or the run blocks
- ▸Evidence per runsanitized screenshots, page text, assertion results in .tirai/workflow/runs/
- ▸Exit code contract0 pass · 1 business fail · 2 blocked/manual/error — CI-friendly
One line
to install.
then npx playwright install chromium → tirai --help