Starting with the release of Insomnia 9.3.0, the concept of after-response scripts (also known as post-request scripts or test scripts in other applications) has been introduced. These scripts are executed following the completion of a request.
In after-response scripts, you can perform similar scripting activities as you would in pre-request scripts. For more details on pre-request scripts, see the documentation here.
These scripts can be utilized for:
For tests and assertions you can use insomnia.test
and insomnia.expect
functions:
insomnia.test('Check if status is 200', () => {
insomnia.expect(insomnia.response.status).to.eql(200);
});
Here are some examples insomnia.expect
calls you can make:
insomnia.expect(200).to.eql(200);
insomnia.expect('uname').to.be.a('string');
insomnia.expect('a').to.have.lengthOf(1);
insomnia.expect('xxx_customer_id_yyy').to.include("customer_id");
insomnia.expect(201).to.be.oneOf([201,202]);
insomnia.expect(199).to.be.below(200);
// Testing objects
insomnia.expect({a: 1, b: 2}).to.have.all.keys('a', 'b');
insomnia.expect({a: 1, b: 2}).to.have.any.keys('a', 'b');
insomnia.expect({a: 1, b: 2}).to.not.have.any.keys('c', 'd');
insomnia.expect({a: 1}).to.have.property('a');
insomnia.expect({a: 1, b: 2}).to.be.an('object').that.has.all.keys('a', 'b');
You can also access various response attributes:
const status = insomnia.response.status;
const responseTime = insomnia.response.responseTime;
const jsonBody = insomnia.response.json();
const textBody = insomnia.response.text();
const header = insomnia.response.headers.find(header => header.key === 'Content-Type');
const cookies = insomnia.response.cookies.toObject();
Example of storing response body parts into the environment:
insomnia.environment.set("whole_response", insomnia.response.json());
// Storing a specific field
const jsonBody = insomnia.response.json();
insomnia.environment.set("specific_field", jsonBody.specific_field);
Similar to pre-request scripts, after-response scripts allow for actions such as importing libraries, setting delays, and sending requests at the end of the script.
const atob = require('atob');
await new Promise((resolve) => setTimeout(resolve, 1000));
const resp = await new Promise((resolve, reject) => {
insomnia.sendRequest(
'https://mock.insomnia.rest',
(err, resp) => {
err ? reject(err) : resolve(resp);
}
);
});
After-response scripts exported from Postman should also work when imported into Insomnia.
There are some differences to be aware about:
insomnia.globals
and iteration data insomnia.iterationData
are not supported yet.CollectionVariables
is mapped to baseEnvironment
in Insomnia.postman
interfaces are not supported yet, such as postman.setEnvironmentVariable
.If you notice any incompatibility issues, please report these by create a new issue on Github.