Scripting
Response
Response Query

Response Query

The res object that is available inside the vars, assertions, scripting and testing contexts can be queried for data by invoking it like below.

Think of it as lodash.get() on steroids

res('order.total')

Examples

const data = {
  customer: {
    address: {
      city: "bangalore"
    },
    orders: [
      {
        id: "order-1",
        items: [
          { id: 1, amount: 10 },
          { id: 2, amount: 20 }
        ]
      },
      {
        id: "order-2",
        items: [
          { id: 3, amount: 30 },
          { id: 4, amount: 40 }
        ]
      }
    ]
  },
};
QueryOutput
res("customer.address.city")bangalore
res("customer.orders.items.amount")[10, 20, 30, 40]
res(""customer.orders.items.amount[0]")10
res("..items.amount")[10, 20, 30, 40]
res("..amount")[10, 20, 30, 40]
res("..items.amount[0]")10
res("..items[0].amount")10
res("..items[5].amount")undefined
res("..id")["order-1", 1, 2, "order-2", 3, 4]
res("customer.orders.foo")undefined
res("..customer.foo")undefined
res("..address")[{ city: "bangalore" }]
res("..address[0]"){ city: "bangalore" }

API

Standard dot notation

Example:

res('customer.orders.items.amount')

Deep navigation .. double dots

Example:

res('..items.amount')

Array indexing

Example:

res('..items[0].amount')

Array filtering [?] with corresponding filter function

Example:

res('..items[?].amount', i => i.amount > 20)

Array mapping [?] with corresponding mapper function

Example:

res('..items..amount[?]', amt => amt + 10)