## Story Syntax

JBehave supports multiple story syntaxes.

## JBehave Syntax

JBehave's syntax is supported by the RegexStoryParser:

    A story is a collection of scenarios

    Narrative:
    In order to communicate effectively to the business some functionality
    As a development team
    I want to use Behaviour-Driven Development

    Lifecycle:
    Before:
    Scope: STORY
    Given a step that is executed before each story
    Scope: SCENARIO
    Given a step that is executed before each scenario
    After:
    Scope: SCENARIO
    Outcome: ANY
    Given a step that is executed after each scenario regardless of outcome
    Outcome: SUCCESS
    Given a step that is executed after each successful scenario
    Outcome: FAILURE
    Given a step that is executed after each failed scenario
    Scope: STORY
    Outcome: ANY
    Given a step that is executed after each story regardless of outcome
    Outcome: SUCCESS
    Given a step that is executed after each successful story
    Outcome: FAILURE
    Given a step that is executed after each failed story

    Scenario:  A scenario is a collection of executable steps of different type

    Given step represents a precondition to an event
    When step represents the occurrence of the event
    Then step represents the outcome of the event

    Scenario:  Another scenario exploring different combination of events

    Given a [precondition]
    When a negative event occurs
    Then a the outcome should [be-captured]

    Examples:
    |precondition|be-captured|
    |abc|be captured    |
    |xyz|not be captured|

## Gherkin Syntax

Gherkin syntax is supported by the GherkinStoryParser:

    Feature: A story is a collection of scenarios

    Narrative:
    In order to communicate effectively to the business some functionality
    As a development team
    I want to use Behaviour-Driven Development

    Background:

    Given a step that is executed before each scenario

    Scenario:  A scenario is a collection of executable steps of different type

    Given step represents a precondition to an event
    When step represents the occurrence of the event
    Then step represents the outcome of the event

    Scenario Outline:  Another scenario exploring different combination of events

    Given a [precondition]
    When a negative event occurs
    Then a the outcome should [be-captured]

    Examples:
    |precondition|be-captured|
    |abc|be captured    |
    |xyz|not be captured|

The Gherkin syntax is supported via story transformers, that use the Gherkin parser to transform the syntax to JBehave's.

Note that Gherkin's Background element corresponds to the JBehave Lifecycle Before scenario-scoped element. JBehave also supports Lifecycle story-scoped elements and After element which are not currently available in Gherkin.