k6-perf-reporter 1.2.0 → 1.4.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/README.md CHANGED
@@ -259,7 +259,11 @@ For InfluxDB time queries, use relative or absolute formats:
259
259
 
260
260
  ## Environment Variables
261
261
 
262
- Set these for easier usage:
262
+ You can configure InfluxDB settings via environment variables. They can be used in two ways:
263
+
264
+ ### 1. Complete Configuration via Environment Variables
265
+
266
+ Set all four variables to use environment-only configuration:
263
267
 
264
268
  ```bash
265
269
  export INFLUX_URL=http://localhost:8086
@@ -268,19 +272,29 @@ export INFLUX_ORG=your-org
268
272
  export INFLUX_BUCKET=k6
269
273
  ```
270
274
 
271
- Then use:
275
+ Then run the CLI without needing a config file:
272
276
  ```bash
273
277
  npx tsx src/cli.ts generate \
274
- --url $INFLUX_URL \
275
- --token $INFLUX_TOKEN \
276
- --org $INFLUX_ORG \
277
- --bucket $INFLUX_BUCKET \
278
- --test-name api-load-test \
278
+ --run-id 123456790121 \
279
279
  --start-time "-1h" \
280
280
  --end-time "now()" \
281
- --format html
281
+ --format cli
282
282
  ```
283
283
 
284
+ ### 2. Override Specific Values from Config File
285
+
286
+ You can also use environment variables to override individual settings from `.config.json`:
287
+
288
+ ```bash
289
+ # .config.json exists with default settings
290
+ export INFLUX_TOKEN=production-token
291
+
292
+ # Now the CLI will use the token from env var while other settings come from .config.json
293
+ npx tsx src/cli.ts generate --run-id 123456790121 --format cli
294
+ ```
295
+
296
+ **Note:** Environment variables always take precedence over values in `.config.json`.
297
+
284
298
  ## Prerequisites
285
299
 
286
300
  - Node.js 16+
