Skip to content

Commit

Permalink
feat(cucumberjs): add host and thread labels (fixes #454, via #459)
Browse files Browse the repository at this point in the history
  • Loading branch information
epszaw authored Aug 4, 2022
1 parent 95c41ed commit 179b64c
Show file tree
Hide file tree
Showing 4 changed files with 132 additions and 3 deletions.
2 changes: 2 additions & 0 deletions packages/allure-cucumberjs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
"@types/glob": "^7.1.4",
"@types/mocha": "^9.0.0",
"@types/node": "^16.7.8",
"@types/sinon": "^10.0.11",
"@types/verror": "^1.10.3",
"allure-mocha": "workspace:packages/allure-mocha",
"chai": "^4.3.4",
Expand All @@ -36,6 +37,7 @@
"path": "^0.12.7",
"prettier": "^2.3.2",
"rimraf": "^3.0.2",
"sinon": "^14.0.0",
"ts-node": "^10.2.1",
"typescript": "^4.4.2",
"verror": "^1.10.0"
Expand Down
7 changes: 7 additions & 0 deletions packages/allure-cucumberjs/src/CucumberJSAllureReporter.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import os from "os";
import process from "process";
import { World as CucumberWorld, Formatter } from "@cucumber/cucumber";
import { IFormatterOptions } from "@cucumber/cucumber/lib/formatter";
import TestCaseHookDefinition from "@cucumber/cucumber/lib/models/test_case_hook_definition";
Expand Down Expand Up @@ -40,6 +42,8 @@ export class CucumberJSAllureFormatterConfig {
links?: LinkMatcher[];
}

const { ALLURE_HOST_NAME, ALLURE_THREAD_NAME } = process.env;

export class CucumberJSAllureFormatter extends Formatter {
public readonly allureInterface: Allure;
currentAfter: ExecutableItemWrapper | null = null;
Expand All @@ -52,6 +56,7 @@ export class CucumberJSAllureFormatter extends Formatter {
private readonly labelsMathers: LabelMatcher[];
private readonly linksMatchers: LinkMatcher[];
private stepStack: AllureStep[] = [];
private hostname: string = ALLURE_HOST_NAME || os.hostname();
private readonly documentMap: Map<string, messages.GherkinDocument> = new Map();
private readonly featureMap: Map<string, messages.Feature> = new Map();
private readonly scenarioMap: Map<string, messages.Scenario> = new Map();
Expand Down Expand Up @@ -233,6 +238,8 @@ export class CucumberJSAllureFormatter extends Formatter {
this.testCaseTestStepsResults.set(data.id, []);

currentTest.name = pickle.name;
currentTest?.addLabel(LabelName.HOST, this.hostname);
currentTest?.addLabel(LabelName.THREAD, ALLURE_THREAD_NAME || process.getuid().toString());
currentTest?.addLabel(LabelName.LANGUAGE, "javascript");
currentTest?.addLabel(LabelName.FRAMEWORK, "cucumberjs");

Expand Down
11 changes: 11 additions & 0 deletions packages/allure-cucumberjs/test/specs/allure_cucumberjs_test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import os from "os";
import process from "process";
import { LabelName, Status } from "allure-js-commons";
import { expect } from "chai";
import sinon from "sinon";
import { ITestFormatterOptions, runFeatures } from "../helpers/formatter_helpers";
import { buildSupportCodeLibrary } from "../helpers/runtime_helpers";

Expand Down Expand Up @@ -354,19 +357,26 @@ describe("CucumberJSAllureReporter", () => {
});

it("should create labels", async () => {
sinon.stub(os, "hostname").returns("127.0.0.1");
sinon.stub(process, "getuid").returns(123);

const results = await runFeatures(dataSet.withTags);
expect(results.tests).length(1);

const language = results.tests[0].labels.find((label) => label.name === LabelName.LANGUAGE);
const framework = results.tests[0].labels.find((label) => label.name === LabelName.FRAMEWORK);
const feature = results.tests[0].labels.find((label) => label.name === LabelName.FEATURE);
const suite = results.tests[0].labels.find((label) => label.name === LabelName.SUITE);
const host = results.tests[0].labels.find((label) => label.name === LabelName.HOST);
const thread = results.tests[0].labels.find((label) => label.name === LabelName.THREAD);
const tags = results.tests[0].labels.filter((label) => label.name === LabelName.TAG);

expect(language?.value).eq("javascript");
expect(framework?.value).eq("cucumberjs");
expect(feature?.value).eq("a");
expect(suite?.value).eq("b");
expect(host?.value).eq("127.0.0.1");
expect(thread?.value).eq("123");
expect(tags).length(2);
expect(tags[0].value).eq("@foo");
expect(tags[1].value).eq("@bar");
Expand All @@ -390,6 +400,7 @@ describe("CucumberJSAllureReporter", () => {
expect(results.tests).length(1);

const { links, labels } = results.tests[0];

expect(links).length(2);
expect(links[0].type).eq("issue");
expect(links[0].url).eq("https://example.org/issues/1");
Expand Down
115 changes: 112 additions & 3 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -964,7 +964,7 @@ __metadata:
languageName: node
linkType: hard

"@sinonjs/commons@npm:^1.7.0":
"@sinonjs/commons@npm:^1.6.0, @sinonjs/commons@npm:^1.7.0, @sinonjs/commons@npm:^1.8.3":
version: 1.8.3
resolution: "@sinonjs/commons@npm:1.8.3"
dependencies:
Expand All @@ -973,6 +973,15 @@ __metadata:
languageName: node
linkType: hard

"@sinonjs/fake-timers@npm:>=5, @sinonjs/fake-timers@npm:^9.1.2":
version: 9.1.2
resolution: "@sinonjs/fake-timers@npm:9.1.2"
dependencies:
"@sinonjs/commons": ^1.7.0
checksum: 7d3aef54e17c1073101cb64d953157c19d62a40e261a30923fa1ee337b049c5f29cc47b1f0c477880f42b5659848ba9ab897607ac8ea4acd5c30ddcfac57fca6
languageName: node
linkType: hard

"@sinonjs/fake-timers@npm:^6.0.1":
version: 6.0.1
resolution: "@sinonjs/fake-timers@npm:6.0.1"
Expand All @@ -982,6 +991,24 @@ __metadata:
languageName: node
linkType: hard

"@sinonjs/samsam@npm:^6.1.1":
version: 6.1.1
resolution: "@sinonjs/samsam@npm:6.1.1"
dependencies:
"@sinonjs/commons": ^1.6.0
lodash.get: ^4.4.2
type-detect: ^4.0.8
checksum: a09b0914bf573f0da82bd03c64ba413df81a7c173818dc3f0a90c2652240ac835ef583f4d52f0b215e626633c91a4095c255e0669f6ead97241319f34f05e7fc
languageName: node
linkType: hard

"@sinonjs/text-encoding@npm:^0.7.1":
version: 0.7.1
resolution: "@sinonjs/text-encoding@npm:0.7.1"
checksum: 130de0bb568c5f8a611ec21d1a4e3f80ab0c5ec333010f49cfc1adc5cba6d8808699c8a587a46b0f0b016a1f4c1389bc96141e773e8460fcbb441875b2e91ba7
languageName: node
linkType: hard

"@teppeis/multimaps@npm:2.0.0":
version: 2.0.0
resolution: "@teppeis/multimaps@npm:2.0.0"
Expand Down Expand Up @@ -1262,6 +1289,22 @@ __metadata:
languageName: node
linkType: hard

"@types/sinon@npm:^10.0.11":
version: 10.0.11
resolution: "@types/sinon@npm:10.0.11"
dependencies:
"@types/sinonjs__fake-timers": "*"
checksum: 196f3e26985dca5dfb593592e4b64463e536c047a9f43aa2b328b16024a3b0e3fb27b7a3f3972c6ef75749f55012737eb6c63a1c2e9782b7fe5cbbd25f75fd62
languageName: node
linkType: hard

"@types/sinonjs__fake-timers@npm:*":
version: 8.1.2
resolution: "@types/sinonjs__fake-timers@npm:8.1.2"
checksum: bbc73a5ab6c0ec974929392f3d6e1e8db4ebad97ec506d785301e1c3d8a4f98a35b1aa95b97035daef02886fd8efd7788a2fa3ced2ec7105988bfd8dce61eedd
languageName: node
linkType: hard

"@types/stack-utils@npm:^2.0.0":
version: 2.0.1
resolution: "@types/stack-utils@npm:2.0.1"
Expand Down Expand Up @@ -1554,6 +1597,7 @@ __metadata:
"@types/glob": ^7.1.4
"@types/mocha": ^9.0.0
"@types/node": ^16.7.8
"@types/sinon": ^10.0.11
"@types/verror": ^1.10.3
allure-js-commons: "workspace:*"
allure-mocha: "workspace:packages/allure-mocha"
Expand All @@ -1567,6 +1611,7 @@ __metadata:
path: ^0.12.7
prettier: ^2.3.2
rimraf: ^3.0.2
sinon: ^14.0.0
ts-node: ^10.2.1
typescript: ^4.4.2
verror: ^1.10.0
Expand Down Expand Up @@ -2979,6 +3024,13 @@ __metadata:
languageName: node
linkType: hard

"diff@npm:^5.0.0":
version: 5.1.0
resolution: "diff@npm:5.1.0"
checksum: c7bf0df7c9bfbe1cf8a678fd1b2137c4fb11be117a67bc18a0e03ae75105e8533dbfb1cda6b46beb3586ef5aed22143ef9d70713977d5fb1f9114e21455fba90
languageName: node
linkType: hard

"dir-glob@npm:^3.0.1":
version: 3.0.1
resolution: "dir-glob@npm:3.0.1"
Expand Down Expand Up @@ -4767,6 +4819,13 @@ __metadata:
languageName: node
linkType: hard

"isarray@npm:0.0.1":
version: 0.0.1
resolution: "isarray@npm:0.0.1"
checksum: 49191f1425681df4a18c2f0f93db3adb85573bcdd6a4482539d98eac9e705d8961317b01175627e860516a2fc45f8f9302db26e5a380a97a520e272e2a40a8d4
languageName: node
linkType: hard

"isarray@npm:1.0.0, isarray@npm:~1.0.0":
version: 1.0.0
resolution: "isarray@npm:1.0.0"
Expand Down Expand Up @@ -5494,6 +5553,13 @@ __metadata:
languageName: node
linkType: hard

"just-extend@npm:^4.0.2":
version: 4.2.1
resolution: "just-extend@npm:4.2.1"
checksum: ff9fdede240fad313efeeeb68a660b942e5586d99c0058064c78884894a2690dc09bba44c994ad4e077e45d913fef01a9240c14a72c657b53687ac58de53b39c
languageName: node
linkType: hard

"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0":
version: 3.2.2
resolution: "kind-of@npm:3.2.2"
Expand Down Expand Up @@ -5678,6 +5744,13 @@ __metadata:
languageName: node
linkType: hard

"lodash.get@npm:^4.4.2":
version: 4.4.2
resolution: "lodash.get@npm:4.4.2"
checksum: e403047ddb03181c9d0e92df9556570e2b67e0f0a930fcbbbd779370972368f5568e914f913e93f3b08f6d492abc71e14d4e9b7a18916c31fa04bd2306efe545
languageName: node
linkType: hard

"lodash.merge@npm:^4.6.2":
version: 4.6.2
resolution: "lodash.merge@npm:4.6.2"
Expand Down Expand Up @@ -6179,6 +6252,19 @@ __metadata:
languageName: node
linkType: hard

"nise@npm:^5.1.1":
version: 5.1.1
resolution: "nise@npm:5.1.1"
dependencies:
"@sinonjs/commons": ^1.8.3
"@sinonjs/fake-timers": ">=5"
"@sinonjs/text-encoding": ^0.7.1
just-extend: ^4.0.2
path-to-regexp: ^1.7.0
checksum: d8be29e84a014743c9a10f428fac86f294ac5f92bed1f606fe9b551e935f494d8e0ce1af8a12673c6014010ec7f771f2d48aa5c8e116f223eb4f40c5e1ab44b3
languageName: node
linkType: hard

"no-case@npm:^3.0.4":
version: 3.0.4
resolution: "no-case@npm:3.0.4"
Expand Down Expand Up @@ -6728,6 +6814,15 @@ __metadata:
languageName: node
linkType: hard

"path-to-regexp@npm:^1.7.0":
version: 1.8.0
resolution: "path-to-regexp@npm:1.8.0"
dependencies:
isarray: 0.0.1
checksum: 709f6f083c0552514ef4780cb2e7e4cf49b0cc89a97439f2b7cc69a608982b7690fb5d1720a7473a59806508fc2dae0be751ba49f495ecf89fd8fbc62abccbcd
languageName: node
linkType: hard

"path-type@npm:^3.0.0":
version: 3.0.0
resolution: "path-type@npm:3.0.0"
Expand Down Expand Up @@ -7534,6 +7629,20 @@ __metadata:
languageName: node
linkType: hard

"sinon@npm:^14.0.0":
version: 14.0.0
resolution: "sinon@npm:14.0.0"
dependencies:
"@sinonjs/commons": ^1.8.3
"@sinonjs/fake-timers": ^9.1.2
"@sinonjs/samsam": ^6.1.1
diff: ^5.0.0
nise: ^5.1.1
supports-color: ^7.2.0
checksum: b2aeeb0cdc2cd30f904ccbcd60bae4e1b3dcf3aeeface09c1832db0336be0dbaa461f3b91b769bed84f05c83d45d5072a9da7ee14bc7289daeda2a1214fe173c
languageName: node
linkType: hard

"sisteransi@npm:^1.0.5":
version: 1.0.5
resolution: "sisteransi@npm:1.0.5"
Expand Down Expand Up @@ -7999,7 +8108,7 @@ __metadata:
languageName: node
linkType: hard

"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0":
"supports-color@npm:^7.0.0, supports-color@npm:^7.1.0, supports-color@npm:^7.2.0":
version: 7.2.0
resolution: "supports-color@npm:7.2.0"
dependencies:
Expand Down Expand Up @@ -8307,7 +8416,7 @@ __metadata:
languageName: node
linkType: hard

"type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.5":
"type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.5, type-detect@npm:^4.0.8":
version: 4.0.8
resolution: "type-detect@npm:4.0.8"
checksum: 62b5628bff67c0eb0b66afa371bd73e230399a8d2ad30d852716efcc4656a7516904570cd8631a49a3ce57c10225adf5d0cbdcb47f6b0255fe6557c453925a15
Expand Down

0 comments on commit 179b64c

Please sign in to comment.