Skip to main content

Variables & Request Chaining

Variables let you extract values from one request's response and inject them into subsequent requests within a test plan. This enables multi-step workflow testing where later operations depend on data produced by earlier ones — for example, inserting a row, capturing the returned id, and using it in a follow-up SELECT, UPDATE, or DELETE.

Core Concepts

  • Variables use {{variableName}} syntax and are scoped to a single test plan.
  • Extraction rules define how a variable's value is pulled from a response, using a JSON path or regex.
  • Built-in variables provide auto-generated values such as timestamps, UUIDs, etc.
  • Validation prevents running a test plan if any variable is referenced before it has been defined by a prior test.

How It Works

  1. Create a test plan with multiple tests.
  2. In any request field (table name, filter value, RPC parameter, JSON body, etc.), type {{variableName}} to reference a variable.
  3. Click a {{variable}} token to open an inline popover where you can manually set a test value for ad-hoc execution.
  4. In a Test Plan, in the Edit Test dialog, define extraction rules — specify which part of the response should be captured into which variable.
  5. At run-time, the test runner resolves variables top-to-bottom, injecting extracted values into each subsequent request.
  6. If a variable is referenced but never produced by a prior test, the plan displays a "Unresolved Variables" warning, which will inform you of what the variable is and which test(s) require it.

Scope

Variables are scoped to the test plan they are defined in. There is no global variable store or cross-plan sharing.

Built-in Variables

Built-in variables are prefixed with $ to distinguish them from user-defined variables. Each one is resolved fresh every time it is encountered (values are not cached).

VariableDescriptionExample Output
{{$uuid4}}Random UUID v4f47ac10b-58cc-4372-a567-0e02b2c3d479
{{$uuid7}}UUID v7 (time-ordered)018f6b2e-3b6a-7f1a-8c5d-4a3b2c1d0e0f
{{$ulid}}ULID (time-ordered, Crockford base32)01HYX3KBZQA5RNHX1V6J7C4F8G
{{$timestamp}}Current ISO 8601 timestamp2026-02-15T14:30:00.000Z
{{$timestampUnix}}Current Unix timestamp (seconds)1771162200
{{$timestampUnixMs}}Current Unix timestamp (milliseconds)1771162200000
{{$dateOnly}}Current date (YYYY-MM-DD)2026-02-15
{{$timeOnly}}Current time (HH:mm:ss)14:30:00
{{$randomInt}}Random integer 0–9999948271
{{$randomEmail}}Random test emailtest_x8k2m@example.com
{{$randomString}}Random 12-char alphanumericaB3kQ9mW2xYz

Key details about built-in variables:

  • Always available — they don't require a prior test to define them.
  • Generate a new value on every resolution (each {{$uuid4}} in a plan produces a different UUID).
  • Cannot be overwritten by extraction rules — names starting with $ are reserved.