testflow-k6 Performance Report

Run 2026-06-18T04-17-30Z · Profile smoke · Target http://localhost:5050

Generated 2026-06-18T04:24:00.270Z · Commit c27c315 · Workflow 27736351376

Scenarios7
Passed7
Failed0
OverallPASS

Overview

Ramp-up charts show the configured load profile (VU targets per stage). Latency charts use aggregated k6 metrics from each run.

p95 latency — all scenarios

HTTP throughput (req/s)

Scenarios

PASS

authenticated-user

Journey

Authenticated session — login → users → browse dashboard and team.

Flow: Login → GET /api/users → GET dashboard.html → GET team.html.

Iterations90
HTTP reqs360
Max VUs5
p951.28 ms
avg1.03 ms
http failed0.00%
checks100.00%
exit code0

Load profile — ramp-up (ci)

HTTP latency percentiles

Checks (9/9 ok)
  • login status 20090 pass / 0 fail
  • login has token90 pass / 0 fail
  • users status 20090 pass / 0 fail
  • users has array90 pass / 0 fail
  • users responds within 2s90 pass / 0 fail
  • static page status 20090 pass / 0 fail
  • static page has html90 pass / 0 fail
  • static page status 20090 pass / 0 fail
  • static page has html90 pass / 0 fail
Thresholds (7/7 ok)
  • checks rate>0.98
  • http_req_duration p(99)<6000
  • http_req_duration p(95)<2500
  • http_req_duration{endpoint:auth_login} p(95)<3000
  • http_req_duration{endpoint:health} p(95)<800
  • http_req_duration{endpoint:users} p(95)<2000
  • http_req_failed rate<0.01

journeys/authenticated-user.js · npm run test:journey:auth

PASS

load-auth

Load

Sustained login throughput — auth bottleneck detection.

Flow: POST /api/auth/login with token validation each iteration.

Iterations158
HTTP reqs158
Max VUs5
p951.35 ms
avg1.15 ms
http failed0.00%
checks100.00%
exit code0

Load profile — ramp-up (ci)

HTTP latency percentiles

Checks (2/2 ok)
  • login 200158 pass / 0 fail
  • login token present158 pass / 0 fail
Thresholds (9/9 ok)
  • checks rate>0.98
  • http_req_duration p(95)<2500
  • http_req_duration p(99)<6000
  • http_req_duration{endpoint:auth_login} p(95)<3000
  • http_req_duration{endpoint:health} p(95)<800
  • http_req_duration{endpoint:users} p(95)<2000
  • http_req_failed rate<0.01
  • login_duration p(95)<2000
  • login_errors rate<0.01

scenarios/load/api-auth.js · npm run test:load:auth

PASS

load-users

Load

Read-heavy users list with token reuse via setup().

Flow: setup: login once → GET /api/users (authenticated) per iteration.

Iterations160
HTTP reqs161
Max VUs5
p951.32 ms
avg1.09 ms
http failed0.00%
checks100.00%
exit code0

Load profile — ramp-up (ci)

HTTP latency percentiles

Checks (5/5 ok)
  • users status 200160 pass / 0 fail
  • users has array160 pass / 0 fail
  • users responds within 2s160 pass / 0 fail
  • login status 2001 pass / 0 fail
  • login has token1 pass / 0 fail
Thresholds (8/8 ok)
  • checks rate>0.98
  • http_req_duration p(95)<2500
  • http_req_duration p(99)<6000
  • http_req_duration{endpoint:auth_login} p(95)<3000
  • http_req_duration{endpoint:health} p(95)<800
  • http_req_duration{endpoint:users} p(95)<2000
  • http_req_failed rate<0.01
  • users_list_duration p(95)<2000

scenarios/load/api-users.js · npm run test:load:users

PASS

login-flow

Journey

HTTP user journey — login page → API login → dashboard.

Flow: Group 01: GET login.html → Group 02: POST login → Group 03: GET dashboard.html.

Iterations123
HTTP reqs369
Max VUs5
p951.43 ms
avg1.13 ms
http failed0.00%
checks100.00%
exit code0

Load profile — ramp-up (ci)

HTTP latency percentiles

Checks (6/6 ok)
  • static page status 200123 pass / 0 fail
  • static page has html123 pass / 0 fail
  • login succeeds123 pass / 0 fail
  • token returned123 pass / 0 fail
  • static page status 200123 pass / 0 fail
  • static page has html123 pass / 0 fail
Thresholds (8/8 ok)
  • checks rate>0.98
  • http_req_duration p(95)<2500
  • http_req_duration p(99)<6000
  • http_req_duration{endpoint:auth_login} p(95)<3000
  • http_req_duration{endpoint:health} p(95)<800
  • http_req_duration{endpoint:users} p(95)<2000
  • http_req_failed rate<0.01
  • login_flow_duration p(95)<4000

