@flakiness/cucumberjs 1.0.1 → 1.1.1

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
@@ -55,7 +55,10 @@ Add the formatter to your `cucumber.mjs`:
55
55
  export default {
56
56
  paths: ['features/**/*.feature'],
57
57
  import: ['features/support/**/*.ts'],
58
- format: ['@flakiness/cucumberjs', 'progress'],
58
+ format: [
59
+ 'progress',
60
+ ['@flakiness/cucumberjs', '.flakiness/cucumber-formatter.log'],
61
+ ],
59
62
  formatOptions: {
60
63
  flakinessProject: 'my-org/my-project',
61
64
  },
@@ -83,6 +86,8 @@ Reports are automatically uploaded to Flakiness.io after test completion. Authen
83
86
 
84
87
  If upload fails, the report is still available locally in the output folder.
85
88
 
89
+ If you combine this formatter with a progress formatter, keep the progress formatter on `stdout` and redirect `@flakiness/cucumberjs` to a file as shown above. Upload status messages are printed to `stderr`, so the uploaded report URL stays visible in the terminal.
90
+
86
91
  ## Viewing Reports
87
92
 
88
93
  After test execution, you can view the report using:
@@ -189,7 +194,10 @@ Here's a complete example with all options:
189
194
  export default {
190
195
  paths: ['features/**/*.feature'],
191
196
  import: ['features/support/**/*.ts'],
192
- format: ['@flakiness/cucumberjs', 'progress'],
197
+ format: [
198
+ 'progress',
199
+ ['@flakiness/cucumberjs', '.flakiness/cucumber-formatter.log'],
200
+ ],
193
201
  formatOptions: {
194
202
  flakinessProject: 'my-org/my-project',
195
203
  endpoint: process.env.FLAKINESS_ENDPOINT,
package/lib/formatter.js CHANGED
@@ -6,12 +6,18 @@ import {
6
6
  GitWorktree,
7
7
  RAMUtilization,
8
8
  ReportUtils,
9
+ showReportCommand,
9
10
  uploadReport,
10
11
  writeReport
11
12
  } from "@flakiness/sdk";
12
13
  import fs from "node:fs";
13
14
  import path from "node:path";
14
15
  const CUCUMBER_LOG_MEDIA_TYPE = "text/x.cucumber.log+plain";
16
+ const STDERR_LOGGER = {
17
+ log: (...args) => console.error(...args),
18
+ warn: (...args) => console.error(...args),
19
+ error: (...args) => console.error(...args)
20
+ };
15
21
  class FlakinessCucumberFormatter extends Formatter {
16
22
  static documentation = "Generates a Flakiness report for a CucumberJS run.";
17
23
  _config;
@@ -97,20 +103,20 @@ class FlakinessCucumberFormatter extends Formatter {
97
103
  this._cpuUtilization.enrich(report);
98
104
  this._ramUtilization.enrich(report);
99
105
  await writeReport(report, attachments, this._outputFolder);
106
+ const command = showReportCommand(this._outputFolder);
107
+ console.error(`
108
+ To open last Flakiness report, run:
109
+
110
+ ${command}
111
+ `);
100
112
  const disableUpload = this._config.disableUpload ?? envBool("FLAKINESS_DISABLE_UPLOAD");
101
113
  if (!disableUpload) {
102
114
  await uploadReport(report, attachments, {
103
115
  flakinessAccessToken: this._config.token,
104
- flakinessEndpoint: this._config.endpoint
116
+ flakinessEndpoint: this._config.endpoint,
117
+ logger: STDERR_LOGGER
105
118
  });
106
119
  }
107
- const defaultOutputFolder = path.join(this.cwd, "flakiness-report");
108
- const folder = defaultOutputFolder === this._outputFolder ? "" : path.relative(this.cwd, this._outputFolder);
109
- this.log(`
110
- To open last Flakiness report, run:
111
-
112
- npx flakiness show ${folder}
113
- `);
114
120
  }
115
121
  async _collectSuites(worktree) {
116
122
  const suitesByKey = /* @__PURE__ */ new Map();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flakiness/cucumberjs",
3
- "version": "1.0.1",
3
+ "version": "1.1.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/flakiness/cucumberjs.git"
@@ -21,12 +21,12 @@
21
21
  "type": "module",
22
22
  "dependencies": {
23
23
  "@flakiness/flakiness-report": "^0.28.0",
24
- "@flakiness/sdk": "^2.2.2"
24
+ "@flakiness/sdk": "^2.4.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@cucumber/cucumber": "^12.7.0",
28
28
  "@cucumber/messages": "^32.2.0",
29
- "@flakiness/cucumberjs": "1.0.0-alpha.1",
29
+ "@flakiness/cucumberjs": "1.0.1",
30
30
  "@types/node": "^25.5.0",
31
31
  "c8": "^11.0.0",
32
32
  "esbuild": "^0.27.4",
@@ -1 +1 @@
1
- {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAoB,MAAM,oBAAoB,CAAC;AAiDjE,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,SAAS;IAC/D,MAAM,CAAC,aAAa,SAAwD;IAE5E,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAiB;IAEzC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,oBAAoB,CAAsC;IAClE,OAAO,CAAC,qBAAqB,CAAuC;gBAExD,OAAO,EAAE,iBAAiB;IA0BtC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,mBAAmB;IAIZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAaxC,OAAO,CAAC,aAAa;YAMP,kBAAkB;YAsDlB,cAAc;CA4F7B"}
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../src/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAoB,MAAM,oBAAoB,CAAC;AAuDjE,MAAM,CAAC,OAAO,OAAO,0BAA2B,SAAQ,SAAS;IAC/D,MAAM,CAAC,aAAa,SAAwD;IAE5E,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,eAAe,CAAyC;IAChE,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAiB;IAEzC,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,oBAAoB,CAAsC;IAClE,OAAO,CAAC,qBAAqB,CAAuC;gBAExD,OAAO,EAAE,iBAAiB;IA0BtC,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,mBAAmB;IAIZ,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAaxC,OAAO,CAAC,aAAa;YAMP,kBAAkB;YAqDlB,cAAc;CA4F7B"}