feat: add k6 load testing suite, NRQL query library, and CLAUDE.md
Add comprehensive load testing infrastructure: - k6 auth-dashboard flow (login → profile → dashboard KPIs → widgets → refresh → logout) - k6 CRUD flow (units, vendors, journal entries, payments, reports) - Environment configs with staging/production/local thresholds - Parameterized user pool CSV matching app roles - New Relic NRQL query library (25+ queries for perf analysis) - Empty baseline.json structure for all tested endpoints - CLAUDE.md documenting full stack, auth, route map, and conventions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
141
load-tests/analysis/baseline.json
Normal file
141
load-tests/analysis/baseline.json
Normal file
@@ -0,0 +1,141 @@
|
||||
{
|
||||
"_meta": {
|
||||
"capturedAt": null,
|
||||
"environment": "staging",
|
||||
"k6Version": null,
|
||||
"vus": null,
|
||||
"duration": null,
|
||||
"notes": "Empty baseline – populate after first stable load test run"
|
||||
},
|
||||
"auth": {
|
||||
"POST /api/auth/login": {
|
||||
"p50": null,
|
||||
"p95": null,
|
||||
"p99": null,
|
||||
"errorRate": null,
|
||||
"rps": null
|
||||
},
|
||||
"POST /api/auth/refresh": {
|
||||
"p50": null,
|
||||
"p95": null,
|
||||
"p99": null,
|
||||
"errorRate": null,
|
||||
"rps": null
|
||||
},
|
||||
"POST /api/auth/logout": {
|
||||
"p50": null,
|
||||
"p95": null,
|
||||
"p99": null,
|
||||
"errorRate": null,
|
||||
"rps": null
|
||||
},
|
||||
"GET /api/auth/profile": {
|
||||
"p50": null,
|
||||
"p95": null,
|
||||
"p99": null,
|
||||
"errorRate": null,
|
||||
"rps": null
|
||||
}
|
||||
},
|
||||
"dashboard": {
|
||||
"GET /api/reports/dashboard": {
|
||||
"p50": null,
|
||||
"p95": null,
|
||||
"p99": null,
|
||||
"errorRate": null,
|
||||
"rps": null
|
||||
},
|
||||
"GET /api/reports/balance-sheet": {
|
||||
"p50": null,
|
||||
"p95": null,
|
||||
"p99": null,
|
||||
"errorRate": null,
|
||||
"rps": null
|
||||
},
|
||||
"GET /api/reports/income-statement": {
|
||||
"p50": null,
|
||||
"p95": null,
|
||||
"p99": null,
|
||||
"errorRate": null,
|
||||
"rps": null
|
||||
},
|
||||
"GET /api/reports/aging": {
|
||||
"p50": null,
|
||||
"p95": null,
|
||||
"p99": null,
|
||||
"errorRate": null,
|
||||
"rps": null
|
||||
},
|
||||
"GET /api/health-scores/latest": {
|
||||
"p50": null,
|
||||
"p95": null,
|
||||
"p99": null,
|
||||
"errorRate": null,
|
||||
"rps": null
|
||||
},
|
||||
"GET /api/reports/cash-flow": {
|
||||
"p50": null,
|
||||
"p95": null,
|
||||
"p99": null,
|
||||
"errorRate": null,
|
||||
"rps": null
|
||||
},
|
||||
"GET /api/reports/cash-flow-forecast": {
|
||||
"p50": null,
|
||||
"p95": null,
|
||||
"p99": null,
|
||||
"errorRate": null,
|
||||
"rps": null
|
||||
}
|
||||
},
|
||||
"crud": {
|
||||
"units": {
|
||||
"GET /api/units": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"POST /api/units": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"GET /api/units/:id": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"PUT /api/units/:id": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"DELETE /api/units/:id": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null }
|
||||
},
|
||||
"vendors": {
|
||||
"GET /api/vendors": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"POST /api/vendors": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"GET /api/vendors/:id": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"PUT /api/vendors/:id": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null }
|
||||
},
|
||||
"journalEntries": {
|
||||
"GET /api/journal-entries": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"POST /api/journal-entries": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"GET /api/journal-entries/:id": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"POST /api/journal-entries/:id/post": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"POST /api/journal-entries/:id/void": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null }
|
||||
},
|
||||
"payments": {
|
||||
"GET /api/payments": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"POST /api/payments": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"GET /api/payments/:id": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"PUT /api/payments/:id": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"DELETE /api/payments/:id": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null }
|
||||
},
|
||||
"accounts": {
|
||||
"GET /api/accounts": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"GET /api/accounts/trial-balance": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"POST /api/accounts": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"PUT /api/accounts/:id": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null }
|
||||
},
|
||||
"invoices": {
|
||||
"GET /api/invoices": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"GET /api/invoices/:id": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"POST /api/invoices/generate-bulk": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null }
|
||||
}
|
||||
},
|
||||
"boardPlanning": {
|
||||
"GET /api/board-planning/scenarios": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"POST /api/board-planning/scenarios": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"GET /api/board-planning/scenarios/:id/projection": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"GET /api/board-planning/budget-plans": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null }
|
||||
},
|
||||
"organizations": {
|
||||
"GET /api/organizations": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null },
|
||||
"GET /api/organizations/members": { "p50": null, "p95": null, "p99": null, "errorRate": null, "rps": null }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user