Skip to content

Commit

Permalink
chore: capture metadata from cucumber (#86)
Browse files Browse the repository at this point in the history
  • Loading branch information
ASaiAnudeep authored Aug 25, 2024
1 parent 1d82bd3 commit 8c9211b
Show file tree
Hide file tree
Showing 5 changed files with 394 additions and 7 deletions.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "test-results-parser",
"version": "0.2.3",
"version": "0.2.4",
"description": "Parse test results from JUnit, TestNG, xUnit, cucumber and many more",
"main": "src/index.js",
"types": "./src/index.d.ts",
Expand Down
13 changes: 9 additions & 4 deletions src/parsers/cucumber.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ class CucumberParser extends BaseParser {
test_suite.duration = test_suite.cases.reduce((total, _) => total + _.duration, 0);
test_suite.duration = parseFloat(test_suite.duration.toFixed(2));
test_suite.status = test_suite.total === test_suite.passed ? 'PASS' : 'FAIL';
const { tags, metadata } = this.#getTagsAndMetadata(feature.tags);
const { tags, metadata } = this.#getTagsAndMetadata(feature);
test_suite.tags = tags;
test_suite.metadata = metadata;
for (const test_case of test_suite.cases) {
Expand Down Expand Up @@ -88,7 +88,7 @@ class CucumberParser extends BaseParser {
test_case.failure = failed_step.failure;
test_case.stack_trace = failed_step.stack_trace
}
const { tags, metadata } = this.#getTagsAndMetadata(scenario.tags);
const { tags, metadata } = this.#getTagsAndMetadata(scenario);
test_case.tags = tags;
test_case.metadata = metadata;
return test_case;
Expand Down Expand Up @@ -134,9 +134,10 @@ class CucumberParser extends BaseParser {

/**
*
* @param {import('./cucumber.result').CucumberTag[]} cucumber_tags
* @param {import('./cucumber.result').CucumberFeature | import('./cucumber.result').CucumberElement} feature
*/
#getTagsAndMetadata(cucumber_tags) {
#getTagsAndMetadata(feature) {
const cucumber_tags = feature.tags || [];
const metadata = {};
const tags = [];
if (cucumber_tags) {
Expand All @@ -149,6 +150,10 @@ class CucumberParser extends BaseParser {
}
}
}
if (feature.metadata) {
Object.assign(metadata, feature.metadata);
}

return { tags, metadata };
}

Expand Down
186 changes: 186 additions & 0 deletions tests/data/cucumber/suites-with-metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
[
{
"description": "Verify calculator functionalities",
"elements": [
{
"description": "",
"id": "addition;addition-of-two-numbers",
"keyword": "Scenario",
"line": 5,
"name": "Addition of two numbers",
"steps": [
{
"arguments": [],
"keyword": "Given ",
"line": 6,
"name": "I have number 6 in calculator",
"match": {
"location": "features\\support\\steps.js:5"
},
"result": {
"status": "passed",
"duration": 1211400
}
},
{
"arguments": [],
"keyword": "When ",
"line": 7,
"name": "I entered number 7",
"match": {
"location": "features\\support\\steps.js:9"
},
"result": {
"status": "passed",
"duration": 136500
}
},
{
"arguments": [],
"keyword": "Then ",
"line": 8,
"name": "I should see result 13",
"match": {
"location": "features\\support\\steps.js:13"
},
"result": {
"status": "passed",
"duration": 244700
}
}
],
"tags": [
{
"name": "@green",
"line": 4
},
{
"name": "@fast",
"line": 4
},
{
"name": "@testCase=1234",
"line": 4
}
],
"type": "scenario"
}
],
"id": "addition",
"line": 1,
"keyword": "Feature",
"name": "Addition",
"tags": [
{
"name": "@blue",
"line": 4
},
{
"name": "@slow",
"line": 4
},
{
"name": "@suite=1234",
"line": 4
}
],
"uri": "features\\sample.feature",
"metadata": {
"browser": { "name": "firefox", "version": "129.0" },
"device": "Desktop",
"platform": { "name": "Windows", "version": "11" }
}
},
{
"description": "Verify calculator functionalities",
"elements": [
{
"description": "",
"id": "addition;addition-of-two-numbers",
"keyword": "Scenario",
"line": 5,
"name": "Addition of two numbers",
"steps": [
{
"arguments": [],
"keyword": "Given ",
"line": 6,
"name": "I have number 6 in calculator",
"match": {
"location": "features\\support\\steps.js:5"
},
"result": {
"status": "passed",
"duration": 1211400
}
},
{
"arguments": [],
"keyword": "When ",
"line": 7,
"name": "I entered number 7",
"match": {
"location": "features\\support\\steps.js:9"
},
"result": {
"status": "passed",
"duration": 136500
}
},
{
"arguments": [],
"keyword": "Then ",
"line": 8,
"name": "I should see result 13",
"match": {
"location": "features\\support\\steps.js:13"
},
"result": {
"status": "passed",
"duration": 244700
}
}
],
"tags": [
{
"name": "@green",
"line": 4
},
{
"name": "@fast",
"line": 4
},
{
"name": "@testCase=1234",
"line": 4
}
],
"type": "scenario"
}
],
"id": "addition",
"line": 1,
"keyword": "Feature",
"name": "Addition",
"tags": [
{
"name": "@blue",
"line": 4
},
{
"name": "@slow",
"line": 4
},
{
"name": "@suite=1234",
"line": 4
}
],
"uri": "features\\sample.feature",
"metadata": {
"browser": { "name": "chrome", "version": "129.0" },
"device": "Desktop",
"platform": { "name": "Windows", "version": "11" }
}
}
]
Loading

0 comments on commit 8c9211b

Please sign in to comment.