Each supported Cucumber version has a JSON Schema in schemas/{Implementation}.json
.
A Cucumber JSON document originating from a supported version can then be converted to a new JSON document that conforms with the canonical Cucumber JSON schema.
This is done by iterating over each of the implementation JSON schemas and attempting to validate the document.
As soon as the document passes validation of an implementation, it is converted to canonical Cucumber JSON with a
{implementation}Converter
function.
If the document does not validate against any of the schemas, an error is thrown.
Note that it is possible for a Cucumber JSON document generated by e.g. Cucumber-JVM to pass validation against a different implementation's JSON schema (e.g. Cucumber-Ruby). This is expected - certain documents might validate against multiple schemas.