这个项目能做什么

Cucumber Messages 是一种消息协议,旨在表示 Cucumber 的结果和其他信息。它旨在解耦 Cucumber 平台的各个组件,带来诸多优势,例如每个组件只需了解消息的一个子集、将 Gherkin 与执行组件解耦,以及未来支持 Markdown 和 Excel 等其他格式。 该协议包含每种消息类型的 JSON Schema 定义,位于 jsonschema 目录中,详细描述见 messages.md。在存储或传输时,消息被编码为 NDJSON(换行分隔 JSON),形成消息流,其中每条消息都是一个 Envelope。 特定语言的实现由 JSON Schema 生成,可用于 .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+ 使用消息格式化器发出。其他语言的发出器尚未实现。 该协议解决了历史 JSON 和 JUnit 格式化器的缺点,包括高内存占用、缺乏正式 schema 以及信息有限。它支持连续流式传输较小的消息,减少内存使用并允许实时处理。它还包含更丰富的信息,例如原始 Gherkin 源代码、抽象语法树、步骤定义和参数类型,这些对于丰富的报告和分析至关重要。 示例可在 compatibility-kit 项目中找到。实用工具包括 @cucumber/react,这是一个用于渲染 Cucumber Messages 的 React 组件,由 Cucumber Reports 内部使用。