/** * Optional k6 scenario for authenticated booking smoke under load. * Install k6 separately: https://k6.io/docs/get-started/installation/ * * k6 run -e API_BASE=https://staging.example.com -e TOKEN=... scripts/load/booking-smoke.k6.js */ import http from 'k6/http' import { check, sleep } from 'k6' export const options = { vus: Number(__ENV.VUS || 5), duration: __ENV.DURATION || '2m', thresholds: { http_req_failed: ['rate<0.05'], http_req_duration: ['p(95)<2000'], }, } const base = (__ENV.API_BASE || 'http://127.0.0.1:4000').replace(/\/$/, '') const token = __ENV.TOKEN || '' export default function () { const health = http.get(`${base}/health`) check(health, { 'health 200': (r) => r.status === 200 }) const ready = http.get(`${base}/ready`) check(ready, { 'ready 200': (r) => r.status === 200 }) if (token) { const vehicles = http.get(`${base}/api/v1/vehicles?page=1&pageSize=10`, { headers: { Authorization: `Bearer ${token}` }, }) check(vehicles, { 'vehicles ok': (r) => r.status === 200 || r.status === 401 }) } sleep(1) }