Load testing for every narduk app
Declare a plan in your repository, run it on Cloudflare, and read a verdict your CI can gate on.
Config/load-plan.json
{
"targets": { "preview": "auto" },
"scenarios": [
{ "id": "home", "weight": 3, "method": "GET", "path": "/" },
{ "id": "health", "weight": 1, "method": "GET", "path": "/api/health" }
],
"profiles": {
"smoke": { "stages": [{ "duration": "1m", "rate": 5 }] }
},
"thresholds": { "p95Ms": 400, "errorRate": 0.01 }
}Example run
$ nvault run -- narduk-app load run --profile smoke --wait
run lt_01 on preview · build 4f2c9e1 · 5 req/s for 1m
p95 212ms (limit 400ms) · errors 0.00% (limit 1%)
PASS · exit 0What a run gives you
One plan file per app, one command, and a result that names the build it measured.
- Open-model arrival ratePlans set requests per second, so a slow server cannot quietly lower the load it is measured under.
- k6 on Cloudflare ContainersEach run is a k6 script generated from your plan, in containers started for that run and stopped after it.
- Every second, merged percentilesEach second is recorded per scenario, and p95 and p99 come from merged histograms, never averages of averages.
- Thresholds become exit codesExit 0 when every threshold held, 1 when one broke, 2 when the run was aborted. CI gates on it directly.
- Aware of rate limitsSigned runs skip narduk-core's limiter on preview hosts. Production keeps its limits, and 429s are counted as their own class.
- GuardrailsVerified hostnames only, capped rate and duration, and a kill switch that stops a run when its target goes down.
Access: estate-internal
loadtest.dev runs load for Narduk Enterprises apps today. Sign in with your estate account; there are no public sign-ups or paid plans.