cucumber-compatibility-kit 19.0.0 → 20.1.0

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.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -0
  3. data/features/attachments/attachments.ndjson +61 -0
  4. data/features/cdata/cdata.ndjson +12 -0
  5. data/features/data-tables/data-tables.ndjson +15 -0
  6. data/features/empty/empty.ndjson +9 -0
  7. data/features/examples-tables/examples-tables.ndjson +100 -0
  8. data/features/examples-tables-attachment/examples-tables-attachment.ndjson +21 -0
  9. data/features/hooks/hooks.ndjson +39 -0
  10. data/features/hooks-attachment/hooks-attachment.ndjson +20 -0
  11. data/features/hooks-conditional/hooks-conditional.ndjson +36 -0
  12. data/features/hooks-named/hooks-named.ndjson +18 -0
  13. data/features/markdown/markdown.ndjson +35 -0
  14. data/features/minimal/minimal.ndjson +12 -0
  15. data/features/parameter-types/parameter-types.ndjson +13 -0
  16. data/features/pending/pending.ndjson +30 -0
  17. data/features/retry/retry.ndjson +59 -0
  18. data/features/rules/rules.ndjson +47 -0
  19. data/features/skipped/skipped.ndjson +33 -0
  20. data/features/stack-traces/stack-traces.ndjson +12 -0
  21. data/features/undefined/undefined.ndjson +29 -0
  22. data/features/unknown-parameter-type/unknown-parameter-type.ndjson +12 -0
  23. metadata +24 -23
  24. data/features/attachments/attachments.feature.ndjson +0 -61
  25. data/features/cdata/cdata.feature.ndjson +0 -12
  26. data/features/data-tables/data-tables.feature.ndjson +0 -15
  27. data/features/empty/empty.feature.ndjson +0 -9
  28. data/features/examples-tables/examples-tables.feature.ndjson +0 -100
  29. data/features/examples-tables-attachment/examples-tables-attachment.feature.ndjson +0 -21
  30. data/features/hooks/hooks.feature.ndjson +0 -39
  31. data/features/hooks-attachment/hooks-attachment.feature.ndjson +0 -20
  32. data/features/hooks-conditional/hooks-conditional.feature.ndjson +0 -36
  33. data/features/hooks-named/hooks-named.feature.ndjson +0 -18
  34. data/features/markdown/markdown.feature.md.ndjson +0 -35
  35. data/features/minimal/minimal.feature.ndjson +0 -12
  36. data/features/parameter-types/parameter-types.feature.ndjson +0 -13
  37. data/features/pending/pending.feature.ndjson +0 -30
  38. data/features/retry/retry.feature.ndjson +0 -59
  39. data/features/rules/rules.feature.ndjson +0 -47
  40. data/features/skipped/skipped.feature.ndjson +0 -33
  41. data/features/stack-traces/stack-traces.feature.ndjson +0 -12
  42. data/features/undefined/undefined.feature.ndjson +0 -29
  43. data/features/unknown-parameter-type/unknown-parameter-type.feature.ndjson +0 -12
