このプロジェクトについて

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 MessagesをレンダリングするためのReactコンポーネントである@cucumber/reactが含まれており、Cucumber Reportsで内部的に使用されています。