Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
827 changes: 718 additions & 109 deletions devkit/package-lock.json

Large diffs are not rendered by default.

20 changes: 10 additions & 10 deletions devkit/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,27 +27,27 @@
},
"homepage": "https://github.com/cucumber/compatibility-kit#readme",
"dependencies": {
"@cucumber/ci-environment": "^13.0.0",
"@cucumber/ci-environment": "^14.0.0",
"@cucumber/core": "^0.9.0",
"@cucumber/cucumber-expressions": "^19.0.0",
"@cucumber/cucumber-expressions": "^20.0.0",
"@cucumber/fake-cucumber": "file:./",
"@cucumber/gherkin": "^39.0.0",
"@cucumber/gherkin-streams": "^6.0.0",
"@cucumber/gherkin-utils": "^11.0.0",
"@cucumber/message-streams": "^4.0.1",
"@cucumber/messages": "^32.0.0",
"@cucumber/query": "^15.0.0",
"@cucumber/tag-expressions": "^9.0.0",
"@cucumber/gherkin": "^40.0.0",
"@cucumber/gherkin-streams": "^7.0.0",
"@cucumber/gherkin-utils": "^12.0.0",
"@cucumber/message-streams": "^5.0.0",
"@cucumber/messages": "^33.0.0",
"@cucumber/query": "^16.0.0",
"@cucumber/tag-expressions": "^10.0.0",
"globby": "^16.0.0",
"stack-utils": "2.0.6"
},
"devDependencies": {
"@biomejs/biome": "^2.4.13",
"@cucumber/biome-config": "github:cucumber/biome-config#v0.2.1",
"@hyperjump/json-schema": "^1.17.6",
"@tsconfig/node22": "^22.0.2",
"@types/node": "^24.0.0",
"@types/stack-utils": "2.0.3",
"ajv": "^8.11.0",
"shx": "^0.4.0",
"tsx": "^4.20.3",
"typescript": "^6.0.0",
Expand Down
2 changes: 1 addition & 1 deletion devkit/samples/all-statuses/all-statuses.ndjson
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{"meta":{"protocolVersion":"31.1.0","implementation":{"name":"fake-cucumber","version":"123.45.6"},"cpu":{"name":"arm64"},"os":{"name":"darwin","version":"24.5.0"},"runtime":{"name":"Node.js","version":"24.4.1"},"ci":{"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429","buildNumber":"154666429","git":{"revision":"99684bcacf01d95875834d87903dcb072306c9ad","remote":"https://github.com/cucumber-ltd/shouty.rb.git","branch":"main"}}}}
{"meta":{"protocolVersion":"33.0.2","implementation":{"name":"fake-cucumber","version":"123.45.6"},"cpu":{"name":"arm64"},"os":{"name":"darwin","version":"24.5.0"},"runtime":{"name":"Node.js","version":"24.4.1"},"ci":{"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429","buildNumber":"154666429","git":{"revision":"99684bcacf01d95875834d87903dcb072306c9ad","remote":"https://github.com/cucumber-ltd/shouty.rb.git","branch":"main"}}}}
{"source":{"data":"Feature: All statuses\n\n This sample exercises all the possible result statuses, which is useful\n for testing formatters and other tools.\n\n Scenario: Passing\n Given a step\n And a step\n And a step\n\n Scenario: Failing\n Given a step\n And a failing step\n And a step\n\n Scenario: Pending\n Given a step\n And a pending step\n And a step\n\n Scenario: Skipped\n Given a step\n And a skipped step\n And a step\n\n Scenario: Undefined\n Given a step\n And an undefined step\n And a step\n\n Scenario: Ambiguous\n Given a step\n And an ambiguous step\n And a step","uri":"samples/all-statuses/all-statuses.feature","mediaType":"text/x.cucumber.gherkin+plain"}}
{"gherkinDocument":{"feature":{"tags":[],"location":{"line":1,"column":1},"language":"en","keyword":"Feature","name":"All statuses","description":" This sample exercises all the possible result statuses, which is useful\n for testing formatters and other tools.","children":[{"scenario":{"id":"3","tags":[],"location":{"line":6,"column":3},"keyword":"Scenario","name":"Passing","description":"","steps":[{"id":"0","location":{"line":7,"column":5},"keyword":"Given ","keywordType":"Context","text":"a step"},{"id":"1","location":{"line":8,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"a step"},{"id":"2","location":{"line":9,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"a step"}],"examples":[]}},{"scenario":{"id":"7","tags":[],"location":{"line":11,"column":3},"keyword":"Scenario","name":"Failing","description":"","steps":[{"id":"4","location":{"line":12,"column":5},"keyword":"Given ","keywordType":"Context","text":"a step"},{"id":"5","location":{"line":13,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"a failing step"},{"id":"6","location":{"line":14,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"a step"}],"examples":[]}},{"scenario":{"id":"11","tags":[],"location":{"line":16,"column":3},"keyword":"Scenario","name":"Pending","description":"","steps":[{"id":"8","location":{"line":17,"column":5},"keyword":"Given ","keywordType":"Context","text":"a step"},{"id":"9","location":{"line":18,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"a pending step"},{"id":"10","location":{"line":19,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"a step"}],"examples":[]}},{"scenario":{"id":"15","tags":[],"location":{"line":21,"column":3},"keyword":"Scenario","name":"Skipped","description":"","steps":[{"id":"12","location":{"line":22,"column":5},"keyword":"Given ","keywordType":"Context","text":"a step"},{"id":"13","location":{"line":23,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"a skipped step"},{"id":"14","location":{"line":24,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"a step"}],"examples":[]}},{"scenario":{"id":"19","tags":[],"location":{"line":26,"column":3},"keyword":"Scenario","name":"Undefined","description":"","steps":[{"id":"16","location":{"line":27,"column":5},"keyword":"Given ","keywordType":"Context","text":"a step"},{"id":"17","location":{"line":28,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"an undefined step"},{"id":"18","location":{"line":29,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"a step"}],"examples":[]}},{"scenario":{"id":"23","tags":[],"location":{"line":31,"column":3},"keyword":"Scenario","name":"Ambiguous","description":"","steps":[{"id":"20","location":{"line":32,"column":5},"keyword":"Given ","keywordType":"Context","text":"a step"},{"id":"21","location":{"line":33,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"an ambiguous step"},{"id":"22","location":{"line":34,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"a step"}],"examples":[]}}]},"comments":[],"uri":"samples/all-statuses/all-statuses.feature"}}
{"pickle":{"id":"27","uri":"samples/all-statuses/all-statuses.feature","location":{"line":6,"column":3},"astNodeIds":["3"],"tags":[],"name":"Passing","language":"en","steps":[{"id":"24","text":"a step","type":"Context","astNodeIds":["0"]},{"id":"25","text":"a step","type":"Context","astNodeIds":["1"]},{"id":"26","text":"a step","type":"Context","astNodeIds":["2"]}]}}
Expand Down
2 changes: 1 addition & 1 deletion devkit/samples/ambiguous/ambiguous.ndjson
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{"meta":{"protocolVersion":"31.1.0","implementation":{"name":"fake-cucumber","version":"123.45.6"},"cpu":{"name":"arm64"},"os":{"name":"darwin","version":"24.5.0"},"runtime":{"name":"Node.js","version":"24.4.1"},"ci":{"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429","buildNumber":"154666429","git":{"revision":"99684bcacf01d95875834d87903dcb072306c9ad","remote":"https://github.com/cucumber-ltd/shouty.rb.git","branch":"main"}}}}
{"meta":{"protocolVersion":"33.0.2","implementation":{"name":"fake-cucumber","version":"123.45.6"},"cpu":{"name":"arm64"},"os":{"name":"darwin","version":"24.5.0"},"runtime":{"name":"Node.js","version":"24.4.1"},"ci":{"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429","buildNumber":"154666429","git":{"revision":"99684bcacf01d95875834d87903dcb072306c9ad","remote":"https://github.com/cucumber-ltd/shouty.rb.git","branch":"main"}}}}
{"source":{"data":"Feature: Ambiguous steps\n Multiple step definitions that match a pickle step result in an AMBIGUOUS status, since Cucumber cannot determine\n which one to execute.\n\n Scenario: Multiple step definitions for a step\n Given a step with multiple definitions\n","uri":"samples/ambiguous/ambiguous.feature","mediaType":"text/x.cucumber.gherkin+plain"}}
{"gherkinDocument":{"feature":{"tags":[],"location":{"line":1,"column":1},"language":"en","keyword":"Feature","name":"Ambiguous steps","description":" Multiple step definitions that match a pickle step result in an AMBIGUOUS status, since Cucumber cannot determine\n which one to execute.","children":[{"scenario":{"id":"1","tags":[],"location":{"line":5,"column":3},"keyword":"Scenario","name":"Multiple step definitions for a step","description":"","steps":[{"id":"0","location":{"line":6,"column":5},"keyword":"Given ","keywordType":"Context","text":"a step with multiple definitions"}],"examples":[]}}]},"comments":[],"uri":"samples/ambiguous/ambiguous.feature"}}
{"pickle":{"id":"3","uri":"samples/ambiguous/ambiguous.feature","location":{"line":5,"column":3},"astNodeIds":["1"],"tags":[],"name":"Multiple step definitions for a step","language":"en","steps":[{"id":"2","text":"a step with multiple definitions","type":"Context","astNodeIds":["0"]}]}}
Expand Down
2 changes: 1 addition & 1 deletion devkit/samples/attachments/attachments.ndjson
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{"meta":{"protocolVersion":"31.1.0","implementation":{"name":"fake-cucumber","version":"123.45.6"},"cpu":{"name":"arm64"},"os":{"name":"darwin","version":"24.5.0"},"runtime":{"name":"Node.js","version":"24.4.1"},"ci":{"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429","buildNumber":"154666429","git":{"revision":"99684bcacf01d95875834d87903dcb072306c9ad","remote":"https://github.com/cucumber-ltd/shouty.rb.git","branch":"main"}}}}
{"meta":{"protocolVersion":"33.0.2","implementation":{"name":"fake-cucumber","version":"123.45.6"},"cpu":{"name":"arm64"},"os":{"name":"darwin","version":"24.5.0"},"runtime":{"name":"Node.js","version":"24.4.1"},"ci":{"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429","buildNumber":"154666429","git":{"revision":"99684bcacf01d95875834d87903dcb072306c9ad","remote":"https://github.com/cucumber-ltd/shouty.rb.git","branch":"main"}}}}
{"source":{"data":"Feature: Attachments\n It is sometimes useful to take a screenshot while a scenario runs or capture some logs.\n\n Cucumber lets you `attach` arbitrary files during execution, and you can\n specify a content type for the contents.\n\n Formatters can then render these attachments in reports.\n\n Attachments must have a body and a content type.\n\n Scenario: Strings can be attached with a media type\n Beware that some formatters such as the html formatter use the media type\n to determine how to display an attachment.\n\n When the string \"hello\" is attached as \"application/octet-stream\"\n\n Scenario: Log text\n When the string \"hello\" is logged\n\n Scenario: Log ANSI coloured text\n When text with ANSI escapes is logged\n\n Scenario: Log JSON\n When the following string is attached as \"application/json\":\n ```\n {\"message\": \"The <b>big</b> question\", \"foo\": \"bar\"}\n ```\n\n Scenario: Byte arrays are base64-encoded regardless of media type\n When an array with 10 bytes is attached as \"text/plain\"\n\n Scenario: Attaching PDFs with a different filename\n When a PDF document is attached and renamed\n\n Scenario: Attaching URIs\n When a link to \"https://cucumber.io\" is attached\n\n Scenario: Attaching during a failed step\n When the string \"hello\" is attached as \"application/octet-stream\" before a failure\n","uri":"samples/attachments/attachments.feature","mediaType":"text/x.cucumber.gherkin+plain"}}
{"gherkinDocument":{"feature":{"tags":[],"location":{"line":1,"column":1},"language":"en","keyword":"Feature","name":"Attachments","description":" It is sometimes useful to take a screenshot while a scenario runs or capture some logs.\n\n Cucumber lets you `attach` arbitrary files during execution, and you can\n specify a content type for the contents.\n\n Formatters can then render these attachments in reports.\n\n Attachments must have a body and a content type.","children":[{"scenario":{"id":"1","tags":[],"location":{"line":11,"column":3},"keyword":"Scenario","name":"Strings can be attached with a media type","description":" Beware that some formatters such as the html formatter use the media type\n to determine how to display an attachment.","steps":[{"id":"0","location":{"line":15,"column":5},"keyword":"When ","keywordType":"Action","text":"the string \"hello\" is attached as \"application/octet-stream\""}],"examples":[]}},{"scenario":{"id":"3","tags":[],"location":{"line":17,"column":3},"keyword":"Scenario","name":"Log text","description":"","steps":[{"id":"2","location":{"line":18,"column":5},"keyword":"When ","keywordType":"Action","text":"the string \"hello\" is logged"}],"examples":[]}},{"scenario":{"id":"5","tags":[],"location":{"line":20,"column":3},"keyword":"Scenario","name":"Log ANSI coloured text","description":"","steps":[{"id":"4","location":{"line":21,"column":5},"keyword":"When ","keywordType":"Action","text":"text with ANSI escapes is logged"}],"examples":[]}},{"scenario":{"id":"7","tags":[],"location":{"line":23,"column":3},"keyword":"Scenario","name":"Log JSON","description":"","steps":[{"id":"6","location":{"line":24,"column":6},"keyword":"When ","keywordType":"Action","text":"the following string is attached as \"application/json\":","docString":{"location":{"line":25,"column":8},"content":"{\"message\": \"The <b>big</b> question\", \"foo\": \"bar\"}","delimiter":"```"}}],"examples":[]}},{"scenario":{"id":"9","tags":[],"location":{"line":29,"column":3},"keyword":"Scenario","name":"Byte arrays are base64-encoded regardless of media type","description":"","steps":[{"id":"8","location":{"line":30,"column":5},"keyword":"When ","keywordType":"Action","text":"an array with 10 bytes is attached as \"text/plain\""}],"examples":[]}},{"scenario":{"id":"11","tags":[],"location":{"line":32,"column":3},"keyword":"Scenario","name":"Attaching PDFs with a different filename","description":"","steps":[{"id":"10","location":{"line":33,"column":5},"keyword":"When ","keywordType":"Action","text":"a PDF document is attached and renamed"}],"examples":[]}},{"scenario":{"id":"13","tags":[],"location":{"line":35,"column":3},"keyword":"Scenario","name":"Attaching URIs","description":"","steps":[{"id":"12","location":{"line":36,"column":5},"keyword":"When ","keywordType":"Action","text":"a link to \"https://cucumber.io\" is attached"}],"examples":[]}},{"scenario":{"id":"15","tags":[],"location":{"line":38,"column":3},"keyword":"Scenario","name":"Attaching during a failed step","description":"","steps":[{"id":"14","location":{"line":39,"column":5},"keyword":"When ","keywordType":"Action","text":"the string \"hello\" is attached as \"application/octet-stream\" before a failure"}],"examples":[]}}]},"comments":[],"uri":"samples/attachments/attachments.feature"}}
{"pickle":{"id":"17","uri":"samples/attachments/attachments.feature","location":{"line":11,"column":3},"astNodeIds":["1"],"tags":[],"name":"Strings can be attached with a media type","language":"en","steps":[{"id":"16","text":"the string \"hello\" is attached as \"application/octet-stream\"","type":"Action","astNodeIds":["0"]}]}}
Expand Down
2 changes: 1 addition & 1 deletion devkit/samples/backgrounds/backgrounds.ndjson
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{"meta":{"protocolVersion":"31.1.0","implementation":{"name":"fake-cucumber","version":"123.45.6"},"cpu":{"name":"arm64"},"os":{"name":"darwin","version":"24.5.0"},"runtime":{"name":"Node.js","version":"24.4.1"},"ci":{"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429","buildNumber":"154666429","git":{"revision":"99684bcacf01d95875834d87903dcb072306c9ad","remote":"https://github.com/cucumber-ltd/shouty.rb.git","branch":"main"}}}}
{"meta":{"protocolVersion":"33.0.2","implementation":{"name":"fake-cucumber","version":"123.45.6"},"cpu":{"name":"arm64"},"os":{"name":"darwin","version":"24.5.0"},"runtime":{"name":"Node.js","version":"24.4.1"},"ci":{"name":"GitHub Actions","url":"https://github.com/cucumber-ltd/shouty.rb/actions/runs/154666429","buildNumber":"154666429","git":{"revision":"99684bcacf01d95875834d87903dcb072306c9ad","remote":"https://github.com/cucumber-ltd/shouty.rb.git","branch":"main"}}}}
{"source":{"data":"Feature: Backgrounds\n Though not recommended, Backgrounds can be used to share context steps between Scenarios. The Background steps\n are prepended to the steps in each Scenario when they are compiled to Pickles. Only one Background at the Feature\n level is supported.\n\n Background:\n Given an order for \"eggs\"\n And an order for \"milk\"\n And an order for \"bread\"\n\n Scenario: one scenario\n When an action\n Then an outcome\n\n Scenario: another scenario\n When an action\n Then an outcome","uri":"samples/backgrounds/backgrounds.feature","mediaType":"text/x.cucumber.gherkin+plain"}}
{"gherkinDocument":{"feature":{"tags":[],"location":{"line":1,"column":1},"language":"en","keyword":"Feature","name":"Backgrounds","description":" Though not recommended, Backgrounds can be used to share context steps between Scenarios. The Background steps\n are prepended to the steps in each Scenario when they are compiled to Pickles. Only one Background at the Feature\n level is supported.","children":[{"background":{"id":"3","location":{"line":6,"column":3},"keyword":"Background","name":"","description":"","steps":[{"id":"0","location":{"line":7,"column":5},"keyword":"Given ","keywordType":"Context","text":"an order for \"eggs\""},{"id":"1","location":{"line":8,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"an order for \"milk\""},{"id":"2","location":{"line":9,"column":5},"keyword":"And ","keywordType":"Conjunction","text":"an order for \"bread\""}]}},{"scenario":{"id":"6","tags":[],"location":{"line":11,"column":3},"keyword":"Scenario","name":"one scenario","description":"","steps":[{"id":"4","location":{"line":12,"column":5},"keyword":"When ","keywordType":"Action","text":"an action"},{"id":"5","location":{"line":13,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"an outcome"}],"examples":[]}},{"scenario":{"id":"9","tags":[],"location":{"line":15,"column":3},"keyword":"Scenario","name":"another scenario","description":"","steps":[{"id":"7","location":{"line":16,"column":5},"keyword":"When ","keywordType":"Action","text":"an action"},{"id":"8","location":{"line":17,"column":5},"keyword":"Then ","keywordType":"Outcome","text":"an outcome"}],"examples":[]}}]},"comments":[],"uri":"samples/backgrounds/backgrounds.feature"}}
{"pickle":{"id":"15","uri":"samples/backgrounds/backgrounds.feature","location":{"line":11,"column":3},"astNodeIds":["6"],"tags":[],"name":"one scenario","language":"en","steps":[{"id":"10","text":"an order for \"eggs\"","type":"Context","astNodeIds":["0"]},{"id":"11","text":"an order for \"milk\"","type":"Context","astNodeIds":["1"]},{"id":"12","text":"an order for \"bread\"","type":"Context","astNodeIds":["2"]},{"id":"13","text":"an action","type":"Action","astNodeIds":["4"]},{"id":"14","text":"an outcome","type":"Outcome","astNodeIds":["5"]}]}}
Expand Down
Loading
Loading