Skip to main content

Assertion Operators Reference

Complete reference for all operators available in Nidra assertions.

Comparison Operators​

equals​

Value must match exactly.

Field "status" equals "success"
Field "count" equals 42
Field "active" equals true

Data Types: string, number, boolean, null


not equals​

Value must be different.

Field "error" not equals null
Field "status" not equals "failed"
Status Code not equals 500

Data Types: string, number, boolean, null


greater than​

Numeric comparison.

Field "count" greater than 0
Field "price" greater than 9.99
Response time greater than 100

Data Types: number


greater than or equal​

Numeric comparison (inclusive).

Field "age" greater than or equal 18
Field "quantity" greater than or equal 1

Data Types: number


less than​

Numeric comparison.

Response time less than 500
Field "discount" less than 100
Field "rating" less than 5.0

Data Types: number


less than or equal​

Numeric comparison (inclusive).

Field "progress" less than or equal 100
Field "attempts" less than or equal 3

Data Types: number


String Operators​

contains​

String contains substring.

Field "email" contains "@example.com"
Field "message" contains "success"
Response body contains "user"

Data Types: string

Case Sensitive: Yes (unless case-insensitive mode)


does not contain​

String does not contain substring.

Field "email" does not contain "test"
Response body does not contain "error"

Data Types: string


starts with​

String begins with prefix.

Field "userId" starts with "USR_"
Field "url" starts with "https://"

Data Types: string


ends with​

String ends with suffix.

Field "filename" ends with ".pdf"
Field "email" ends with "@company.com"

Data Types: string


matches regex​

String matches regular expression.

Field "phone" matches regex "^\d{3}-\d{3}-\d{4}$"
Field "zipCode" matches regex "^\d{5}$"
Field "uuid" matches regex "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"

Data Types: string

Syntax: JavaScript regex (without delimiters)


Existence Operators​

exists​

Field must be present (any value).

Field "userId" exists
Field "createdAt" exists
Header "Content-Type" exists

Data Types: any


does not exist​

Field must be absent.

Field "error" does not exist
Field "deletedAt" does not exist

Data Types: any


is null​

Value must be null.

Field "middleName" is null
Field "canceledAt" is null

Data Types: null


is not null​

Value must not be null.

Field "userId" is not null
Field "email" is not null

Data Types: any except null


Type Operators​

is type​

Value must be of specified type.

Field "id" is type "number"
Field "email" is type "string"
Field "active" is type "boolean"
Field "tags" is type "array"
Field "user" is type "object"
Field "optional" is type "null"

Supported Types:

  • string
  • number
  • boolean
  • array
  • object
  • null

Collection Operators​

is empty​

Array or object has no elements.

Field "errors" is empty
Field "tags" is empty

Data Types: array, object


is not empty​

Array or object has at least one element.

Field "results" is not empty
Field "items" is not empty

Data Types: array, object


length equals​

Exact number of elements.

Field "items" length equals 5
Field "name" length equals 10 // string length

Data Types: array, object, string


length greater than​

More than N elements.

Field "results" length greater than 0
Field "tags" length greater than 2

Data Types: array, object, string


length less than​

Fewer than N elements.

Field "errors" length less than 1
Field "description" length less than 500

Data Types: array, object, string


Range Operators​

between​

Value within range (inclusive).

Status Code between 200 and 299
Field "age" between 18 and 65
Response time between 100 and 500

Data Types: number


not between​

Value outside range.

Status Code not between 400 and 599
Field "temperature" not between 0 and 100

Data Types: number


Array-Specific Operators​

contains element​

Array contains specific value.

Field "tags" contains element "important"
Field "roles" contains element "admin"

Data Types: array


does not contain element​

Array does not contain value.

Field "tags" does not contain element "spam"

Data Types: array


all elements match​

Every array element matches condition.

Field "prices[*]" all elements greater than 0
Field "emails[*]" all elements contains "@"

Data Types: array


any element matches​

At least one array element matches condition.

Field "statuses[*]" any element equals "active"

Data Types: array


Special Operators​

matches schema​

Response matches JSON Schema.

Response body matches schema {
"type": "object",
"required": ["id", "name"],
"properties": {
"id": {"type": "number"},
"name": {"type": "string"}
}
}

Data Types: object, array

JSON Schema Reference


Status Code Operators​

All comparison operators work with status codes:

Status Code equals 200
Status Code not equals 500
Status Code greater than or equal 200
Status Code less than 300
Status Code between 200 and 299

Header Operators​

All string operators work with headers:

Header "Content-Type" equals "application/json"
Header "Content-Type" contains "json"
Header "Authorization" starts with "Bearer"
Header "Set-Cookie" exists

Response Time Operators​

Numeric operators for performance:

Response time less than 500
Response time greater than 100
Response time between 100 and 500

Units: Milliseconds


Best Practices​

Choose the Right Operator​

  • Exact matches: Use equals
  • Partial matches: Use contains
  • Ranges: Use between or greater/less than
  • Existence: Use exists or is not null
  • Types: Use is type for validation

Data Types​

Match operator to data type:

  • Numeric comparisons for numbers only
  • String operators for strings only
  • Collection operators for arrays/objects

Performance​

  • equals is fastest
  • Regex is slowest
  • Use simplest operator that works

Readability​

  • Use descriptive field names
  • Combine multiple simple assertions
  • Add comments for complex logic

Common Patterns​

Successful Response​

Status Code equals 200
Response time less than 500
Header "Content-Type" contains "json"
Field "status" equals "success"

Resource Created​

Status Code equals 201
Header "Location" exists
Field "id" exists
Field "id" is type "number"

Error Response​

Status Code between 400 and 499
Field "error" exists
Field "error.message" is type "string"
Field "error.code" is type "string"

Pagination​

Field "results" is type "array"
Field "results" is not empty
Field "page" is type "number"
Field "page" greater than 0
Field "totalPages" greater than or equal {{page}}

See Also​