# Changelog

## Unreleased changes

## 4.3.0 (2018-09-10)

### Enhancements
- Support & test against elixir 1.7 and otp 21

### Bug fixes
None

### Backwards incompatible changes
None

## 4.2.1 (2018-07-14)

### Enhancements
None

### Bug fixes
- Fix argument passing on the CLI so that --suite is used. Thanks to @bwhite-mdsol [#101]

### Backwards incompatible changes
None

## 4.2.0 (2018-04-02)

### Enhancements
- Decouple from exunit and allow choice of assertion libraries. Thanks to @marnen [#96]

### Bug fixes
None

### Backwards incompatible changes
None

## 4.1.1 (2018-03-06)

### Enhancements
None

### Bug fixes
- Placeholders are now interpolated in tables. Thanks to @marnen [#95]

### Backwards incompatible changes
- Placeholder interpolation might break tables that rely on < and > characters.

## 4.1.0 (2017-09-15)

### Enhancements
- Add json formatter for output. Thanks to @leifg [#93]

### Bug fixes
None

### Backwards incompatible changes
None

## 4.0.0 (2017-09-08)

### Enhancements
- Features now have the filename available in the struct. Thanks to @leifg [#90]
- Elixir 1.5 formally tested. Thanks to @leifg [#92]

### Bug fixes
- Deprecation warnings removed.

### Backwards incompatible changes
- Whitebread now requires elixir >= 1.2. Anyone already running this or  higher will be unaffected.

## 3.1.0 (2017-02-07)

### Enhancements
- Better structure for outputting results. Thanks to @dzol/@findmypast [#83]
- Use external Gherkin library. Shared with the https://github.com/cabbage-ex project.

### Bug fixes
none

### Backwards incompatible changes
- The way custom output is configured has changed. Previously a config key `outputer` was expected to give a
module implementing the output protocol. This has now been replaced with an event driven model and the key `outputers`
is now expected see #83 for details. This detail was not previously part of the official public interface.

## 3.0.0 (2016-12-18)

### Enhancements
- Roles are now parsed. So any feature with ```As a Person``` in the description can be filtered using it. See #54 for details.
- In async mode scenerios can now timeout. The scenario_timeouts macro is can be used to specifiy a function which generates custom timeouts. See #57.
- The finalize functions are now given the success (or failure) status. Thanks to @mgwidmann.[#75]
- `suite` can now be specified on the command line to filter to run a single suite from the config. [#77]
- HTML Output for White Bread now available thanks to @Dzol (and @mentels for reviewing) [#81]

### Bug fixes
- Run the scenario starting state for outlines just as for simple scenarios. Thanks to @marnen. [#73]
- Long running scenerio steps now longer cause undefined failures in aysnc mode see [#52].

### Backwards incompatible changes
- Elixir 1.0 no longer supported due to changes in #57. Elixir 1.1 and above is needed.
- The context behaviour is extended to require ```callback get_scenario_timeout(Feature.t, Scenario.t) :: number``` any contexts not ```use```ing ```WhiteBread.Context``` will need to add the function.
- The *_starting_state and *_finalize functions in the context behaviour have been standardised so a pair each for feature and scenario.
- `tags` and `context` are no longer supported on the command line. Tags will be reintroduced in a later release. Context will not as everything will now require a suite configuration. [#77]
- `subcontext` macro renamed to `import_steps_from` to make intent clearer.

## V2.8.1 (2016-09-29)

### Enhancements
none

### Bug fixes
- Scenario outlines without any examples now fail. This is less surprising than the previous passing result (#65).

### Backwards incompatible changes
none

## V2.8.0 (2016-08-14)

### Enhancements
- Adds details of assertion errors to output. Thanks to @raycheung via #60.

### Bug fixes
none

### Backwards incompatible changes
none

## V2.7.0 (2016-04-23)

### Enhancements
- Adds the ability to run all features and scenarios within a suite asynchronously by adding ```run_async: true```.
- Allows extra config to be added to each suite generated by ```context_per_feature``` by adding a list of key-values to ```extra```.

### Bug fixes
none

### Backwards incompatible changes
none

### Notes
- The runner protocol has been removed as this added complexity but little obvious benefit.


## V2.6.1 (2016-04-06)

### Enhancements
none

### Bug fixes
* Directory will be created for new default context.

### Backwards incompatible changes
none

## V2.6.0 (2016-04-06)

### Enhancements
* Add --contexts option to overide default
* Add --config option to overide default
* Exits are now trapped during runs. see 4067990e06b21bb0cb13010c6bb7eb54e184f28c

### Bug fixes
* Fails faster if default context can not be created.

### Backwards incompatible changes
none

## V2.5.0 (2016-02-11)

### Enhancements
* Add ```context_per_feature``` setting to suite config. This creates a suite
per feature file and loads a context based on a naming convention.
Credit goes to @rkotze for implementing this feature. See #39

### Bug fixes
none

### Backwards incompatible changes
none

## V2.4.0 (2016-01-31)

### Enhancements
* Added ```ContextBehaviour``` behaviour that context modules can implement as
an alternative to using the DSL provided by ```Context```.

### Bug fixes
none

### Backwards incompatible changes
none

## V2.3.1 (2016-01-25)

### Enhancements
none

### Bug fixes
* Fix bug that caused creating a default context automatically to error weirdly.

### Backwards incompatible changes
none

## V2.3.0 (2016-01-21)

### Enhancements
* Added suites configuration for defining which features are run under which context. See PR #34. Thanks goes to @rkotze for design input.

### Bug fixes
none

### Backwards incompatible changes
none

## V2.2.0 (2015-12-26)

### Enhancements
* Colour output thanks to @rkotze see #29
* Define the WhiteBread.Formatter.FailedStep protocol. Using this allows users to customise how uncaught exceptions are formatted as text by whitebread.

### Bug fixes
none

### Backwards incompatible changes
none

## V2.1.2 (2015-11-21)

### Enhancements
none

### Bug fixes
* Scenario results now reported live as they are run. Issue #26
* Fixed bug that meant final result sometimes printed before scenario results. Issue #27

### Backwards incompatible changes
none


## V2.1.1 (2015-11-14)

### Enhancements
none

### Bug fixes
* Fix issue with steps executing multiple times. Thanks to @leiyangyou : https://github.com/meadsteve/white-bread/pull/24

### Backwards incompatible changes
none

## V2.1.0 (2015-11-08)

### Enhancements
* Add finalize() function to contexts called after every scenario.
* Handle any error thrown in a step.
* Format assertion errors from Espec (as well as the previously handled ExUnit)

### Bug fixes
none

### Backwards incompatible changes
none

## V2.0.0 (2015-10-14)

### Enhancements
* Add Doc string support (see http://www.relishapp.com/cucumber/cucumber/docs/gherkin/doc-strings).
* Application is automatically started on run.
* Elixir 1.1.0 is supported.

### Bug fixes
* Lines commented out with a # no longer break the parser.
* windows line endings handled correctly.

### Backwards incompatible changes
 * Application will be automatically started unless --no-start is added: ```dogma WhiteBread.run --no-start```

## v1.0.1 (2015-06-24)

### Enhancements
none

### Bug fixes
 * Fixed an error caused when quoted strings appeared in the middle of an undefined step.

### Backwards incompatible changes
none

## v1.0.0 (2015-06-16)
This is the same as version 0.6.0 but pinned to 1.0.0 as the interface of the feature context can now be considered stable.

### Enhancements
none

### Bug fixes
none

### Backwards incompatible changes
none

## v0.6.0 (2015-03-22)

### Enhancements
* add subcontext macro to context to help break up big contexts

### Bug fixes
no significant fixes

### Backwards incompatible changes
none

## v0.5.0 (2015-03-22)

### Enhancements
* Added stack trace to function clause match errors

### Bug fixes
no significant fixes

### Backwards incompatible changes
* error returned for :no_clause_match is now a tuple like {FunctionMatchError, Trace}

## v0.4.0 (2015-03-21)

### Enhancements
* Added table handling. Any step followed by a table will get key :table_data
* Added support for scenario outlines
* Add code suggestions for missing steps
* All step functions can now be arity 1 or 2

### Bug fixes
no significant fixes

### Backwards incompatible changes
* step functions now only have 1 or 2 arguments. The second argument is always a map. Previously regex named matches each became an argument.

## v0.3.0 (2015-03-14)

### Enhancements
* Added initial_state macro which takes a block that returns the starting state
for a context.

### Bug fixes
no significant fixes

### Backwards incompatible changes
none


## v0.2.0 (2015-03-09)

### Enhancements
* Added support for --tags on mix task.
* Added default Context loaded from features/default_contect.exs

### Bug fixes
* warnings for a handful of unused variables removed.

### Backwards incompatible changes
none
