Skip to content
Novus Examples
ndjson27.5 KB

Cucumber Messages — Failing Run (NDJSON)

The messages twin of the failing run: one testStepFinished carries status FAILED with both a human message and a structured exception object, and testRunFinished reports success false. Comparing it with the passing stream in the other group isolates exactly which envelopes a failure changes.

Preview — first 50 linesndjson
{"meta": {"protocolVersion": "24.0.0", "implementation": {"name": "cucumber-js", "version": "11.0.1"}, "runtime": {"name": "node.js", "version": "22.6.0"}, "os": {"name": "linux", "version": "6.8.0"}, "cpu": {"name": "x86_64"}, "ci": {"name": "Novus Sample CI", "url": "https://ci.example.com/builds/4821", "buildNumber": "4821"}}}
{"source": {"uri": "features/checkout.feature", "data": "# language: en\n@checkout @smoke\nFeature: Checkout totals\n  As a shopper\n  I want the cart total to include tax and discounts\n  So that I am never surprised at the payment step\n\n  Background:\n    Given the catalogue contains:\n      | sku     | name             | price |\n      | NX-1042 | Sample desk lamp | 12.99 |\n      | NX-2087 | Sample notebook  |  4.50 |\n    And the tax rate is 20 percent\n\n  @pricing\n  Scenario: A single-item cart shows tax separately\n    Given my cart is empty\n    When I add 1 of \"NX-1042\"\n    Then the subtotal is \"12.99\"\n    And the tax is \"2.60\"\n    And the total is \"15.59\"\n\n  @pricing @outline\n  Scenario Outline: Quantity multiplies the subtotal\n    Given my cart is empty\n    When I add <quantity> of \"<sku>\"\n    Then the subtotal is \"<subtotal>\"\n\n    Examples: whole units\n      | sku     | quantity | subtotal |\n      | NX-1042 |        1 |    12.99 |\n      | NX-1042 |        3 |    38.97 |\n      | NX-2087 |        2 |     9.00 |\n\n    @edge\n    Examples: boundary quantities\n      | sku     | quantity | subtotal |\n      | NX-1042 |        0 |     0.00 |\n\n  @receipt\n  Scenario: The receipt renders as plain text\n    Given my cart contains 1 of \"NX-1042\"\n    When I request the receipt\n    Then the receipt reads:\n      \"\"\"\n      Novus Checkout SAMPLE receipt\n      1 x Sample desk lamp        12.99\n      Tax (20 percent)             2.60\n      Total                       15.59\n      \"\"\"\n", "mediaType": "text/x.cucumber.gherkin+plain"}}
{"gherkinDocument": {"uri": "features/checkout.feature", "feature": {"location": {"line": 3, "column": 1}, "language": "en", "keyword": "Feature", "name": "Checkout totals", "description": "  As a shopper\n  I want the cart total to include tax and discounts\n  So that I am never surprised at the payment step", "tags": [{"location": {"line": 2, "column": 1}, "name": "@checkout", "id": "t-1"}, {"location": {"line": 2, "column": 11}, "name": "@smoke", "id": "t-2"}], "children": [{"background": {"location": {"line": 8, "column": 3}, "keyword": "Background", "name": "", "id": "bg-1", "steps": [{"id": "s-bg-1", "keyword": "Given ", "keywordType": "Context", "text": "the catalogue contains:", "location": {"line": 9, "column": 5}}, {"id": "s-bg-2", "keyword": "And ", "keywordType": "Conjunction", "text": "the tax rate is 20 percent", "location": {"line": 13, "column": 5}}]}}, {"scenario": {"id": "sc-1", "keyword": "Scenario", "name": "A single-item cart shows tax separately", "location": {"line": 16, "column": 3}, "tags": [{"name": "@pricing", "id": "t-3", "location": {"line": 15, "column": 3}}], "steps": [], "examples": []}}, {"scenario": {"id": "sc-2", "keyword": "Scenario Outline", "name": "Quantity multiplies the subtotal", "location": {"line": 24, "column": 3}, "tags": [{"name": "@pricing", "id": "t-4", "location": {"line": 23, "column": 3}}, {"name": "@outline", "id": "t-5", "location": {"line": 23, "column": 12}}], "steps": [], "examples": [{"id": "ex-1", "keyword": "Examples", "name": "whole units", "location": {"line": 29, "column": 5}, "tags": []}, {"id": "ex-2", "keyword": "Examples", "name": "boundary quantities", "location": {"line": 36, "column": 5}, "tags": [{"name": "@edge", "id": "t-6", "location": {"line": 35, "column": 5}}]}]}}, {"scenario": {"id": "sc-3", "keyword": "Scenario", "name": "The receipt renders as plain text", "location": {"line": 41, "column": 3}, "tags": [{"name": "@receipt", "id": "t-7", "location": {"line": 40, "column": 3}}], "steps": [], "examples": []}}]}}}
{"pickle": {"id": "pk-1", "uri": "features/checkout.feature", "name": "A single-item cart shows tax separately", "language": "en", "astNodeIds": ["sc-1"], "tags": [{"name": "@checkout", "astNodeId": "t-1"}, {"name": "@smoke", "astNodeId": "t-2"}, {"name": "@pricing", "astNodeId": "t-3"}], "steps": [{"id": "pk-1-s-1", "type": "Context", "text": "step 1 of A single-item cart shows tax separately", "astNodeIds": ["s-1-1"]}, {"id": "pk-1-s-2", "type": "Context", "text": "step 2 of A single-item cart shows tax separately", "astNodeIds": ["s-1-2"]}, {"id": "pk-1-s-3", "type": "Action", "text": "step 3 of A single-item cart shows tax separately", "astNodeIds": ["s-1-3"]}, {"id": "pk-1-s-4", "type": "Action", "text": "step 4 of A single-item cart shows tax separately", "astNodeIds": ["s-1-4"]}, {"id": "pk-1-s-5", "type": "Action", "text": "step 5 of A single-item cart shows tax separately", "astNodeIds": ["s-1-5"]}, {"id": "pk-1-s-6", "type": "Action", "text": "step 6 of A single-item cart shows tax separately", "astNodeIds": ["s-1-6"]}, {"id": "pk-1-s-7", "type": "Action", "text": "step 7 of A single-item cart shows tax separately", "astNodeIds": ["s-1-7"]}]}}
{"pickle": {"id": "pk-2", "uri": "features/checkout.feature", "name": "Quantity multiplies the subtotal", "language": "en", "astNodeIds": ["sc-2"], "tags": [{"name": "@checkout", "astNodeId": "t-1"}, {"name": "@smoke", "astNodeId": "t-2"}, {"name": "@pricing", "astNodeId": "t-3"}, {"name": "@outline", "astNodeId": "t-4"}], "steps": [{"id": "pk-2-s-1", "type": "Context", "text": "step 1 of Quantity multiplies the subtotal", "astNodeIds": ["s-2-1"]}, {"id": "pk-2-s-2", "type": "Context", "text": "step 2 of Quantity multiplies the subtotal", "astNodeIds": ["s-2-2"]}, {"id": "pk-2-s-3", "type": "Action", "text": "step 3 of Quantity multiplies the subtotal", "astNodeIds": ["s-2-3"]}, {"id": "pk-2-s-4", "type": "Action", "text": "step 4 of Quantity multiplies the subtotal", "astNodeIds": ["s-2-4"]}, {"id": "pk-2-s-5", "type": "Action", "text": "step 5 of Quantity multiplies the subtotal", "astNodeIds": ["s-2-5"]}]}}
{"pickle": {"id": "pk-3", "uri": "features/checkout.feature", "name": "Quantity multiplies the subtotal", "language": "en", "astNodeIds": ["sc-3"], "tags": [{"name": "@checkout", "astNodeId": "t-1"}, {"name": "@smoke", "astNodeId": "t-2"}, {"name": "@pricing", "astNodeId": "t-3"}, {"name": "@outline", "astNodeId": "t-4"}], "steps": [{"id": "pk-3-s-1", "type": "Context", "text": "step 1 of Quantity multiplies the subtotal", "astNodeIds": ["s-3-1"]}, {"id": "pk-3-s-2", "type": "Context", "text": "step 2 of Quantity multiplies the subtotal", "astNodeIds": ["s-3-2"]}, {"id": "pk-3-s-3", "type": "Action", "text": "step 3 of Quantity multiplies the subtotal", "astNodeIds": ["s-3-3"]}, {"id": "pk-3-s-4", "type": "Action", "text": "step 4 of Quantity multiplies the subtotal", "astNodeIds": ["s-3-4"]}, {"id": "pk-3-s-5", "type": "Action", "text": "step 5 of Quantity multiplies the subtotal", "astNodeIds": ["s-3-5"]}]}}
{"pickle": {"id": "pk-4", "uri": "features/checkout.feature", "name": "Quantity multiplies the subtotal", "language": "en", "astNodeIds": ["sc-3"], "tags": [{"name": "@checkout", "astNodeId": "t-1"}, {"name": "@smoke", "astNodeId": "t-2"}, {"name": "@pricing", "astNodeId": "t-3"}, {"name": "@outline", "astNodeId": "t-4"}], "steps": [{"id": "pk-4-s-1", "type": "Context", "text": "step 1 of Quantity multiplies the subtotal", "astNodeIds": ["s-4-1"]}, {"id": "pk-4-s-2", "type": "Context", "text": "step 2 of Quantity multiplies the subtotal", "astNodeIds": ["s-4-2"]}, {"id": "pk-4-s-3", "type": "Action", "text": "step 3 of Quantity multiplies the subtotal", "astNodeIds": ["s-4-3"]}, {"id": "pk-4-s-4", "type": "Action", "text": "step 4 of Quantity multiplies the subtotal", "astNodeIds": ["s-4-4"]}, {"id": "pk-4-s-5", "type": "Action", "text": "step 5 of Quantity multiplies the subtotal", "astNodeIds": ["s-4-5"]}]}}
{"pickle": {"id": "pk-5", "uri": "features/checkout.feature", "name": "Quantity multiplies the subtotal", "language": "en", "astNodeIds": ["sc-3"], "tags": [{"name": "@checkout", "astNodeId": "t-1"}, {"name": "@smoke", "astNodeId": "t-2"}, {"name": "@pricing", "astNodeId": "t-3"}, {"name": "@outline", "astNodeId": "t-4"}, {"name": "@edge", "astNodeId": "t-5"}], "steps": [{"id": "pk-5-s-1", "type": "Context", "text": "step 1 of Quantity multiplies the subtotal", "astNodeIds": ["s-5-1"]}, {"id": "pk-5-s-2", "type": "Context", "text": "step 2 of Quantity multiplies the subtotal", "astNodeIds": ["s-5-2"]}, {"id": "pk-5-s-3", "type": "Action", "text": "step 3 of Quantity multiplies the subtotal", "astNodeIds": ["s-5-3"]}, {"id": "pk-5-s-4", "type": "Action", "text": "step 4 of Quantity multiplies the subtotal", "astNodeIds": ["s-5-4"]}, {"id": "pk-5-s-5", "type": "Action", "text": "step 5 of Quantity multiplies the subtotal", "astNodeIds": ["s-5-5"]}]}}
{"pickle": {"id": "pk-6", "uri": "features/checkout.feature", "name": "The receipt renders as plain text", "language": "en", "astNodeIds": ["sc-3"], "tags": [{"name": "@checkout", "astNodeId": "t-1"}, {"name": "@smoke", "astNodeId": "t-2"}, {"name": "@receipt", "astNodeId": "t-3"}], "steps": [{"id": "pk-6-s-1", "type": "Context", "text": "step 1 of The receipt renders as plain text", "astNodeIds": ["s-6-1"]}, {"id": "pk-6-s-2", "type": "Context", "text": "step 2 of The receipt renders as plain text", "astNodeIds": ["s-6-2"]}, {"id": "pk-6-s-3", "type": "Action", "text": "step 3 of The receipt renders as plain text", "astNodeIds": ["s-6-3"]}, {"id": "pk-6-s-4", "type": "Action", "text": "step 4 of The receipt renders as plain text", "astNodeIds": ["s-6-4"]}, {"id": "pk-6-s-5", "type": "Action", "text": "step 5 of The receipt renders as plain text", "astNodeIds": ["s-6-5"]}]}}
{"testRunStarted": {"timestamp": {"seconds": 1786000401, "nanos": 0}, "id": "run-1"}}
{"testCase": {"id": "tc-1", "pickleId": "pk-1", "testRunStartedId": "run-1", "testSteps": [{"id": "tc-1-ts-1", "pickleStepId": "pk-1-s-1", "stepDefinitionIds": ["sd-1"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-1-ts-2", "pickleStepId": "pk-1-s-2", "stepDefinitionIds": ["sd-2"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-1-ts-3", "pickleStepId": "pk-1-s-3", "stepDefinitionIds": ["sd-3"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-1-ts-4", "pickleStepId": "pk-1-s-4", "stepDefinitionIds": ["sd-4"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-1-ts-5", "pickleStepId": "pk-1-s-5", "stepDefinitionIds": ["sd-5"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-1-ts-6", "pickleStepId": "pk-1-s-6", "stepDefinitionIds": ["sd-6"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-1-ts-7", "pickleStepId": "pk-1-s-7", "stepDefinitionIds": ["sd-7"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}]}}
{"testCase": {"id": "tc-2", "pickleId": "pk-2", "testRunStartedId": "run-1", "testSteps": [{"id": "tc-2-ts-1", "pickleStepId": "pk-2-s-1", "stepDefinitionIds": ["sd-1"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-2-ts-2", "pickleStepId": "pk-2-s-2", "stepDefinitionIds": ["sd-2"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-2-ts-3", "pickleStepId": "pk-2-s-3", "stepDefinitionIds": ["sd-3"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-2-ts-4", "pickleStepId": "pk-2-s-4", "stepDefinitionIds": ["sd-4"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-2-ts-5", "pickleStepId": "pk-2-s-5", "stepDefinitionIds": ["sd-5"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}]}}
{"testCase": {"id": "tc-3", "pickleId": "pk-3", "testRunStartedId": "run-1", "testSteps": [{"id": "tc-3-ts-1", "pickleStepId": "pk-3-s-1", "stepDefinitionIds": ["sd-1"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-3-ts-2", "pickleStepId": "pk-3-s-2", "stepDefinitionIds": ["sd-2"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-3-ts-3", "pickleStepId": "pk-3-s-3", "stepDefinitionIds": ["sd-3"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-3-ts-4", "pickleStepId": "pk-3-s-4", "stepDefinitionIds": ["sd-4"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-3-ts-5", "pickleStepId": "pk-3-s-5", "stepDefinitionIds": ["sd-5"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}]}}
{"testCase": {"id": "tc-4", "pickleId": "pk-4", "testRunStartedId": "run-1", "testSteps": [{"id": "tc-4-ts-1", "pickleStepId": "pk-4-s-1", "stepDefinitionIds": ["sd-1"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-4-ts-2", "pickleStepId": "pk-4-s-2", "stepDefinitionIds": ["sd-2"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-4-ts-3", "pickleStepId": "pk-4-s-3", "stepDefinitionIds": ["sd-3"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-4-ts-4", "pickleStepId": "pk-4-s-4", "stepDefinitionIds": ["sd-4"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-4-ts-5", "pickleStepId": "pk-4-s-5", "stepDefinitionIds": ["sd-5"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}]}}
{"testCase": {"id": "tc-5", "pickleId": "pk-5", "testRunStartedId": "run-1", "testSteps": [{"id": "tc-5-ts-1", "pickleStepId": "pk-5-s-1", "stepDefinitionIds": ["sd-1"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-5-ts-2", "pickleStepId": "pk-5-s-2", "stepDefinitionIds": ["sd-2"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-5-ts-3", "pickleStepId": "pk-5-s-3", "stepDefinitionIds": ["sd-3"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-5-ts-4", "pickleStepId": "pk-5-s-4", "stepDefinitionIds": ["sd-4"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-5-ts-5", "pickleStepId": "pk-5-s-5", "stepDefinitionIds": ["sd-5"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}]}}
{"testCase": {"id": "tc-6", "pickleId": "pk-6", "testRunStartedId": "run-1", "testSteps": [{"id": "tc-6-ts-1", "pickleStepId": "pk-6-s-1", "stepDefinitionIds": ["sd-1"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-6-ts-2", "pickleStepId": "pk-6-s-2", "stepDefinitionIds": ["sd-2"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-6-ts-3", "pickleStepId": "pk-6-s-3", "stepDefinitionIds": ["sd-3"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-6-ts-4", "pickleStepId": "pk-6-s-4", "stepDefinitionIds": ["sd-4"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}, {"id": "tc-6-ts-5", "pickleStepId": "pk-6-s-5", "stepDefinitionIds": ["sd-5"], "stepMatchArgumentsLists": [{"stepMatchArguments": []}]}]}}
{"testCaseStarted": {"id": "tcs-1", "testCaseId": "tc-1", "attempt": 0, "timestamp": {"seconds": 1786000402, "nanos": 0}}}
{"testStepStarted": {"testStepId": "tc-1-ts-1", "testCaseStartedId": "tcs-1", "timestamp": {"seconds": 1786000402, "nanos": 40000000}}}
{"testStepFinished": {"testStepId": "tc-1-ts-1", "testCaseStartedId": "tcs-1", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 39000000}}, "timestamp": {"seconds": 1786000402, "nanos": 45000000}}}
{"testStepStarted": {"testStepId": "tc-1-ts-2", "testCaseStartedId": "tcs-1", "timestamp": {"seconds": 1786000402, "nanos": 80000000}}}
{"testStepFinished": {"testStepId": "tc-1-ts-2", "testCaseStartedId": "tcs-1", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 40000000}}, "timestamp": {"seconds": 1786000402, "nanos": 90000000}}}
{"testStepStarted": {"testStepId": "tc-1-ts-3", "testCaseStartedId": "tcs-1", "timestamp": {"seconds": 1786000402, "nanos": 120000000}}}
{"testStepFinished": {"testStepId": "tc-1-ts-3", "testCaseStartedId": "tcs-1", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 41000000}}, "timestamp": {"seconds": 1786000402, "nanos": 135000000}}}
{"testStepStarted": {"testStepId": "tc-1-ts-4", "testCaseStartedId": "tcs-1", "timestamp": {"seconds": 1786000402, "nanos": 160000000}}}
{"testStepFinished": {"testStepId": "tc-1-ts-4", "testCaseStartedId": "tcs-1", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 42000000}}, "timestamp": {"seconds": 1786000402, "nanos": 180000000}}}
{"testStepStarted": {"testStepId": "tc-1-ts-5", "testCaseStartedId": "tcs-1", "timestamp": {"seconds": 1786000402, "nanos": 200000000}}}
{"testStepFinished": {"testStepId": "tc-1-ts-5", "testCaseStartedId": "tcs-1", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 43000000}}, "timestamp": {"seconds": 1786000402, "nanos": 225000000}}}
{"testStepStarted": {"testStepId": "tc-1-ts-6", "testCaseStartedId": "tcs-1", "timestamp": {"seconds": 1786000402, "nanos": 240000000}}}
{"testStepFinished": {"testStepId": "tc-1-ts-6", "testCaseStartedId": "tcs-1", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 44000000}}, "timestamp": {"seconds": 1786000402, "nanos": 270000000}}}
{"testStepStarted": {"testStepId": "tc-1-ts-7", "testCaseStartedId": "tcs-1", "timestamp": {"seconds": 1786000402, "nanos": 280000000}}}
{"testStepFinished": {"testStepId": "tc-1-ts-7", "testCaseStartedId": "tcs-1", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 45000000}}, "timestamp": {"seconds": 1786000402, "nanos": 315000000}}}
{"testCaseFinished": {"testCaseStartedId": "tcs-1", "willBeRetried": false, "timestamp": {"seconds": 1786000403, "nanos": 0}}}
{"testCaseStarted": {"id": "tcs-2", "testCaseId": "tc-2", "attempt": 0, "timestamp": {"seconds": 1786000404, "nanos": 0}}}
{"testStepStarted": {"testStepId": "tc-2-ts-1", "testCaseStartedId": "tcs-2", "timestamp": {"seconds": 1786000404, "nanos": 40000000}}}
{"testStepFinished": {"testStepId": "tc-2-ts-1", "testCaseStartedId": "tcs-2", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 39000000}}, "timestamp": {"seconds": 1786000404, "nanos": 45000000}}}
{"testStepStarted": {"testStepId": "tc-2-ts-2", "testCaseStartedId": "tcs-2", "timestamp": {"seconds": 1786000404, "nanos": 80000000}}}
{"testStepFinished": {"testStepId": "tc-2-ts-2", "testCaseStartedId": "tcs-2", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 40000000}}, "timestamp": {"seconds": 1786000404, "nanos": 90000000}}}
{"testStepStarted": {"testStepId": "tc-2-ts-3", "testCaseStartedId": "tcs-2", "timestamp": {"seconds": 1786000404, "nanos": 120000000}}}
{"testStepFinished": {"testStepId": "tc-2-ts-3", "testCaseStartedId": "tcs-2", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 41000000}}, "timestamp": {"seconds": 1786000404, "nanos": 135000000}}}
{"testStepStarted": {"testStepId": "tc-2-ts-4", "testCaseStartedId": "tcs-2", "timestamp": {"seconds": 1786000404, "nanos": 160000000}}}
{"testStepFinished": {"testStepId": "tc-2-ts-4", "testCaseStartedId": "tcs-2", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 42000000}}, "timestamp": {"seconds": 1786000404, "nanos": 180000000}}}
{"testStepStarted": {"testStepId": "tc-2-ts-5", "testCaseStartedId": "tcs-2", "timestamp": {"seconds": 1786000404, "nanos": 200000000}}}
{"testStepFinished": {"testStepId": "tc-2-ts-5", "testCaseStartedId": "tcs-2", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 43000000}}, "timestamp": {"seconds": 1786000404, "nanos": 225000000}}}
{"testCaseFinished": {"testCaseStartedId": "tcs-2", "willBeRetried": false, "timestamp": {"seconds": 1786000405, "nanos": 0}}}
{"testCaseStarted": {"id": "tcs-3", "testCaseId": "tc-3", "attempt": 0, "timestamp": {"seconds": 1786000406, "nanos": 0}}}
{"testStepStarted": {"testStepId": "tc-3-ts-1", "testCaseStartedId": "tcs-3", "timestamp": {"seconds": 1786000406, "nanos": 40000000}}}
{"testStepFinished": {"testStepId": "tc-3-ts-1", "testCaseStartedId": "tcs-3", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 39000000}}, "timestamp": {"seconds": 1786000406, "nanos": 45000000}}}
{"testStepStarted": {"testStepId": "tc-3-ts-2", "testCaseStartedId": "tcs-3", "timestamp": {"seconds": 1786000406, "nanos": 80000000}}}
{"testStepFinished": {"testStepId": "tc-3-ts-2", "testCaseStartedId": "tcs-3", "testStepResult": {"status": "PASSED", "duration": {"seconds": 0, "nanos": 40000000}}, "timestamp": {"seconds": 1786000406, "nanos": 90000000}}}
{"testStepStarted": {"testStepId": "tc-3-ts-3", "testCaseStartedId": "tcs-3", "timestamp": {"seconds": 1786000406, "nanos": 120000000}}}
94 lines total — download for the full file.