@@ -1,21 +0,0 @@
1
- {"meta":{"ci":{"buildNumber":"154666429","git":{"remote":"https://github.com/cucumber-ltd/shouty.rb.git","revision":"99684bcacf01d95875834d87903dcb072306c9ad"},"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429"},"cpu":{"name":"arm64"},"implementation":{"name":"fake-cucumber","version":"18.1.0"},"os":{"name":"darwin","version":"24.5.0"},"protocolVersion":"28.0.0","runtime":{"name":"node.js","version":"24.4.0"}}}
2
- {"source":{"data":"Feature: Examples Tables - With attachments\n It is sometimes useful to take a screenshot while a scenario runs or capture some logs.\n\n Scenario Outline: Attaching images in an examples table\n When a <type> image is attached\n\n Examples:\n | type |\n | JPEG |\n | PNG |\n","mediaType":"text/x.cucumber.gherkin+plain","uri":"samples/examples-tables-attachment/examples-tables-attachment.feature"}}
3
- {"gherkinDocument":{"comments":[],"feature":{"children":[{"scenario":{"description":"","examples":[{"description":"","id":"6","keyword":"Examples","location":{"column":5,"line":7},"name":"","tableBody":[{"cells":[{"location":{"column":9,"line":9},"value":"JPEG"}],"id":"4","location":{"column":7,"line":9}},{"cells":[{"location":{"column":9,"line":10},"value":"PNG"}],"id":"5","location":{"column":7,"line":10}}],"tableHeader":{"cells":[{"location":{"column":9,"line":8},"value":"type"}],"id":"3","location":{"column":7,"line":8}},"tags":[]}],"id":"7","keyword":"Scenario Outline","location":{"column":3,"line":4},"name":"Attaching images in an examples table","steps":[{"id":"2","keyword":"When ","keywordType":"Action","location":{"column":5,"line":5},"text":"a <type> image is attached"}],"tags":[]}}],"description":" It is sometimes useful to take a screenshot while a scenario runs or capture some logs.","keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"Examples Tables - With attachments","tags":[]},"uri":"samples/examples-tables-attachment/examples-tables-attachment.feature"}}
4
- {"pickle":{"astNodeIds":["7","4"],"id":"9","language":"en","name":"Attaching images in an examples table","steps":[{"astNodeIds":["2","4"],"id":"8","text":"a JPEG image is attached","type":"Action"}],"tags":[],"uri":"samples/examples-tables-attachment/examples-tables-attachment.feature"}}
5
- {"pickle":{"astNodeIds":["7","5"],"id":"11","language":"en","name":"Attaching images in an examples table","steps":[{"astNodeIds":["2","5"],"id":"10","text":"a PNG image is attached","type":"Action"}],"tags":[],"uri":"samples/examples-tables-attachment/examples-tables-attachment.feature"}}
6
- {"stepDefinition":{"id":"0","pattern":{"source":"a JPEG image is attached","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":4},"uri":"samples/examples-tables-attachment/examples-tables-attachment.feature.ts"}}}
7
- {"stepDefinition":{"id":"1","pattern":{"source":"a PNG image is attached","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":8},"uri":"samples/examples-tables-attachment/examples-tables-attachment.feature.ts"}}}
8
- {"testRunStarted":{"id":"12","timestamp":{"nanos":0,"seconds":0}}}
9
- {"testCase":{"id":"14","pickleId":"9","testRunStartedId":"12","testSteps":[{"id":"13","pickleStepId":"8","stepDefinitionIds":["0"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]}]}}
10
- {"testCase":{"id":"16","pickleId":"11","testRunStartedId":"12","testSteps":[{"id":"15","pickleStepId":"10","stepDefinitionIds":["1"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]}]}}
11
- {"testCaseStarted":{"attempt":0,"id":"17","testCaseId":"14","timestamp":{"nanos":1000000,"seconds":0}}}
12
- {"testStepStarted":{"testCaseStartedId":"17","testStepId":"13","timestamp":{"nanos":2000000,"seconds":0}}}
13
- {"attachment":{"body":"/9j/4AAQSkZJRgABAQAAAQABAAD//gAfQ29tcHJlc3NlZCBieSBqcGVnLXJlY29tcHJlc3P/2wCEAAQEBAQEBAQEBAQGBgUGBggHBwcHCAwJCQkJCQwTDA4MDA4MExEUEA8QFBEeFxUVFx4iHRsdIiolJSo0MjRERFwBBAQEBAQEBAQEBAYGBQYGCAcHBwcIDAkJCQkJDBMMDgwMDgwTERQQDxAUER4XFRUXHiIdGx0iKiUlKjQyNEREXP/CABEIAC4AKQMBIgACEQEDEQH/xAAcAAABBAMBAAAAAAAAAAAAAAAIBAUGBwABAwL/2gAIAQEAAAAAOESYe+lPPw0bK2mvU5gRhNkM/tNMGeuJM5msiEjujvC+s0ApSWvn/8QAFgEBAQEAAAAAAAAAAAAAAAAABQME/9oACAECEAAAADs6pclK4E//xAAWAQEBAQAAAAAAAAAAAAAAAAAHBgT/2gAIAQMQAAAAMJZbKcF1XHit/8QANhAAAQQBAgQDBAcJAAAAAAAAAgEDBAUGABEHEiExEyJREEFCUhRTYXFzgZIVFiMyMzRVY3L/2gAIAQEAAT8AzLMqPBKOReXb6gy3sDbYdXXnS/labH3mWrrMOIWdGb063fxyoPq1XVp8klQ/3v8Aff7E0eCY86fjPtynn99/GclOq5v6782quZnOGmEnEcrmPNN96y1cWTFcH5BUurf5a4bcTKzP6x9QjlBuIKo1YVzq7mwfuJF+IC9y+zPLc8z4kWiuHz1GLuLAht/AU3u+6qfMK+XUuV4TbrTBtFNVoyYZM0RTJE6dO+2+oGcWZY1fzp0URsq5wGuXkUU3dLlHmH1FdYvMs59HCmW7SBKdQiVEHl3Hfyqqe7dNFbOYRlNDnkQlBth9uHaoPZ2C+SCSl9oL1HX0qN9c3+pNY6pkeSG9/XO/sie9fEV5d9Z5FxdbKNKsbeREsUbHZGAVxeQV6Lt8K6gtMPQYzhD43istETjzaC45sm6EaeulzOgC1Kmdkm1KF3wvO2Qjz+m+syECxe7Q+30ZV/NF3TX7dyv5nv06zGpPDOJd/WvAoV+QvHb1znwk8f8AcN/9c3XUuhp5s1qyl17L0poUQDNN+3VN07LqDTZdNg5fLsFdanyxAI4c/wBUSnsGy9B9w6x+kWwrq2blFW2VtHVUF11P4qiC+RT27r9+r6E9kUyiwmDusq8nNMny924zZc7rv3Cia/dSg/xTH6dcQMDpc/oSqbLmZeaNHoUxro9GfHs4C6uoGZYC4cXM6Z+TCb6BdV7avRjH1dEerRagWEO0iNToDyOx3N+Q0RU32XZehbLq4u4VMyByFI33VQI8ZpOZ5416IICnVdcHuHNjUOSs3y5lByGwaRpiL3Svid0b/EL4vavbXDDBM5ymjjRKi3qK2vZ5lOSYOvykRw1Lyhsgawbg9jGGSUtzJ63v1TzWU/zuB+CPZtPb/8QAJREAAgEDBAEEAwAAAAAAAAAAAQIDAAQRBRITIVEUMTJhI0Fx/9oACAECAQE/ALy8eNxb2/z63N4zTy6hbbpJJ9wV9uCdwPWaglFxEkqDGeiPBFSv6bUZJXLhXGQVx3kfdPBbpyvLNyDOAEbsEjOfsVpJ4rUlx83JH8FSwxTqElTI/R9iKGkBJm5X/GGO1R7kV0AABgAYA8Cv/8QAJREAAgIBBAEDBQAAAAAAAAAAAQIDBAUABhESMSFRcRMVIjJB/9oACAEDAQE/AN1bpuJcbFYt+hXgSSDzydG9uLFF7T3yekwjKl+wY8dvHtrAZlMzjo7RAWQHrIvsw1k+2I3LdksmZVcsymPjlg/z/NTU6MIsy2bf1x26hYnHKsy9ufXyB41sWnN9rmlPKrJNyvwBxrL4LH5mMLbj/Nf1dfRhqjsKaa27WZgtRZD1APLsuq1aGpBHXgQLGihVA1//2Q==","contentEncoding":"BASE64","mediaType":"image/jpeg","testCaseStartedId":"17","testStepId":"13"}}
14
- {"testStepFinished":{"testCaseStartedId":"17","testStepId":"13","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":3000000,"seconds":0}}}
15
- {"testCaseFinished":{"testCaseStartedId":"17","timestamp":{"nanos":4000000,"seconds":0},"willBeRetried":false}}
16
- {"testCaseStarted":{"attempt":0,"id":"18","testCaseId":"16","timestamp":{"nanos":5000000,"seconds":0}}}
17
- {"testStepStarted":{"testCaseStartedId":"18","testStepId":"15","timestamp":{"nanos":6000000,"seconds":0}}}
18
- {"attachment":{"body":"iVBORw0KGgoAAAANSUhEUgAAACkAAAAuCAYAAAC1ZTBOAAAABmJLR0QA/wD/AP+gvaeTAAAGgElEQVRYw81ZeWwUVRgfNF4xalDo7Oy92yYmEkm0nZ22olYtM7Pbbu8t24Ntl960Eo0HRCsW5BCIRLyDQK0pFqt/iCdVPIISQvEIVSxg4h8mEhPEqNE/jNLn972dmd1Ztruz3W11kpftdue995vv+H2/7w3DzPBatChwKcvLd7GCvJn1SG+YPNIp+PwFxm8wzrO89CPrEY/A36/keKRuc4F8PTNX18IC700AaAg2/x0GSXN8B8AfNuf7F8wKuBxBXgybHIzdlKvxE2v/MmLf00Kc77QT16ddxH2sh346320nzn1hYtvcSMyhKsIukWPB/sny4iZ2sXhlVsBZiwJXmHh5Gyz8N25gKvES29ogcX3USXJP9RkfE73EMRgiXF1FLNjTbKEoZATwuqJyC+uRj1FwhTKxPrKM5H7Zkx64+HGyjzj2honJV64ChYcX7565e3npDAVY6Seu9zoyAxc33F+tJNZ766JW5eX+9JKjSMpjBfEnnGxpq6ELZhNg7LBta9SAmjzyA4YAssViDkz4ngLsqSW5J3pnDaAGdEeTCvSfHGGpmBokL+3HCebmSpL7zewDVId1Tb0K9NxC3meaHqBHbqNmLy2jVDJXAOkAj3HBCsXt0lBCgAtuqbiKFaSzeJMD+M1Q8E8CrewKEfvzy0nu1xda3THcQiz3B4hjqMXQeq6xDgIYEOhUDi8WJ3Cz3E/jsL3auIse0lwUmXcy+ptzf5uu2jjfakvX7W/rAObleS+DJziHP7oOtBsGyVX79UBGV2i/mcNVut+wKhmy5mddqjXPI8tEOdEjVtFkgfKVVrCvrtcBQdeq1YUtjKnZ8DdubnRdS1cNnQfCZEtMwkij9GlfWJ4eIUNymcSyaC2vr4hY41CnDjyW0XTWdQy3qnNPqBjnwZezaGL3eHfScmZ/uplYVtUS26YG4j4Sudf9cSfh/OU6kFg6FZcRy31g3cn0q5GpKCJIuGKfI1JdMO2r/MmfbqRVL7tA1WiWh8y2P9VM7M9GPWF7vIE4Xw3PmJLMzZGYhixvYkyCWEefuK826SQM/EQa0fFiaHbIXYl3KJUDAFLqxS/W9cGUZIuJobpRq7e3ezNXRomMsl0tlfIwZvajNGmeaDJMuLYNDcRyT4Bymn13iGZz1kEqnoPqcwAzeyMFCTE1p2UwVYYPKuHFS+8zgHQ1pYmtjcYy72g3LXOYNOgSfGL38eRSzvVhJ00q9Jb9mWbi/iS1qne8pOXAQQY7ORqT0KsknQg0YtvYQNhiWZ888D0ZdbkhXjFudXOA3DExkslApDvqbl56naFtqYGa7Xi5NWF2ozU1QN8m3hStnpAZdk3PDNZ1QTVxtjP2JWXzUXWY7vTpBEJKCoIst22JhggmECf5aLWhAgOUFH0ARZOisFUJWgM5OH09x45AKY3dalk8TQXC2PR9DFoJVQ9XX0ksvXW0ZdWIG8NA2zhiHbNSf81Qhdyfr1TKZRdt5hAAVq1pKxH8n73DF5lfKN2sCoytNHlgs7SzcCSckNy5Cq0bJOaW6qReih9oAGXur0x+/iUUJCeI+bROgrvS7WkukGtvRnQjWlAH/rUVxqvNeiUeeXFE38Ly0hc0EXaG0lJBuuoDca0mD7pVp4QGgobVvqqscgSpVq/MBaky0t/4DJc5umC0ySe2J6MFwX24i5hujVJPrPhIGj5DWoKe0Vwdc6FkG6ec+WDAsDUxGdBKtM+JSwRU+bbHgoZ7HJzPVflVK65N3C0W+W6EG/5CejHajGW1Xj+n8enP1wreq5P03eIaVS8abZ6ycuwyDvFd4lWPXFalOB4YuAhu3EtvBq7CujvrICej5A1ePMoEAhcbO8UVpA/Uoz7n6Oy6HoldcfMfJsF7g+FDK2dJyeUAdJ9WAqGZck9k/+AK67cqpGmrMINrHqiQdXiQRK0ql0V4NEuHWFQPRJX+howOUznP0gJY5LhG2kC2qFJcY+1pd4Kai4FTtd5ckHaiQTI/lwZihX4oDAtO6qoMJJe5o4bkGjzDxJChvZK2BkixrACMy35Q82Ug6/fQfl3ZTO3DkwoHOPzHU2PtGDo11WThAqqg5J8CJCp32qJGj15+4Hjxtjl7r5MMJNZvZIWY1yNTMHbPzy+9hpnLKx4k9jSYteaOav2hlUc6nPHrkExBojvNTZXxLcIU9s0Qv6XMf3mpIHWDFydQxcD7GRfzf7hQ90GzdAheqeyAzxC+oMr2Hv8Cf7uNwHUHEgMAAAAASUVORK5CYII=","contentEncoding":"BASE64","mediaType":"image/png","testCaseStartedId":"18","testStepId":"15"}}
19
- {"testStepFinished":{"testCaseStartedId":"18","testStepId":"15","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":7000000,"seconds":0}}}
20
- {"testCaseFinished":{"testCaseStartedId":"18","timestamp":{"nanos":8000000,"seconds":0},"willBeRetried":false}}
21
- {"testRunFinished":{"success":true,"testRunStartedId":"12","timestamp":{"nanos":9000000,"seconds":0}}}
@@ -1,39 +0,0 @@
1
- {"meta":{"ci":{"buildNumber":"154666429","git":{"remote":"https://github.com/cucumber-ltd/shouty.rb.git","revision":"99684bcacf01d95875834d87903dcb072306c9ad"},"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429"},"cpu":{"name":"arm64"},"implementation":{"name":"fake-cucumber","version":"18.1.0"},"os":{"name":"darwin","version":"24.5.0"},"protocolVersion":"28.0.0","runtime":{"name":"node.js","version":"24.4.0"}}}
2
- {"source":{"data":"Feature: Hooks\n Hooks are special steps that run before or after each scenario's steps.\n\n Scenario: No tags and a passed step\n When a step passes\n\n Scenario: No tags and a failed step\n When a step fails\n\n Scenario: No tags and a undefined step\n When a step does not exist\n","mediaType":"text/x.cucumber.gherkin+plain","uri":"samples/hooks/hooks.feature"}}
3
- {"gherkinDocument":{"comments":[],"feature":{"children":[{"scenario":{"description":"","examples":[],"id":"5","keyword":"Scenario","location":{"column":3,"line":4},"name":"No tags and a passed step","steps":[{"id":"4","keyword":"When ","keywordType":"Action","location":{"column":5,"line":5},"text":"a step passes"}],"tags":[]}},{"scenario":{"description":"","examples":[],"id":"7","keyword":"Scenario","location":{"column":3,"line":7},"name":"No tags and a failed step","steps":[{"id":"6","keyword":"When ","keywordType":"Action","location":{"column":5,"line":8},"text":"a step fails"}],"tags":[]}},{"scenario":{"description":"","examples":[],"id":"9","keyword":"Scenario","location":{"column":3,"line":10},"name":"No tags and a undefined step","steps":[{"id":"8","keyword":"When ","keywordType":"Action","location":{"column":5,"line":11},"text":"a step does not exist"}],"tags":[]}}],"description":" Hooks are special steps that run before or after each scenario's steps.","keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"Hooks","tags":[]},"uri":"samples/hooks/hooks.feature"}}
4
- {"pickle":{"astNodeIds":["5"],"id":"11","language":"en","name":"No tags and a passed step","steps":[{"astNodeIds":["4"],"id":"10","text":"a step passes","type":"Action"}],"tags":[],"uri":"samples/hooks/hooks.feature"}}
5
- {"pickle":{"astNodeIds":["7"],"id":"13","language":"en","name":"No tags and a failed step","steps":[{"astNodeIds":["6"],"id":"12","text":"a step fails","type":"Action"}],"tags":[],"uri":"samples/hooks/hooks.feature"}}
6
- {"pickle":{"astNodeIds":["9"],"id":"15","language":"en","name":"No tags and a undefined step","steps":[{"astNodeIds":["8"],"id":"14","text":"a step does not exist","type":"Action"}],"tags":[],"uri":"samples/hooks/hooks.feature"}}
7
- {"stepDefinition":{"id":"1","pattern":{"source":"a step passes","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":7},"uri":"samples/hooks/hooks.feature.ts"}}}
8
- {"stepDefinition":{"id":"2","pattern":{"source":"a step fails","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":11},"uri":"samples/hooks/hooks.feature.ts"}}}
9
- {"hook":{"id":"0","sourceReference":{"location":{"line":3},"uri":"samples/hooks/hooks.feature.ts"},"type":"BEFORE_TEST_CASE"}}
10
- {"hook":{"id":"3","sourceReference":{"location":{"line":15},"uri":"samples/hooks/hooks.feature.ts"},"type":"AFTER_TEST_CASE"}}
11
- {"testRunStarted":{"id":"16","timestamp":{"nanos":0,"seconds":0}}}
12
- {"testCase":{"id":"20","pickleId":"11","testRunStartedId":"16","testSteps":[{"hookId":"0","id":"17"},{"id":"18","pickleStepId":"10","stepDefinitionIds":["1"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"hookId":"3","id":"19"}]}}
13
- {"testCase":{"id":"24","pickleId":"13","testRunStartedId":"16","testSteps":[{"hookId":"0","id":"21"},{"id":"22","pickleStepId":"12","stepDefinitionIds":["2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"hookId":"3","id":"23"}]}}
14
- {"testCase":{"id":"28","pickleId":"15","testRunStartedId":"16","testSteps":[{"hookId":"0","id":"25"},{"id":"26","pickleStepId":"14","stepDefinitionIds":[],"stepMatchArgumentsLists":[]},{"hookId":"3","id":"27"}]}}
15
- {"testCaseStarted":{"attempt":0,"id":"29","testCaseId":"20","timestamp":{"nanos":1000000,"seconds":0}}}
16
- {"testStepStarted":{"testCaseStartedId":"29","testStepId":"17","timestamp":{"nanos":2000000,"seconds":0}}}
17
- {"testStepFinished":{"testCaseStartedId":"29","testStepId":"17","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":3000000,"seconds":0}}}
18
- {"testStepStarted":{"testCaseStartedId":"29","testStepId":"18","timestamp":{"nanos":4000000,"seconds":0}}}
19
- {"testStepFinished":{"testCaseStartedId":"29","testStepId":"18","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":5000000,"seconds":0}}}
20
- {"testStepStarted":{"testCaseStartedId":"29","testStepId":"19","timestamp":{"nanos":6000000,"seconds":0}}}
21
- {"testStepFinished":{"testCaseStartedId":"29","testStepId":"19","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":7000000,"seconds":0}}}
22
- {"testCaseFinished":{"testCaseStartedId":"29","timestamp":{"nanos":8000000,"seconds":0},"willBeRetried":false}}
23
- {"testCaseStarted":{"attempt":0,"id":"30","testCaseId":"24","timestamp":{"nanos":9000000,"seconds":0}}}
24
- {"testStepStarted":{"testCaseStartedId":"30","testStepId":"21","timestamp":{"nanos":10000000,"seconds":0}}}
25
- {"testStepFinished":{"testCaseStartedId":"30","testStepId":"21","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":11000000,"seconds":0}}}
26
- {"testStepStarted":{"testCaseStartedId":"30","testStepId":"22","timestamp":{"nanos":12000000,"seconds":0}}}
27
- {"testStepFinished":{"testCaseStartedId":"30","testStepId":"22","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"exception":{"message":"Exception in step","stackTrace":"samples/hooks/hooks.feature:8","type":"Error"},"message":"Exception in step\nsamples/hooks/hooks.feature:8","status":"FAILED"},"timestamp":{"nanos":13000000,"seconds":0}}}
28
- {"testStepStarted":{"testCaseStartedId":"30","testStepId":"23","timestamp":{"nanos":14000000,"seconds":0}}}
29
- {"testStepFinished":{"testCaseStartedId":"30","testStepId":"23","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":15000000,"seconds":0}}}
30
- {"testCaseFinished":{"testCaseStartedId":"30","timestamp":{"nanos":16000000,"seconds":0},"willBeRetried":false}}
31
- {"testCaseStarted":{"attempt":0,"id":"31","testCaseId":"28","timestamp":{"nanos":17000000,"seconds":0}}}
32
- {"testStepStarted":{"testCaseStartedId":"31","testStepId":"25","timestamp":{"nanos":18000000,"seconds":0}}}
33
- {"testStepFinished":{"testCaseStartedId":"31","testStepId":"25","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":19000000,"seconds":0}}}
34
- {"testStepStarted":{"testCaseStartedId":"31","testStepId":"26","timestamp":{"nanos":20000000,"seconds":0}}}
35
- {"testStepFinished":{"testCaseStartedId":"31","testStepId":"26","testStepResult":{"duration":{"nanos":0,"seconds":0},"status":"UNDEFINED"},"timestamp":{"nanos":21000000,"seconds":0}}}
36
- {"testStepStarted":{"testCaseStartedId":"31","testStepId":"27","timestamp":{"nanos":22000000,"seconds":0}}}
37
- {"testStepFinished":{"testCaseStartedId":"31","testStepId":"27","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":23000000,"seconds":0}}}
38
- {"testCaseFinished":{"testCaseStartedId":"31","timestamp":{"nanos":24000000,"seconds":0},"willBeRetried":false}}
39
- {"testRunFinished":{"success":false,"testRunStartedId":"16","timestamp":{"nanos":25000000,"seconds":0}}}
@@ -1,20 +0,0 @@
1
- {"meta":{"ci":{"buildNumber":"154666429","git":{"remote":"https://github.com/cucumber-ltd/shouty.rb.git","revision":"99684bcacf01d95875834d87903dcb072306c9ad"},"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429"},"cpu":{"name":"arm64"},"implementation":{"name":"fake-cucumber","version":"18.1.0"},"os":{"name":"darwin","version":"24.5.0"},"protocolVersion":"28.0.0","runtime":{"name":"node.js","version":"24.4.0"}}}
2
- {"source":{"data":"Feature: Hooks - Attachments\n Hooks are special steps that run before or after each scenario's steps.\n\n Like regular steps, it is possible to attach a file to the output.\n\n Scenario: With an valid attachment in the hook and a passed step\n When a step passes\n","mediaType":"text/x.cucumber.gherkin+plain","uri":"samples/hooks-attachment/hooks-attachment.feature"}}
3
- {"gherkinDocument":{"comments":[],"feature":{"children":[{"scenario":{"description":"","examples":[],"id":"4","keyword":"Scenario","location":{"column":3,"line":6},"name":"With an valid attachment in the hook and a passed step","steps":[{"id":"3","keyword":"When ","keywordType":"Action","location":{"column":5,"line":7},"text":"a step passes"}],"tags":[]}}],"description":" Hooks are special steps that run before or after each scenario's steps.\n\n Like regular steps, it is possible to attach a file to the output.","keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"Hooks - Attachments","tags":[]},"uri":"samples/hooks-attachment/hooks-attachment.feature"}}
4
- {"pickle":{"astNodeIds":["4"],"id":"6","language":"en","name":"With an valid attachment in the hook and a passed step","steps":[{"astNodeIds":["3"],"id":"5","text":"a step passes","type":"Action"}],"tags":[],"uri":"samples/hooks-attachment/hooks-attachment.feature"}}
5
- {"stepDefinition":{"id":"1","pattern":{"source":"a step passes","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":9},"uri":"samples/hooks-attachment/hooks-attachment.feature.ts"}}}
6
- {"hook":{"id":"0","sourceReference":{"location":{"line":4},"uri":"samples/hooks-attachment/hooks-attachment.feature.ts"},"type":"BEFORE_TEST_CASE"}}
7
- {"hook":{"id":"2","sourceReference":{"location":{"line":13},"uri":"samples/hooks-attachment/hooks-attachment.feature.ts"},"type":"AFTER_TEST_CASE"}}
8
- {"testRunStarted":{"id":"7","timestamp":{"nanos":0,"seconds":0}}}
9
- {"testCase":{"id":"11","pickleId":"6","testRunStartedId":"7","testSteps":[{"hookId":"0","id":"8"},{"id":"9","pickleStepId":"5","stepDefinitionIds":["1"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"hookId":"2","id":"10"}]}}
10
- {"testCaseStarted":{"attempt":0,"id":"12","testCaseId":"11","timestamp":{"nanos":1000000,"seconds":0}}}
11
- {"testStepStarted":{"testCaseStartedId":"12","testStepId":"8","timestamp":{"nanos":2000000,"seconds":0}}}
12
- {"attachment":{"body":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJtbC0zIG1sLW1kLTAiIHZpZXdCb3g9IjAgMCA0MC41OSA0Ni4zMSIgd2lkdGg9IjQwLjU5IiBoZWlnaHQ9IjQ2LjMxIj4KICAgIDxnPgogICAgICAgIDxwYXRoIGZpbGw9IiMyM2Q5NmMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMwLjI4MyAzLjY0NXEtLjUyOC0uMzE3LTEuMDgtLjU5M2ExNi4xNjQgMTYuMTY0IDAgMDAtMS4xNTQtLjUxOGMtLjEyNC0uMDUyLS4yNDctLjEtLjM3Mi0uMTQ5LS4zNDMtLjEyNy0uNjg5LS4yNjgtMS4wNDItLjM3MWExOS40MjcgMTkuNDI3IDAgMTAtOS43OTIgMzcuNTF2NS41NmMxMS42NzYtMS43NTMgMjIuMDE2LTEwLjk3OSAyMi43ODctMjMuMDkzLjQ1OS03LjI4OS0zLjE5My0xNC43My05LjM0Ny0xOC4zNDZ6Ii8+CiAgICAgICAgPHBhdGggZmlsbD0iIzE3MzY0NyIgZD0iTTE1Ljc4NyA0Ni4zMDd2LTUuOTM1QTIwLjQ3MiAyMC40NzIgMCAxMTI2Ljk1OSAxLjAxNWMuMjc0LjA4LjU1Ny4xODcuODMyLjI5MWwuMjQ4LjA5M2MuMTY1LjA2NC4yOTEuMTEzLjQxNy4xNjcuMzQ4LjEzNy43MzkuMzEzIDEuMjA4LjU0M3EuNTg5LjI5NSAxLjE1My42MzNjNi4zOTMgMy43NTYgMTAuMzU0IDExLjUxOCA5Ljg1NyAxOS4zMTYtLjc2MyAxMi0xMC43MjIgMjIuMTIyLTIzLjY3OSAyNC4wNjd6bTQuOC00NC4yMTRoLS4wMjZhMTguMzY2IDE4LjM2NiAwIDAwLTMuNTI0IDM2LjQwOGwuODUuMTY1djUuMThjMTEuMzkyLTIuMjI0IDIwLjAwOS0xMS4yNzIgMjAuNjg2LTIxLjkyMi40NDgtNy4wMzMtMy4xLTE0LjAxOC04LjgzLTE3LjM4M2wtLjAwOC0uMDA1QTE0LjY5MSAxNC42OTEgMCAwMDI3LjY1NCAzLjVhNS43NCA1Ljc0IDAgMDAtLjM0NC0uMTM4bC0uMjctLjFhOS40OSA5LjQ5IDAgMDAtLjcwOC0uMjQ5IDE4LjQyNSAxOC40MjUgMCAwMC01Ljc0My0uOTJ6Ii8+CiAgICAgICAgPHBhdGggZmlsbD0iIzE3MzY0NyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTYuNjY2IDEwLjU4YTEuOCAxLjggMCAwMTEuNTgzLjYwOCA0LjE4NCA0LjE4NCAwIDAxLjcyOCAxLjEwN2MuNjQ1IDEuNDIyIDEuMDI3IDMuNDYxLjIzIDQuNjA1YTYuMzM0IDYuMzM0IDAgMDEtMy45ODEtMy4wODcgMy4yMzYgMy4yMzYgMCAwMS0uMzQ3LTEuMzM5IDEuOTU3IDEuOTU3IDAgMDExLjc4Ny0xLjg5NHptLTUuNjgzIDguMDI1YTcuNzQyIDcuNzQyIDAgMDAxLjIxOC43MzcgNS43ODkgNS43ODkgMCAwMDQuODgzLS4xMzggNi4xMTYgNi4xMTYgMCAwMC0zLjM0NS0zLjQ1IDMuNjY0IDMuNjY0IDAgMDAtMS40NDItLjMyMSAxLjg4NCAxLjg4NCAwIDAwLS4zMTkgMCAxLjc2NiAxLjc2NiAwIDAwLS45OTUgMy4xNzJ6bTYuMSAzLjQzM2MtLjc3Ny0uNTE4LTIuMzc5LS4zMDktMy4zMTItLjI5MmE0LjQxNiA0LjQxNiAwIDAwLTEuNjY2LjM1MiAzLjUgMy41IDAgMDAtMS4yMTguNzM4IDEuODE3IDEuODE3IDAgMDAxLjQwOSAzLjE3MSAzLjMgMy4zIDAgMDAxLjQ0Mi0uMzIxYzEuNDM2LS42MiAzLjE0MS0yLjMyIDMuMzQ2LTMuNjQ4em0yLjYxIDJhNi41NTYgNi41NTYgMCAwMC0zLjcyNCAzLjUwNiAzLjA5MSAzLjA5MSAwIDAwLS4zMjEgMS4zMTQgMS45MDcgMS45MDcgMCAwMDMuMyAxLjM0NiA3LjQyMiA3LjQyMiAwIDAwLjctMS4yMThjLjYyMS0xLjMzMy44NjYtMy43Mi4wNDYtNC45NDh6bTIuNTU3LTcuMTY3YTUuOTQxIDUuOTQxIDAgMDAzLjctMy4xNjcgMy4yNDMgMy4yNDMgMCAwMC4zMTktMS4zNDYgMS45MTUgMS45MTUgMCAwMC0xLjc5NC0xLjk1NCAxLjgzMiAxLjgzMiAwIDAwLTEuNi42NDEgNy4zODIgNy4zODIgMCAwMC0uNzA1IDEuMjE4Yy0uNjIgMS40MzQtLjg0MiAzLjQ4LjA4MSA0LjYwM3ptNC4yMDggMTIuMTE1YTMuMjQ0IDMuMjQ0IDAgMDAtLjMyMS0xLjM0NSA1Ljg2OSA1Ljg2OSAwIDAwLTMuNTU0LTMuMjY5IDUuMzg2IDUuMzg2IDAgMDAtLjIyNiA0LjcxMSA0LjE0NyA0LjE0NyAwIDAwLjcgMS4xMjFjMS4xMzMgMS4yMyAzLjUwNS4zMiAzLjQwMi0xLjIxOHptNC4yLTYuMjhhNy40NjYgNy40NjYgMCAwMC0xLjIxNy0uNyA0LjQyNSA0LjQyNSAwIDAwLTEuNjY2LS4zNTIgNi40IDYuNCAwIDAwLTMuMTg4LjU1NSA1Ljk1OSA1Ljk1OSAwIDAwMy4zMTYgMy4zODYgMy42NzIgMy42NzIgMCAwMDEuNDQyLjMyIDEuOCAxLjggMCAwMDEuMzEtMy4yMDl6Ii8+CiAgICA8L2c+Cjwvc3ZnPg==","contentEncoding":"BASE64","mediaType":"image/svg+xml","testCaseStartedId":"12","testStepId":"8"}}
13
- {"testStepFinished":{"testCaseStartedId":"12","testStepId":"8","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":3000000,"seconds":0}}}
14
- {"testStepStarted":{"testCaseStartedId":"12","testStepId":"9","timestamp":{"nanos":4000000,"seconds":0}}}
15
- {"testStepFinished":{"testCaseStartedId":"12","testStepId":"9","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":5000000,"seconds":0}}}
16
- {"testStepStarted":{"testCaseStartedId":"12","testStepId":"10","timestamp":{"nanos":6000000,"seconds":0}}}
17
- {"attachment":{"body":"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJtbC0zIG1sLW1kLTAiIHZpZXdCb3g9IjAgMCA0MC41OSA0Ni4zMSIgd2lkdGg9IjQwLjU5IiBoZWlnaHQ9IjQ2LjMxIj4KICAgIDxnPgogICAgICAgIDxwYXRoIGZpbGw9IiMyM2Q5NmMiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMwLjI4MyAzLjY0NXEtLjUyOC0uMzE3LTEuMDgtLjU5M2ExNi4xNjQgMTYuMTY0IDAgMDAtMS4xNTQtLjUxOGMtLjEyNC0uMDUyLS4yNDctLjEtLjM3Mi0uMTQ5LS4zNDMtLjEyNy0uNjg5LS4yNjgtMS4wNDItLjM3MWExOS40MjcgMTkuNDI3IDAgMTAtOS43OTIgMzcuNTF2NS41NmMxMS42NzYtMS43NTMgMjIuMDE2LTEwLjk3OSAyMi43ODctMjMuMDkzLjQ1OS03LjI4OS0zLjE5My0xNC43My05LjM0Ny0xOC4zNDZ6Ii8+CiAgICAgICAgPHBhdGggZmlsbD0iIzE3MzY0NyIgZD0iTTE1Ljc4NyA0Ni4zMDd2LTUuOTM1QTIwLjQ3MiAyMC40NzIgMCAxMTI2Ljk1OSAxLjAxNWMuMjc0LjA4LjU1Ny4xODcuODMyLjI5MWwuMjQ4LjA5M2MuMTY1LjA2NC4yOTEuMTEzLjQxNy4xNjcuMzQ4LjEzNy43MzkuMzEzIDEuMjA4LjU0M3EuNTg5LjI5NSAxLjE1My42MzNjNi4zOTMgMy43NTYgMTAuMzU0IDExLjUxOCA5Ljg1NyAxOS4zMTYtLjc2MyAxMi0xMC43MjIgMjIuMTIyLTIzLjY3OSAyNC4wNjd6bTQuOC00NC4yMTRoLS4wMjZhMTguMzY2IDE4LjM2NiAwIDAwLTMuNTI0IDM2LjQwOGwuODUuMTY1djUuMThjMTEuMzkyLTIuMjI0IDIwLjAwOS0xMS4yNzIgMjAuNjg2LTIxLjkyMi40NDgtNy4wMzMtMy4xLTE0LjAxOC04LjgzLTE3LjM4M2wtLjAwOC0uMDA1QTE0LjY5MSAxNC42OTEgMCAwMDI3LjY1NCAzLjVhNS43NCA1Ljc0IDAgMDAtLjM0NC0uMTM4bC0uMjctLjFhOS40OSA5LjQ5IDAgMDAtLjcwOC0uMjQ5IDE4LjQyNSAxOC40MjUgMCAwMC01Ljc0My0uOTJ6Ii8+CiAgICAgICAgPHBhdGggZmlsbD0iIzE3MzY0NyIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTYuNjY2IDEwLjU4YTEuOCAxLjggMCAwMTEuNTgzLjYwOCA0LjE4NCA0LjE4NCAwIDAxLjcyOCAxLjEwN2MuNjQ1IDEuNDIyIDEuMDI3IDMuNDYxLjIzIDQuNjA1YTYuMzM0IDYuMzM0IDAgMDEtMy45ODEtMy4wODcgMy4yMzYgMy4yMzYgMCAwMS0uMzQ3LTEuMzM5IDEuOTU3IDEuOTU3IDAgMDExLjc4Ny0xLjg5NHptLTUuNjgzIDguMDI1YTcuNzQyIDcuNzQyIDAgMDAxLjIxOC43MzcgNS43ODkgNS43ODkgMCAwMDQuODgzLS4xMzggNi4xMTYgNi4xMTYgMCAwMC0zLjM0NS0zLjQ1IDMuNjY0IDMuNjY0IDAgMDAtMS40NDItLjMyMSAxLjg4NCAxLjg4NCAwIDAwLS4zMTkgMCAxLjc2NiAxLjc2NiAwIDAwLS45OTUgMy4xNzJ6bTYuMSAzLjQzM2MtLjc3Ny0uNTE4LTIuMzc5LS4zMDktMy4zMTItLjI5MmE0LjQxNiA0LjQxNiAwIDAwLTEuNjY2LjM1MiAzLjUgMy41IDAgMDAtMS4yMTguNzM4IDEuODE3IDEuODE3IDAgMDAxLjQwOSAzLjE3MSAzLjMgMy4zIDAgMDAxLjQ0Mi0uMzIxYzEuNDM2LS42MiAzLjE0MS0yLjMyIDMuMzQ2LTMuNjQ4em0yLjYxIDJhNi41NTYgNi41NTYgMCAwMC0zLjcyNCAzLjUwNiAzLjA5MSAzLjA5MSAwIDAwLS4zMjEgMS4zMTQgMS45MDcgMS45MDcgMCAwMDMuMyAxLjM0NiA3LjQyMiA3LjQyMiAwIDAwLjctMS4yMThjLjYyMS0xLjMzMy44NjYtMy43Mi4wNDYtNC45NDh6bTIuNTU3LTcuMTY3YTUuOTQxIDUuOTQxIDAgMDAzLjctMy4xNjcgMy4yNDMgMy4yNDMgMCAwMC4zMTktMS4zNDYgMS45MTUgMS45MTUgMCAwMC0xLjc5NC0xLjk1NCAxLjgzMiAxLjgzMiAwIDAwLTEuNi42NDEgNy4zODIgNy4zODIgMCAwMC0uNzA1IDEuMjE4Yy0uNjIgMS40MzQtLjg0MiAzLjQ4LjA4MSA0LjYwM3ptNC4yMDggMTIuMTE1YTMuMjQ0IDMuMjQ0IDAgMDAtLjMyMS0xLjM0NSA1Ljg2OSA1Ljg2OSAwIDAwLTMuNTU0LTMuMjY5IDUuMzg2IDUuMzg2IDAgMDAtLjIyNiA0LjcxMSA0LjE0NyA0LjE0NyAwIDAwLjcgMS4xMjFjMS4xMzMgMS4yMyAzLjUwNS4zMiAzLjQwMi0xLjIxOHptNC4yLTYuMjhhNy40NjYgNy40NjYgMCAwMC0xLjIxNy0uNyA0LjQyNSA0LjQyNSAwIDAwLTEuNjY2LS4zNTIgNi40IDYuNCAwIDAwLTMuMTg4LjU1NSA1Ljk1OSA1Ljk1OSAwIDAwMy4zMTYgMy4zODYgMy42NzIgMy42NzIgMCAwMDEuNDQyLjMyIDEuOCAxLjggMCAwMDEuMzEtMy4yMDl6Ii8+CiAgICA8L2c+Cjwvc3ZnPg==","contentEncoding":"BASE64","mediaType":"image/svg+xml","testCaseStartedId":"12","testStepId":"10"}}
18
- {"testStepFinished":{"testCaseStartedId":"12","testStepId":"10","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":7000000,"seconds":0}}}
19
- {"testCaseFinished":{"testCaseStartedId":"12","timestamp":{"nanos":8000000,"seconds":0},"willBeRetried":false}}
20
- {"testRunFinished":{"success":true,"testRunStartedId":"7","timestamp":{"nanos":9000000,"seconds":0}}}
@@ -1,36 +0,0 @@
1
- {"meta":{"ci":{"buildNumber":"154666429","git":{"remote":"https://github.com/cucumber-ltd/shouty.rb.git","revision":"99684bcacf01d95875834d87903dcb072306c9ad"},"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429"},"cpu":{"name":"arm64"},"implementation":{"name":"fake-cucumber","version":"18.1.0"},"os":{"name":"darwin","version":"24.5.0"},"protocolVersion":"28.0.0","runtime":{"name":"node.js","version":"24.4.0"}}}
2
- {"source":{"data":"Feature: Hooks - Conditional execution\n Hooks are special steps that run before or after each scenario's steps.\n\n They can also conditionally target specific scenarios, using tag expressions.\n\n @fail-before\n Scenario: A failure in the before hook and a skipped step\n When a step passes\n\n @fail-after\n Scenario: A failure in the after hook and a passed step\n When a step passes\n\n @passing-hook\n Scenario: With an tag, a passed step and hook\n When a step passes\n","mediaType":"text/x.cucumber.gherkin+plain","uri":"samples/hooks-conditional/hooks-conditional.feature"}}
3
- {"gherkinDocument":{"comments":[],"feature":{"children":[{"scenario":{"description":"","examples":[],"id":"7","keyword":"Scenario","location":{"column":3,"line":7},"name":"A failure in the before hook and a skipped step","steps":[{"id":"5","keyword":"When ","keywordType":"Action","location":{"column":5,"line":8},"text":"a step passes"}],"tags":[{"id":"6","location":{"column":3,"line":6},"name":"@fail-before"}]}},{"scenario":{"description":"","examples":[],"id":"10","keyword":"Scenario","location":{"column":3,"line":11},"name":"A failure in the after hook and a passed step","steps":[{"id":"8","keyword":"When ","keywordType":"Action","location":{"column":5,"line":12},"text":"a step passes"}],"tags":[{"id":"9","location":{"column":3,"line":10},"name":"@fail-after"}]}},{"scenario":{"description":"","examples":[],"id":"13","keyword":"Scenario","location":{"column":3,"line":15},"name":"With an tag, a passed step and hook","steps":[{"id":"11","keyword":"When ","keywordType":"Action","location":{"column":5,"line":16},"text":"a step passes"}],"tags":[{"id":"12","location":{"column":3,"line":14},"name":"@passing-hook"}]}}],"description":" Hooks are special steps that run before or after each scenario's steps.\n\n They can also conditionally target specific scenarios, using tag expressions.","keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"Hooks - Conditional execution","tags":[]},"uri":"samples/hooks-conditional/hooks-conditional.feature"}}
4
- {"pickle":{"astNodeIds":["7"],"id":"15","language":"en","name":"A failure in the before hook and a skipped step","steps":[{"astNodeIds":["5"],"id":"14","text":"a step passes","type":"Action"}],"tags":[{"astNodeId":"6","name":"@fail-before"}],"uri":"samples/hooks-conditional/hooks-conditional.feature"}}
5
- {"pickle":{"astNodeIds":["10"],"id":"17","language":"en","name":"A failure in the after hook and a passed step","steps":[{"astNodeIds":["8"],"id":"16","text":"a step passes","type":"Action"}],"tags":[{"astNodeId":"9","name":"@fail-after"}],"uri":"samples/hooks-conditional/hooks-conditional.feature"}}
6
- {"pickle":{"astNodeIds":["13"],"id":"19","language":"en","name":"With an tag, a passed step and hook","steps":[{"astNodeIds":["11"],"id":"18","text":"a step passes","type":"Action"}],"tags":[{"astNodeId":"12","name":"@passing-hook"}],"uri":"samples/hooks-conditional/hooks-conditional.feature"}}
7
- {"stepDefinition":{"id":"2","pattern":{"source":"a step passes","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":11},"uri":"samples/hooks-conditional/hooks-conditional.feature.ts"}}}
8
- {"hook":{"id":"0","sourceReference":{"location":{"line":3},"uri":"samples/hooks-conditional/hooks-conditional.feature.ts"},"tagExpression":"@passing-hook","type":"BEFORE_TEST_CASE"}}
9
- {"hook":{"id":"1","sourceReference":{"location":{"line":7},"uri":"samples/hooks-conditional/hooks-conditional.feature.ts"},"tagExpression":"@fail-before","type":"BEFORE_TEST_CASE"}}
10
- {"hook":{"id":"3","sourceReference":{"location":{"line":15},"uri":"samples/hooks-conditional/hooks-conditional.feature.ts"},"tagExpression":"@fail-after","type":"AFTER_TEST_CASE"}}
11
- {"hook":{"id":"4","sourceReference":{"location":{"line":19},"uri":"samples/hooks-conditional/hooks-conditional.feature.ts"},"tagExpression":"@passing-hook","type":"AFTER_TEST_CASE"}}
12
- {"testRunStarted":{"id":"20","timestamp":{"nanos":0,"seconds":0}}}
13
- {"testCase":{"id":"23","pickleId":"15","testRunStartedId":"20","testSteps":[{"hookId":"1","id":"21"},{"id":"22","pickleStepId":"14","stepDefinitionIds":["2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]}]}}
14
- {"testCase":{"id":"26","pickleId":"17","testRunStartedId":"20","testSteps":[{"id":"24","pickleStepId":"16","stepDefinitionIds":["2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"hookId":"3","id":"25"}]}}
15
- {"testCase":{"id":"30","pickleId":"19","testRunStartedId":"20","testSteps":[{"hookId":"0","id":"27"},{"id":"28","pickleStepId":"18","stepDefinitionIds":["2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"hookId":"4","id":"29"}]}}
16
- {"testCaseStarted":{"attempt":0,"id":"31","testCaseId":"23","timestamp":{"nanos":1000000,"seconds":0}}}
17
- {"testStepStarted":{"testCaseStartedId":"31","testStepId":"21","timestamp":{"nanos":2000000,"seconds":0}}}
18
- {"testStepFinished":{"testCaseStartedId":"31","testStepId":"21","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"exception":{"message":"Exception in conditional hook","stackTrace":"samples/hooks-conditional/hooks-conditional.feature:7","type":"Error"},"message":"Exception in conditional hook\nsamples/hooks-conditional/hooks-conditional.feature:7","status":"FAILED"},"timestamp":{"nanos":3000000,"seconds":0}}}
19
- {"testStepStarted":{"testCaseStartedId":"31","testStepId":"22","timestamp":{"nanos":4000000,"seconds":0}}}
20
- {"testStepFinished":{"testCaseStartedId":"31","testStepId":"22","testStepResult":{"duration":{"nanos":0,"seconds":0},"status":"SKIPPED"},"timestamp":{"nanos":5000000,"seconds":0}}}
21
- {"testCaseFinished":{"testCaseStartedId":"31","timestamp":{"nanos":6000000,"seconds":0},"willBeRetried":false}}
22
- {"testCaseStarted":{"attempt":0,"id":"32","testCaseId":"26","timestamp":{"nanos":7000000,"seconds":0}}}
23
- {"testStepStarted":{"testCaseStartedId":"32","testStepId":"24","timestamp":{"nanos":8000000,"seconds":0}}}
24
- {"testStepFinished":{"testCaseStartedId":"32","testStepId":"24","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":9000000,"seconds":0}}}
25
- {"testStepStarted":{"testCaseStartedId":"32","testStepId":"25","timestamp":{"nanos":10000000,"seconds":0}}}
26
- {"testStepFinished":{"testCaseStartedId":"32","testStepId":"25","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"exception":{"message":"Exception in conditional hook","stackTrace":"samples/hooks-conditional/hooks-conditional.feature:11","type":"Error"},"message":"Exception in conditional hook\nsamples/hooks-conditional/hooks-conditional.feature:11","status":"FAILED"},"timestamp":{"nanos":11000000,"seconds":0}}}
27
- {"testCaseFinished":{"testCaseStartedId":"32","timestamp":{"nanos":12000000,"seconds":0},"willBeRetried":false}}
28
- {"testCaseStarted":{"attempt":0,"id":"33","testCaseId":"30","timestamp":{"nanos":13000000,"seconds":0}}}
29
- {"testStepStarted":{"testCaseStartedId":"33","testStepId":"27","timestamp":{"nanos":14000000,"seconds":0}}}
30
- {"testStepFinished":{"testCaseStartedId":"33","testStepId":"27","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":15000000,"seconds":0}}}
31
- {"testStepStarted":{"testCaseStartedId":"33","testStepId":"28","timestamp":{"nanos":16000000,"seconds":0}}}
32
- {"testStepFinished":{"testCaseStartedId":"33","testStepId":"28","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":17000000,"seconds":0}}}
33
- {"testStepStarted":{"testCaseStartedId":"33","testStepId":"29","timestamp":{"nanos":18000000,"seconds":0}}}
34
- {"testStepFinished":{"testCaseStartedId":"33","testStepId":"29","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":19000000,"seconds":0}}}
35
- {"testCaseFinished":{"testCaseStartedId":"33","timestamp":{"nanos":20000000,"seconds":0},"willBeRetried":false}}
36
- {"testRunFinished":{"success":false,"testRunStartedId":"20","timestamp":{"nanos":21000000,"seconds":0}}}
@@ -1,18 +0,0 @@
1
- {"meta":{"ci":{"buildNumber":"154666429","git":{"remote":"https://github.com/cucumber-ltd/shouty.rb.git","revision":"99684bcacf01d95875834d87903dcb072306c9ad"},"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429"},"cpu":{"name":"arm64"},"implementation":{"name":"fake-cucumber","version":"18.1.0"},"os":{"name":"darwin","version":"24.5.0"},"protocolVersion":"28.0.0","runtime":{"name":"node.js","version":"24.4.0"}}}
2
- {"source":{"data":"Feature: Hooks - Named\n Hooks are special steps that run before or after each scenario's steps.\n\n Hooks can be given a name. Which is nice for reporting. Otherwise they work\n exactly the same as regular hooks.\n\n Scenario: With a named before and after hook\n When a step passes\n","mediaType":"text/x.cucumber.gherkin+plain","uri":"samples/hooks-named/hooks-named.feature"}}
3
- {"gherkinDocument":{"comments":[],"feature":{"children":[{"scenario":{"description":"","examples":[],"id":"4","keyword":"Scenario","location":{"column":3,"line":7},"name":"With a named before and after hook","steps":[{"id":"3","keyword":"When ","keywordType":"Action","location":{"column":5,"line":8},"text":"a step passes"}],"tags":[]}}],"description":" Hooks are special steps that run before or after each scenario's steps.\n\n Hooks can be given a name. Which is nice for reporting. Otherwise they work\n exactly the same as regular hooks.","keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"Hooks - Named","tags":[]},"uri":"samples/hooks-named/hooks-named.feature"}}
4
- {"pickle":{"astNodeIds":["4"],"id":"6","language":"en","name":"With a named before and after hook","steps":[{"astNodeIds":["3"],"id":"5","text":"a step passes","type":"Action"}],"tags":[],"uri":"samples/hooks-named/hooks-named.feature"}}
5
- {"stepDefinition":{"id":"1","pattern":{"source":"a step passes","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":7},"uri":"samples/hooks-named/hooks-named.feature.ts"}}}
6
- {"hook":{"id":"0","name":"A named before hook","sourceReference":{"location":{"line":3},"uri":"samples/hooks-named/hooks-named.feature.ts"},"type":"BEFORE_TEST_CASE"}}
7
- {"hook":{"id":"2","name":"A named after hook","sourceReference":{"location":{"line":11},"uri":"samples/hooks-named/hooks-named.feature.ts"},"type":"AFTER_TEST_CASE"}}
8
- {"testRunStarted":{"id":"7","timestamp":{"nanos":0,"seconds":0}}}
9
- {"testCase":{"id":"11","pickleId":"6","testRunStartedId":"7","testSteps":[{"hookId":"0","id":"8"},{"id":"9","pickleStepId":"5","stepDefinitionIds":["1"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"hookId":"2","id":"10"}]}}
10
- {"testCaseStarted":{"attempt":0,"id":"12","testCaseId":"11","timestamp":{"nanos":1000000,"seconds":0}}}
11
- {"testStepStarted":{"testCaseStartedId":"12","testStepId":"8","timestamp":{"nanos":2000000,"seconds":0}}}
12
- {"testStepFinished":{"testCaseStartedId":"12","testStepId":"8","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":3000000,"seconds":0}}}
13
- {"testStepStarted":{"testCaseStartedId":"12","testStepId":"9","timestamp":{"nanos":4000000,"seconds":0}}}
14
- {"testStepFinished":{"testCaseStartedId":"12","testStepId":"9","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":5000000,"seconds":0}}}
15
- {"testStepStarted":{"testCaseStartedId":"12","testStepId":"10","timestamp":{"nanos":6000000,"seconds":0}}}
16
- {"testStepFinished":{"testCaseStartedId":"12","testStepId":"10","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":7000000,"seconds":0}}}
17
- {"testCaseFinished":{"testCaseStartedId":"12","timestamp":{"nanos":8000000,"seconds":0},"willBeRetried":false}}
18
- {"testRunFinished":{"success":true,"testRunStartedId":"7","timestamp":{"nanos":9000000,"seconds":0}}}
@@ -1,35 +0,0 @@
1
- {"meta":{"ci":{"buildNumber":"154666429","git":{"remote":"https://github.com/cucumber-ltd/shouty.rb.git","revision":"99684bcacf01d95875834d87903dcb072306c9ad"},"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429"},"cpu":{"name":"arm64"},"implementation":{"name":"fake-cucumber","version":"18.1.0"},"os":{"name":"darwin","version":"24.5.0"},"protocolVersion":"28.0.0","runtime":{"name":"node.js","version":"24.4.0"}}}
2
- {"source":{"data":"# Feature: Cheese\n\nThis table is not picked up by Gherkin (not indented 2+ spaces)\n\n| foo | bar |\n| --- | --- |\n| boz | boo |\n\n\n## Rule: Nom nom nom\n\nI love cheese, especially fromage macaroni cheese. Rubber cheese ricotta caerphilly blue castello who moved my cheese queso bavarian bergkase melted cheese.\n\n### Scenario Outline: Ylajali!\n\n* Given some TypeScript code:\n ```typescript\n type Cheese = 'reblochon' | 'roquefort' | 'rocamadour'\n ```\n* And some classic Gherkin:\n ```gherkin\n Given there are 24 apples in Mary's basket\n ```\n* When we use a data table and attach something and then <what>\n | name | age |\n | ---- | --: |\n | Bill | 3 |\n | Jane | 6 |\n | Isla | 5 |\n* Then this might or might not run\n\n#### Examples: because we need more tables\n\nThis table is indented 2 spaces, so Gherkin will pick it up\n\n | what |\n | ---- |\n | fail |\n | pass |\n\nAnd oh by the way, this table is also ignored by Gherkin because it doesn't have 2+ space indent:\n\n| cheese |\n| -------- |\n| gouda |\n| gamalost |\n","mediaType":"text/x.cucumber.gherkin+markdown","uri":"samples/markdown/markdown.feature.md"}}
3
- {"gherkinDocument":{"comments":[],"feature":{"children":[{"rule":{"children":[{"scenario":{"description":"","examples":[{"description":"","id":"15","keyword":"Examples","location":{"column":6,"line":32},"name":"because we need more tables","tableBody":[{"cells":[{"location":{"column":5,"line":38},"value":"fail"}],"id":"13","location":{"column":3,"line":38}},{"cells":[{"location":{"column":5,"line":39},"value":"pass"}],"id":"14","location":{"column":3,"line":39}}],"tableHeader":{"cells":[{"location":{"column":5,"line":36},"value":"what"}],"id":"12","location":{"column":3,"line":36}},"tags":[]}],"id":"16","keyword":"Scenario Outline","location":{"column":5,"line":14},"name":"Ylajali!","steps":[{"docString":{"content":"type Cheese = 'reblochon' | 'roquefort' | 'rocamadour'","delimiter":"```","location":{"column":3,"line":17},"mediaType":"typescript"},"id":"4","keyword":"Given ","keywordType":"Context","location":{"column":3,"line":16},"text":"some TypeScript code:"},{"docString":{"content":"Given there are 24 apples in Mary's basket","delimiter":"```","location":{"column":3,"line":21},"mediaType":"gherkin"},"id":"5","keyword":"And ","keywordType":"Conjunction","location":{"column":3,"line":20},"text":"some classic Gherkin:"},{"dataTable":{"location":{"column":3,"line":25},"rows":[{"cells":[{"location":{"column":5,"line":25},"value":"name"},{"location":{"column":12,"line":25},"value":"age"}],"id":"6","location":{"column":3,"line":25}},{"cells":[{"location":{"column":5,"line":27},"value":"Bill"},{"location":{"column":14,"line":27},"value":"3"}],"id":"7","location":{"column":3,"line":27}},{"cells":[{"location":{"column":5,"line":28},"value":"Jane"},{"location":{"column":14,"line":28},"value":"6"}],"id":"8","location":{"column":3,"line":28}},{"cells":[{"location":{"column":5,"line":29},"value":"Isla"},{"location":{"column":14,"line":29},"value":"5"}],"id":"9","location":{"column":3,"line":29}}]},"id":"10","keyword":"When ","keywordType":"Action","location":{"column":3,"line":24},"text":"we use a data table and attach something and then <what>"},{"id":"11","keyword":"Then ","keywordType":"Outcome","location":{"column":3,"line":30},"text":"this might or might not run"}],"tags":[]}}],"description":"","id":"17","keyword":"Rule","location":{"column":4,"line":10},"name":"Nom nom nom","tags":[]}}],"description":"| boz | boo |","keyword":"Feature","language":"en","location":{"column":3,"line":1},"name":"Cheese","tags":[]},"uri":"samples/markdown/markdown.feature.md"}}
4
- {"pickle":{"astNodeIds":["16","13"],"id":"22","language":"en","name":"Ylajali!","steps":[{"argument":{"docString":{"content":"type Cheese = 'reblochon' | 'roquefort' | 'rocamadour'","mediaType":"typescript"}},"astNodeIds":["4","13"],"id":"18","text":"some TypeScript code:","type":"Context"},{"argument":{"docString":{"content":"Given there are 24 apples in Mary's basket","mediaType":"gherkin"}},"astNodeIds":["5","13"],"id":"19","text":"some classic Gherkin:","type":"Context"},{"argument":{"dataTable":{"rows":[{"cells":[{"value":"name"},{"value":"age"}]},{"cells":[{"value":"Bill"},{"value":"3"}]},{"cells":[{"value":"Jane"},{"value":"6"}]},{"cells":[{"value":"Isla"},{"value":"5"}]}]}},"astNodeIds":["10","13"],"id":"20","text":"we use a data table and attach something and then fail","type":"Action"},{"astNodeIds":["11","13"],"id":"21","text":"this might or might not run","type":"Outcome"}],"tags":[],"uri":"samples/markdown/markdown.feature.md"}}
5
- {"pickle":{"astNodeIds":["16","14"],"id":"27","language":"en","name":"Ylajali!","steps":[{"argument":{"docString":{"content":"type Cheese = 'reblochon' | 'roquefort' | 'rocamadour'","mediaType":"typescript"}},"astNodeIds":["4","14"],"id":"23","text":"some TypeScript code:","type":"Context"},{"argument":{"docString":{"content":"Given there are 24 apples in Mary's basket","mediaType":"gherkin"}},"astNodeIds":["5","14"],"id":"24","text":"some classic Gherkin:","type":"Context"},{"argument":{"dataTable":{"rows":[{"cells":[{"value":"name"},{"value":"age"}]},{"cells":[{"value":"Bill"},{"value":"3"}]},{"cells":[{"value":"Jane"},{"value":"6"}]},{"cells":[{"value":"Isla"},{"value":"5"}]}]}},"astNodeIds":["10","14"],"id":"25","text":"we use a data table and attach something and then pass","type":"Action"},{"astNodeIds":["11","14"],"id":"26","text":"this might or might not run","type":"Outcome"}],"tags":[],"uri":"samples/markdown/markdown.feature.md"}}
6
- {"stepDefinition":{"id":"0","pattern":{"source":"some TypeScript code:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":4},"uri":"samples/markdown/markdown.feature.md.ts"}}}
7
- {"stepDefinition":{"id":"1","pattern":{"source":"some classic Gherkin:","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":8},"uri":"samples/markdown/markdown.feature.md.ts"}}}
8
- {"stepDefinition":{"id":"2","pattern":{"source":"we use a data table and attach something and then {word}","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":12},"uri":"samples/markdown/markdown.feature.md.ts"}}}
9
- {"stepDefinition":{"id":"3","pattern":{"source":"this might or might not run","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":23},"uri":"samples/markdown/markdown.feature.md.ts"}}}
10
- {"testRunStarted":{"id":"28","timestamp":{"nanos":0,"seconds":0}}}
11
- {"testCase":{"id":"33","pickleId":"22","testRunStartedId":"28","testSteps":[{"id":"29","pickleStepId":"18","stepDefinitionIds":["0"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"30","pickleStepId":"19","stepDefinitionIds":["1"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"31","pickleStepId":"20","stepDefinitionIds":["2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"children":[],"start":50,"value":"fail"},"parameterTypeName":"word"}]}]},{"id":"32","pickleStepId":"21","stepDefinitionIds":["3"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]}]}}
12
- {"testCase":{"id":"38","pickleId":"27","testRunStartedId":"28","testSteps":[{"id":"34","pickleStepId":"23","stepDefinitionIds":["0"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"35","pickleStepId":"24","stepDefinitionIds":["1"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"36","pickleStepId":"25","stepDefinitionIds":["2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"children":[],"start":50,"value":"pass"},"parameterTypeName":"word"}]}]},{"id":"37","pickleStepId":"26","stepDefinitionIds":["3"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]}]}}
13
- {"testCaseStarted":{"attempt":0,"id":"39","testCaseId":"33","timestamp":{"nanos":1000000,"seconds":0}}}
14
- {"testStepStarted":{"testCaseStartedId":"39","testStepId":"29","timestamp":{"nanos":2000000,"seconds":0}}}
15
- {"testStepFinished":{"testCaseStartedId":"39","testStepId":"29","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":3000000,"seconds":0}}}
16
- {"testStepStarted":{"testCaseStartedId":"39","testStepId":"30","timestamp":{"nanos":4000000,"seconds":0}}}
17
- {"testStepFinished":{"testCaseStartedId":"39","testStepId":"30","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":5000000,"seconds":0}}}
18
- {"testStepStarted":{"testCaseStartedId":"39","testStepId":"31","timestamp":{"nanos":6000000,"seconds":0}}}
19
- {"attachment":{"body":"We are logging some plain text (fail)","contentEncoding":"IDENTITY","mediaType":"text/x.cucumber.log+plain","testCaseStartedId":"39","testStepId":"31"}}
20
- {"testStepFinished":{"testCaseStartedId":"39","testStepId":"31","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"exception":{"message":"You asked me to fail","stackTrace":"samples/markdown/markdown.feature.md:24\nsamples/markdown/markdown.feature.md:38","type":"Error"},"message":"You asked me to fail\nsamples/markdown/markdown.feature.md:24\nsamples/markdown/markdown.feature.md:38","status":"FAILED"},"timestamp":{"nanos":7000000,"seconds":0}}}
21
- {"testStepStarted":{"testCaseStartedId":"39","testStepId":"32","timestamp":{"nanos":8000000,"seconds":0}}}
22
- {"testStepFinished":{"testCaseStartedId":"39","testStepId":"32","testStepResult":{"duration":{"nanos":0,"seconds":0},"status":"SKIPPED"},"timestamp":{"nanos":9000000,"seconds":0}}}
23
- {"testCaseFinished":{"testCaseStartedId":"39","timestamp":{"nanos":10000000,"seconds":0},"willBeRetried":false}}
24
- {"testCaseStarted":{"attempt":0,"id":"40","testCaseId":"38","timestamp":{"nanos":11000000,"seconds":0}}}
25
- {"testStepStarted":{"testCaseStartedId":"40","testStepId":"34","timestamp":{"nanos":12000000,"seconds":0}}}
26
- {"testStepFinished":{"testCaseStartedId":"40","testStepId":"34","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":13000000,"seconds":0}}}
27
- {"testStepStarted":{"testCaseStartedId":"40","testStepId":"35","timestamp":{"nanos":14000000,"seconds":0}}}
28
- {"testStepFinished":{"testCaseStartedId":"40","testStepId":"35","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":15000000,"seconds":0}}}
29
- {"testStepStarted":{"testCaseStartedId":"40","testStepId":"36","timestamp":{"nanos":16000000,"seconds":0}}}
30
- {"attachment":{"body":"We are logging some plain text (pass)","contentEncoding":"IDENTITY","mediaType":"text/x.cucumber.log+plain","testCaseStartedId":"40","testStepId":"36"}}
31
- {"testStepFinished":{"testCaseStartedId":"40","testStepId":"36","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":17000000,"seconds":0}}}
32
- {"testStepStarted":{"testCaseStartedId":"40","testStepId":"37","timestamp":{"nanos":18000000,"seconds":0}}}
33
- {"testStepFinished":{"testCaseStartedId":"40","testStepId":"37","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":19000000,"seconds":0}}}
34
- {"testCaseFinished":{"testCaseStartedId":"40","timestamp":{"nanos":20000000,"seconds":0},"willBeRetried":false}}
35
- {"testRunFinished":{"success":false,"testRunStartedId":"28","timestamp":{"nanos":21000000,"seconds":0}}}
@@ -1,12 +0,0 @@
1
- {"meta":{"ci":{"buildNumber":"154666429","git":{"remote":"https://github.com/cucumber-ltd/shouty.rb.git","revision":"99684bcacf01d95875834d87903dcb072306c9ad"},"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429"},"cpu":{"name":"arm64"},"implementation":{"name":"fake-cucumber","version":"18.1.0"},"os":{"name":"darwin","version":"24.5.0"},"protocolVersion":"28.0.0","runtime":{"name":"node.js","version":"24.4.0"}}}
2
- {"source":{"data":"Feature: minimal\n \n Cucumber doesn't execute this markdown, but @cucumber/react renders it.\n \n * This is\n * a bullet\n * list\n \n Scenario: cukes\n Given I have 42 cukes in my belly\n","mediaType":"text/x.cucumber.gherkin+plain","uri":"samples/minimal/minimal.feature"}}
3
- {"gherkinDocument":{"comments":[],"feature":{"children":[{"scenario":{"description":"","examples":[],"id":"2","keyword":"Scenario","location":{"column":3,"line":9},"name":"cukes","steps":[{"id":"1","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":10},"text":"I have 42 cukes in my belly"}],"tags":[]}}],"description":" Cucumber doesn't execute this markdown, but @cucumber/react renders it.\n \n * This is\n * a bullet\n * list","keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"minimal","tags":[]},"uri":"samples/minimal/minimal.feature"}}
4
- {"pickle":{"astNodeIds":["2"],"id":"4","language":"en","name":"cukes","steps":[{"astNodeIds":["1"],"id":"3","text":"I have 42 cukes in my belly","type":"Context"}],"tags":[],"uri":"samples/minimal/minimal.feature"}}
5
- {"stepDefinition":{"id":"0","pattern":{"source":"I have {int} cukes in my belly","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":3},"uri":"samples/minimal/minimal.feature.ts"}}}
6
- {"testRunStarted":{"id":"5","timestamp":{"nanos":0,"seconds":0}}}
7
- {"testCase":{"id":"7","pickleId":"4","testRunStartedId":"5","testSteps":[{"id":"6","pickleStepId":"3","stepDefinitionIds":["0"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"children":[],"start":7,"value":"42"},"parameterTypeName":"int"}]}]}]}}
8
- {"testCaseStarted":{"attempt":0,"id":"8","testCaseId":"7","timestamp":{"nanos":1000000,"seconds":0}}}
9
- {"testStepStarted":{"testCaseStartedId":"8","testStepId":"6","timestamp":{"nanos":2000000,"seconds":0}}}
10
- {"testStepFinished":{"testCaseStartedId":"8","testStepId":"6","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":3000000,"seconds":0}}}
11
- {"testCaseFinished":{"testCaseStartedId":"8","timestamp":{"nanos":4000000,"seconds":0},"willBeRetried":false}}
12
- {"testRunFinished":{"success":true,"testRunStartedId":"5","timestamp":{"nanos":5000000,"seconds":0}}}
@@ -1,13 +0,0 @@
1
- {"meta":{"ci":{"buildNumber":"154666429","git":{"remote":"https://github.com/cucumber-ltd/shouty.rb.git","revision":"99684bcacf01d95875834d87903dcb072306c9ad"},"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429"},"cpu":{"name":"arm64"},"implementation":{"name":"fake-cucumber","version":"18.1.0"},"os":{"name":"darwin","version":"24.5.0"},"protocolVersion":"28.0.0","runtime":{"name":"node.js","version":"24.4.0"}}}
2
- {"source":{"data":"Feature: Parameter Types\n Cucumber lets you define your own parameter types, which can be used\n in Cucumber Expressions.\n\n This lets you define a precise domain-specific vocabulary which can be used to\n generate a glossary with examples taken from your scenarios.\n\n Parameter types also enable you to transform strings and tables into different types.\n\n Scenario: Flight transformer\n Given LHR-CDG has been delayed\n","mediaType":"text/x.cucumber.gherkin+plain","uri":"samples/parameter-types/parameter-types.feature"}}
3
- {"gherkinDocument":{"comments":[],"feature":{"children":[{"scenario":{"description":"","examples":[],"id":"3","keyword":"Scenario","location":{"column":3,"line":10},"name":"Flight transformer","steps":[{"id":"2","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":11},"text":"LHR-CDG has been delayed"}],"tags":[]}}],"description":" Cucumber lets you define your own parameter types, which can be used\n in Cucumber Expressions.\n\n This lets you define a precise domain-specific vocabulary which can be used to\n generate a glossary with examples taken from your scenarios.\n\n Parameter types also enable you to transform strings and tables into different types.","keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"Parameter Types","tags":[]},"uri":"samples/parameter-types/parameter-types.feature"}}
4
- {"pickle":{"astNodeIds":["3"],"id":"5","language":"en","name":"Flight transformer","steps":[{"astNodeIds":["2"],"id":"4","text":"LHR-CDG has been delayed","type":"Context"}],"tags":[],"uri":"samples/parameter-types/parameter-types.feature"}}
5
- {"parameterType":{"id":"0","name":"flight","preferForRegularExpressionMatch":false,"regularExpressions":["([A-Z]{3})-([A-Z]{3})"],"sourceReference":{"location":{"line":8},"uri":"samples/parameter-types/parameter-types.feature.ts"},"useForSnippets":true}}
6
- {"stepDefinition":{"id":"1","pattern":{"source":"{flight} has been delayed","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":16},"uri":"samples/parameter-types/parameter-types.feature.ts"}}}
7
- {"testRunStarted":{"id":"6","timestamp":{"nanos":0,"seconds":0}}}
8
- {"testCase":{"id":"8","pickleId":"5","testRunStartedId":"6","testSteps":[{"id":"7","pickleStepId":"4","stepDefinitionIds":["1"],"stepMatchArgumentsLists":[{"stepMatchArguments":[{"group":{"children":[{"children":[],"start":0,"value":"LHR"},{"children":[],"start":4,"value":"CDG"}],"start":0,"value":"LHR-CDG"},"parameterTypeName":"flight"}]}]}]}}
9
- {"testCaseStarted":{"attempt":0,"id":"9","testCaseId":"8","timestamp":{"nanos":1000000,"seconds":0}}}
10
- {"testStepStarted":{"testCaseStartedId":"9","testStepId":"7","timestamp":{"nanos":2000000,"seconds":0}}}
11
- {"testStepFinished":{"testCaseStartedId":"9","testStepId":"7","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":3000000,"seconds":0}}}
12
- {"testCaseFinished":{"testCaseStartedId":"9","timestamp":{"nanos":4000000,"seconds":0},"willBeRetried":false}}
13
- {"testRunFinished":{"success":true,"testRunStartedId":"6","timestamp":{"nanos":5000000,"seconds":0}}}
@@ -1,30 +0,0 @@
1
- {"meta":{"ci":{"buildNumber":"154666429","git":{"remote":"https://github.com/cucumber-ltd/shouty.rb.git","revision":"99684bcacf01d95875834d87903dcb072306c9ad"},"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429"},"cpu":{"name":"arm64"},"implementation":{"name":"fake-cucumber","version":"18.1.0"},"os":{"name":"darwin","version":"24.5.0"},"protocolVersion":"28.0.0","runtime":{"name":"node.js","version":"24.4.0"}}}
2
- {"source":{"data":"Feature: Pending steps\n During development, step definitions can signal at runtime that they are\n not yet implemented (or \"pending\") by returning or throwing a particular\n value.\n\n This causes subsequent steps in the scenario to be skipped, and the overall\n result to be treated as a failure.\n\n Scenario: Unimplemented step signals pending status\n Given an unimplemented pending step\n\n Scenario: Steps before unimplemented steps are executed\n Given an implemented non-pending step\n And an unimplemented pending step\n\n Scenario: Steps after unimplemented steps are skipped\n Given an unimplemented pending step\n And an implemented step that is skipped\n","mediaType":"text/x.cucumber.gherkin+plain","uri":"samples/pending/pending.feature"}}
3
- {"gherkinDocument":{"comments":[],"feature":{"children":[{"scenario":{"description":"","examples":[],"id":"4","keyword":"Scenario","location":{"column":3,"line":9},"name":"Unimplemented step signals pending status","steps":[{"id":"3","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":10},"text":"an unimplemented pending step"}],"tags":[]}},{"scenario":{"description":"","examples":[],"id":"7","keyword":"Scenario","location":{"column":3,"line":12},"name":"Steps before unimplemented steps are executed","steps":[{"id":"5","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":13},"text":"an implemented non-pending step"},{"id":"6","keyword":"And ","keywordType":"Conjunction","location":{"column":5,"line":14},"text":"an unimplemented pending step"}],"tags":[]}},{"scenario":{"description":"","examples":[],"id":"10","keyword":"Scenario","location":{"column":3,"line":16},"name":"Steps after unimplemented steps are skipped","steps":[{"id":"8","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":17},"text":"an unimplemented pending step"},{"id":"9","keyword":"And ","keywordType":"Conjunction","location":{"column":5,"line":18},"text":"an implemented step that is skipped"}],"tags":[]}}],"description":" During development, step definitions can signal at runtime that they are\n not yet implemented (or \"pending\") by returning or throwing a particular\n value.\n\n This causes subsequent steps in the scenario to be skipped, and the overall\n result to be treated as a failure.","keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"Pending steps","tags":[]},"uri":"samples/pending/pending.feature"}}
4
- {"pickle":{"astNodeIds":["4"],"id":"12","language":"en","name":"Unimplemented step signals pending status","steps":[{"astNodeIds":["3"],"id":"11","text":"an unimplemented pending step","type":"Context"}],"tags":[],"uri":"samples/pending/pending.feature"}}
5
- {"pickle":{"astNodeIds":["7"],"id":"15","language":"en","name":"Steps before unimplemented steps are executed","steps":[{"astNodeIds":["5"],"id":"13","text":"an implemented non-pending step","type":"Context"},{"astNodeIds":["6"],"id":"14","text":"an unimplemented pending step","type":"Context"}],"tags":[],"uri":"samples/pending/pending.feature"}}
6
- {"pickle":{"astNodeIds":["10"],"id":"18","language":"en","name":"Steps after unimplemented steps are skipped","steps":[{"astNodeIds":["8"],"id":"16","text":"an unimplemented pending step","type":"Context"},{"astNodeIds":["9"],"id":"17","text":"an implemented step that is skipped","type":"Context"}],"tags":[],"uri":"samples/pending/pending.feature"}}
7
- {"stepDefinition":{"id":"0","pattern":{"source":"an implemented non-pending step","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":3},"uri":"samples/pending/pending.feature.ts"}}}
8
- {"stepDefinition":{"id":"1","pattern":{"source":"an implemented step that is skipped","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":7},"uri":"samples/pending/pending.feature.ts"}}}
9
- {"stepDefinition":{"id":"2","pattern":{"source":"an unimplemented pending step","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":11},"uri":"samples/pending/pending.feature.ts"}}}
10
- {"testRunStarted":{"id":"19","timestamp":{"nanos":0,"seconds":0}}}
11
- {"testCase":{"id":"21","pickleId":"12","testRunStartedId":"19","testSteps":[{"id":"20","pickleStepId":"11","stepDefinitionIds":["2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]}]}}
12
- {"testCase":{"id":"24","pickleId":"15","testRunStartedId":"19","testSteps":[{"id":"22","pickleStepId":"13","stepDefinitionIds":["0"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"23","pickleStepId":"14","stepDefinitionIds":["2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]}]}}
13
- {"testCase":{"id":"27","pickleId":"18","testRunStartedId":"19","testSteps":[{"id":"25","pickleStepId":"16","stepDefinitionIds":["2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]},{"id":"26","pickleStepId":"17","stepDefinitionIds":["1"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]}]}}
14
- {"testCaseStarted":{"attempt":0,"id":"28","testCaseId":"21","timestamp":{"nanos":1000000,"seconds":0}}}
15
- {"testStepStarted":{"testCaseStartedId":"28","testStepId":"20","timestamp":{"nanos":2000000,"seconds":0}}}
16
- {"testStepFinished":{"testCaseStartedId":"28","testStepId":"20","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"message":"TODO","status":"PENDING"},"timestamp":{"nanos":3000000,"seconds":0}}}
17
- {"testCaseFinished":{"testCaseStartedId":"28","timestamp":{"nanos":4000000,"seconds":0},"willBeRetried":false}}
18
- {"testCaseStarted":{"attempt":0,"id":"29","testCaseId":"24","timestamp":{"nanos":5000000,"seconds":0}}}
19
- {"testStepStarted":{"testCaseStartedId":"29","testStepId":"22","timestamp":{"nanos":6000000,"seconds":0}}}
20
- {"testStepFinished":{"testCaseStartedId":"29","testStepId":"22","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":7000000,"seconds":0}}}
21
- {"testStepStarted":{"testCaseStartedId":"29","testStepId":"23","timestamp":{"nanos":8000000,"seconds":0}}}
22
- {"testStepFinished":{"testCaseStartedId":"29","testStepId":"23","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"message":"TODO","status":"PENDING"},"timestamp":{"nanos":9000000,"seconds":0}}}
23
- {"testCaseFinished":{"testCaseStartedId":"29","timestamp":{"nanos":10000000,"seconds":0},"willBeRetried":false}}
24
- {"testCaseStarted":{"attempt":0,"id":"30","testCaseId":"27","timestamp":{"nanos":11000000,"seconds":0}}}
25
- {"testStepStarted":{"testCaseStartedId":"30","testStepId":"25","timestamp":{"nanos":12000000,"seconds":0}}}
26
- {"testStepFinished":{"testCaseStartedId":"30","testStepId":"25","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"message":"TODO","status":"PENDING"},"timestamp":{"nanos":13000000,"seconds":0}}}
27
- {"testStepStarted":{"testCaseStartedId":"30","testStepId":"26","timestamp":{"nanos":14000000,"seconds":0}}}
28
- {"testStepFinished":{"testCaseStartedId":"30","testStepId":"26","testStepResult":{"duration":{"nanos":0,"seconds":0},"status":"SKIPPED"},"timestamp":{"nanos":15000000,"seconds":0}}}
29
- {"testCaseFinished":{"testCaseStartedId":"30","timestamp":{"nanos":16000000,"seconds":0},"willBeRetried":false}}
30
- {"testRunFinished":{"success":false,"testRunStartedId":"19","timestamp":{"nanos":17000000,"seconds":0}}}
@@ -1,59 +0,0 @@
1
- {"meta":{"ci":{"buildNumber":"154666429","git":{"remote":"https://github.com/cucumber-ltd/shouty.rb.git","revision":"99684bcacf01d95875834d87903dcb072306c9ad"},"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429"},"cpu":{"name":"arm64"},"implementation":{"name":"fake-cucumber","version":"18.1.0"},"os":{"name":"darwin","version":"24.5.0"},"protocolVersion":"28.0.0","runtime":{"name":"node.js","version":"24.4.0"}}}
2
- {"source":{"data":"Feature: Retry\n Some Cucumber implementations support a Retry mechanism, where test cases that fail\n can be retried up to a limited number of attempts in the same test run.\n\n Non-passing statuses other than FAILED won't trigger a retry, as they are not\n going to pass however many times we attempt them.\n\n Scenario: Test cases that pass aren't retried\n Given a step that always passes\n\n Scenario: Test cases that fail are retried if within the --retry limit\n Given a step that passes the second time\n\n Scenario: Test cases that fail will continue to retry up to the --retry limit\n Given a step that passes the third time\n\n Scenario: Test cases won't retry after failing more than the --retry limit\n Given a step that always fails\n\n Scenario: Test cases won't retry when the status is UNDEFINED\n Given a non-existent step\n","mediaType":"text/x.cucumber.gherkin+plain","uri":"samples/retry/retry.feature"}}
3
- {"gherkinDocument":{"comments":[],"feature":{"children":[{"scenario":{"description":"","examples":[],"id":"5","keyword":"Scenario","location":{"column":3,"line":8},"name":"Test cases that pass aren't retried","steps":[{"id":"4","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":9},"text":"a step that always passes"}],"tags":[]}},{"scenario":{"description":"","examples":[],"id":"7","keyword":"Scenario","location":{"column":3,"line":11},"name":"Test cases that fail are retried if within the --retry limit","steps":[{"id":"6","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":12},"text":"a step that passes the second time"}],"tags":[]}},{"scenario":{"description":"","examples":[],"id":"9","keyword":"Scenario","location":{"column":3,"line":14},"name":"Test cases that fail will continue to retry up to the --retry limit","steps":[{"id":"8","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":15},"text":"a step that passes the third time"}],"tags":[]}},{"scenario":{"description":"","examples":[],"id":"11","keyword":"Scenario","location":{"column":3,"line":17},"name":"Test cases won't retry after failing more than the --retry limit","steps":[{"id":"10","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":18},"text":"a step that always fails"}],"tags":[]}},{"scenario":{"description":"","examples":[],"id":"13","keyword":"Scenario","location":{"column":3,"line":20},"name":"Test cases won't retry when the status is UNDEFINED","steps":[{"id":"12","keyword":"Given ","keywordType":"Context","location":{"column":5,"line":21},"text":"a non-existent step"}],"tags":[]}}],"description":" Some Cucumber implementations support a Retry mechanism, where test cases that fail\n can be retried up to a limited number of attempts in the same test run.\n\n Non-passing statuses other than FAILED won't trigger a retry, as they are not\n going to pass however many times we attempt them.","keyword":"Feature","language":"en","location":{"column":1,"line":1},"name":"Retry","tags":[]},"uri":"samples/retry/retry.feature"}}
4
- {"pickle":{"astNodeIds":["5"],"id":"15","language":"en","name":"Test cases that pass aren't retried","steps":[{"astNodeIds":["4"],"id":"14","text":"a step that always passes","type":"Context"}],"tags":[],"uri":"samples/retry/retry.feature"}}
5
- {"pickle":{"astNodeIds":["7"],"id":"17","language":"en","name":"Test cases that fail are retried if within the --retry limit","steps":[{"astNodeIds":["6"],"id":"16","text":"a step that passes the second time","type":"Context"}],"tags":[],"uri":"samples/retry/retry.feature"}}
6
- {"pickle":{"astNodeIds":["9"],"id":"19","language":"en","name":"Test cases that fail will continue to retry up to the --retry limit","steps":[{"astNodeIds":["8"],"id":"18","text":"a step that passes the third time","type":"Context"}],"tags":[],"uri":"samples/retry/retry.feature"}}
7
- {"pickle":{"astNodeIds":["11"],"id":"21","language":"en","name":"Test cases won't retry after failing more than the --retry limit","steps":[{"astNodeIds":["10"],"id":"20","text":"a step that always fails","type":"Context"}],"tags":[],"uri":"samples/retry/retry.feature"}}
8
- {"pickle":{"astNodeIds":["13"],"id":"23","language":"en","name":"Test cases won't retry when the status is UNDEFINED","steps":[{"astNodeIds":["12"],"id":"22","text":"a non-existent step","type":"Context"}],"tags":[],"uri":"samples/retry/retry.feature"}}
9
- {"stepDefinition":{"id":"0","pattern":{"source":"a step that always passes","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":3},"uri":"samples/retry/retry.feature.ts"}}}
10
- {"stepDefinition":{"id":"1","pattern":{"source":"a step that passes the second time","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":8},"uri":"samples/retry/retry.feature.ts"}}}
11
- {"stepDefinition":{"id":"2","pattern":{"source":"a step that passes the third time","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":16},"uri":"samples/retry/retry.feature.ts"}}}
12
- {"stepDefinition":{"id":"3","pattern":{"source":"a step that always fails","type":"CUCUMBER_EXPRESSION"},"sourceReference":{"location":{"line":23},"uri":"samples/retry/retry.feature.ts"}}}
13
- {"testRunStarted":{"id":"24","timestamp":{"nanos":0,"seconds":0}}}
14
- {"testCase":{"id":"26","pickleId":"15","testRunStartedId":"24","testSteps":[{"id":"25","pickleStepId":"14","stepDefinitionIds":["0"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]}]}}
15
- {"testCase":{"id":"28","pickleId":"17","testRunStartedId":"24","testSteps":[{"id":"27","pickleStepId":"16","stepDefinitionIds":["1"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]}]}}
16
- {"testCase":{"id":"30","pickleId":"19","testRunStartedId":"24","testSteps":[{"id":"29","pickleStepId":"18","stepDefinitionIds":["2"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]}]}}
17
- {"testCase":{"id":"32","pickleId":"21","testRunStartedId":"24","testSteps":[{"id":"31","pickleStepId":"20","stepDefinitionIds":["3"],"stepMatchArgumentsLists":[{"stepMatchArguments":[]}]}]}}
18
- {"testCase":{"id":"34","pickleId":"23","testRunStartedId":"24","testSteps":[{"id":"33","pickleStepId":"22","stepDefinitionIds":[],"stepMatchArgumentsLists":[]}]}}
19
- {"testCaseStarted":{"attempt":0,"id":"35","testCaseId":"26","timestamp":{"nanos":1000000,"seconds":0}}}
20
- {"testStepStarted":{"testCaseStartedId":"35","testStepId":"25","timestamp":{"nanos":2000000,"seconds":0}}}
21
- {"testStepFinished":{"testCaseStartedId":"35","testStepId":"25","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":3000000,"seconds":0}}}
22
- {"testCaseFinished":{"testCaseStartedId":"35","timestamp":{"nanos":4000000,"seconds":0},"willBeRetried":false}}
23
- {"testCaseStarted":{"attempt":0,"id":"36","testCaseId":"28","timestamp":{"nanos":5000000,"seconds":0}}}
24
- {"testStepStarted":{"testCaseStartedId":"36","testStepId":"27","timestamp":{"nanos":6000000,"seconds":0}}}
25
- {"testStepFinished":{"testCaseStartedId":"36","testStepId":"27","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"exception":{"message":"Exception in step","stackTrace":"samples/retry/retry.feature:12","type":"Error"},"message":"Exception in step\nsamples/retry/retry.feature:12","status":"FAILED"},"timestamp":{"nanos":7000000,"seconds":0}}}
26
- {"testCaseFinished":{"testCaseStartedId":"36","timestamp":{"nanos":8000000,"seconds":0},"willBeRetried":true}}
27
- {"testCaseStarted":{"attempt":1,"id":"37","testCaseId":"28","timestamp":{"nanos":9000000,"seconds":0}}}
28
- {"testStepStarted":{"testCaseStartedId":"37","testStepId":"27","timestamp":{"nanos":10000000,"seconds":0}}}
29
- {"testStepFinished":{"testCaseStartedId":"37","testStepId":"27","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":11000000,"seconds":0}}}
30
- {"testCaseFinished":{"testCaseStartedId":"37","timestamp":{"nanos":12000000,"seconds":0},"willBeRetried":false}}
31
- {"testCaseStarted":{"attempt":0,"id":"38","testCaseId":"30","timestamp":{"nanos":13000000,"seconds":0}}}
32
- {"testStepStarted":{"testCaseStartedId":"38","testStepId":"29","timestamp":{"nanos":14000000,"seconds":0}}}
33
- {"testStepFinished":{"testCaseStartedId":"38","testStepId":"29","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"exception":{"message":"Exception in step","stackTrace":"samples/retry/retry.feature:15","type":"Error"},"message":"Exception in step\nsamples/retry/retry.feature:15","status":"FAILED"},"timestamp":{"nanos":15000000,"seconds":0}}}
34
- {"testCaseFinished":{"testCaseStartedId":"38","timestamp":{"nanos":16000000,"seconds":0},"willBeRetried":true}}
35
- {"testCaseStarted":{"attempt":1,"id":"39","testCaseId":"30","timestamp":{"nanos":17000000,"seconds":0}}}
36
- {"testStepStarted":{"testCaseStartedId":"39","testStepId":"29","timestamp":{"nanos":18000000,"seconds":0}}}
37
- {"testStepFinished":{"testCaseStartedId":"39","testStepId":"29","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"exception":{"message":"Exception in step","stackTrace":"samples/retry/retry.feature:15","type":"Error"},"message":"Exception in step\nsamples/retry/retry.feature:15","status":"FAILED"},"timestamp":{"nanos":19000000,"seconds":0}}}
38
- {"testCaseFinished":{"testCaseStartedId":"39","timestamp":{"nanos":20000000,"seconds":0},"willBeRetried":true}}
39
- {"testCaseStarted":{"attempt":2,"id":"40","testCaseId":"30","timestamp":{"nanos":21000000,"seconds":0}}}
40
- {"testStepStarted":{"testCaseStartedId":"40","testStepId":"29","timestamp":{"nanos":22000000,"seconds":0}}}
41
- {"testStepFinished":{"testCaseStartedId":"40","testStepId":"29","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"status":"PASSED"},"timestamp":{"nanos":23000000,"seconds":0}}}
42
- {"testCaseFinished":{"testCaseStartedId":"40","timestamp":{"nanos":24000000,"seconds":0},"willBeRetried":false}}
43
- {"testCaseStarted":{"attempt":0,"id":"41","testCaseId":"32","timestamp":{"nanos":25000000,"seconds":0}}}
44
- {"testStepStarted":{"testCaseStartedId":"41","testStepId":"31","timestamp":{"nanos":26000000,"seconds":0}}}
45
- {"testStepFinished":{"testCaseStartedId":"41","testStepId":"31","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"exception":{"message":"Exception in step","stackTrace":"samples/retry/retry.feature:18","type":"Error"},"message":"Exception in step\nsamples/retry/retry.feature:18","status":"FAILED"},"timestamp":{"nanos":27000000,"seconds":0}}}
46
- {"testCaseFinished":{"testCaseStartedId":"41","timestamp":{"nanos":28000000,"seconds":0},"willBeRetried":true}}
47
- {"testCaseStarted":{"attempt":1,"id":"42","testCaseId":"32","timestamp":{"nanos":29000000,"seconds":0}}}
48
- {"testStepStarted":{"testCaseStartedId":"42","testStepId":"31","timestamp":{"nanos":30000000,"seconds":0}}}
49
- {"testStepFinished":{"testCaseStartedId":"42","testStepId":"31","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"exception":{"message":"Exception in step","stackTrace":"samples/retry/retry.feature:18","type":"Error"},"message":"Exception in step\nsamples/retry/retry.feature:18","status":"FAILED"},"timestamp":{"nanos":31000000,"seconds":0}}}
50
- {"testCaseFinished":{"testCaseStartedId":"42","timestamp":{"nanos":32000000,"seconds":0},"willBeRetried":true}}
51
- {"testCaseStarted":{"attempt":2,"id":"43","testCaseId":"32","timestamp":{"nanos":33000000,"seconds":0}}}
52
- {"testStepStarted":{"testCaseStartedId":"43","testStepId":"31","timestamp":{"nanos":34000000,"seconds":0}}}
53
- {"testStepFinished":{"testCaseStartedId":"43","testStepId":"31","testStepResult":{"duration":{"nanos":1000000,"seconds":0},"exception":{"message":"Exception in step","stackTrace":"samples/retry/retry.feature:18","type":"Error"},"message":"Exception in step\nsamples/retry/retry.feature:18","status":"FAILED"},"timestamp":{"nanos":35000000,"seconds":0}}}
54
- {"testCaseFinished":{"testCaseStartedId":"43","timestamp":{"nanos":36000000,"seconds":0},"willBeRetried":false}}
55
- {"testCaseStarted":{"attempt":0,"id":"44","testCaseId":"34","timestamp":{"nanos":37000000,"seconds":0}}}
56
- {"testStepStarted":{"testCaseStartedId":"44","testStepId":"33","timestamp":{"nanos":38000000,"seconds":0}}}
57
- {"testStepFinished":{"testCaseStartedId":"44","testStepId":"33","testStepResult":{"duration":{"nanos":0,"seconds":0},"status":"UNDEFINED"},"timestamp":{"nanos":39000000,"seconds":0}}}
58
- {"testCaseFinished":{"testCaseStartedId":"44","timestamp":{"nanos":40000000,"seconds":0},"willBeRetried":false}}
59
- {"testRunFinished":{"success":false,"testRunStartedId":"24","timestamp":{"nanos":41000000,"seconds":0}}}