Checks validate boolean conditions in your test. Testers often use checks to validate that the system is responding with the expected content. For example, a check could validate that a POST request has a response.status == 201, or that the body is of a certain size.
Checks are similar to what many testing frameworks call an assert, but failed checks do not cause the test to abort or finish with a failed status. Instead, k6 keeps track of the rate of failed checks as the test continues to run
Each check creates a rate metric. To make a check abort or fail a test, you can combine it with a Threshold.
Check for HTTP response code
Checks are great for codifying assertions relating to HTTP requests and responses. For example, this snippet makes sure the HTTP response code is a 200:
Check for text in response body
Sometimes, even an HTTP 200 response contains an error message. In these situations, consider adding a check to verify the response body, like this:
Check for response body size
To verify the size of the response body, you can use a check like this:
See percentage of checks that passed
When a script includes checks, the summary report shows how many of the tests' checks passed:
In this example, note that the check "is status 200" succeeded 100% of the times it was called.
Add multiple checks
You can also add multiple checks within a single check() statement:
When this test executes, the output will look something like this:
About Failing Checks
When a check fails, the script will continue executing successfully and will not return a 'failed' exit status. If you need the whole test to fail based on the results of a check, you have to combine checks with thresholds. This is particularly useful in specific contexts, such as integrating k6 into your CI pipelines or receiving alerts when scheduling your performance tests.
- Failing a load test using checks
- k6chaijs: use BDD assertions in k6