Gathering detailed insights and metrics for @cucumber/messages
Gathering detailed insights and metrics for @cucumber/messages
Gathering detailed insights and metrics for @cucumber/messages
Gathering detailed insights and metrics for @cucumber/messages
A message protocol for representing results and other information from Cucumber
npm install @cucumber/messages
Module System
Min. Node Version
Typescript Support
Node Version
NPM Version
21 Stars
1,698 Commits
19 Forks
71 Watching
16 Branches
146 Contributors
Updated on 28 Nov 2024
C# (19.2%)
PHP (18.28%)
Java (15.76%)
C++ (11.37%)
Ruby (11.26%)
CMake (7.91%)
Perl (7.15%)
HTML (2.87%)
TypeScript (1.91%)
Go (1.9%)
Makefile (1.55%)
Elixir (0.73%)
Dockerfile (0.07%)
JavaScript (0.03%)
Cumulative downloads
Total Downloads
Last day
-2.7%
679,523
Compared to previous day
Last week
3.5%
3,802,519
Compared to previous week
Last month
10.2%
15,733,124
Compared to previous month
Last year
91.7%
139,550,573
Compared to previous year
4
7
Cucumber Messages is a message protocol for representing results and other information from Cucumber. The protocol aims to decouple various components of the Cucumber platform, with the following advantages:
Note: Markdown and Excel formats are currently not supported and mentioned here as potential future alternative languages to express BDD scenarios.
The jsonschema directory contains JSON Schema definitions for each message type.
See messages.md for a detailed description of each message type.
When Cucumber Messages are stored in a file or sent over a network, they are encoded as NDJSON. We call this a message stream.
Each message in a message stream is of type Envelope.
Each subdirectory defines language-specific implementations of these messages, generated from the JSON schemas. The current implementations are:
There is also 1 subdirectory for Elixir which contains the legacy implementation which was largely driven by protobuf. This is currently not implemented or tested / integrated into our CI and will require the process of porting over to the JSON schema protocol.
Cucumber Messages are currently sent by the following versions of Cucumber (using the message
formatter):
6.0.0
and later4.0.0
and later7.0.0
and laterMessages emitters for the other Cucumber languages (e.g. Perl) are not yet implemented.
Cucumber needs to produce results in a machine-readable format so that other tools can generate reports.
Historically, Cucumber did this with the json
and junit
formatters.
These formats however, have several shortcomings that are now addressed by using Cucumber Messages.
The json
formatter is now in maintenance mode for these implementations, and Messages is the preferred standard.
See utilities for a list of tools that may help with backward and forward compatibility
with the json
format.
JSON and XML production/consumption is done by serialising/deserialising an object graph. For "big" Cucumber runs this graph may consume a considerable amount of RAM, in particular if several large attachments (screenshots) are attached.
This can cause out of memory errors, aborting Cucumber runs or reporting jobs. It also means that no results can be consumed by downstream processors until the last scenario has finished.
With Cucumber Messages, several messages containing smaller pieces of information are emitted continuously to a stream (NDJSON, see above), avoiding high memory consumption and enabling real-time processing of results.
The JSON reporter does not have a formal schema. This has led to slightly inconsistent implementations of the JSON formatter in various Cucumber implementations. Consumers of the JSON format have to anticipate and detect these inconsistencies and try to cope with them.
The junit
XML format can only contain very limited information such as test case name and status.
While there isn't an official schema for JUnit XML, there are a few defacto ones around which are very limited.
The json
format represents the following information:
embeddings
)However, it does not contain the following information (but Cucumber Messages does):
This kind of information is required to produce rich reports and analytics, and is used in @cucumber/react-components and Cucumber Reports.
You will find examples of Cucumber Messages in the compatibility-kit project.
No vulnerabilities found.
Reason
no dangerous workflow patterns detected
Reason
30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Reason
license file detected
Details
Reason
no binaries found in the repo
Reason
0 existing vulnerabilities detected
Reason
security policy file detected
Details
Reason
Found 1/28 approved changesets -- score normalized to 0
Reason
no effort to earn an OpenSSF best practices badge detected
Reason
project is not fuzzed
Details
Reason
detected GitHub workflow tokens with excessive permissions
Details
Reason
dependency not pinned by hash detected -- score normalized to 0
Details
Reason
SAST tool is not run on all commits -- score normalized to 0
Details
Score
Last Scanned on 2024-11-25
The Open Source Security Foundation is a cross-industry collaboration to improve the security of open source software (OSS). The Scorecard provides security health metrics for open source projects.
Learn More