Each Bruno command and the Rhai code Kitten runs for it. The importer translates these automatically; hand-written scripts use the Rhai column.
Bruno Kitten (Rhai)
bru.setEnvVar(k, v)set_env_var(k, v)
bru.getEnvVar(k)get_env_var(k)
bru.getEnvVar(k) !== undefined && …vars_has(k)
bru.deleteEnvVar(k)unset_env_var(k)
bru.deleteAllEnvVars()clear_env_vars()
bru.getAllEnvVars()env_vars_object()
bru.getVar(k)get_var(k)
bru.setVar(k, v)set_var(k, v)
bru.interpolate(s)replace_in(s)
bru.getAllVars()vars_object()
bru.hasVar(k)vars_has(k)
bru.deleteVar(k) / bru.deleteAllVars()unset_var(k) / clear_vars()
bru.setEnvVar / getEnvVar / deleteEnvVar / deleteAllEnvVarsset_env_var / get_env_var / unset_env_var / clear_env_vars
bru.setGlobalEnvVar / getGlobalEnvVar / deleteGlobalEnvVar / deleteAllGlobalEnvVarsset_global_var / get_global_var / unset_global_var / clear_global_vars
bru.setCollectionVar(k, v)set_collection_var(k, v)
bru.getCollectionVar(k)get_collection_var(k)
bru.deleteCollectionVar(k) / bru.deleteAllCollectionVars()unset_collection_var(k) / clear_collection_vars()
bru.setGlobalEnvVar(k, v)set_global_var(k, v)
bru.getGlobalEnvVar(k)get_global_var(k)
bru.deleteGlobalEnvVar(k) / bru.deleteAllGlobalEnvVars()unset_global_var(k) / clear_global_vars()
Bruno Kitten (Rhai)
res.getStatus()res.status
res.statusTextres.statusText
res.getSize()res.sizes
res.getHeader(k)header(res, k)
req.getName()info.requestName
res.getBody()res.body
JSON.stringify(res.getBody())to_json(res.body)
res.getResponseTime()res.responseTime
res.cookies[k]res.cookies[k]
req.getUrl()req.url
req.getMethod()req.method
req.setHeader(k, v)set_header(k, v)
bru.sendRequest(url)http(#{ url: ... })
Bruno Kitten (Rhai)
test("name", () => { ... })test("name", || ...)
expect(a).to.equal(b)chai_equal(a, b, false)
expect(a).to.eql(b) / .deep.equal(b)chai_equal(a, b, true)
expect(a).to.be.above(b)a > b
expect(a).to.include(b)chai_include(a, b, deep, nested)
expect(o).to.have.nested.property("a.b[0]", v)chai_property_equals(o, "a.b[0]", v, true, false)
expect(o).to.have.all.keys("a") / .any.keys(...)chai_keys(o, ["a"], include, any)
expect(xs).to.include.ordered.members([1, 2])chai_members(xs, [1, 2], true, true, deep)
expect(fn).to.throw(TypeError, /id/)chai_throws(fn, "TypeError", #{pattern: "id", flags: ""})
expect(fn).to.increase(obj, "n").by(2){ let __before = …; fn.call(); chai_delta(…) }
expect(res.getStatus()).to.equal(200)chai_equal(res.status, 200, false)
expect(res.getStatus()).to.not.equal(n)chai_equal(res.status, n, false) negated
expect(res.getStatus()).to.be.within(200, 299) (at.least(400) for error)range comparison
expect(res.getStatus()).to.be.equal(202 / 400 / 401 / 403 / 404 / 429)equality
expect(res.getHeaders()).to.have.property(k)chai_has_property(res.headers, k, false)
expect(res.getBody()).to.not.equal(s)chai_equal negated
expect(res.text).to.not.be.empty / .to.be.emptyres.text != ""
test("name", () => expect(Boolean(expr)).to.be.true)test("name", || …)
Bruno Kitten (Rhai)
bru.runner.setNextRequest("Name")set_next_request("Name")
bru.runner.stopExecution()stop_execution()
bru.runner.skipRequest()skip_request()
Bruno Kitten (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]), …
test("t", (done) => …)test("t", |done| …)
test("t", async () => { … })test("t", || js_async(…))
bru.sendRequest(req, cb)js_send_request(req, cb)
await bru.sendRequest(req)js_await(http(req))
Rows in yellow have no Kitten translation. The importer keeps the request, reports the line, and writes // TODO (script): <original> in the Script tab.
Bruno Kitten (Rhai)
bru.runRequest(path)
bru.getSecretVar(k)
bru.getOauth2CredentialVar(k)
bru.cookies.jar()
bru.utils.minifyJson(s) / bru.utils.minifyXml(s)
bru.visualize(type, data)
require("<module>") with no shim