Postman to Rhai

Each Postman command and the Rhai code Kitten runs for it. The importer translates these automatically; hand-written scripts use the Rhai column.

Variables and scopes

PostmanKitten (Rhai)
pm.environment.set(k, v)set_env_var(k, v)
pm.environment.get(k)get_env_var(k)
pm.environment.has(k)vars_has(k)
pm.environment.unset(k)unset_env_var(k)
pm.environment.clear()clear_env_vars()
pm.environment.toObject()env_vars_object()
pm.variables.get(k)get_var(k)
pm.variables.set(k, v)set_var(k, v)
pm.variables.replaceIn(s)replace_in(s)
pm.variables.toObject()vars_object()
pm.variables.has(k)vars_has(k)
pm.variables.unset(k) / .clear()unset_var(k) / clear_vars()
pm.environment.replaceIn(s) / pm.globals.replaceIn(s) / pm.collectionVariables.replaceIn(s)replace_in(s)
postman.setEnvironmentVariable(k, v) / getEnvironmentVariable(k) / clearEnvironmentVariable(k) / clearEnvironmentVariables()set_env_var / get_env_var / unset_env_var / clear_env_vars
postman.setGlobalVariable(k, v) / getGlobalVariable(k) / clearGlobalVariable(k) / clearGlobalVariables()set_global_var / get_global_var / unset_global_var / clear_global_vars
pm.collectionVariables.set(k, v)set_collection_var(k, v)
pm.collectionVariables.get(k)get_collection_var(k)
pm.collectionVariables.unset(k) / .clear()unset_collection_var(k) / clear_collection_vars()
pm.globals.set(k, v)set_global_var(k, v)
pm.globals.get(k)get_global_var(k)
pm.globals.unset(k) / .clear()unset_global_var(k) / clear_global_vars()

Requests and responses

PostmanKitten (Rhai)
pm.response.coderes.status
pm.response.status / .statusText / .reason()res.statusText
pm.response.size()res.sizes
pm.getResponseHeader(k) / postman.getResponseHeader(k)header(res, k)
pm.info.requestName / requestId / iteration / iterationCountinfo.requestName / info.requestId / info.iteration / info.iterationCount
pm.info.eventNameinfo.postmanEventName
pm.response.json()res.body
pm.response.text()to_json(res.body)
pm.response.responseTimeres.responseTime
pm.response.headers.get(k)header(res, k)
pm.cookies.get(k)res.cookies[k]
pm.request.urlreq.url
pm.request.methodreq.method
pm.request.headers.add(k, v)set_header(k, v)
pm.sendRequest(url, cb)http(#{ url: ... })

Tests and assertions

PostmanKitten (Rhai)
pm.test("name", () => { ... })test("name", || ...)
pm.expect(a).to.equal(b)chai_equal(a, b, false)
pm.expect(a).to.eql(b) / .deep.equal(b)chai_equal(a, b, true)
pm.expect(a).to.be.above(b)a > b
pm.expect(a).to.include(b)chai_include(a, b, deep, nested)
pm.expect(o).to.have.nested.property("a.b[0]", v)chai_property_equals(o, "a.b[0]", v, true, false)
pm.expect(o).to.have.all.keys("a") / .any.keys(...)chai_keys(o, ["a"], include, any)
pm.expect(xs).to.include.ordered.members([1, 2])chai_members(xs, [1, 2], true, true, deep)
pm.expect(fn).to.throw(TypeError, /id/)chai_throws(fn, "TypeError", #{pattern: "id", flags: ""})
pm.expect(fn).to.increase(obj, "n").by(2){ let __before = …; fn.call(); chai_delta(…) }
pm.response.to.have.status(200)chai_equal(res.status, 200, false)
pm.response.to.not.have.status(n) / .to.have.not.status(n)chai_equal(res.status, n, false) negated
pm.response.to.be.ok / .success / .info / .redirection / .clientError / .serverError / .errorrange comparison
pm.response.to.be.accepted / .badRequest / .unauthorized / .forbidden / .notFound / .rateLimitedequality
pm.response.to.have.header(k) / .not.have.header(k)chai_has_property(res.headers, k, false)
pm.response.to.not.have.body(s)chai_equal negated
pm.response.to.be.withBody / .not.be.withBodyres.text != ""
pm.test.skip("t", fn) / pm.test.index()skip_test("t") / test_index()
tests["name"] = expr (also tests['name'], tests[`name ${x}`], with or without ;)test("name", || …)

Runner control

PostmanKitten (Rhai)
pm.setNextRequest("Name")set_next_request("Name")
pm.setNextRequest(null)stop_execution()
pm.execution.skipRequest()skip_request()

Async code and JavaScript features

PostmanKitten (Rhai)
await pjs_await(p)
async () => { … }|| js_async(|| { … })
new Promise((res, rej) => …), Promise.all / allSettled / race / any / resolve / rejectjs_promise_new(…), js_promise_all(…), …
p.then(f, g) / .catch(g) / .finally(f)js_promise_then(p, f, g) / js_promise_catch / js_promise_finally
setTimeout(f, ms, …args), setInterval, setImmediate, clear*js_set_timeout(f, ms, [args]), …
pm.test("t", function (done) { … })test("t", |done| …)
pm.test("t", async () => { … })test("t", || js_async(…))
pm.sendRequest(req, (err, res) => …)js_send_request(req, cb)
await pm.sendRequest(req)js_await(http(req))
pm.vault.get(k) / .set(k, v) / .unset(k)vault_get(k) / vault_set(k, v) / vault_unset(k)

Not supported

Rows in yellow have no Kitten translation. The importer keeps the request, reports the line, and writes // TODO (script): <original> in the Script tab.

PostmanKitten (Rhai)
pm.visualizer.set(...) / pm.visualizer.clear()
pm.datasets(...)
pm.message
pm.require("@team/pkg")
require("<module>") with no shim
cheerio
Backbone
pm.execution.location
pm.request.auth
pm.request.url.query / .path / .host / .protocol / .port / .hash / .auth
pm.response.cookies / pm.response.stream