k6
Scripts Commands
Write JavaScript test scripts with HTTP requests, checks, thresholds, and custom metrics.
8 commands
Pro Tips
Use check() to validate responses and track pass rates
Commands
Basic HTTP test
$ import http from 'k6/http';
import { check } from 'k6';
export default function() {
const res = http.get('https://api.example.com');
check(res, { 'status is 200': (r) => r.status === 200 });
}
Basic HTTP GET test with check.
POST request
$ const payload = JSON.stringify({ username: 'test' });
const res = http.post(url, payload, { headers: { 'Content-Type': 'application/json' } });
POST JSON data.
Multiple checks
$ check(res, {
'status is 200': (r) => r.status === 200,
'response time < 200ms': (r) => r.timings.duration < 200,
'has body': (r) => r.body.length > 0,
});
Multiple response checks.
Group requests
$ import { group } from 'k6';
group('user flow', function() {
http.get(url + '/login');
http.get(url + '/dashboard');
});
Group related requests.
Sleep between requests
$ import { sleep } from 'k6';
export default function() {
http.get('https://api.example.com');
sleep(1);
}
Add think time between requests.
Setup and teardown
$ export function setup() {
const res = http.post(url + '/auth', JSON.stringify({ user: 'admin', pass: 'secret' }));
return { token: res.json('token') };
}
export default function(data) {
http.get(url + '/api', { headers: { Authorization: `Bearer ${data.token}` } });
}
export function teardown(data) {
// cleanup logic
}
Use setup/teardown for test lifecycle.
Custom metrics
$ import { Trend, Counter, Rate } from 'k6/metrics';
const myTrend = new Trend('my_api_duration');
const myCounter = new Counter('my_api_calls');
const myRate = new Rate('my_api_success');
export default function() {
const res = http.get(url);
myTrend.add(res.timings.duration);
myCounter.add(1);
myRate.add(res.status === 200);
}
Define custom metric types.
File upload
$ import { open } from 'k6';
import http from 'k6/http';
const file = open('./data.csv', 'b');
export default function() {
http.post(url, { file: http.file(file, 'data.csv') });
}
Upload a file in test.