k6-perf-reporter 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/settings.local.json +54 -0
- package/.config.example.json +8 -0
- package/.config.json +8 -0
- package/.eslintrc.json +18 -0
- package/.github/workflows/build.yml +30 -0
- package/.github/workflows/release.yml +44 -0
- package/README.md +449 -0
- package/dist/cli-reporter.d.ts +5 -0
- package/dist/cli-reporter.d.ts.map +1 -0
- package/dist/cli-reporter.js +71 -0
- package/dist/cli-reporter.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +43 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +14 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +26 -0
- package/dist/config.js.map +1 -0
- package/dist/data-collector.d.ts +14 -0
- package/dist/data-collector.d.ts.map +1 -0
- package/dist/data-collector.js +51 -0
- package/dist/data-collector.js.map +1 -0
- package/dist/data-extractor.d.ts +31 -0
- package/dist/data-extractor.d.ts.map +1 -0
- package/dist/data-extractor.js +250 -0
- package/dist/data-extractor.js.map +1 -0
- package/dist/explore.d.ts +2 -0
- package/dist/explore.d.ts.map +1 -0
- package/dist/explore.js +27 -0
- package/dist/explore.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/influx-client.d.ts +16 -0
- package/dist/influx-client.d.ts.map +1 -0
- package/dist/influx-client.interface.d.ts +21 -0
- package/dist/influx-client.interface.d.ts.map +1 -0
- package/dist/influx-client.interface.js +3 -0
- package/dist/influx-client.interface.js.map +1 -0
- package/dist/influx-client.js +35 -0
- package/dist/influx-client.js.map +1 -0
- package/dist/influx-data-extractor.d.ts +112 -0
- package/dist/influx-data-extractor.d.ts.map +1 -0
- package/dist/influx-data-extractor.interface.d.ts +21 -0
- package/dist/influx-data-extractor.interface.d.ts.map +1 -0
- package/dist/influx-data-extractor.interface.js +3 -0
- package/dist/influx-data-extractor.interface.js.map +1 -0
- package/dist/influx-data-extractor.js +445 -0
- package/dist/influx-data-extractor.js.map +1 -0
- package/dist/influx.d.ts +122 -0
- package/dist/influx.d.ts.map +1 -0
- package/dist/influx.js +899 -0
- package/dist/influx.js.map +1 -0
- package/dist/logger.d.ts +7 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +12 -0
- package/dist/logger.js.map +1 -0
- package/dist/metrics-collector.d.ts +10 -0
- package/dist/metrics-collector.d.ts.map +1 -0
- package/dist/metrics-collector.js +99 -0
- package/dist/metrics-collector.js.map +1 -0
- package/dist/metrics-collector.test.d.ts +2 -0
- package/dist/metrics-collector.test.d.ts.map +1 -0
- package/dist/metrics-collector.test.js +235 -0
- package/dist/metrics-collector.test.js.map +1 -0
- package/dist/reporters/cli-reporter.d.ts +9 -0
- package/dist/reporters/cli-reporter.d.ts.map +1 -0
- package/dist/reporters/cli-reporter.js +141 -0
- package/dist/reporters/cli-reporter.js.map +1 -0
- package/dist/reporters/cli.d.ts +5 -0
- package/dist/reporters/cli.d.ts.map +1 -0
- package/dist/reporters/cli.js +150 -0
- package/dist/reporters/cli.js.map +1 -0
- package/dist/reporters/index.d.ts +3 -0
- package/dist/reporters/index.d.ts.map +1 -0
- package/dist/reporters/index.js +8 -0
- package/dist/reporters/index.js.map +1 -0
- package/dist/reporters/json-reporter.d.ts +5 -0
- package/dist/reporters/json-reporter.d.ts.map +1 -0
- package/dist/reporters/json-reporter.js +18 -0
- package/dist/reporters/json-reporter.js.map +1 -0
- package/dist/reporters/json.d.ts +5 -0
- package/dist/reporters/json.d.ts.map +1 -0
- package/dist/reporters/json.js +70 -0
- package/dist/reporters/json.js.map +1 -0
- package/dist/reporters/markdown.d.ts +5 -0
- package/dist/reporters/markdown.d.ts.map +1 -0
- package/dist/reporters/markdown.js +87 -0
- package/dist/reporters/markdown.js.map +1 -0
- package/dist/reports.d.ts +11 -0
- package/dist/reports.d.ts.map +1 -0
- package/dist/reports.js +325 -0
- package/dist/reports.js.map +1 -0
- package/dist/types.d.ts +113 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +4 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +19 -0
- package/dist/utils.js.map +1 -0
- package/package.json +33 -0
- package/src/cli.ts +47 -0
- package/src/config.ts +31 -0
- package/src/data-collector.ts +66 -0
- package/src/influx-client.ts +48 -0
- package/src/influx-data-extractor.ts +722 -0
- package/src/reporters/cli-reporter.ts +169 -0
- package/src/reporters/index.ts +2 -0
- package/src/reporters/json-reporter.ts +15 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CliReporter = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const table_1 = require("table");
|
|
9
|
+
class CliReporter {
|
|
10
|
+
report(data) {
|
|
11
|
+
this.printHeader(data);
|
|
12
|
+
this.printReport(data);
|
|
13
|
+
}
|
|
14
|
+
printHeader(data) {
|
|
15
|
+
console.log("\n---");
|
|
16
|
+
console.log(`Run ID: ${data.runId}`);
|
|
17
|
+
console.log(`Start: ${data.startTime}`);
|
|
18
|
+
console.log(`End: ${data.endTime}\n`);
|
|
19
|
+
}
|
|
20
|
+
printReport(data) {
|
|
21
|
+
const reportData = data.data;
|
|
22
|
+
if (reportData.checks) {
|
|
23
|
+
const checks = reportData.checks;
|
|
24
|
+
const passRate = typeof checks.passRate === "number" ? checks.passRate : 0;
|
|
25
|
+
const checkmark = passRate === 100 ? "✓" : "✗";
|
|
26
|
+
console.log(`checks${this.padRight("checks", 30)}: ${chalk_1.default.cyan(passRate.toFixed(2) + "%")} ${checkmark} ${chalk_1.default.cyan(String(checks.passes))} ${checkmark === "✗" ? "✗ " + chalk_1.default.cyan(String(checks.fails || 0)) : ""}`);
|
|
27
|
+
}
|
|
28
|
+
if (reportData.httpReqs) {
|
|
29
|
+
const httpReqs = reportData.httpReqs;
|
|
30
|
+
console.log(`http_reqs${this.padRight("http_reqs", 30)}: ${chalk_1.default.cyan(String(httpReqs.total))} ${chalk_1.default.gray(httpReqs.rate.toFixed(6) + "/s")}`);
|
|
31
|
+
}
|
|
32
|
+
if (reportData.httpReqFailed) {
|
|
33
|
+
const failed = reportData.httpReqFailed;
|
|
34
|
+
const failureRate = typeof failed.failureRate === "number" ? failed.failureRate : 0;
|
|
35
|
+
const checkmark = failureRate === 0 ? "✓" : "✗";
|
|
36
|
+
console.log(`http_req_failed${this.padRight("http_req_failed", 30)}: ${chalk_1.default.cyan(failureRate.toFixed(2) + "%")} ${checkmark} ${chalk_1.default.cyan(String(failed.failed || 0))} ✗ ${chalk_1.default.cyan(String(failed.total || 0))}`);
|
|
37
|
+
}
|
|
38
|
+
if (reportData.errorResponses) {
|
|
39
|
+
const errorResponses = reportData.errorResponses;
|
|
40
|
+
console.log(`error_responses${this.padRight("error_responses", 30)}: ${chalk_1.default.cyan(String(errorResponses.count))} ${chalk_1.default.gray(errorResponses.rate.toFixed(6) + "/s")}`);
|
|
41
|
+
}
|
|
42
|
+
if (reportData.httpReqDuration) {
|
|
43
|
+
const duration = reportData.httpReqDuration;
|
|
44
|
+
console.log(`http_req_duration${this.padRight("http_req_duration", 30)}: avg=${chalk_1.default.cyan(this.formatDuration(duration.avg || 0))} min=${chalk_1.default.cyan(this.formatDuration(duration.min || 0))} med=${chalk_1.default.cyan(this.formatDuration((duration.min || 0) + (duration.max || 0) / 2))} max=${chalk_1.default.cyan(this.formatDuration(duration.max || 0))} p(90)=${chalk_1.default.cyan(this.formatDuration(duration.p90 || 0))} p(95)=${chalk_1.default.cyan(this.formatDuration(duration.p95 || 0))}`);
|
|
45
|
+
}
|
|
46
|
+
if (reportData.iterations) {
|
|
47
|
+
const iterations = reportData.iterations;
|
|
48
|
+
console.log(`iterations${this.padRight("iterations", 30)}: ${chalk_1.default.cyan(String(iterations.total))} ${chalk_1.default.gray(iterations.rate.toFixed(6) + "/s")}`);
|
|
49
|
+
}
|
|
50
|
+
if (reportData.iterationDuration) {
|
|
51
|
+
const itDuration = reportData.iterationDuration;
|
|
52
|
+
console.log(`iteration_duration${this.padRight("iteration_duration", 30)}: avg=${chalk_1.default.cyan(this.formatDuration(itDuration.avg || 0))} min=${chalk_1.default.cyan(this.formatDuration(itDuration.min || 0))} med=${chalk_1.default.cyan(this.formatDuration((itDuration.min || 0) + (itDuration.max || 0) / 2))} max=${chalk_1.default.cyan(this.formatDuration(itDuration.max || 0))} p(90)=${chalk_1.default.cyan(this.formatDuration(itDuration.p90 || 0))} p(95)=${chalk_1.default.cyan(this.formatDuration(itDuration.p95 || 0))}`);
|
|
53
|
+
}
|
|
54
|
+
if (reportData.vus) {
|
|
55
|
+
const vus = reportData.vus;
|
|
56
|
+
console.log(`vus${this.padRight("vus", 30)}: ${chalk_1.default.cyan(String(vus.current))} min=${chalk_1.default.cyan(String(vus.min))} max=${chalk_1.default.cyan(String(vus.max))}`);
|
|
57
|
+
}
|
|
58
|
+
if (reportData.vusMax) {
|
|
59
|
+
const vusMax = reportData.vusMax;
|
|
60
|
+
console.log(`vus_max${this.padRight("vus_max", 30)}: ${chalk_1.default.cyan(String(vusMax.max))} min=${chalk_1.default.cyan(String(vusMax.min))} max=${chalk_1.default.cyan(String(vusMax.max))}`);
|
|
61
|
+
}
|
|
62
|
+
if (reportData.topSlowUrls) {
|
|
63
|
+
const topSlowUrls = reportData.topSlowUrls;
|
|
64
|
+
const urls = topSlowUrls.urls;
|
|
65
|
+
if (urls && urls.length > 0) {
|
|
66
|
+
console.log("\nTop 10 Slowest URLs:");
|
|
67
|
+
console.log("");
|
|
68
|
+
const tableData = [
|
|
69
|
+
["Method", "URL", "p(95) ms"],
|
|
70
|
+
...urls.map((u) => [u.method, u.url, this.formatDuration(u.p95Duration)]),
|
|
71
|
+
];
|
|
72
|
+
console.log((0, table_1.table)(tableData, { border: { topBody: "─", topJoin: "", topLeft: "", topRight: "", bottomBody: "", bottomJoin: "", bottomLeft: "", bottomRight: "", bodyLeft: "", bodyRight: "", bodyJoin: "", joinBody: "─", joinLeft: "", joinRight: "", joinJoin: "" }, drawHorizontalLine: (index) => index === 1, columns: { 0: { alignment: "left" }, 1: { alignment: "left" }, 2: { alignment: "left" } } }));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (reportData.errorRequests) {
|
|
76
|
+
const errorRequests = reportData.errorRequests;
|
|
77
|
+
const errors = errorRequests.errors;
|
|
78
|
+
if (errors && errors.length > 0) {
|
|
79
|
+
console.log("\nTop Error Requests:");
|
|
80
|
+
console.log("");
|
|
81
|
+
const tableData = [
|
|
82
|
+
["Method", "URL", "Code", "Count"],
|
|
83
|
+
...errors.map((e) => [e.method, e.url, String(e.status), String(e.count)]),
|
|
84
|
+
];
|
|
85
|
+
console.log((0, table_1.table)(tableData, { border: { topBody: "─", topJoin: "", topLeft: "", topRight: "", bottomBody: "", bottomJoin: "", bottomLeft: "", bottomRight: "", bodyLeft: "", bodyRight: "", bodyJoin: "", joinBody: "─", joinLeft: "", joinRight: "", joinJoin: "" }, drawHorizontalLine: (index) => index === 1, columns: { 0: { alignment: "left" }, 1: { alignment: "left" }, 2: { alignment: "left" }, 3: { alignment: "left" } } }));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (reportData.successRequests) {
|
|
89
|
+
const successRequests = reportData.successRequests;
|
|
90
|
+
const requests = successRequests.requests;
|
|
91
|
+
if (requests && requests.length > 0) {
|
|
92
|
+
console.log("\nTop Successful Requests:");
|
|
93
|
+
console.log("");
|
|
94
|
+
const tableData = [
|
|
95
|
+
["Method", "URL", "Status", "Count", "Min", "Avg", "p(95)"],
|
|
96
|
+
...requests.map((r) => [r.method, r.url, String(r.status), String(r.count), this.formatDuration(r.min), this.formatDuration(r.avg), this.formatDuration(r.p95)]),
|
|
97
|
+
];
|
|
98
|
+
console.log((0, table_1.table)(tableData, { border: { topBody: "─", topJoin: "", topLeft: "", topRight: "", bottomBody: "", bottomJoin: "", bottomLeft: "", bottomRight: "", bodyLeft: "", bodyRight: "", bodyJoin: "", joinBody: "─", joinLeft: "", joinRight: "", joinJoin: "" }, drawHorizontalLine: (index) => index === 1, columns: { 0: { alignment: "left" }, 1: { alignment: "left" }, 2: { alignment: "left" }, 3: { alignment: "left" }, 4: { alignment: "left" }, 5: { alignment: "left" }, 6: { alignment: "left" } } }));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (reportData.errorResponsesText) {
|
|
102
|
+
const errorResponsesText = reportData.errorResponsesText;
|
|
103
|
+
const responses = errorResponsesText.responses;
|
|
104
|
+
if (responses && responses.length > 0) {
|
|
105
|
+
console.log("\nError Responses:");
|
|
106
|
+
console.log("");
|
|
107
|
+
const tableData = [
|
|
108
|
+
["Method", "URL", "Status", "Error"],
|
|
109
|
+
...responses.map((r) => {
|
|
110
|
+
const error = r.error || "";
|
|
111
|
+
// Extract path only from URL
|
|
112
|
+
let url = r.url;
|
|
113
|
+
try {
|
|
114
|
+
const urlObj = new URL(url);
|
|
115
|
+
url = urlObj.pathname;
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
// If not a full URL, use as-is
|
|
119
|
+
}
|
|
120
|
+
return [r.method, url, String(r.status), error];
|
|
121
|
+
}),
|
|
122
|
+
];
|
|
123
|
+
console.log((0, table_1.table)(tableData, { border: { topBody: "─", topJoin: "", topLeft: "", topRight: "", bottomBody: "", bottomJoin: "", bottomLeft: "", bottomRight: "", bodyLeft: "", bodyRight: "", bodyJoin: "", joinBody: "─", joinLeft: "", joinRight: "", joinJoin: "" }, drawHorizontalLine: (index) => index === 1, columns: { 0: { alignment: "left" }, 1: { alignment: "left" }, 2: { alignment: "left" }, 3: { alignment: "left" } } }));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
padRight(label, width) {
|
|
128
|
+
return ".".repeat(Math.max(0, width - label.length));
|
|
129
|
+
}
|
|
130
|
+
formatDuration(ms) {
|
|
131
|
+
if (ms < 1) {
|
|
132
|
+
return `${(ms * 1000).toFixed(2)}µs`;
|
|
133
|
+
}
|
|
134
|
+
if (ms < 1000) {
|
|
135
|
+
return `${ms.toFixed(2)}ms`;
|
|
136
|
+
}
|
|
137
|
+
return `${(ms / 1000).toFixed(2)}s`;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
exports.CliReporter = CliReporter;
|
|
141
|
+
//# sourceMappingURL=cli-reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-reporter.js","sourceRoot":"","sources":["../../src/reporters/cli-reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/reporters/cli.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,qBAAa,WAAW;IACtB,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAmJvD"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.CLIReporter = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const table_1 = require("table");
|
|
9
|
+
class CLIReporter {
|
|
10
|
+
generate(metrics, testName) {
|
|
11
|
+
console.log("\n" + chalk_1.default.bold.cyan("━━━ k6 Performance Test Report ━━━\n"));
|
|
12
|
+
console.log(chalk_1.default.bold(`Test: ${testName}`));
|
|
13
|
+
console.log(chalk_1.default.gray(`Generated: ${new Date().toLocaleString()}\n`));
|
|
14
|
+
// Summary section
|
|
15
|
+
console.log(chalk_1.default.bold.yellow("📋 Summary"));
|
|
16
|
+
const summaryData = [
|
|
17
|
+
[chalk_1.default.bold("Pods"), metrics.podCount.toString()],
|
|
18
|
+
[chalk_1.default.bold("VUs"), `${metrics.vusMax} / ${metrics.vusConfiguredMax}`],
|
|
19
|
+
[
|
|
20
|
+
chalk_1.default.bold("Total Requests"),
|
|
21
|
+
chalk_1.default.cyan(metrics.totalRequests.toLocaleString()),
|
|
22
|
+
],
|
|
23
|
+
[
|
|
24
|
+
chalk_1.default.bold("Successful"),
|
|
25
|
+
chalk_1.default.green(metrics.successfulRequests.toLocaleString()),
|
|
26
|
+
],
|
|
27
|
+
[
|
|
28
|
+
chalk_1.default.bold("Failed"),
|
|
29
|
+
metrics.failedRequests > 0
|
|
30
|
+
? chalk_1.default.red(metrics.failedRequests.toLocaleString())
|
|
31
|
+
: chalk_1.default.gray(metrics.failedRequests.toString()),
|
|
32
|
+
],
|
|
33
|
+
[
|
|
34
|
+
chalk_1.default.bold("Error Rate"),
|
|
35
|
+
metrics.errorRate > 0
|
|
36
|
+
? metrics.errorRate < 1
|
|
37
|
+
? chalk_1.default.yellow(`${metrics.errorRate.toFixed(4)}%`)
|
|
38
|
+
: chalk_1.default.red(`${metrics.errorRate.toFixed(2)}%`)
|
|
39
|
+
: chalk_1.default.green(`${metrics.errorRate.toFixed(2)}%`),
|
|
40
|
+
],
|
|
41
|
+
[
|
|
42
|
+
chalk_1.default.bold("Dropped Iterations"),
|
|
43
|
+
metrics.droppedIterations > 0
|
|
44
|
+
? chalk_1.default.yellow(metrics.droppedIterations.toLocaleString())
|
|
45
|
+
: chalk_1.default.gray(metrics.droppedIterations.toString()),
|
|
46
|
+
],
|
|
47
|
+
];
|
|
48
|
+
console.log((0, table_1.table)(summaryData) + "\n");
|
|
49
|
+
// Response Times
|
|
50
|
+
console.log(chalk_1.default.bold.yellow("📊 Response Times"));
|
|
51
|
+
const responseTimes = [
|
|
52
|
+
["Metric", "Value"],
|
|
53
|
+
["P50", `${metrics.responseTimeP50.toFixed(2)} ms`],
|
|
54
|
+
["P95", `${metrics.responseTimeP95.toFixed(2)} ms`],
|
|
55
|
+
["P99", `${metrics.responseTimeP99.toFixed(2)} ms`],
|
|
56
|
+
];
|
|
57
|
+
console.log((0, table_1.table)(responseTimes) + "\n");
|
|
58
|
+
// Iteration Duration
|
|
59
|
+
console.log(chalk_1.default.bold.yellow("⏱️ Iteration Duration"));
|
|
60
|
+
const iterationDuration = [
|
|
61
|
+
["Metric", "Value"],
|
|
62
|
+
["P50", `${metrics.iterationDurationP50.toFixed(2)} ms`],
|
|
63
|
+
["P95", `${metrics.iterationDurationP95.toFixed(2)} ms`],
|
|
64
|
+
["P99", `${metrics.iterationDurationP99.toFixed(2)} ms`],
|
|
65
|
+
];
|
|
66
|
+
console.log((0, table_1.table)(iterationDuration) + "\n");
|
|
67
|
+
// Checks
|
|
68
|
+
console.log(chalk_1.default.bold.yellow("✓ Checks"));
|
|
69
|
+
const checksData = [
|
|
70
|
+
["Metric", "Value"],
|
|
71
|
+
["Total", metrics.checksTotal.toString()],
|
|
72
|
+
["Succeeded", metrics.checksSucceeded.toString()],
|
|
73
|
+
["Failed", metrics.checksFailed.toString()],
|
|
74
|
+
[
|
|
75
|
+
"Success Rate",
|
|
76
|
+
metrics.checksSuccessRate > 0
|
|
77
|
+
? chalk_1.default.green(`${metrics.checksSuccessRate.toFixed(2)}%`)
|
|
78
|
+
: metrics.checksSuccessRate.toString(),
|
|
79
|
+
],
|
|
80
|
+
];
|
|
81
|
+
console.log((0, table_1.table)(checksData) + "\n");
|
|
82
|
+
// RPS by Endpoint (top 10)
|
|
83
|
+
if (Object.keys(metrics.rpsPerEndpoint).length > 0) {
|
|
84
|
+
console.log(chalk_1.default.bold.yellow("📈 RPS by Endpoint (Top 10)"));
|
|
85
|
+
const rpsData = [["Endpoint", "Avg (req/s)", "P95 (req/s)", "Max (req/s)"]];
|
|
86
|
+
Object.entries(metrics.rpsPerEndpoint)
|
|
87
|
+
.sort((a, b) => b[1].p95 - a[1].p95) // Sort by p95 descending
|
|
88
|
+
.slice(0, 10)
|
|
89
|
+
.forEach(([endpoint, stats]) => {
|
|
90
|
+
rpsData.push([
|
|
91
|
+
endpoint,
|
|
92
|
+
`${stats.avg.toFixed(2)}`,
|
|
93
|
+
`${stats.p95.toFixed(2)}`,
|
|
94
|
+
`${stats.max.toFixed(2)}`,
|
|
95
|
+
]);
|
|
96
|
+
});
|
|
97
|
+
console.log((0, table_1.table)(rpsData) + "\n");
|
|
98
|
+
}
|
|
99
|
+
// Requests Summary (top 10)
|
|
100
|
+
if (Object.keys(metrics.requestsSummary).length > 0) {
|
|
101
|
+
console.log(chalk_1.default.bold.yellow("📋 Requests Summary"));
|
|
102
|
+
const summaryData = [["Endpoint", "Method", "Count", "Successful", "Failed", "Min (ms)", "Avg (ms)", "P95 (ms)", "P99 (ms)", "Max (ms)"]];
|
|
103
|
+
Object.entries(metrics.requestsSummary)
|
|
104
|
+
.sort((a, b) => b[1].p95ResponseTime - a[1].p95ResponseTime) // Sort by p95 descending
|
|
105
|
+
.forEach(([, summary]) => {
|
|
106
|
+
summaryData.push([
|
|
107
|
+
summary.url,
|
|
108
|
+
summary.method,
|
|
109
|
+
summary.count.toString(),
|
|
110
|
+
chalk_1.default.green(summary.successful.toString()),
|
|
111
|
+
summary.failed > 0 ? chalk_1.default.red(summary.failed.toString()) : chalk_1.default.gray(summary.failed.toString()),
|
|
112
|
+
`${summary.minResponseTime.toFixed(2)}`,
|
|
113
|
+
`${summary.avgResponseTime.toFixed(2)}`,
|
|
114
|
+
`${summary.p95ResponseTime.toFixed(2)}`,
|
|
115
|
+
`${summary.p99ResponseTime.toFixed(2)}`,
|
|
116
|
+
`${summary.maxResponseTime.toFixed(2)}`,
|
|
117
|
+
]);
|
|
118
|
+
});
|
|
119
|
+
console.log((0, table_1.table)(summaryData) + "\n");
|
|
120
|
+
}
|
|
121
|
+
// Error Requests Summary
|
|
122
|
+
if (Object.keys(metrics.errorRequestsSummary).length > 0) {
|
|
123
|
+
console.log(chalk_1.default.bold.yellow("❌ Error Requests Summary"));
|
|
124
|
+
const summaryData = [["Endpoint", "Method", "Status", "Count", "Min (ms)", "Avg (ms)", "P95 (ms)", "P99 (ms)", "Max (ms)"]];
|
|
125
|
+
metrics.errorRequestsDetailedSummary.forEach((error) => {
|
|
126
|
+
summaryData.push([
|
|
127
|
+
error.url,
|
|
128
|
+
error.method,
|
|
129
|
+
String(error.status),
|
|
130
|
+
error.count.toString(),
|
|
131
|
+
`${error.minResponseTime.toFixed(2)}`,
|
|
132
|
+
`${error.avgResponseTime.toFixed(2)}`,
|
|
133
|
+
`${error.p95ResponseTime.toFixed(2)}`,
|
|
134
|
+
`${error.p99ResponseTime.toFixed(2)}`,
|
|
135
|
+
`${error.maxResponseTime.toFixed(2)}`,
|
|
136
|
+
]);
|
|
137
|
+
});
|
|
138
|
+
console.log((0, table_1.table)(summaryData) + "\n");
|
|
139
|
+
}
|
|
140
|
+
// Status
|
|
141
|
+
const status = metrics.errorRate < 1
|
|
142
|
+
? chalk_1.default.green.bold("✓ PASS")
|
|
143
|
+
: chalk_1.default.red.bold("✗ FAIL");
|
|
144
|
+
console.log(chalk_1.default.bold(`Overall Status: ${status}`));
|
|
145
|
+
console.log(chalk_1.default.gray(`Error Rate: ${metrics.errorRate.toFixed(4)}% (threshold: < 1%)`));
|
|
146
|
+
console.log(chalk_1.default.gray("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n"));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.CLIReporter = CLIReporter;
|
|
150
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/reporters/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/reporters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CliReporter = exports.JsonReporter = void 0;
|
|
4
|
+
var json_reporter_1 = require("./json-reporter");
|
|
5
|
+
Object.defineProperty(exports, "JsonReporter", { enumerable: true, get: function () { return json_reporter_1.JsonReporter; } });
|
|
6
|
+
var cli_reporter_1 = require("./cli-reporter");
|
|
7
|
+
Object.defineProperty(exports, "CliReporter", { enumerable: true, get: function () { return cli_reporter_1.CliReporter; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reporters/index.ts"],"names":[],"mappings":";;;AAAA,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,+CAA6C;AAApC,2GAAA,WAAW,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-reporter.d.ts","sourceRoot":"","sources":["../../src/reporters/json-reporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,qBAAa,YAAY;IACvB,MAAM,CAAC,IAAI,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;CAU1D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JsonReporter = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
class JsonReporter {
|
|
6
|
+
report(data, outputPath) {
|
|
7
|
+
const json = JSON.stringify(data, null, 2);
|
|
8
|
+
if (outputPath) {
|
|
9
|
+
(0, fs_1.writeFileSync)(outputPath, json);
|
|
10
|
+
console.log(`Report saved to ${outputPath}`);
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
console.log(json);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.JsonReporter = JsonReporter;
|
|
18
|
+
//# sourceMappingURL=json-reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-reporter.js","sourceRoot":"","sources":["../../src/reporters/json-reporter.ts"],"names":[],"mappings":";;;AAAA,2BAAmC;AAGnC,MAAa,YAAY;IACvB,MAAM,CAAC,IAAsB,EAAE,UAAmB;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE3C,IAAI,UAAU,EAAE,CAAC;YACf,IAAA,kBAAa,EAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,mBAAmB,UAAU,EAAE,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;CACF;AAXD,oCAWC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/reporters/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,qBAAa,YAAY;IACvB,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;CAiEzD"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JSONReporter = void 0;
|
|
4
|
+
class JSONReporter {
|
|
5
|
+
generate(metrics, testName) {
|
|
6
|
+
const status = metrics.errorRate < 1 ? "PASS" : "FAIL";
|
|
7
|
+
const report = {
|
|
8
|
+
testName,
|
|
9
|
+
generatedAt: new Date().toISOString(),
|
|
10
|
+
status,
|
|
11
|
+
summary: {
|
|
12
|
+
result: status,
|
|
13
|
+
errorRate: metrics.errorRate,
|
|
14
|
+
errorRateThreshold: 1,
|
|
15
|
+
passed: metrics.errorRate < 1,
|
|
16
|
+
totalRequests: metrics.totalRequests,
|
|
17
|
+
successfulRequests: metrics.successfulRequests,
|
|
18
|
+
failedRequests: metrics.failedRequests,
|
|
19
|
+
},
|
|
20
|
+
metrics: {
|
|
21
|
+
responseTime: {
|
|
22
|
+
p50: metrics.responseTimeP50,
|
|
23
|
+
p95: metrics.responseTimeP95,
|
|
24
|
+
p99: metrics.responseTimeP99,
|
|
25
|
+
},
|
|
26
|
+
iterationDuration: {
|
|
27
|
+
p50: metrics.iterationDurationP50,
|
|
28
|
+
p95: metrics.iterationDurationP95,
|
|
29
|
+
p99: metrics.iterationDurationP99,
|
|
30
|
+
},
|
|
31
|
+
requests: {
|
|
32
|
+
total: metrics.totalRequests,
|
|
33
|
+
successful: metrics.successfulRequests,
|
|
34
|
+
failed: metrics.failedRequests,
|
|
35
|
+
errorRate: metrics.errorRate,
|
|
36
|
+
},
|
|
37
|
+
concurrency: {
|
|
38
|
+
vusMax: metrics.vusMax,
|
|
39
|
+
vusConfiguredMax: metrics.vusConfiguredMax,
|
|
40
|
+
podCount: metrics.podCount,
|
|
41
|
+
droppedIterations: metrics.droppedIterations,
|
|
42
|
+
},
|
|
43
|
+
slowestRequests: metrics.slowestRequests.slice(0, 10),
|
|
44
|
+
errors: metrics.errors,
|
|
45
|
+
errorDetails: metrics.errorDetails,
|
|
46
|
+
errorRequestsSummary: metrics.errorRequestsSummary,
|
|
47
|
+
errorRequestsDetailedSummary: metrics.errorRequestsDetailedSummary,
|
|
48
|
+
checks: {
|
|
49
|
+
total: metrics.checksTotal,
|
|
50
|
+
succeeded: metrics.checksSucceeded,
|
|
51
|
+
failed: metrics.checksFailed,
|
|
52
|
+
successRate: metrics.checksSuccessRate,
|
|
53
|
+
},
|
|
54
|
+
httpPhases: metrics.httpPhases,
|
|
55
|
+
dataTransfer: {
|
|
56
|
+
receivedBytes: metrics.dataReceivedBytes,
|
|
57
|
+
sentBytes: metrics.dataSentBytes,
|
|
58
|
+
receivedRate: metrics.dataReceivedRate,
|
|
59
|
+
sentRate: metrics.dataSentRate,
|
|
60
|
+
},
|
|
61
|
+
requestsByEndpoint: metrics.requestsByEndpoint,
|
|
62
|
+
rpsPerEndpoint: metrics.rpsPerEndpoint,
|
|
63
|
+
requestsSummary: metrics.requestsSummary,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
return JSON.stringify(report, null, 2);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.JSONReporter = JSONReporter;
|
|
70
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/reporters/json.ts"],"names":[],"mappings":";;;AAEA,MAAa,YAAY;IACvB,QAAQ,CAAC,OAAoB,EAAE,QAAgB;QAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAEvD,MAAM,MAAM,GAAG;YACb,QAAQ;YACR,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,MAAM;YACN,OAAO,EAAE;gBACP,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,kBAAkB,EAAE,CAAC;gBACrB,MAAM,EAAE,OAAO,CAAC,SAAS,GAAG,CAAC;gBAC7B,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;gBAC9C,cAAc,EAAE,OAAO,CAAC,cAAc;aACvC;YACD,OAAO,EAAE;gBACP,YAAY,EAAE;oBACZ,GAAG,EAAE,OAAO,CAAC,eAAe;oBAC5B,GAAG,EAAE,OAAO,CAAC,eAAe;oBAC5B,GAAG,EAAE,OAAO,CAAC,eAAe;iBAC7B;gBACD,iBAAiB,EAAE;oBACjB,GAAG,EAAE,OAAO,CAAC,oBAAoB;oBACjC,GAAG,EAAE,OAAO,CAAC,oBAAoB;oBACjC,GAAG,EAAE,OAAO,CAAC,oBAAoB;iBAClC;gBACD,QAAQ,EAAE;oBACR,KAAK,EAAE,OAAO,CAAC,aAAa;oBAC5B,UAAU,EAAE,OAAO,CAAC,kBAAkB;oBACtC,MAAM,EAAE,OAAO,CAAC,cAAc;oBAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;iBAC7B;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;oBAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;iBAC7C;gBACD,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBACrD,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;gBAClD,4BAA4B,EAAE,OAAO,CAAC,4BAA4B;gBAClE,MAAM,EAAE;oBACN,KAAK,EAAE,OAAO,CAAC,WAAW;oBAC1B,SAAS,EAAE,OAAO,CAAC,eAAe;oBAClC,MAAM,EAAE,OAAO,CAAC,YAAY;oBAC5B,WAAW,EAAE,OAAO,CAAC,iBAAiB;iBACvC;gBACD,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,YAAY,EAAE;oBACZ,aAAa,EAAE,OAAO,CAAC,iBAAiB;oBACxC,SAAS,EAAE,OAAO,CAAC,aAAa;oBAChC,YAAY,EAAE,OAAO,CAAC,gBAAgB;oBACtC,QAAQ,EAAE,OAAO,CAAC,YAAY;iBAC/B;gBACD,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;gBAC9C,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,eAAe,EAAE,OAAO,CAAC,eAAe;aACzC;SACF,CAAC;QAEF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;CACF;AAlED,oCAkEC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../src/reporters/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;CA0FzD"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MarkdownReporter = void 0;
|
|
4
|
+
class MarkdownReporter {
|
|
5
|
+
generate(metrics, testName) {
|
|
6
|
+
let md = "";
|
|
7
|
+
md += "# k6 Performance Test Report\n\n";
|
|
8
|
+
md += `**Test:** ${testName}\n`;
|
|
9
|
+
md += `**Generated:** ${new Date().toLocaleString()}\n\n`;
|
|
10
|
+
// Summary section
|
|
11
|
+
md += "## 📋 Summary\n\n";
|
|
12
|
+
md += "| Metric | Value |\n";
|
|
13
|
+
md += "| --- | --- |\n";
|
|
14
|
+
md += `| Pods | ${metrics.podCount} |\n`;
|
|
15
|
+
md += `| VUs | ${metrics.vusMax} / ${metrics.vusConfiguredMax} |\n`;
|
|
16
|
+
md += `| Total Requests | ${metrics.totalRequests.toLocaleString()} |\n`;
|
|
17
|
+
md += `| Successful | ${metrics.successfulRequests.toLocaleString()} |\n`;
|
|
18
|
+
md += `| Failed | ${metrics.failedRequests.toLocaleString()} |\n`;
|
|
19
|
+
md += `| Error Rate | ${metrics.errorRate.toFixed(4)}% |\n`;
|
|
20
|
+
md += `| Dropped Iterations | ${metrics.droppedIterations} |\n\n`;
|
|
21
|
+
// Response Times
|
|
22
|
+
md += "## 📊 Response Times\n\n";
|
|
23
|
+
md += "| Metric | Value |\n";
|
|
24
|
+
md += "| --- | --- |\n";
|
|
25
|
+
md += `| P50 | ${metrics.responseTimeP50.toFixed(2)} ms |\n`;
|
|
26
|
+
md += `| P95 | ${metrics.responseTimeP95.toFixed(2)} ms |\n`;
|
|
27
|
+
md += `| P99 | ${metrics.responseTimeP99.toFixed(2)} ms |\n\n`;
|
|
28
|
+
// Iteration Duration
|
|
29
|
+
md += "## ⏱️ Iteration Duration\n\n";
|
|
30
|
+
md += "| Metric | Value |\n";
|
|
31
|
+
md += "| --- | --- |\n";
|
|
32
|
+
md += `| P50 | ${metrics.iterationDurationP50.toFixed(2)} ms |\n`;
|
|
33
|
+
md += `| P95 | ${metrics.iterationDurationP95.toFixed(2)} ms |\n`;
|
|
34
|
+
md += `| P99 | ${metrics.iterationDurationP99.toFixed(2)} ms |\n\n`;
|
|
35
|
+
// Checks
|
|
36
|
+
md += "## ✓ Checks\n\n";
|
|
37
|
+
md += "| Metric | Value |\n";
|
|
38
|
+
md += "| --- | --- |\n";
|
|
39
|
+
md += `| Total | ${metrics.checksTotal} |\n`;
|
|
40
|
+
md += `| Succeeded | ${metrics.checksSucceeded} |\n`;
|
|
41
|
+
md += `| Failed | ${metrics.checksFailed} |\n`;
|
|
42
|
+
md += `| Success Rate | ${metrics.checksSuccessRate.toFixed(2)}% |\n\n`;
|
|
43
|
+
// RPS by Endpoint (top 10)
|
|
44
|
+
if (Object.keys(metrics.rpsPerEndpoint).length > 0) {
|
|
45
|
+
md += "## 📈 RPS by Endpoint (Top 10)\n\n";
|
|
46
|
+
md += "| Endpoint | Avg (req/s) | P95 (req/s) | Max (req/s) |\n";
|
|
47
|
+
md += "| --- | --- | --- | --- |\n";
|
|
48
|
+
Object.entries(metrics.rpsPerEndpoint)
|
|
49
|
+
.sort((a, b) => b[1].p95 - a[1].p95)
|
|
50
|
+
.slice(0, 10)
|
|
51
|
+
.forEach(([endpoint, stats]) => {
|
|
52
|
+
md += `| ${endpoint} | ${stats.avg.toFixed(2)} | ${stats.p95.toFixed(2)} | ${stats.max.toFixed(2)} |\n`;
|
|
53
|
+
});
|
|
54
|
+
md += "\n";
|
|
55
|
+
}
|
|
56
|
+
// Requests Summary
|
|
57
|
+
if (Object.keys(metrics.requestsSummary).length > 0) {
|
|
58
|
+
md += "## 📋 Requests Summary\n\n";
|
|
59
|
+
md += "| Endpoint | Method | Count | Successful | Failed | Min (ms) | Avg (ms) | P95 (ms) | P99 (ms) | Max (ms) |\n";
|
|
60
|
+
md += "| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |\n";
|
|
61
|
+
Object.entries(metrics.requestsSummary)
|
|
62
|
+
.sort((a, b) => b[1].p95ResponseTime - a[1].p95ResponseTime)
|
|
63
|
+
.forEach(([, summary]) => {
|
|
64
|
+
md += `| ${summary.url} | ${summary.method} | ${summary.count} | ${summary.successful} | ${summary.failed} | ${summary.minResponseTime.toFixed(2)} | ${summary.avgResponseTime.toFixed(2)} | ${summary.p95ResponseTime.toFixed(2)} | ${summary.p99ResponseTime.toFixed(2)} | ${summary.maxResponseTime.toFixed(2)} |\n`;
|
|
65
|
+
});
|
|
66
|
+
md += "\n";
|
|
67
|
+
}
|
|
68
|
+
// Error Requests Summary
|
|
69
|
+
if (Object.keys(metrics.errorRequestsSummary).length > 0) {
|
|
70
|
+
md += "## ❌ Error Requests Summary\n\n";
|
|
71
|
+
md += "| Endpoint | Method | Status | Count | Min (ms) | Avg (ms) | P95 (ms) | P99 (ms) | Max (ms) |\n";
|
|
72
|
+
md += "| --- | --- | --- | --- | --- | --- | --- | --- | --- |\n";
|
|
73
|
+
metrics.errorRequestsDetailedSummary.forEach((error) => {
|
|
74
|
+
md += `| ${error.url} | ${error.method} | ${error.status} | ${error.count} | ${error.minResponseTime.toFixed(2)} | ${error.avgResponseTime.toFixed(2)} | ${error.p95ResponseTime.toFixed(2)} | ${error.p99ResponseTime.toFixed(2)} | ${error.maxResponseTime.toFixed(2)} |\n`;
|
|
75
|
+
});
|
|
76
|
+
md += "\n";
|
|
77
|
+
}
|
|
78
|
+
// Overall Status
|
|
79
|
+
md += "## Overall Status\n\n";
|
|
80
|
+
const status = metrics.errorRate < 1 ? "✓ PASS" : "✗ FAIL";
|
|
81
|
+
md += `**Status:** ${status}\n`;
|
|
82
|
+
md += `**Error Rate:** ${metrics.errorRate.toFixed(4)}% (threshold: < 1%)\n`;
|
|
83
|
+
return md;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.MarkdownReporter = MarkdownReporter;
|
|
87
|
+
//# sourceMappingURL=markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/reporters/markdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { TestMetrics } from "./influx";
|
|
2
|
+
import { InfluxQueryClient } from "./influx";
|
|
3
|
+
export declare class ReportGenerator {
|
|
4
|
+
private influxClient;
|
|
5
|
+
constructor(influxClient: InfluxQueryClient);
|
|
6
|
+
generateMetrics(scenario: string, startTime: string, endTime: string): Promise<TestMetrics>;
|
|
7
|
+
generateHTMLReport(metrics: TestMetrics, testName: string): string;
|
|
8
|
+
generateCSVReport(metrics: TestMetrics, testName: string): string;
|
|
9
|
+
generateJSONReport(metrics: TestMetrics, testName: string): string;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=reports.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reports.d.ts","sourceRoot":"","sources":["../src/reports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAE7C,qBAAa,eAAe;IACd,OAAO,CAAC,YAAY;gBAAZ,YAAY,EAAE,iBAAiB;IAE7C,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,CAAC;IA2FvB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IA0NlE,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;IAgCjE,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;CA2BnE"}
|