Об этом проекте

Cucumber Messages — это протокол сообщений, предназначенный для представления результатов и другой информации от Cucumber. Его цель — развязать различные компоненты платформы Cucumber, что даёт такие преимущества, как необходимость для каждого компонента знать лишь подмножество сообщений, отделение Gherkin от компонента выполнения и возможность будущей поддержки других форматов, таких как Markdown и Excel. Протокол включает определения JSON Schema для каждого типа сообщений, расположенные в каталоге jsonschema, с подробными описаниями в messages.md. При хранении или передаче сообщения кодируются как NDJSON (Newline Delimited JSON), образуя поток сообщений, где каждое сообщение является Envelope. Реализации для конкретных языков генерируются из JSON-схем и доступны для .NET, Dart, Java, JavaScript, Perl, PHP, Python и Ruby. Они автоматически выпускаются для каждой версии с помощью polyglot-release. Cucumber Messages генерируются Cucumber-JVM 6.0.0+, Cucumber-Ruby 4.0.0+, Cucumber.js 7.0.0+ и ReqnRoll 3.0.0+ с использованием message formatter. Эмиттеры для других языков пока не реализованы. Протокол устраняет недостатки исторических форматтеров JSON и JUnit, включая высокое потребление памяти, отсутствие формальной схемы и ограниченность информации. Он обеспечивает непрерывную потоковую передачу меньших сообщений, снижая использование памяти и позволяя обрабатывать данные в реальном времени. Он также включает более богатую информацию, такую как исходный код Gherkin, абстрактное синтаксическое дерево, определения шагов и типы параметров, что необходимо для насыщенных отчётов и аналитики. Примеры доступны в проекте compatibility-kit. Утилиты включают @cucumber/react — React-компонент для рендеринга Cucumber Messages, используемый внутри Cucumber Reports.