Pepino is a simple language for user interface control. Like Gherkin, Pepino is a Business Readable, Domain-Specific Language. But while Gherkin describes software's behavior, Pepino describes how that behavior is implemented.
Try Pepino out for yourself: http://pepino-demo.herokuapp.com/
- Source files have
Pepino follows many patterns set by the Gherkin language. The following (borrowed from the Gherkin Language wiki) is also true of Pepino:
Like Python and YAML, Gherkin is a line-oriented language that uses indentation to define structure. Line endings terminate statements (eg, steps). Either spaces or tabs may be used for indentation (but spaces are more portable). Most lines start with a keyword.
Comment lines are allowed anywhere in the file. They begin with zero or more spaces, followed by a hash sign (#) and some amount of text.
For a gherkin feature file that looks like this:
1: Feature: Searching for a product by name 2: As someone trying to learn about ATDD 3: I can search for cucumber 4: So that I can read and learn 5: 6: Scenario: Valid search 7: Given I have navigated to the search screen 8: When I search for "cucumber" 9: Then I should find "cucumber.io" in the results
... a Pepino source file might look like this:
1: I have navigated to the search screen 2: Navigate to http://mysite.com 3: 4: I search for "$SearchTerm" 5: Type "$SearchTerm" into <#search> element 6: Click the <#submit> button 7: 8: I should find "$ExpectedResult" in the results 9: Verify "$ExpectedResult" is in <#results> element
Notice there is no "given", "when" or "then" in the Pepino source file. This is because steps don't necessarily care about what segment of the acceptance criteria they are servicing as long as the text pattern matches in both the feature file and the step file. Lines 1, 4, and 8 contain the text of the matching acceptance criteria segment. Indented below each segment, we find plain english instructions that control a given user interface. Lines 4 and 8 demonstrate how we can use variables to give our steps more flexibility and reusability.