README.md

# Cucumis

A Cucumber and Gherkin implementation for Erlang.

## Features

- **Full Gherkin syntax support**
    - [X] _Feature_, _Rule_, _Scenario_, and _Background_
    - [X] _Scenario Outline_ and _Examples_
    - [X] Tags
    - [X] Data tables and doc strings
    - [ ] Clear and readable parser error messages
- **Easy and flexible step definitions**
    - [X] Easy regex capture groups for step arguments
    - [ ] Access to step arguments, such as doc strings and tables
- **Test case execution**
    - [X] Supports multiple, composable step definition implementations
        - [X] Configurable at runtime
        - [ ] Configurable in `sys.config`
    - [X] _Background_ steps for rules executes for each scenario
    - [ ] Common test integration
    - [ ] EUnit integration
    - [ ] Test case traceability
        - [ ] Full step log
        - [ ] Original line numbers reported for failing steps

## Parsing

```erlang
2> cucumis:parse("test/files/guess_the_word.feature").
#{name => <<"Guess the word">>,
  rules =>
      [#{scenarios =>
             [#{name => <<"Maker starts a game">>,type => scenario,
                steps =>
                    [{'when',<<"the Maker starts a game">>,[]},
                     {then,<<"the Maker waits for a Breaker to join">>,[]}]},
              #{name => <<"Breaker joins a game">>,type => scenario,
                steps =>
                    [{given,<<"the Maker has started a game with the word \"silky\"">>,
                            []},
                     {'when',<<"the Breaker joins the Maker's game">>,[]},
                     {then,<<"the Breaker must guess a word with 5 characters">>,
                           []}]}]}]}
```

## Running Feature Tests

### EUnit

TBD

### Common Test

TBD

### Manual

TBD