Releases · Behat/Behat · GitHub
Skip to content

Releases: Behat/Behat

v4.0.0-alpha1

22 Jun 21:44
82fbe24

Choose a tag to compare

This release introduces a number of breaking changes. We have tried to limit the impact of these on end-users – most are in code that we expect is only referenced internally. There are some unavoidable changes that will affect end-users and extension authors, but we expect you will be able to apply the vast majority of updates using automated tools. See https://docs.behat.org/en/v4.x/releases/upgrading-to-4.0.html for advice on upgrading.

For end-users, this is essentially a stable release, ready to use in your CI. The only reason for shipping as an alpha first is to allow extension authors to add support for Behat 4.x and feed back on any issues before we finalise 4.0.0.

We expect there will be a small number of breaking changes between 4.0.0-alpha1 and 4.0.0. See https://docs.behat.org/en/v4.x/releases/upgrading-to-4.0.html for details.

Behat has no corporate backing - the 4.0 release has taken a huge effort from the volunteer maintainers over the last 9 months. If you use Behat for work, please consider showing your appreciation by supporting the project - even small contributions make a big difference.

Changed

Added

Internal

NOTE: this includes breaking changes to some classes that are not considered part of the public API from 4.0 onwards.

v3.32.0

20 Jun 08:35
b9b89cf

Choose a tag to compare

Added

  • Support GHERKIN_32 parsing mode in pretty formatter by @acoulton in #1842

Fixed

  • Only print between Step keyword & text if correct for language by @acoulton in #1845
  • JSON formatter should support GHERKIN_32 mode by @acoulton in #1847
  • Unexpected uses / creation of RuntimeCallee callables by @acoulton in #1853
  • Handle empty argument lists when converting Context config to PHP by @acoulton in #1849

Internal

  • Fail on Behat deprecations in CI by @acoulton in #1833
  • Add runtime deprecations for ScenarioLikeTested interface by @acoulton in #1832
  • Add a scenario covering the behavior of invalid gherkin files by @stof in #1840
  • Prove JUnit scenario description handling in gherkin compat modes by @acoulton in #1843
  • Run features in gherkin-32 and legacy compatibility modes by @acoulton in #1848

v3.31.0

19 Apr 21:06
7fbdcda

Choose a tag to compare

Fixed

  • Callee description can be null by @acoulton in #1821
  • Always populate language in TranslatedDefinition by @acoulton in #1826
  • Return type on ScenarioLikeTested, and add strict returns to final events by @acoulton in #1816
  • Type hinting / safety of TableColumnTransformation by @acoulton in #1823
  • Incorrect not-null string phpdoc typehints by @acoulton in #1825

Internal

  • Add more backwards-compatible strict types to private / final properties, method parameters, and method returns
    By @acoulton in #1817 and #1818
  • Ignore PHPUnit security advisory related to PHP ini Argument injection
    PKSA-5jz8-6tcw-pbk4 has minimal impact in our CI environment.
    Contributors installing dev dependencies locally should be aware of the potential risk if an attacker can gain write
    access to phpunit.xml or shell execution.
    By @acoulton in #1827

v3.30.0

26 Mar 17:31
be4af8c

Choose a tag to compare

Changed

  • Explicitly mark up interfaces, classes & methods that we consider to be the public API.
    This will not affect our backwards compatibility guarantees for the 3.x series, but from 4.0 onwards we will only guarantee BC for code that is explicitly marked as being part of the API.
    By @acoulton in #1807
  • Move gherkin configuration to dedicated GherkinOptions config object. The previous API for setting filters by calling ->withFilters() on Profile is deprecated and will be removed in 4.0.
    By @acoulton in #1798
  • Make Extension::process() explicit in the Extension interface & document Extension dependencies.
    Clarifies that extensions should declare their own dependencies on any symfony packages they interact with directly.
    By @acoulton in #1795 and #1804
  • Drop PHP 8.1 support by @carlos-granados in #1782

Added

  • Support configuring GherkinCompatibilityMode to control how Gherkin files are parsed.
    The default mode behaves identically to legacy parser behaviour. The opt-in experimental gherkin-32 mode parses equivalent to the official cucumber/gherkin parsers. We expect to make gherkin-32 the default in the 4.0 release.
    See the documentation for more details.
    By @acoulton in #1799
  • Add deprecation collector to capture and print Behat deprecations.
    Users can opt-in to display and/or fail on deprecations using the methods on the TesterOptions config object.
    Extension developers can log their own runtime deprecations by calling DeprecationCollector::trigger().
    By @carlos-granados in #1794

Internal

v3.29.0

11 Dec 09:53
51bdf81

Choose a tag to compare

Changed

  • Add initial backwards-compatible return types to final classes, final methods and private methods. These changes should not impact end-users or extension authors.
    This is work towards the upcoming 4.0.0 release, which will add support for symfony8 and introduce strict types throughout.
    By @acoulton in #1763

v3.28.0

11 Dec 09:26
e13b8fa

Choose a tag to compare

Changed

  • Add backwards-compatible return types ahead of symfony8 by @Kocal (cherry-picked by @acoulton) in #1702
  • Rename the default branch from master to 3.x and remove the dev-master composer branch alias by @acoulton in #1708

Added

  • Add printSkippedSteps option to pretty formatter (true by default) by @carlos-granados in #1705
  • Accept multiple path arguments on CLI
    This PR was originally contributed to a 4.x branch which was then abandoned. The feature was later implemented in 3.x by a different contributor, but we wanted to also credit the previous work done. The only actual change in this release is an internal (backwards compatible) change to the use of WrongPathsException. By @adrienbrault in #1397 and merged back to 3.x by @acoulton in #1693

Fixed

Internal

3.27.0

23 Nov 12:14
v3.27.0
3282ad7

Choose a tag to compare

Changed

Added

Internal

  • Prepare the pretty printer for future changes in the Gherkin parser by @stof in #1690
  • Add tests proving that multiple Examples tables are supported by @acoulton in #1696

v3.26.0

29 Oct 09:47
1b6b08e

Choose a tag to compare

Changed

  • Support configuring how file paths are rendered by the JUnit formatter (relative or absolute, removing a prefix, etc). Previously, the JUnit formatter would print an absolute path unless the file was beneath the current working
    directory.
    The new default is to print paths relative to the Behat base directory - in most cases this will also be the current working directory and therefore the result will be the same. However, in some cases the reported file paths will change so you may wish to review the configuration e.g. if your tooling aggregates build results over time.
    By @carlos-granados in #1677

Added

Fixed

  • error_reporting in the Behat configuration should take precedence over system defaults by @carlos-granados in #1675
  • Ensure runtime assertions are checked during --convert-config by @carlos-granados in #1679
  • Include consistent index & placeholders for Example names in JUnit by @acoulton in [#1682]#1682)
    based on work previously done by @uuf6429.

Internal

v3.25.0

03 Oct 20:16
bc7f149

Choose a tag to compare

Added

Fixed

  • Provide more context when failing with unexpected multiline args by @acoulton in #1668

Internal

v3.24.1

15 Sep 09:09
1b67565

Choose a tag to compare

Fixed