journeys/login-flow.js · npm run test:journey:login

PASS

mixed-traffic

Load

Realistic weighted mix of API and static page traffic.

Flow: Login → weighted pick: 35% health, 30% users (auth), 15% static, 20% users (anon).

Iterations130
HTTP reqs260
Max VUs5
p951.24 ms
avg0.89 ms
http failed0.00%
checks100.00%
exit code0

Load profile — ramp-up (ci)

HTTP latency percentiles

Checks (9/9 ok)
  • login status 200130 pass / 0 fail
  • login has token130 pass / 0 fail
  • health status 20041 pass / 0 fail
  • health responds quickly41 pass / 0 fail
  • static page status 20022 pass / 0 fail
  • static page has html22 pass / 0 fail
  • users status 20067 pass / 0 fail
  • users has array67 pass / 0 fail
  • users responds within 2s67 pass / 0 fail
Thresholds (7/7 ok)
  • checks rate>0.98
  • http_req_duration p(95)<2500
  • http_req_duration p(99)<6000
  • http_req_duration{endpoint:auth_login} p(95)<3000
  • http_req_duration{endpoint:health} p(95)<800
  • http_req_duration{endpoint:users} p(95)<2000
  • http_req_failed rate<0.01

scenarios/load/mixed-traffic.js · npm run test:load:mixed

PASS

smoke

Smoke

Minimal VUs — availability gate and baseline API latency.

Flow: GET /health → GET /api/users → POST /api/auth/login per iteration.

Iterations80
HTTP reqs240
Max VUs5
p951.49 ms
avg1.12 ms
http failed0.00%
checks100.00%
exit code0

Load profile — ramp-up (ci)

HTTP latency percentiles

Checks (7/7 ok)
  • health status 20080 pass / 0 fail
  • health responds quickly80 pass / 0 fail
  • users status 20080 pass / 0 fail
  • users has array80 pass / 0 fail
  • users responds within 2s80 pass / 0 fail
  • login status 20080 pass / 0 fail
  • login has token80 pass / 0 fail
Thresholds (7/7 ok)
  • checks rate>0.99
  • http_req_duration p(95)<1500
  • http_req_duration avg<800
  • http_req_duration{endpoint:auth_login} p(95)<2000
  • http_req_duration{endpoint:health} p(95)<500
  • http_req_duration{endpoint:users} p(95)<1500
  • http_req_failed rate<0.005

scenarios/smoke/api-health.js · npm run test:smoke

PASS

spike

Spike

Sudden burst (5→100 VUs) — validates recovery under spike.

Flow: GET /health → login → GET /api/users with minimal think time.

Iterations1526
HTTP reqs4578
Max VUs5
p951.49 ms
avg0.83 ms
http failed0.00%
checks100.00%
exit code0

Load profile — ramp-up (ci)

HTTP latency percentiles

Checks (7/7 ok)
  • health status 2001526 pass / 0 fail
  • health responds quickly1526 pass / 0 fail
  • login status 2001526 pass / 0 fail
  • login has token1526 pass / 0 fail
  • users status 2001526 pass / 0 fail
  • users has array1526 pass / 0 fail
  • users responds within 2s1526 pass / 0 fail
Thresholds (4/4 ok)
  • checks rate>0.95
  • http_req_duration p(95)<5000
  • http_req_failed rate<0.05
  • spike_failures rate<0.10

scenarios/spike/api-spike.js · npm run test:spike

Threshold profiles (reference)

smoke

  • http_req_failed — rate < 0.5%
  • http_req_duration — p(95) < 1500 ms, avg < 800 ms
  • http_req_duration{endpoint:health} — p(95) < 500 ms
  • http_req_duration{endpoint:users} — p(95) < 1500 ms
  • http_req_duration{endpoint:auth_login} — p(95) < 2000 ms
  • checks — rate > 99%

load

  • http_req_failed — rate < 1%
  • http_req_duration — p(95) < 2500 ms, p(99) < 6000 ms
  • http_req_duration{endpoint:health} — p(95) < 800 ms
  • http_req_duration{endpoint:users} — p(95) < 2000 ms
  • http_req_duration{endpoint:auth_login} — p(95) < 3000 ms
  • checks — rate > 98%

stress

  • http_req_failed — rate < 5%
  • http_req_duration — p(95) < 5000 ms
  • checks — rate > 95%

soak

  • http_req_failed — rate < 0.5%
  • http_req_duration — p(95) < 2500 ms, avg < 1200 ms
  • checks — rate > 99%