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.
24.0.0 - 2023-11-24
- Add
stackTrace
prop toException
message (#182)
23.0.0 - 2023-11-01
- Added C++ implementation (#152)
22.0.0 - 2023-04-06
- Added source reference to parameter type (#45)
- Corrected Java and PHP generators to allow running using Docker on Windows (#146)
21.0.1 - 2022-12-17
- [Java] Suppress warnings for missing javadoc (#128)
21.0.0 - 2022-12-17
- [Java] Add javadoc to messages (#124)
- Add exception to TestStepFinished TestRunFinished (#122)
20.0.0 - 2022-11-14
- Add
workerId
field to TestCaseStarted message (#34) - [Java] Enabled reproducible builds
- Change Go module name to match repo (#101)
19.1.4 - 2022-09-22
- Update dependencies
19.1.3 - 2022-09-20
- Add
name
field topackage.cjs.json
(#36)
19.1.2 - 2022-06-22
- [Javascript] Schema was still missing in 19.1.1 due to how npm manages the files attribute in package.json (PR#2020)
19.1.1 - 2022-06-22
- [Javascript] Schema are actually missing from 19.1.0 (PR#2016)
19.1.0 - 2022-06-20
- [Javascript] Adding the json schemas of the messages to the NPM package (PR#2010)
19.0.0 - 2022-05-31
- Expand the messages protocol with keyword types (#1966)
- [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
- Support for EcmaScript modules (aka ESM) (#1756)
- New optional
name
property on the Hook schema (#1914)
- 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
- Perl: incorrectly included
null
values & guaranteed field order (#1727 ehuelsmann)
17.1.0 - 2021-09-01
- Initial Perl implementation (#1670 ehuelsmann)
17.0.1 - 2021-07-19
- [Ruby]
seconds_to_duration
convert nanos to an integer to match the json schema (#1655)
17.0.0 - 2021-07-08
- 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
- 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
- [JavaScript]
addDurations
works with legacy messages that representseconds
as astring
.
16.0.0 - 2021-05-15
- [Ruby] The generated code is added to Git. (#1461 aslakhellesoy)
- [JavaScript] Added
getWorstTestStepResult
function (moved from@cucumber/query
)
- 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
- [All] Added tags to Rule node (#1356 [sebrose], [gasparnagy], brasmusson, [WannesFransen1994])
- [Elixir] Make sure messages.proto is updated with ../messages.proto
- [Elixir] Generated new message modules based on the new messages.proto file
- [JavaScript] moved code that depends on Node.js stream APIs to
@cucumber/message-streams
14.1.2 - 2021-03-23
- [JavaScript] revert breaking changes in 14.1.1 (#1437)
14.1.1 - 2021-03-22
- The 14.1.0 release failed half way through due to build script problems.
14.1.0 - 2021-03-22
- [All] Added tags to Rule node (#1356 [sebrose], [gasparnagy], brasmusson, [WannesFransen1994])
- [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
- [JavaScript] Remove
Long
from function signatures inTimeConversion
14.0.0 - 2021-02-05
- [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
- [JavaScript] removed circular dependencies. (#1292 davidjgoss)
13.2.1 - 2020-11-19
- 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
- Elixir implementation (#1175 [WannesFransen1994])
13.1.0 - 2020-09-14
- 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)
- Ignore empty lines rather than throwing an error.
13.0.1 - 2020-08-07
- Release again since the 13.0.0 release didn't fully sync to subrepos
13.0.0 - 2020-08-07
- Move
JavaMethod
andJavaStackTraceElement
to be children ofSourceReference
12.4.0 - 2020-07-31
- Suggested file name to the Attachment messages (#1128)
- Added ProtocolVersion to access messages version reliably (#1127 mpkorstanje)
12.3.2 - 2020-07-29
- Release process for 12.3.1 failed
12.3.1 - 2020-07-29
- Release process for 12.3.0 failed
12.3.0 - 2020-07-29
- Add
JavaMethod
andJavaStackTraceElement
asSourceReference
(#1120)
- [Ruby] Fix computing of Timestamp (see cucumber-ruby#1438)
12.2.0 - 2020-06-26
- Added field
ci
toMeta
message.
12.1.1 - 2020-04-21
- [Ruby] Add
VERSION
file to gem, soMessages::Envelope::VERSION
works
12.1.0 - 2020-04-21
- 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
- Add
id
field toBackground
,Rule
andExamples
. Needed for search engine indexing.
- Some messages have been nested under other messages (removal of other messages) made it possible to scope them more locally
- Ignore unknown fields when parsing JSON. This is to ensure forward and backward compatibility when using JSON encoding (NDJSON). (#959 #957 aslakhellesoy)
- Several messages that weren't used have been removed (#962 #951 aslakhellesoy)
11.1.1 - 2020-03-30
- The #932 pull request wasn't actually included in 11.1.0
11.1.0 - 2020-03-30
- [JavaScript] Add
#addDurations
function toTimeConversion
(#932 charlierudolph)
11.0.1 - 2020-03-30
- Release process
11.0.0 - 2020-03-30
Attachment#text
andAttachment#binary
have been replaced withAttachment#body
, andAttachment#content_encoding
has been added. (#947 aslakhellesoy)
10.0.3 - 2020-03-05
- 10.0.2 release process failed.
10.0.2 - 2020-03-02
- [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
- The 10.0.0 release failed.
10.0.0 - 2020-02-13
- Add
UndefinedParameterType
(#890 aslakhellesoy) - Add
TestCaseFinished#message
(#890 aslakhellesoy)
- Rename
TestResult
toTestStepResult
(#890 aslakhellesoy)
- Ruby: Fixed rounding errors in
TimeConversion
9.0.3 - 2020-01-10
- Ruby: Fix inclusion of generated lib/messages.pb.rb
9.0.2 - 2020-01-10
9.0.1 - 2020-01-09
- Fixed release scripts for Go and JavaScript
- Added
ParameterType
as an envelope message
- 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
TestCase#test_result
. Aggregate results will be computed bycucumber-query
instead
- 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)
- Renamed some of the classes for dealing with streams
- Support retry (#722 charlierudolph)
- Added more reference ids and removed deprecated/reserved fields (#790 #794 vincent-psarga)
- [Go] Release 6.0.0 is unusable.
- New
TestStepMatched
message Duration
message to express duration in a seconds + nano format- field
duration
inTestResult
message
- Renamed
PatternMatch
toStepMatchArgument
- Renamed
CommandRunTestStep#patternMatches
toCommandRunTestStep#stepMatchArguments
- Replace Google's Timestamp by our own message
durationNanoSeconds
field inTestResult
message
- [Go] Fix module version (5.0.0 left it at v4)
- The ordinal numbers of the
Status
enum have changed, to easier compute an aggregated status.
- [JavaScript] Don't swallow exceptions happening in
ProtobufMessageStream
- [Go] Tag the cucumber/go subrepo (again)
- [Go] Tag the cucumber/go subrepo (again)
- [Go] Tag the cucumber/go subrepo
- Add Timestamp property and comments to TestRunFinished message (#665 SabotageAndi
- [.NET] Publish NuGet package (#635 SabotageAndi vincent-psarga)
- Added
TestRunStarted#timestamp
field (#615 david1995) - Added
TestCaseStarted#platform
field (#626 #616 david1995)
- Use an enum for the
encoding
field. - Misc changes for
cucumber-engine
(#549)
- Release process improvements
- Add testResult to the TestCaseFinished message (#488 brasmusson)
- Several messages to support cucumber-engine (#502 charlierudolph)
- Added
TestHookStarted
andTestHookFinished
to distinguish between messages about Gherkin steps and hooks (aslakhellesoy)
- Protobuf messages for Go, Java, JavaScript, TypeScript and Ruby