Package detail
@cucumber/messages
JSON schema-based messages for Cucumber's inter-process communication
readme
changelog
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Unreleased
27.0.1 - 2024-11-15
Fixed
- [Elixir] Restored test and release process
27.0.0 - 2024-10-26
Added
- Add new
TestRunHookStarted
andTestRunHookFinished
messages (#102)
Changed
- BREAKING CHANGE: Add
id
property toTestRunStarted
, optionally reference inTestCase
,Attachment
andTestRunFinished
(#102) - BREAKING CHANGE: Add
type
property toHook
(#102)
26.0.1 - 2024-09-22
Changed
- [Go] Switch to Google's UUID module (#251)
Fixed
- [Dotnet] Fixed code generation for types that accept List as parameters. Constructors were not properly handling null input. (#249 [clrudolphi])
- Moved contents of the description of the StepDefinitionIds field from the StepMatchArgumentsList field where it had been mistakenly placed. (#252 [clrudolphi])
26.0.0 - 2024-08-15
Added
- [Dotnet] Added support classes aligned with what is provided for the Java implementation (#233 clrudolphi)
Changed
- Internal breaking change The code generation has undergone a large refactor (No visible changes expected). All new code generation logic is now contained in /codegen (#228 luke-hill)
- [Dotnet] Rewritten to align with the code generation techniques used for the other languages (https://github.com/cucumber/messages/pull/233 clrudolphi)
- [Dotnet] Upgraded from .NET 5 to .NET 8. Dropped .NET Framework 4.x as a target while retaining .NET Standard 2.0 as the primary target framework (https://github.com/cucumber/messages/pull/233 clrudolphi)
25.0.1 - 2024-06-13
Fixed
- [Php] Fixed a workflow issue with publishing the package
25.0.0 - 2024-06-13
Changed
- [Ruby] Messages are now altered to be 1 message class per file (#225 luke-hill)
- [Ruby] Updated minimum Ruby version to 3.0 (#216 luke-hill)
- [Ruby] Use latest CCK conformance for signing off message releases (#216 luke-hill)
- [Ruby] Tidied up all remaining rubocop offenses (This included 2 minor alterations to the generator code) (#217 #225 luke-hill)
- [Php] Permit both PHPUnit 10 and PHPUnit 11 (#200 ciaranmcnulty)
Fixed
- [cpp] Don't rely on GitHub API for latest versions and implement a simple download retry loop
24.1.0 - 2024-03-23
Added
- [Java] Include stacktrace in Convertor.toMessage(Throwable) (#213)
24.0.1 - 2023-12-21
Fixed
- Update repo URLs (#190)
24.0.0 - 2023-11-24
Added
- Add
stackTrace
prop toException
message (#182)
23.0.0 - 2023-11-01
Added
- Added C++ implementation (#152)
Changed
22.0.0 - 2023-04-06
Added
- Added source reference to parameter type (#45)
Fixed
- Corrected Java and PHP generators to allow running using Docker on Windows (#146)
21.0.1 - 2022-12-17
Fixed
- [Java] Suppress warnings for missing javadoc (#128)
21.0.0 - 2022-12-17
Added
- [Java] Add javadoc to messages (#124)
Changed
- Add exception to TestStepFinished TestRunFinished (#122)
20.0.0 - 2022-11-14
Changed
- Add
workerId
field to TestCaseStarted message (#34) - [Java] Enabled reproducible builds
Fixed
- Change Go module name to match repo (#101)
19.1.4 - 2022-09-22
Changed
- Update dependencies
19.1.3 - 2022-09-20
Fixed
- Add
name
field topackage.cjs.json
(#36)
19.1.2 - 2022-06-22
Fixed
- [Javascript] Schema was still missing in 19.1.1 due to how npm manages the files attribute in package.json (#2020)
19.1.1 - 2022-06-22
Fixed
- [Javascript] Schema are actually missing from 19.1.0 (#2016)
19.1.0 - 2022-06-20
Added
- [Javascript] Adding the json schemas of the messages to the NPM package (#2010)
19.0.0 - 2022-05-31
Added
- Expand the messages protocol with keyword types (#1966)
Changed
- [Java] the
PickleStep
constructor has changed - it now needs an extraPickleStepType
argument. - [Java] the
Step
constructor has changed - it now needs an extraStepKeywordType
argument.
18.0.0 - 2022-03-24
Added
- Support for EcmaScript modules (aka ESM) (#1756)
- New optional
name
property on the Hook schema (#1914)
Changed
- JSON Schema: some
array
fields now have"minItems": 1
. - Generate Java code that uses
Optional
in getters. - Setters are removed.
- Classes without required fields have public empty constructors, and static
of
methods for each field. (#1858 aslakhellesoy) - Java: Make this library more null safe.
17.1.1 - 2021-09-17
Fixed
- Perl: incorrectly included
null
values & guaranteed field order (#1727 ehuelsmann)
17.1.0 - 2021-09-01
Added
- Initial Perl implementation (#1670 ehuelsmann)
17.0.1 - 2021-07-19
Fixed
- [Ruby]
seconds_to_duration
convert nanos to an integer to match the json schema (#1655)
17.0.0 - 2021-07-08
Added
- Added
Ci#buildNumber
field (#1632 #1606 aslakhellesoy) - [Ruby] Generate DTOs from the json schemas to avoid usage of plain ruby hashes (#1574 #1605)
- [Java] Added various overloads to
JSON
to work with streams efficiently
Changed
- BREAKING Move
willBeRetried
field fromTestStepResult
toTestCaseFinished
(#902 #1631) - [Go] Move module paths to point to monorepo (#1550)
- [Java] Removed implicit utility class constructors and made classes final
16.0.1 - 2021-05-24
Fixed
- [JavaScript]
addDurations
works with legacy messages that representseconds
as astring
.
16.0.0 - 2021-05-15
Added
- [Ruby] The generated code is added to Git. (#1461 aslakhellesoy)
- [JavaScript] Added
getWorstTestStepResult
function (moved from@cucumber/query
)
Changed
- Empty
string
properties are set to""
rather than being omitted. - Empty
Array
properties are set to[]
rather than being omitted. - The
seconds
property onTimestamp
andDiration
is now anumber
rather than astring
. - [Go, Java, JavaScript, Ruby] The library no longer depends on protocol buffers. The message classes are generated from JSON Schemas. (#1414 aslakhellesoy)
- [JavaScript]: Import with
import * as messages from '@cucumber/messages'
- [Ruby] Messages are now plain ruby hashes with camelCase symbol keys instead of objects with snake_case properties.
- [Go, Java, JavaScript, Ruby] Packages and structs have changed:
15.0.0 - 2021-03-23
Added
- [All] Added tags to Rule node (#1356 [sebrose], [gasparnagy], brasmusson, [WannesFransen1994])
Fixed
- [Elixir] Make sure messages.proto is updated with ../messages.proto
- [Elixir] Generated new message modules based on the new messages.proto file
Removed
- [JavaScript] moved code that depends on Node.js stream APIs to
@cucumber/message-streams
14.1.2 - 2021-03-23
Fixed
- [JavaScript] revert breaking changes in 14.1.1 (#1437)
14.1.1 - 2021-03-22
Fixed
- The 14.1.0 release failed half way through due to build script problems.
14.1.0 - 2021-03-22
Added
- [All] Added tags to Rule node (#1356 [sebrose], [gasparnagy], brasmusson, [WannesFransen1994])
Fixed
- [Elixir] Make sure messages.proto is updated with ../messages.proto
- [Elixir] Generated new message modules based on the new messages.proto file
14.0.1 - 2021-02-08
Fixed
- [JavaScript] Remove
Long
from function signatures inTimeConversion
14.0.0 - 2021-02-05
Changed
- [JavaScript] The stream classes have to be imported separately:
import { MessageToBinaryStream, MessageToNdjsonStream, BinaryToMessageStream, NdjsonToMessageStream} from '@cucumber/dist/src/stream'
(#1331) - In JavaScript, Int64 fields are now typed as
number
, rather thannumber|Long
Fixed
- [JavaScript] removed circular dependencies. (#1292 davidjgoss)
13.2.1 - 2020-11-19
Fixed
- In case a line cannot be parsed as JSON, throw an error with the offending line in the exception message.
13.2.0 - 2020-11-12
Added
- Elixir implementation (#1175 [WannesFransen1994])
13.1.0 - 2020-09-14
Added
- Add
Attachment#url
. This makes it possible to "detach" attachments so the main stream gets smaller and the attachments can be processed/downloaded separately with more ease. (#1183 aslakhellesoy)
Fixed
- Ignore empty lines rather than throwing an error.
13.0.1 - 2020-08-07
Fixed
- Release again since the 13.0.0 release didn't fully sync to subrepos
13.0.0 - 2020-08-07
Changed
- Move
JavaMethod
andJavaStackTraceElement
to be children ofSourceReference
12.4.0 - 2020-07-31
Added
- Suggested file name to the Attachment messages (#1128)
- Added ProtocolVersion to access messages version reliably (#1127 mpkorstanje)
12.3.2 - 2020-07-29
Fixed
- Release process for 12.3.1 failed
12.3.1 - 2020-07-29
Fixed
- Release process for 12.3.0 failed
12.3.0 - 2020-07-29
Added
- Add
JavaMethod
andJavaStackTraceElement
asSourceReference
(#1120)
Fixed
- [Ruby] Fix computing of Timestamp (see cucumber-ruby#1438)
12.2.0 - 2020-06-26
Added
- Added field
ci
toMeta
message.
12.1.1 - 2020-04-21
Fixed
- [Ruby] Add
VERSION
file to gem, soMessages::Envelope::VERSION
works
12.1.0 - 2020-04-21
Added
- Java:
io.cucumber.messages.Messages.Envelope.class.getPackage().getImplementationVersion()
- Ruby:
Messages::Envelope::VERSION
- JavaScript:
import { version } from '@cucumber/messages'
- Expose the library version through the API
- Add
Meta
message (#976 aslakhellesoy) - [Java] Upgrade to
cucumber-parent:2.1.0
(needed to expose library version) (#976 aslakhellesoy)
12.0.0 - 2020-04-14
Added
- Add
id
field toBackground
,Rule
andExamples
. Needed for search engine indexing.
Changed
- Some messages have been nested under other messages (removal of other messages) made it possible to scope them more locally
Fixed
- Ignore unknown fields when parsing JSON. This is to ensure forward and backward compatibility when using JSON encoding (NDJSON). (#959 #957 aslakhellesoy)
Removed
- Several messages that weren't used have been removed (#962 #951 aslakhellesoy)
11.1.1 - 2020-03-30
Fixed
- The #932 pull request wasn't actually included in 11.1.0
11.1.0 - 2020-03-30
Added
- [JavaScript] Add
#addDurations
function toTimeConversion
(#932 charlierudolph)
11.0.1 - 2020-03-30
Fixed
- Release process
11.0.0 - 2020-03-30
Changed
Attachment#text
andAttachment#binary
have been replaced withAttachment#body
, andAttachment#content_encoding
has been added. (#947 aslakhellesoy)
10.0.3 - 2020-03-05
Fixed
- 10.0.2 release process failed.
10.0.2 - 2020-03-02
Fixed
- [JavaScript] make stream readable/writable object modes explicit. Better buffer handling.
- [Ruby] Don't depend on the
json
gem, since it only installs on Windows with a C compiler toolchain. Thejson
gem is part of the Ruby stdlib. - [Go] Increase max size of a JSON message to 10Mb (#901 #903 aslakhellesoy)
10.0.1 - 2020-02-13
Fixed
- The 10.0.0 release failed.
10.0.0 - 2020-02-13
Added
- Add
UndefinedParameterType
(#890 aslakhellesoy) - Add
TestCaseFinished#message
(#890 aslakhellesoy)
Changed
- Rename
TestResult
toTestStepResult
(#890 aslakhellesoy)
Fixed
- Ruby: Fixed rounding errors in
TimeConversion
9.0.3 - 2020-01-10
Fixed
- Ruby: Fix inclusion of generated lib/messages.pb.rb
9.0.2 - 2020-01-10
9.0.1 - 2020-01-09
Fixed
- Fixed release scripts for Go and JavaScript
9.0.0 - 2020-01-09
Added
- Added
ParameterType
as an envelope message
Changed
- Renamed module name from
cucumber-messages
tomesssages
(#850 aslakhellesoy) - Use pure Ruby protobuf in order to avoid problems with Ruby 2.7.0 and JRuby. (#813 #843 mvz)
- A
TestCase
now has a list ofStepMatchArgumentsList
rather than a list ofStepMatchArgument
. This allows aTestCase
to hold matches from more than oneStepDefinition
, which is possible in the case of ambiguous matches. - Renamed
content_type
fields tomedia_type
- Removed the
Media
message - Attachments can have one of
string text
andbytes binary
as thebody
Removed
- Removed
TestCase#test_result
. Aggregate results will be computed bycucumber-query
instead
8.0.0 - 2019-12-10
Added
- Added
testStepId
andtestCaseStartedId
toAttachment
(#814 charlierudolph) - Added new classes for working with NDJSON streams
- Added new
TimeConversion
utilities for converting between protobufTimestamp/Duration
and the platform's representation of timestamps (clock time) and duration (monotonic time)
Changed
- Renamed some of the classes for dealing with streams
7.0.0 - 2019-11-14
Added
- Support retry (#722 charlierudolph)
Changed
- Added more reference ids and removed deprecated/reserved fields (#790 #794 vincent-psarga)
6.0.2 - 2019-10-16
6.0.1 - 2019-10-03
Fixed
- [Go] Release 6.0.0 is unusable.
6.0.0 - 2019-10-02
Added
- New
TestStepMatched
message Duration
message to express duration in a seconds + nano format- field
duration
inTestResult
message
Changed
- Renamed
PatternMatch
toStepMatchArgument
- Renamed
CommandRunTestStep#patternMatches
toCommandRunTestStep#stepMatchArguments
- Replace Google's Timestamp by our own message
Removed
durationNanoSeconds
field inTestResult
message
5.0.1 - 2019-08-23
Fixed
- [Go] Fix module version (5.0.0 left it at v4)
5.0.0 - 2019-08-23
Changed
- The ordinal numbers of the
Status
enum have changed, to easier compute an aggregated status.
Fixed
- [JavaScript] Don't swallow exceptions happening in
ProtobufMessageStream
4.0.0 - 2019-08-14
3.0.5 - 2019-08-14
Fixed
- [Go] Tag the cucumber/go subrepo (again)
3.0.4 - 2019-08-14
Fixed
- [Go] Tag the cucumber/go subrepo (again)
3.0.3 - 2019-08-14
Fixed
- [Go] Tag the cucumber/go subrepo
3.0.2 - 2019-08-01
Added
- Add Timestamp property and comments to TestRunFinished message (#665 SabotageAndi
3.0.1 - 2019-07-15
Added
- [.NET] Publish NuGet package (#635 SabotageAndi vincent-psarga)
3.0.0 - 2019-06-05
Added
- Added
TestRunStarted#timestamp
field (#615 david1995) - Added
TestCaseStarted#platform
field (#626 #616 david1995)
Changed
- Use an enum for the
encoding
field. - Misc changes for
cucumber-engine
(#549)
Deprecated
Fixed
Removed
2.1.2 - 2019-03-29
Fixed
2.1.1 - 2018-11-02
Fixed
- Release process improvements
2.1.0 - 2018-11-01
Added
- Add testResult to the TestCaseFinished message (#488 brasmusson)
2.0.0 - 2018-10-14
Added
- Several messages to support cucumber-engine (#502 charlierudolph)
1.1.2 - 2018-10-01
Added
- Added
TestHookStarted
andTestHookFinished
to distinguish between messages about Gherkin steps and hooks (aslakhellesoy)
1.0.0 - 2018-09-15
Added
- Protobuf messages for Go, Java, JavaScript, TypeScript and Ruby