cucumber --format json is working incorrectly skipping steps, when Background section is present ( but works correctly when Rule sections is present)
cucumber invoke side
cucumber --format json --tag "@demo01" [{"id":"demofeature","uri":"features/Demo.feature","keyword":"Feature","name":"DemoFeature","description":" As a development team\n we want to demonstrate the cpp step implementations","line":2,"tags":[{"name":"@Demo","line":1}],"elements":[{"id":"demofeature;wait-and-trace","keyword":"Scenario Outline","name":"Wait and trace","description":" This is a good weather scenario.","line":11,"type":"scenario","steps":[],"tags":[{"name":"@Demo","line":1},{"name":"@demo01","line":10}]}]}]
cucumber --format json --tag "@demo_b01" [{"id":"demofeature","uri":"features/DemoRule.feature","keyword":"Feature","name":"DemoFeature","description":" As a development team\n we want to demonstrate the cpp step implementations","line":2,"tags":[{"name":"@DemoRule","line":1}],"elements":[{"id":"demofeature;wait-and-trace","keyword":"Scenario Outline","name":"Wait and trace","description":" This is a good weather scenario.","line":14,"type":"scenario","steps":[{"keyword":"Given ","name":"I wait 1 seconds test","line":11,"match":{"location":"DemoSteps.cpp:26"},"result":{"status":"passed","duration":1005075700}},{"keyword":"When ","name":"I wait 3 seconds test","line":16,"match":{"location":"DemoSteps.cpp:26"},"result":{"status":"passed","duration":3003355200}}],"tags":[{"name":"@DemoRule","line":1},{"name":"@demo_b01","line":13}],"before":[{"match":{"location":"wire"},"result":{"status":"passed","duration":3498600}}],"after":[{"match":{"location":"wire"},"result":{"status":"passed","duration":2025100}}]}]}]
cucumber-ruby 7.1
cucumber-ruby-wire 6.2.1
cucumber-wire-proxy (in-house c++ implementation of the steps and cucumber request handler to be connected to)
👓 What did you see?
cucumber --format json is working incorrectly skipping steps, when Background section is present ( but works correctly when Rule sections is present)
cucumber invoke side
cucumber --format json --tag "@demo01" [{"id":"demofeature","uri":"features/Demo.feature","keyword":"Feature","name":"DemoFeature","description":" As a development team\n we want to demonstrate the cpp step implementations","line":2,"tags":[{"name":"@Demo","line":1}],"elements":[{"id":"demofeature;wait-and-trace","keyword":"Scenario Outline","name":"Wait and trace","description":" This is a good weather scenario.","line":11,"type":"scenario","steps":[],"tags":[{"name":"@Demo","line":1},{"name":"@demo01","line":10}]}]}]
cucumber request handler side
` ./build/cucumber_wire_proxy/cucumber_test.cucumber_wire_proxy
2023-05-17T07:54:20.980834 CucumberWireProtocolServer connection accepted from: 127.0.0.1 2023-05-17T07:54:20.981011 ["step_matches",{"name_to_match":"I wait 1 seconds test"}] [ "success", [ { "id":"0", "args":[ { "val":"1", "pos":7 } ], "source":"DemoSteps.cpp:26" } ] ]
2023-05-17T07:54:20.983639 ["step_matches",{"name_to_match":"I wait 5 seconds test"}] [ "success", [ { "id":"0", "args":[ { "val":"5", "pos":7 } ], "source":"DemoSteps.cpp:26" } ] ] `
✅ What did you expect to see?
Same steps being processed as when a defualt format is being used or when the Rule section is present in the Feature Using default format
`cucumber --tag "@demo01" @Demo Feature: DemoFeature As a development team we want to demonstrate the cpp step implementations
Background: Test Background # features/Demo.feature:6 Background setup for demonstration Given I wait 1 seconds test # DemoSteps.cpp:26
@demo01 Scenario Outline: Wait and trace # features/Demo.feature:11 This is a good weather scenario. When I wait 5 seconds test # DemoSteps.cpp:26
1 scenario (1 passed) 2 steps (2 passed) 0m10.517s`
` 2023-05-17T08:07:58.085245 CucumberWireProtocolServer connection accepted from: 127.0.0.1 2023-05-17T08:07:58.085365 ["step_matches",{"name_to_match":"I wait 1 seconds test"}] [ "success", [ { "id":"0", "args":[ { "val":"1", "pos":7 } ], "source":"DemoSteps.cpp:26" } ] ]
2023-05-17T08:07:58.087540 ["step_matches",{"name_to_match":"I wait 5 seconds test"}] [ "success", [ { "id":"0", "args":[ { "val":"5", "pos":7 } ], "source":"DemoSteps.cpp:26" } ] ]
2023-05-17T08:07:58.166488 ["begin_scenario",{"tags":["Demo","demo01"]}] [ "success", [ ] ]
2023-05-17T08:07:58.168553 ["invoke",{"id":"0","args":["1"]}]
2023-05-17T08:07:58.168649 Waiting for 1 seconds[ "success", [ ] ]
2023-05-17T08:07:59.173326 ["invoke",{"id":"0","args":["5"]}]
2023-05-17T08:07:59.173523 Waiting for 5 seconds[ "success", [ ] ]
2023-05-17T08:08:08.605159 ["end_scenario",{"tags":["Demo","demo01"]}] [ "success", [ ] ]`
With feature file containing rule section
cucumber --format json --tag "@demo_b01" [{"id":"demofeature","uri":"features/DemoRule.feature","keyword":"Feature","name":"DemoFeature","description":" As a development team\n we want to demonstrate the cpp step implementations","line":2,"tags":[{"name":"@DemoRule","line":1}],"elements":[{"id":"demofeature;wait-and-trace","keyword":"Scenario Outline","name":"Wait and trace","description":" This is a good weather scenario.","line":14,"type":"scenario","steps":[{"keyword":"Given ","name":"I wait 1 seconds test","line":11,"match":{"location":"DemoSteps.cpp:26"},"result":{"status":"passed","duration":1005075700}},{"keyword":"When ","name":"I wait 3 seconds test","line":16,"match":{"location":"DemoSteps.cpp:26"},"result":{"status":"passed","duration":3003355200}}],"tags":[{"name":"@DemoRule","line":1},{"name":"@demo_b01","line":13}],"before":[{"match":{"location":"wire"},"result":{"status":"passed","duration":3498600}}],"after":[{"match":{"location":"wire"},"result":{"status":"passed","duration":2025100}}]}]}]
`root@9a49fcc40bc3:/workspaces/cucumber_test# ./build/cucumber_wire_proxy/cucumber_test.cucumber_wire_proxy
2023-05-17T07:57:15.068438 CucumberWireProtocolServer connection accepted from: 127.0.0.1 2023-05-17T07:57:15.068848 ["step_matches",{"name_to_match":"I wait 1 seconds test"}] [ "success", [ { "id":"0", "args":[ { "val":"1", "pos":7 } ], "source":"DemoSteps.cpp:26" } ] ]
2023-05-17T07:57:15.071259 ["step_matches",{"name_to_match":"I wait 3 seconds test"}] [ "success", [ { "id":"0", "args":[ { "val":"3", "pos":7 } ], "source":"DemoSteps.cpp:26" } ] ]
2023-05-17T07:57:15.150092 ["begin_scenario",{"tags":["DemoRule","demo_b01"]}] [ "success", [ ] ]
2023-05-17T07:57:15.154718 ["invoke",{"id":"0","args":["1"]}]
2023-05-17T07:57:15.156274 Waiting for 1 seconds[ "success", [ ] ]
2023-05-17T07:57:16.160083 ["invoke",{"id":"0","args":["3"]}]
2023-05-17T07:57:16.160243 Waiting for 3 seconds[ "success", [ ] ]
2023-05-17T07:57:19.163339 ["end_scenario",{"tags":["DemoRule","demo_b01"]}] [ "success", [ ] ]`
📦 Which tool/library version are you using?
cucumber-ruby 7.1 cucumber-ruby-wire 6.2.1 cucumber-wire-proxy (in-house c++ implementation of the steps and cucumber request handler to be connected to)
🔬 How could we reproduce it?
You can use a repository with the setup https://github.com/AleksKovalenko/cucumber-wire-test
📚 Any additional context?
This text was originally generated from a template, then edited by hand. You can modify the template here.