State Machine Project
Implementing BDD as a State machine fits quite well:
Given <=> Start State; parent states repesent multiple given statements
When <=> Event; with optional Actions, Parameters and Guards
Then <=> Next State; with optional entry and exit Actions
BDD Description
Image: Images that can be referenced by a statement or action
Image.Name
Image.Width
Image.Height
Url: Used for References
DomainModel: A Domain language that can be referenced and dynamically added to by surrounding a word in a Statement or action with square brackets.
e.g. [KEY_PRESS:CTRL-SHIFT-W] where KEY_PRESS is the object and CTRL-SHIFT-W is an instance of KEYPRESS.
Words that match existing entries in the domain model will auto create links in Statements and Actions.
KEY_PRESS:MODIFIER-KEY
MOUSE_MOVE:POINT|REGION
MOUSE_CLICK:LEFT|RIGHT|MIDDLE
MOUSE_SCROLL:UP|DOWN
Dialog
Object
Button
Story: Context for a set of Scenarios relating to a feature
Story.Narrative: Reasoning behind the Story
Story.Narrative.InOrderTo: What the story is trying to accomplish
Story.Narrative.AsA: The Stakeholder/Role that would be trying to do this
Story.Narrative.IWantTo: The feature that must be available to accomplish the story
Story.Scenario:
Story.Scenario.PreRequisiteScenario: Scenario that must be run create the state required by this scenario.
Story.Scenario.Given: A Set of prerequisite Statements that must be true for the scenario to be run and represents a point on the statement tree.
Story.Scenario.When: An Action that must be carried out to trigger the scenario
Story.Scenario.Then: A Set of Statements that should be true after the Action. This is effectively another point on the Statement tree.
Statements that have parameters e.g. %parameterName% are treated as templates and must have concrete ChildStatements.
A StatementTemplate can have a default When Action and Then Statements which will be inhereted by the ConcreteStatement.
Images can be referenced using it's name and optional relative coordinates [x1,y1,x2,y2] to highlight an area of the image; defaults to full image coordinates.