package/dist/config.d.ts CHANGED
@@ -8,6 +8,9 @@ export declare class Config {
8
8
  private static instance;
9
9
  private config;
10
10
  private constructor();
11
+ private loadConfig;
12
+ private loadFromEnv;
13
+ private overrideWithEnv;
11
14
  static getInstance(configPath?: string): Config;
12
15
  getConfig(): InfluxConfig;
13
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO;IAMP,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAO/C,SAAS,IAAI,YAAY;CAG1B"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAS;IAChC,OAAO,CAAC,MAAM,CAAe;IAE7B,OAAO;IAIP,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,eAAe;IASvB,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAO/C,SAAS,IAAI,YAAY;CAG1B"}
package/dist/config.js CHANGED
@@ -7,10 +7,48 @@ exports.Config = void 0;
7
7
  const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  class Config {
10
- constructor(configPath = ".config.json") {
11
- const fullPath = path_1.default.resolve(configPath);
12
- const data = JSON.parse(fs_1.default.readFileSync(fullPath, "utf-8"));
13
- this.config = data.influx;
10
+ constructor(configPath) {
11
+ this.config = this.loadConfig(configPath);
12
+ }
13
+ loadConfig(configPath) {
14
+ // Try to load from JSON file first
15
+ const filePath = configPath || ".config.json";
16
+ const fullPath = path_1.default.resolve(filePath);
17
+ let config;
18
+ if (fs_1.default.existsSync(fullPath)) {
19
+ const data = JSON.parse(fs_1.default.readFileSync(fullPath, "utf-8"));
20
+ config = data.influx;
21
+ }
22
+ else {
23
+ // If file doesn't exist, try to load from env vars
24
+ const envConfig = this.loadFromEnv();
25
+ if (!envConfig) {
26
+ throw new Error(`Config file not found at ${fullPath} and no environment variables set. ` +
27
+ `Set INFLUX_URL, INFLUX_TOKEN, INFLUX_ORG, INFLUX_BUCKET or provide a config file.`);
28
+ }
29
+ return envConfig;
30
+ }
31
+ // Override with environment variables if they exist
32
+ return this.overrideWithEnv(config);
33
+ }
34
+ loadFromEnv() {
35
+ const url = process.env.INFLUX_URL;
36
+ const token = process.env.INFLUX_TOKEN;
37
+ const org = process.env.INFLUX_ORG;
38
+ const bucket = process.env.INFLUX_BUCKET;
39
+ // Only return if all env vars are set
40
+ if (url && token && org && bucket) {
41
+ return { url, token, org, bucket };
42
+ }
43
+ return null;
44
+ }
45
+ overrideWithEnv(config) {
46
+ return {
47
+ url: process.env.INFLUX_URL || config.url,
48
+ token: process.env.INFLUX_TOKEN || config.token,
49
+ org: process.env.INFLUX_ORG || config.org,
50
+ bucket: process.env.INFLUX_BUCKET || config.bucket,
51
+ };
14
52
  }
15
53
  static getInstance(configPath) {
16
54
  if (!Config.instance) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AASxB,MAAa,MAAM;IAIjB,YAAoB,aAAqB,cAAc;QACrD,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,UAAmB;QACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AApBD,wBAoBC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AAAA,4CAAoB;AACpB,gDAAwB;AASxB,MAAa,MAAM;IAIjB,YAAoB,UAAmB;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAEO,UAAU,CAAC,UAAmB;QACpC,mCAAmC;QACnC,MAAM,QAAQ,GAAG,UAAU,IAAI,cAAc,CAAC;QAC9C,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,MAAoB,CAAC;QAEzB,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5D,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,mDAAmD;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CACb,4BAA4B,QAAQ,qCAAqC;oBACzE,mFAAmF,CACpF,CAAC;YACJ,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,oDAAoD;QACpD,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEO,WAAW;QACjB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;QACnC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QAEzC,sCAAsC;QACtC,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YAClC,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;QACrC,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CAAC,MAAoB;QAC1C,OAAO;YACL,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,GAAG;YACzC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,MAAM,CAAC,KAAK;YAC/C,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,GAAG;YACzC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,MAAM,CAAC,MAAM;SACnD,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,UAAmB;QACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrB,MAAM,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;AAlED,wBAkEC"}
@@ -8,6 +8,7 @@ export interface ReporterResponse {
8
8
  }
9
9
  export declare class DataCollector {
10
10
  private extractor;
11
+ private loader;
11
12
  constructor(config: InfluxConfig);
12
13
  collect(runId: string, startTime?: string, endTime?: string, data?: unknown): Promise<ReporterResponse>;
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"data-collector.d.ts","sourceRoot":"","sources":["../src/data-collector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAsB;gBAE3B,MAAM,EAAE,YAAY;IAI1B,OAAO,CACX,KAAK,EAAE,MAAM,EACb,SAAS,GAAE,MAAc,EACzB,OAAO,GAAE,MAAgB,EACzB,IAAI,GAAE,OAAY,GACjB,OAAO,CAAC,gBAAgB,CAAC;CA0C7B"}
1
+ {"version":3,"file":"data-collector.d.ts","sourceRoot":"","sources":["../src/data-collector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAsB;IACvC,OAAO,CAAC,MAAM,CAAgB;gBAElB,MAAM,EAAE,YAAY;IAI1B,OAAO,CACX,KAAK,EAAE,MAAM,EACb,SAAS,GAAE,MAAc,EACzB,OAAO,GAAE,MAAgB,EACzB,IAAI,GAAE,OAAY,GACjB,OAAO,CAAC,gBAAgB,CAAC;CAmF7B"}
@@ -2,25 +2,55 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DataCollector = void 0;
4
4
  const influx_data_extractor_1 = require("./influx-data-extractor");
5
+ const loader_1 = require("./loader");
5
6
  class DataCollector {
6
7
  constructor(config) {
8
+ this.loader = new loader_1.Loader();
7
9
  this.extractor = new influx_data_extractor_1.InfluxDataExtractor(config);
8
10
  }
9
11
  async collect(runId, startTime = "-1h", endTime = "now()", data = {}) {
12
+ this.loader.start("Extracting http_reqs...");
10
13
  const httpReqs = await this.extractor.extractHttpReqs(runId, startTime, endTime);
14
+ this.loader.success("Extracted http_reqs");
15
+ this.loader.start("Extracting vus...");
11
16
  const vus = await this.extractor.extractVus(runId, startTime, endTime);
17
+ this.loader.success("Extracted vus");
18
+ this.loader.start("Extracting vus_max...");
12
19
  const vusMax = await this.extractor.extractVusMax(runId, startTime, endTime);
20
+ this.loader.success("Extracted vus_max");
21
+ this.loader.start("Extracting iterations...");
13
22
  const iterations = await this.extractor.extractIterations(runId, startTime, endTime);
23
+ this.loader.success("Extracted iterations");
24
+ this.loader.start("Calculating test duration...");
14
25
  const duration = await this.extractor.calculateTestDuration(runId, startTime, endTime);
26
+ this.loader.success("Calculated test duration");
27
+ this.loader.start("Extracting checks...");
15
28
  const checks = await this.extractor.extractChecks(runId, startTime, endTime);
29
+ this.loader.success("Extracted checks");
30
+ this.loader.start("Extracting http_req_failed...");
16
31
  const httpReqFailed = await this.extractor.extractHttpReqFailed(runId, startTime, endTime);
32
+ this.loader.success("Extracted http_req_failed");
33
+ this.loader.start("Extracting http_req_duration...");
17
34
  const httpReqDuration = await this.extractor.extractHttpReqDuration(runId, startTime, endTime);
35
+ this.loader.success("Extracted http_req_duration");
36
+ this.loader.start("Extracting iteration_duration...");
18
37
  const iterationDuration = await this.extractor.extractIterationDuration(runId, startTime, endTime);
38
+ this.loader.success("Extracted iteration_duration");
39
+ this.loader.start("Extracting error_responses...");
19
40
  const errorResponses = await this.extractor.extractErrorResponses(runId, startTime, endTime);
41
+ this.loader.success("Extracted error_responses");
42
+ this.loader.start("Extracting top slow URLs...");
20
43
  const topSlowUrls = await this.extractor.extractTopSlowUrls(runId, startTime, endTime);
44
+ this.loader.success("Extracted top slow URLs");
45
+ this.loader.start("Extracting error requests...");
21
46
  const errorRequests = await this.extractor.extractErrorRequests(runId, startTime, endTime);
47
+ this.loader.success("Extracted error requests");
48
+ this.loader.start("Extracting success requests...");
22
49
  const successRequests = await this.extractor.extractSuccessRequests(runId, startTime, endTime);
50
+ this.loader.success("Extracted success requests");
51
+ this.loader.start("Extracting error responses text...");
23
52
  const errorResponsesText = await this.extractor.extractErrorResponsesText(runId, startTime, endTime);
53
+ this.loader.success("Extracted error responses text");
24
54
  const reportData = {
25
55
  ...(typeof data === "object" && data !== null ? data : {}),
26
56
  httpReqs,
@@ -1 +1 @@
1
- {"version":3,"file":"data-collector.js","sourceRoot":"","sources":["../src/data-collector.ts"],"names":[],"mappings":";;;AAAA,mEAA8D;AAW9D,MAAa,aAAa;IAGxB,YAAY,MAAoB;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,2CAAmB,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,OAAO,CACX,KAAa,EACb,YAAoB,KAAK,EACzB,UAAkB,OAAO,EACzB,OAAgB,EAAE;QAElB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACjF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3F,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/F,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACnG,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC7F,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACvF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC3F,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/F,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAErG,MAAM,UAAU,GAAG;YACjB,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,QAAQ;YACR,GAAG;YACH,MAAM;YACN,UAAU;YACV,QAAQ;YACR,MAAM;YACN,aAAa;YACb,eAAe;YACf,iBAAiB;YACjB,cAAc;YACd,WAAW;YACX,aAAa;YACb,eAAe;YACf,kBAAkB;SACnB,CAAC;QAEF,OAAO;YACL,KAAK;YACL,SAAS;YACT,OAAO;YACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI,EAAE,UAAU;SACjB,CAAC;IACJ,CAAC;CACF;AAtDD,sCAsDC"}
1
+ {"version":3,"file":"data-collector.js","sourceRoot":"","sources":["../src/data-collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare class Loader {
2
+ private frames;
3
+ private currentFrame;
4
+ private interval;
5
+ private message;
6
+ start(message: string): void;
7
+ stop(): void;
8
+ success(message: string): void;
9
+ error(message: string): void;
10
+ }
11
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAEA,qBAAa,MAAM;IACjB,OAAO,CAAC,MAAM,CAAsD;IACpE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,OAAO,CAAM;IAErB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAU5B,IAAI,IAAI,IAAI;IAQZ,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAI7B"}
package/dist/loader.js ADDED
@@ -0,0 +1,40 @@
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.Loader = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ class Loader {
9
+ constructor() {
10
+ this.frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
11
+ this.currentFrame = 0;
12
+ this.interval = null;
13
+ this.message = "";
14
+ }
15
+ start(message) {
16
+ this.message = message;
17
+ this.currentFrame = 0;
18
+ this.interval = setInterval(() => {
19
+ process.stdout.write(`\r${chalk_1.default.cyan(this.frames[this.currentFrame])} ${this.message}`);
20
+ this.currentFrame = (this.currentFrame + 1) % this.frames.length;
21
+ }, 80);
22
+ }
23
+ stop() {
24
+ if (this.interval) {
25
+ clearInterval(this.interval);
26
+ this.interval = null;
27
+ }
28
+ process.stdout.write("\r" + " ".repeat(this.message.length + 3) + "\r");
29
+ }
30
+ success(message) {
31
+ this.stop();
32
+ console.log(`${chalk_1.default.green("✓")} ${message}`);
33
+ }
34
+ error(message) {
35
+ this.stop();
36
+ console.log(`${chalk_1.default.red("✗")} ${message}`);
37
+ }
38
+ }
39
+ exports.Loader = Loader;
40
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B,MAAa,MAAM;IAAnB;QACU,WAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5D,iBAAY,GAAG,CAAC,CAAC;QACjB,aAAQ,GAA0B,IAAI,CAAC;QACvC,YAAO,GAAG,EAAE,CAAC;IA6BvB,CAAC;IA3BC,KAAK,CAAC,OAAe;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QAEtB,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACxF,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QACnE,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,OAAe;QACnB,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,GAAG,eAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;IAC9C,CAAC;CACF;AAjCD,wBAiCC"}
@@ -5,5 +5,6 @@ export declare class CliReporter {
5
5
  private printReport;
6
6
  private padRight;
7
7
  private formatDuration;
8
+ private printSummary;
8
9
  }
9
10
  //# sourceMappingURL=cli-reporter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-reporter.d.ts","sourceRoot":"","sources":["../../src/reporters/cli-reporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,WAAW;IACtB,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAKpC,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,WAAW;IA0InB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,cAAc;CASvB"}
1
+ {"version":3,"file":"cli-reporter.d.ts","sourceRoot":"","sources":["../../src/reporters/cli-reporter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,WAAW;IACtB,MAAM,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAMpC,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,WAAW;IA0InB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,YAAY;CAgCrB"}
@@ -10,6 +10,7 @@ class CliReporter {
10
10
  report(data) {
11
11
  this.printHeader(data);
12
12
  this.printReport(data);
13
+ this.printSummary(data);
13
14
  }
14
15
  printHeader(data) {
15
16
  console.log("\n---");
@@ -136,6 +137,34 @@ class CliReporter {
136
137
  }
137
138
  return `${(ms / 1000).toFixed(2)}s`;
138
139
  }
140
+ printSummary(data) {
141
+ const reportData = data.data;
142
+ let errorPercent = 0;
143
+ let failedChecks = 0;
144
+ // Calculate error percentage
145
+ if (reportData.httpReqFailed) {
146
+ const failed = reportData.httpReqFailed;
147
+ errorPercent = typeof failed.failureRate === "number" ? failed.failureRate : 0;
148
+ }
149
+ // Get failed checks count
150
+ if (reportData.checks) {
151
+ const checks = reportData.checks;
152
+ failedChecks = typeof checks.fails === "number" ? checks.fails : 0;
153
+ }
154
+ // Determine success/failure
155
+ const isSuccess = errorPercent < 1 && failedChecks === 0;
156
+ console.log("\n---");
157
+ if (isSuccess) {
158
+ console.log(chalk_1.default.green.bold("✓ PASS"));
159
+ }
160
+ else {
161
+ console.log(chalk_1.default.red.bold("✗ FAIL"));
162
+ }
163
+ console.log("");
164
+ console.log(`${chalk_1.default.gray("Error Rate:")} ${chalk_1.default.cyan(errorPercent.toFixed(2) + "%")}`);
165
+ console.log(`${chalk_1.default.gray("Failed Checks:")} ${chalk_1.default.cyan(String(failedChecks))}`);
166
+ console.log("---\n");
167
+ }
139
168
  }
140
169
  exports.CliReporter = CliReporter;
141
170
  //# sourceMappingURL=cli-reporter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-reporter.js","sourceRoot":"","sources":["../../src/reporters/cli-reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli-reporter.js","sourceRoot":"","sources":["../../src/reporters/cli-reporter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "k6-perf-reporter",
3
- "version": "1.2.0",
3
+ "version": "1.4.0",
4
4
  "description": "Reporting tool for k6 performance tests with InfluxDB 2 integration",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
package/src/config.ts CHANGED
@@ -12,10 +12,56 @@ export class Config {
12
12
  private static instance: Config;
13
13
  private config: InfluxConfig;
14
14
 
15
- private constructor(configPath: string = ".config.json") {
16
- const fullPath = path.resolve(configPath);
17
- const data = JSON.parse(fs.readFileSync(fullPath, "utf-8"));
18
- this.config = data.influx;
15
+ private constructor(configPath?: string) {
16
+ this.config = this.loadConfig(configPath);
17
+ }
18
+
19
+ private loadConfig(configPath?: string): InfluxConfig {
20
+ // Try to load from JSON file first
21
+ const filePath = configPath || ".config.json";
22
+ const fullPath = path.resolve(filePath);
23
+ let config: InfluxConfig;
24
+
25
+ if (fs.existsSync(fullPath)) {
26
+ const data = JSON.parse(fs.readFileSync(fullPath, "utf-8"));
27
+ config = data.influx;
28
+ } else {
29
+ // If file doesn't exist, try to load from env vars
30
+ const envConfig = this.loadFromEnv();
31
+ if (!envConfig) {
32
+ throw new Error(
33
+ `Config file not found at ${fullPath} and no environment variables set. ` +
34
+ `Set INFLUX_URL, INFLUX_TOKEN, INFLUX_ORG, INFLUX_BUCKET or provide a config file.`
35
+ );
36
+ }
37
+ return envConfig;
38
+ }
39
+
40
+ // Override with environment variables if they exist
41
+ return this.overrideWithEnv(config);
42
+ }
43
+
44
+ private loadFromEnv(): InfluxConfig | null {
45
+ const url = process.env.INFLUX_URL;
46
+ const token = process.env.INFLUX_TOKEN;
47
+ const org = process.env.INFLUX_ORG;
48
+ const bucket = process.env.INFLUX_BUCKET;
49
+
50
+ // Only return if all env vars are set
51
+ if (url && token && org && bucket) {
52
+ return { url, token, org, bucket };
53
+ }
54
+
55
+ return null;
56
+ }
57
+
58
+ private overrideWithEnv(config: InfluxConfig): InfluxConfig {
59
+ return {
60
+ url: process.env.INFLUX_URL || config.url,
61
+ token: process.env.INFLUX_TOKEN || config.token,
62
+ org: process.env.INFLUX_ORG || config.org,
63
+ bucket: process.env.INFLUX_BUCKET || config.bucket,
64
+ };
19
65
  }
20
66
 
21
67
  static getInstance(configPath?: string): Config {
@@ -1,5 +1,6 @@
1
1
  import { InfluxDataExtractor } from "./influx-data-extractor";
2
2
  import { InfluxConfig } from "./config";
3
+ import { Loader } from "./loader";
3
4
 
4
5
  export interface ReporterResponse {
5
6
  runId: string;
@@ -11,6 +12,7 @@ export interface ReporterResponse {
11
12
 
12
13
  export class DataCollector {
13
14
  private extractor: InfluxDataExtractor;
15
+ private loader = new Loader();
14
16
 
15
17
  constructor(config: InfluxConfig) {
16
18
  this.extractor = new InfluxDataExtractor(config);
@@ -22,20 +24,61 @@ export class DataCollector {
22
24
  endTime: string = "now()",
23
25
  data: unknown = {}
24
26
  ): Promise<ReporterResponse> {
27
+ this.loader.start("Extracting http_reqs...");
25
28
  const httpReqs = await this.extractor.extractHttpReqs(runId, startTime, endTime);
29
+ this.loader.success("Extracted http_reqs");
30
+
31
+ this.loader.start("Extracting vus...");
26
32
  const vus = await this.extractor.extractVus(runId, startTime, endTime);
33
+ this.loader.success("Extracted vus");
34
+
35
+ this.loader.start("Extracting vus_max...");
27
36
  const vusMax = await this.extractor.extractVusMax(runId, startTime, endTime);
37
+ this.loader.success("Extracted vus_max");
38
+
39
+ this.loader.start("Extracting iterations...");
28
40
  const iterations = await this.extractor.extractIterations(runId, startTime, endTime);
41
+ this.loader.success("Extracted iterations");
42
+
43
+ this.loader.start("Calculating test duration...");
29
44
  const duration = await this.extractor.calculateTestDuration(runId, startTime, endTime);
45
+ this.loader.success("Calculated test duration");
46
+
47
+ this.loader.start("Extracting checks...");
30
48
  const checks = await this.extractor.extractChecks(runId, startTime, endTime);
49
+ this.loader.success("Extracted checks");
50
+
51
+ this.loader.start("Extracting http_req_failed...");
31
52
  const httpReqFailed = await this.extractor.extractHttpReqFailed(runId, startTime, endTime);
53
+ this.loader.success("Extracted http_req_failed");
54
+
55
+ this.loader.start("Extracting http_req_duration...");
32
56
  const httpReqDuration = await this.extractor.extractHttpReqDuration(runId, startTime, endTime);
57
+ this.loader.success("Extracted http_req_duration");
58
+
59
+ this.loader.start("Extracting iteration_duration...");
33
60
  const iterationDuration = await this.extractor.extractIterationDuration(runId, startTime, endTime);
61
+ this.loader.success("Extracted iteration_duration");
62
+
63
+ this.loader.start("Extracting error_responses...");
34
64
  const errorResponses = await this.extractor.extractErrorResponses(runId, startTime, endTime);
65
+ this.loader.success("Extracted error_responses");
66
+
67
+ this.loader.start("Extracting top slow URLs...");
35
68
  const topSlowUrls = await this.extractor.extractTopSlowUrls(runId, startTime, endTime);
69
+ this.loader.success("Extracted top slow URLs");
70
+
71
+ this.loader.start("Extracting error requests...");
36
72
  const errorRequests = await this.extractor.extractErrorRequests(runId, startTime, endTime);
73
+ this.loader.success("Extracted error requests");
74
+
75
+ this.loader.start("Extracting success requests...");
37
76
  const successRequests = await this.extractor.extractSuccessRequests(runId, startTime, endTime);
77
+ this.loader.success("Extracted success requests");
78
+
79
+ this.loader.start("Extracting error responses text...");
38
80
  const errorResponsesText = await this.extractor.extractErrorResponsesText(runId, startTime, endTime);
81
+ this.loader.success("Extracted error responses text");
39
82
 
40
83
  const reportData = {
41
84
  ...(typeof data === "object" && data !== null ? data : {}),
package/src/loader.ts ADDED
@@ -0,0 +1,36 @@
1
+ import chalk from "chalk";
2
+
3
+ export class Loader {
4
+ private frames = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
5
+ private currentFrame = 0;
6
+ private interval: NodeJS.Timeout | null = null;
7
+ private message = "";
8
+
9
+ start(message: string): void {
10
+ this.message = message;
11
+ this.currentFrame = 0;
12
+
13
+ this.interval = setInterval(() => {
14
+ process.stdout.write(`\r${chalk.cyan(this.frames[this.currentFrame])} ${this.message}`);
15
+ this.currentFrame = (this.currentFrame + 1) % this.frames.length;
16
+ }, 80);
17
+ }
18
+
19
+ stop(): void {
20
+ if (this.interval) {
21
+ clearInterval(this.interval);
22
+ this.interval = null;
23
+ }
24
+ process.stdout.write("\r" + " ".repeat(this.message.length + 3) + "\r");
25
+ }
26
+
27
+ success(message: string): void {
28
+ this.stop();
29
+ console.log(`${chalk.green("✓")} ${message}`);
30
+ }
31
+
32
+ error(message: string): void {
33
+ this.stop();
34
+ console.log(`${chalk.red("✗")} ${message}`);
35
+ }
36
+ }
@@ -6,6 +6,7 @@ export class CliReporter {
6
6
  report(data: ReporterResponse): void {
7
7
  this.printHeader(data);
8
8
  this.printReport(data);
9
+ this.printSummary(data);
9
10
  }
10
11
 
11
12
  private printHeader(data: ReporterResponse): void {
@@ -166,4 +167,37 @@ export class CliReporter {
166
167
  }
167
168
  return `${(ms / 1000).toFixed(2)}s`;
168
169
  }
170
+
171
+ private printSummary(data: ReporterResponse): void {
172
+ const reportData = data.data as Record<string, unknown>;
173
+
174
+ let errorPercent = 0;
175
+ let failedChecks = 0;
176
+
177
+ // Calculate error percentage
178
+ if (reportData.httpReqFailed) {
179
+ const failed = reportData.httpReqFailed as Record<string, number>;
180
+ errorPercent = typeof failed.failureRate === "number" ? failed.failureRate : 0;
181
+ }
182
+
183
+ // Get failed checks count
184
+ if (reportData.checks) {
185
+ const checks = reportData.checks as Record<string, number>;
186
+ failedChecks = typeof checks.fails === "number" ? checks.fails : 0;
187
+ }
188
+
189
+ // Determine success/failure
190
+ const isSuccess = errorPercent < 1 && failedChecks === 0;
191
+
192
+ console.log("\n---");
193
+ if (isSuccess) {
194
+ console.log(chalk.green.bold("✓ PASS"));
195
+ } else {
196
+ console.log(chalk.red.bold("✗ FAIL"));
197
+ }
198
+ console.log("");
199
+ console.log(`${chalk.gray("Error Rate:")} ${chalk.cyan(errorPercent.toFixed(2) + "%")}`);
200
+ console.log(`${chalk.gray("Failed Checks:")} ${chalk.cyan(String(failedChecks))}`);
201
+ console.log("---\n");
202
+ }
169
203
  }
package/.config.json DELETED
@@ -1,8 +0,0 @@
1
- {
2
- "influx": {
3
- "url": "https://influx.cmn.monomarket.tech",
4
- "token": "JFP9pZu3Sp134rkCZ6gT7FtSBmQRWgl8VmVhFMHTXrbkhKQ3LrvrM4FXECR7Lr8MsDGWLIsU7IJFcjL_QHwvqA==",
5
- "org": "ced1cdfb28534a3e",
6
- "bucket": "jmeter"
7
- }
8
- }