Effective BDD is largely facilitated through the use of a simple domain-specific language (DSL) using English-like sentences.
You can find out what phrases are understood using the --knows option. For example:
$ qa-engine --knows
Each statement describes a simple, atomic, action .
Given I am testing
Then I pass
A phrase may specify one or more parameters - prefixed with a $.
GIVEN I am not in a hurry
WHEN I wait for $seconds seconds
AND I sleep for $seconds seconds
AND I wait for $minutes minutes
AND I sleep for $milliseconds ms
Then I succeed
Scenario:
Given I am googling
When I GET http://google.com
A multi-line syntax is supported for injecting more complex objects such as CSV, JSON or XML:
GIVEN some CSV as $var_name:
or:
GIVEN I set $var_name to JSON:
THEN $path in $name should match $regex
THEN (.*) in $var should match $something
THEN I assert $javascript
THEN variable $name should exist
THEN variable $name should not exist
THEN variable $name should match $regex
THEN variable $name should contain $value
THEN variable $name should be $value
$name should be $value