Specifications

Seed
61200
Encoding
UTF-8
Line Endings
LF
Protocol Version
24.0.0
Envelopes
93
Pickles
6
Failed Steps
1
Test Run Finished Success
false
Has Exception Object
true

Testing contract

Expected to pass
Scenario
Locate the failing step in a cucumber-messages stream and report the run result.
Expected result
Exactly one testStepFinished has status FAILED with an exception of type AssertionError, and testRunFinished.success is false.

What is a .ndjson file?

NDJSON (Newline-Delimited JSON) is a streaming format where each newline-separated line is a standalone JSON object, functionally equivalent to JSON Lines. It enables incremental processing of large datasets and streaming APIs. Each record is parsed independently of the rest.

How to use this file

Use an example NDJSON to test streaming ingestion, chunked HTTP or API response parsing, and tools that process records incrementally without loading the full file.

How to use this file for testing

“Cucumber Messages — Failing Run (NDJSON)” is a deterministic Novus Examples fixture for JSON parsing, Error handling, Conversion testing. Flat, deeply nested, JSON Lines, and intentionally invalid JSON for testing parsers and error handling.

Documented properties for this file: seed 61200 · UTF-8 · LF. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.

Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.

Test and coverage reports document their totals (suites, cases, passes, failures, skips, covered lines) in the spec table. Point your CI dashboard, coverage gate, or report converter at the file and assert those counts survive; format twins carry identical numbers so a conversion can be scored exactly.

Feed the file to your parser and assert it handles the documented quirks — quoted delimiters, embedded newlines, ragged rows, or invalid syntax; the valid↔invalid distinction is labelled in the title.

Code examples

import json

with open("cucumber-messages-failing-run.ndjson") as f:
    rows = [json.loads(line) for line in f if line.strip()]
print(len(rows))

Generated by generation/testing.py. Free for any use, no attribution required — license.