A full testing studio β not a recorder bolted on
Record, run, debug, and trust browser tests β record-first, with the engine to make them hold up.
Record, donβt script
Perform the flow once in a real, bundled Chromium. Trq captures every click, keystroke, upload, navigation, and assertion β zero test code to write or maintain.
Selectors that self-heal
Every element is saved as a ranked ladder of selectors. Replay falls back automatically, and a failed step re-scores the live DOM so you fix it in a click.
Deterministic replay
Every run clears cookies, storage, and caches, then replays from step 1 β no leftover state, no flake, the same result on every machine.
Assertions & captures
Pick an element to assert text, value, or visibility β or capture a value into {{var.NAME}} and reuse it in later steps.
Reusable building blocks
Call one .trq from another, branch a shared prefix, resume to extend, or insert steps mid-flow β grow a suite without re-recording.
API requests built in
Call an HTTP endpoint mid-flow (Postman-style builder + Import cURL), extract response values, then drive the URL it returns.
Network mocking
Snapshot API responses while recording and serve them back on replay β fast, offline-capable runs. Edit any response to test error states.
Debug & share
Step through a replay with a selector inspector, then export the whole run β screenshots, console, network β as one self-contained HTML file.
Selectors that survive redesigns
Brittle selectors are why recorded tests rot. Trq is built so a class rename or a re-ordered DOM doesnβt take your suite down with it.
- A ranked ladder, not one guessMost tools pin a step to a single selector β when the markup shifts, it breaks. Trq records eight ranked rungs (accessible name, test-ids, visible text, semantic class, scoped CSS, XPath) and resolves the first confident match, falling back as needed.
- Framework-awareAngular (
_ngcontent,ng-*), Material/CDK, ReactuseId(:rβ¦:), and hashed CSS-module classes are filtered out β semantic BEM names are kept. - Fragility you can seeThe Inspector grades every rung stable / brittle / dynamic, so you spot fragile selectors before they bite.
- Self-heal on failureWhen a step canβt resolve, Trq re-scores candidates from the live DOM and βPick from pageβ captures fresh selectors in one click.
Build tests you donβt rewrite
Tests share setup β login, navigate, seed data. Trq lets you record those once and reuse them, so maintenance stays linear as your suite grows.
- Composable flowsCall one
.trqfrom another (nested), so a login or setup flow lives in exactly one place β fix it once, every caller updates. - Branch, resume, insertFork a shared prefix into a new test, extend from the end, or record new steps in the middle β without re-recording the whole flow.
- Values that flowCapture from the page or extract from an API response into
{{var.NAME}}, then reuse it downstream;{{uuid}}& friends generate once per run. - Reusable setupViewport, locale, geolocation, fake camera/mic, permissions, and headers are saved per session and applied on every run.
Assert and capture, by pointing
Check what matters and pull out the values you need β all by clicking elements on the page, no selectors to hand-write.
- Assert what you can seePick an element and check itβs visible, or that its text or value matches β no selector hunting, and it works inside same-origin iframes.
- Three match modesCompare exact, contains, or regex;
{{templates}}resolve before the check, so assertions can reference captured values. - Capture into variablesRead an elementβs text, an inputβs value, or any attribute into
{{var.NAME}}β with an optional regex to pull just the part you want. - Always currentOnly the instruction is saved (selector + kind), never the value β so it reflects each runβs real data.
A full API client, inside your test
Set up data, read hidden values, or start from a URL the backend returns β without leaving the flow.
- Talk to your API mid-flowRuns server-side (Node
fetch) β no CORS β and it can fire before any page loads, e.g. to fetch the URL you then navigate to. - Postman-style builderMethod, URL, query params, headers, and a JSON body β all
{{templated}}. Send to try it live and see status, time, and size. - Import cURLPaste a DevTools or Postman βCopy as cURLβ and the whole request β method, URL, params, headers, body β fills in automatically.
- Extract β variablesPull values by JSON dot-path (
data.user.id) or/regex/into{{var.NAME}}; fail-on-error stops a broken setup loudly.
Mock the network, deterministically
Make replays fast and repeatable β and exercise error paths you canβt trigger on demand β by serving recorded responses.
- Record once, serve backSnapshot API responses while recording; replay serves them instead of hitting the backend β fast, offline-capable, deterministic runs.
- Ordered matchingMatched by method + URL in the order recorded, so a single gateway called many times replays the right response each time.
- Edit any responseChange the body, status, or headers β flip a
200to a500β to test error and edge states without touching the backend. - Hybrid by designOnly API calls are mocked; static assets load live and unmatched requests pass through to the real network.
Inspect every run
After each replay the bottom panel fills with everything you need to understand β and debug β what happened.
- EventsEvery step with pass/fail and per-step timing. Double-click to edit a step, reorder its selector ladder, or re-pick an element from the live page.
- NetworkA familiar request list β filter by request type and search URLs, then open any request to inspect its headers, payload, response, and timing.
- SummaryPass/fail counts, total duration, the slowest step, and the failure screenshot if the run stopped β the at-a-glance health of the run.
- TimelineA scrubber over time-scaled step bars with a thumbnail of the page at each step β hover to preview, click to jump straight to that moment.
Stop scripting tests. Start recording them.
Free, in early access. Universal macOS build β Apple Silicon & Intel.
