A story declaratively describes communication with the component being tested in terms of events being sent and received. Structurally, a story consists of the following elements:
story ::= "story" name (option)* (idls | object | events | filter | action)* "end" idls ::= "idls" ":" idlclass (option)* end object ::= "object" name ":" objectclass (option)* "end" objectclass ::= name events ::= "events" name (event)* "end" event ::= "event" payload (option)* "end" eventclass ::= name payload ::= "payload" ":" type (primitive | nested) "end" nested ::= name ":" type (primitive | nested) "end" primitive ::= key "=" value type ::= name filter ::= "filter" name ":" filterclass (option)* "end" filterclass ::= name action ::= "action" name ":" actionclass (option)* "end" actionclass ::= name option ::= key "=" value key ::= name value ::= (string | number | range) name ::= string uri ::= string path ::= string