Testing and assertions

Kulala’s testing API matches the IntelliJ HTTP Client. Define tests in post-request scripts with client.test and client.assert.

tests.httphttp
### TEST_REQUEST1

GET https://echo.kulala.app/get
Content-Type: application/json

{
  "username": "user123",
  "password": "pass123"
}

> {%
  client.test("Request executed successfully", function() {
    client.assert(response.status === 200, "Response status is not 200");
  });

  client.test("Headers option exists", function() {
    client.assert(
      response.body.hasOwnProperty("headers"),
      "Cannot find 'headers' in parsed JSON body",
    );
  });

  client.test("Response content-type is json", function() {
    const type = response.contentType.mimeType;
    client.assert(
      type === "application/json",
      "Expected 'application/json' but received '" + type + "'",
    );
  });
%}

Status code operator

Assert expected HTTP status without a script:

expect-status.httphttp
// @kulala-expect-status-code 404

GET https://echo.kulala.app/status/404 HTTP/1.1

Pre-request tests

You can also assert in pre-request scripts (e.g. variable setup):

pre-request-test.jsjavascript
client.test('does work', () => {
	client.assert(
		request.variables.get('TYPE_FROM_JS') === 'kulala-type-from-js',
		'TYPE_FROM_JS should be set correctly'
	);
});

Failed assertions appear in the test report alongside client.log output.