This file documents all notable changes for v4.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
4.8.1 (2020-01-09)
- [JUnit] Fix JUnit v4.13 runtime issues (#1852 John Patrick)
4.8.0 (2019-10-19)
- [Core] Update html report jQuery from 1.8.2 to 3.4.1 (#1794) (#1794 A. Dale Clarke)
- [Java] Deprecate
timout
in favour of library based solutions (#1506, #1694 M.P. Korstanje)- Prefer using library based solutions
4.7.4 (2019-10-05)
- [Core] Do not clobber line filters from rerun file (#1789 M.P. Korstanje, Malte Engels)
4.7.3 (2019-10-04)
- [Core] Upgrade the timeline formatter's jQuery dependency from 3.3.1 to 3.4.1. jQuery 3.3.1 has an XSS vulnerability that wouldn't normally affect the timeline formatter. However, it did prevent some organisations from downloading the cucumber-core jar because nexus would block it. (#1759, #1769, #1786 Vincent Pretre, Aslak Hellesøy, M.P. Korstanje)
4.7.2 (2019-08-28)
- [JUnit] JUnit will always print undefined steps (M.P. Korstanje)
- [TestNG] TestNG will always print undefined steps (M.P. Korstanje)
4.7.1 (2019-07-28)
- [All] Add missing JPMS config (#1709 John Patrick)
- Add automatic module name for
core
- Add automatic module name forcd2
- Add automatic module name forguice
4.7.0 (2019-07-20)
- [Core] Add property to select io.cucumber.core.backend.ObjectFactory implementation (#1700 Ralph Kar)
- Use
cucumber.object-factory=com.example.CustomObjectFactory
in eithercucucmber.properties
, environment variables, or system properties
- Use
4.6.0 (2019-07-16)
- [Core] Allow to add names for embeddings (#1692 Dzieciak)
4.5.4 (2019-07-10)
- [Core] Restore Scenario#getSourceTagNames() (#1689 Tommy Wo)
4.5.3 (2019-07-07)
- [Core] Reference correct main class in deprecation warning (M.P. Korstanje)
4.5.2 (2019-07-02)
- [Java] Fix ClassCastException on new Transpose annotation (#1683 Geoffroy Van Elsuve)
4.5.1 (2019-07-01)
- [Java] Fix link to new steps in generated Java doc (#1681 M.P. Korstanje)
4.5.0 (2019-06-30)
- [JUnit] JUnit will no longer run in verbose mode by default (#1670 M.P. Korstanje)
- Add
summary
and/orprogress
plugins to restore output
- Add
- [TestNG] TestNG will no longer run in verbose mode by default (#1670 M.P. Korstanje)
- Add
summary
and/orprogress
plugins to restore output
- Add
- [Java] Use ServiceLoader for Guice, Needle, OpenEJB, Pico, Spring and Weld
ObjectFactory
implementations.- Removes spurious deprecation warning.
- Moves
ObjectFactory
implements toio.cucumber.<module-name>
package.
- [Core] Deprecate
cucumber.api.CucumberOptions
(#1670 M.P. Korstanje)- Use
io.cucumber.junit.CucumberOptions
orio.cucumber.testng.CucumberOptions
instead
- Use
- [Core] Deprecate
cucumber.api.cli.Main
(#1670 M.P. Korstanje)- Use
io.cucumber.core.cli.Main
instead
- Use
- [Core] Deprecate
cucumber.api.Scenario
- Use
io.cucumber.core.api.Scenario
instead
- Use
- [Java] Deprecate
cucumber.api.java.*
- Use
io.cucumber.java.*
instead
- Use
- [Java] Deprecate
cucumber.api.java8.*
- Use
io.cucumber.java8.*
instead
- Use
- [JUnit] Deprecate
cucumber.api.junit.Cucumber
- Use
io.cucumber.junit.Cucumber
instead.
- Use
- [TestNG] Deprecate
cucumber.api.testng.TestNGCucumberRunner
- Use
io.cucumber.testng.TestNGCucumberRunner
instead.
- Use
- [TestNG] Deprecate
cucumber.api.testng.AbstractTestNGCucumberTests
- Use
io.cucumber.testng.AbstractTestNGCucumberTests
instead.
- Use
- [Needle] Deprecate
cucumber.api.needle.*
- Use
io.cucumber.needle.*
instead.
- Use
- [Spring] Deprecate
cucumber.api.spring.SpringTransactionHooks
- It is recommended to implement your own transaction hooks.
- Will allow the dependency on
spring-txn
to be removed.
Use the snapshot version of the cucumber-eclipse plugin for cucumber 4.5.0 and above that supports the new package structure. To use the latest snapshot version, refer to Follow the latest snapshot
4.4.0 (2019-06-15)
- [Core] Add StepDefinedEvent (#1634 Tim te Beek, M.P. Korstanje)
- [Core] Add CDI2 integration (#1626 Romain Manni-Bucau)
- [Java] Use ServiceLoader for ObjectFactory (#1615 Toepi, M.P. Korstanje)
- Object factories that implement
io.cucumber.core.backend.ObjectFactory
will be loaded via the ServiceLoader
- Object factories that implement
- [Core] Add UnusedStepsSummaryPrinter (#1648 Tim te Beek)
- Adds
--plugin unused
CLI option
- Adds
- [Core] Add reverse and random scenario execution order (#1645, #1658 Grasshopper, M.P. Korstanje)
- Adds
--order reverse
CLI option - Adds
--order random
and--order random:<seed>
CLI options - Adds
--limit <number of pickles>
CLI option
- Adds
- [Core] Refactored usage formatter (#1608 Marit van Dijk, M.P. Korstanje)
- [Core] Merge cucumber-html into cucumber-core (#1650 Grasshopper)
- [Core] Upgrade
cucumber-expressions
version to 7.0.2- Support Boolean in BuiltInParameterTransformer (cucumber/#604 Tommy Wo)
- [Core] Upgrade
dattable
version to 1.1.14- Empty cell are converted to
null
's forDouble
class (cucumber/#1617 Georgii Kalnytskyi)
- Empty cell are converted to
- [Core] Deprecated
StepDefinitionReporter
(#1634 Tim te Beek, M.P. Korstanje) - [Java] Deprecated classpath scanning for ObjectFactory (#1615 Toepi, M.P. Korstanje)
- Deprecated
cucumber.api.java.ObjectFactory
in favour ofio.cucumber.core.backend.ObjectFactory
.
- Deprecated
- [Core] Clear RuntimeOptions.featurePaths if rerun was used (#1631 Tommy Wo)
- [Core] Escape spaces in ZipResource path (#1636 Bearded QA)
- [Core] Handle parallel execution exceptions (#1629 Christoph Kutzinski, M.P. Korstanje)
- [Core] Use meaningful thread names (#1623 Christoph Kutzinski)
- [Core] Parse UTF-8-BOM feature file (#1654 Grasshopper)
- [Core] Allow runner to register bus as concurrent or serial event source (#1656 Tim te Beek, M.P. Korstanje)
- When using JUnit or the CLI the pretty formatter will print steps as the test progresses
- [Core] Efficiently write JSON to output (#1663 M.P. Korstanje)
4.3.1 (2019-05-05)
- [Core] Fix filtering scenarios loaded from jar (#1618 Denys Zhuravel)
4.3.0 (2019-04-11)
- [Core] Improve CucumberOptions documentation (#1573 M.P. Korstanje, Marit van Dijk)
- [Core] Add logger (#1577 M.P. Korstanje)
- Errors and warnings are now logged via
java.util.Logging
system - Glue and feature path config is logged via
java.util.Logging
system
- Errors and warnings are now logged via
- [Core] Add real world timestamp to events (#1591 #1594 Yatharth Zutshi, M.P. Korstanje)
- Adds
start_timestamp
to json formatter output. Timestamp is in ISO8601 format. - Fixes the
timeline
plugin visualizing tests as starting in 1970.
- Adds
- [Core] Simplify duplicate feature detection (#1602 M.P. Korstanje)
- [Spring] Remove split package (#1603 M.P. Korstanje)
- [Core] Upgrade cucumber-expressions to v6.2.2
- Limit explosion of generated expressions to 256 (#cucumber/576 M.P. Korstanje)
- Allow parameter-types in escaped optional groups (#cucumber/572, #cucumber/561 Luke Hill, Jayson Smith, M.P. Korstanje)
- Prefer expression with the longest non-empty match (#cucumber/580 M.P. Korstanje)
- Improve heuristics for creating Cucumber/Regular Expressions from strings (#cucumber/518 Aslak Hellesøy)
- [Kotlin-Java8] Upgrade Kotlin to v1.3.0 and more idiomatic Kotlin (#1590 Marit van Dijk)
- [Core] Add more details to ParserException (#1600 Yatharth Zutshi)
- [JUnit] Invoke
@BeforeClass
beforeTestRunStarted
event (#1578 M.P. Korstanje)
4.2.6 (2019-03-06)
- [Core] Fix concurrent access issues in JUnit and TestNG formatters (#1576, #1575 M.P. Korstanje, grasshopper7)
4.2.5 (2019-03-04)
- [Core] Fix illegal argument exception when using root package as glue (#1572 M.P. Korstanje)
- Correctly parses glue path
""
as the root package - Correctly parses glue path
"classpath:"
as the root package - Correctly parses feature identifier
"classpath:"
as the root package
- Correctly parses glue path
4.2.4 (2019-02-28)
4.2.3 (2019-02-08)
- [Build] Fix windows build (#1552, #1551 Alexey Mozhenin)
- [Core] Formalize glue and feature paths (#1544 M.P. Korstanje)
- Fixes Line filtering on Windows (#1547 grasshopper7)
- Invalid glue and feature paths are no longer silently ignored
- Explicit references to non-existing feature files are no longer silently ignored
- [Core] Fix class loading on Windows (#1541 M.P. Korstanje)
- Resolves inability to discover glue classes
- [TestNG] Update documentation for parallel execution (#1501 Abhishek Singh)
- [Core] Parse rerun file in RuntimeOptions (#1529 M.P. Korstanje)
- [Core] Cache all matched step definitions (#1528 Łukasz Suski)
- Significant speed up in matching steps to glue on Android
- [Build] No longer fails to build on OpenJDK 9 and 10. (#1311 M.P. Korstanje)
- [Core] Error when an explicitly provided feature file does not exist. (#1529 M.P. Korstanje)
path/to/exisitng.feature
will passpath/to/non/exisitng.feature
will errorpath/to/empty/direcory
will pass
- [Core] Upgrade shaded jackson-databind to 2.9.8 (M.P. Korstanje)
- Fixes CVE-2018-19360
- Fixes CVE-2018-14719
- Fixes CVE-2018-14718
- Fixes CVE-2018-14721
- Fixes CVE-2018-14720
- Fixes CVE-2018-19361
- Fixes CVE-2018-19362
- [Guice] Replace CucumberModules.SCENARIO with thread safe factory method (#1486 James Bennett)
- [Core] Use Locale.ROOT when transforming case of identifiers (#1484 M.P. Korstanje)
- [Core] Fix concurrent execution problems in pretty formatter (#1480 M.P. Korstanje)
- [Core] Upgrade
cucumber-expressions
6.1.1. (cucumber/#494 Łukasz Suski) - [Java8] Apply identity transform to argument when target type is object (#1477 M.P. Korstanje)
- [Core] Reduce plugin memory usage (#1469 M.P. Korstanje)
- [Core] Use the docstring content type from pickle in the json formatter (#1265 Robert Wittams, M.P. Korstanje)
- [Java8] Apply identity transform when target type is unknown (#1475 Daryl Piffre, M.P. Korstanje)
- [Core] Added extraGlue option to
@CucumberOptions
(#1439 Eduardo Kalinowski) - [Core] Support parallel execution of pickles (#1389 Kiel Boatman, M.P. Korstanje)
- When running with parallel support enabled all Plugins implementing
EventHandler
/Formater
will receive events after execution has completed inEvent.CANONICAL_ORDER
. - Plugins implementations implementing
ConcurrentEventListener
will receive events in real time. - Plugins implementations are synchronized on and will not receive concurrent events.
- Added the
--threads
commandline argument for the CLI. - When
--threads
is used with a value greater then 1 parallel support is enabled for the CLI. - JUnit/TestNG have parallel support enabled by default. Consult their respective documentation for parallel executions.
- When running with parallel support enabled all Plugins implementing
- [Spring] Add documentation for spring object factory (#1405 Marit van Dijk)
- [Core] Add --wip option (#1381 Heziode)
- [Core] Upgrade gherkin to 5.1.0 (#1377 Aslak Hellesøy)
- [Weld] Document the need for a beans.xml per source root (#923 Harald Albers)
- [Core] Upgrade cucumber-expressions to 6.1.0 (#1464 M.P. Korstanje)
- ParameterType.fromEnum(MyEnumClass.class) to make it easier to register enums.
- [Core] Upgrade datatable to 1.1.3 (#1414 Łukasz Suski)
- Allows the registration of default TableEntryByTypeTransformer and TableCellByTypeTransformer
- Adds DataTableType#entry(Class) to easily map tables to List.
- Adds DataTableType#cell(Class) to easily map cells to SomeOtherClass.
- [Core] Upgrade cucumber expressions to 6.0.0 (#1377 Aslak Hellesøy)
- Throw an error if a parameter type is used inside optional text parenthesis, or with alternative text.
- Bugfix for nested capture groups.
- [Core] Refactor Runtime (#1367 M.P. Korstanje, Marit van Dijk)
- Significant structural changes in the
cucumber.runtime
package
- Significant structural changes in the
- [Examples] Simplify Gradle example (#1394 Piotr Kubowicz)
- [Build] Use 1.7 as the source and target level for compilation (#1147 M.P. Korstanje)
- [Core] Use fully classified name for PendingException (#1398 Marit van Dijk)
- [Core] Update DataTable hint (#1397 Marit van Dijk)
- [Core] Deprecate Formatter interface (#1407 Marit van Dijk)
- [Android] Remove Cucumber-Android and move to separate project (Aslak Hellesøy)
- [TestNG] Remove TestNGReporter (#1408 M.P. Korstanje)
- [OSGi] Jars are no longer packaged as OSGi bundles. The
osgi
module andpax-exam
examples have been removed as well. (#1404 cucumber/cucumber#412 Aslak Hellesøy) - [Core] Remove deprecated TestStep methods (#1391 M.P. Korstanje)