v1.1.0 · MIT · zero AI calls at runtime

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.

$curl -fsSL https://raw.githubusercontent.com/truongnat/TIRAI/main/install.sh | bash
SCROLL
0
AI calls at runtime
7
source formats
22
workspaces
143
executor tests
3
exit codes
How it works

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.

01 / INGEST
Multi-source
Excel · PDF · DOCX · MD · CSV · JSON · URL → canonical context
02 / HOST IR
Semantic artifacts
Host agent writes requirements, test-plan, testcases
03 / IMPORT
Validated
artifact import checks schema — invalid input fails closed
04 / EXECUTE
Real runners
Chromium + Vitest · secrets via env refs · cleanup required
05 / REPORT
Canonical result
PASS / FAIL / BLOCKED with sanitized evidence per run
Capabilities

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.

CLI

One command surface.

Init → ingest → import → approve → execute → report. Deterministic, inspectable, CI-ready.

tirai — session
tirai init --name my-appInitialized TIRAI workspace at ./.tirai tirai ingest specs/checkout.mdIngested: 3 requirements, 7 scenarios tirai artifact import testcases --file testcases.jsonImported testcases: .tirai/artifacts/testcases.json tirai execute --platform web --environment staging --test-cases TC-001,TC-002 --confirm-dedicated-test-tenantTIRAI execute complete: passed Platform: web · Environment: staging · Test cases: 2 EXIT=0 tirai report
Trust model

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
Get started

One line
to install.

$curl -fsSL https://raw.githubusercontent.com/truongnat/TIRAI/main/install.sh | bash

then npx playwright install chromium → tirai --help