Documentation: Make it Test

FIrst Up, Login:

features

* user_stories

* acceptance_criteria

=

Test Automation you'll actually like

Simple. Collaborative. Adaptable.

Terminology

Steps

* Step Name

Our core elements

Parameters

* Check "product" exists

Steps arguments

"Static Arg"
* Step that takes a table
   | id  | name    |
   |-----|---------|
   | 123 | John    |
   | 456 | Mcclain |
|Table Parameter|

Special Parameters

<prefix:value>
* Check if <file:/work/content.txt> is visible
file
Used as:
* Check if the users exist <table:/Users/john/work/users.csv>
table

Scenario (Acceptance Criteria)

Scenario name
-------------
## Scenario name

Or

Specification (User Story)

# Specification name
Specification name
==================

Or

Comments

Im a comment!!!

Comment has no syntax. Any normal line of text is treated as a comment.

Tags

Specification Level
===================

Tags: mvp, mission critical


Scenario Level
--------------

Tags: mission critical, fast

Enable cross-scenario or cross-specification grouping

Example

Markdown

Logging In
=====================

This describes what is required from a **logging in** action.

* Goto page "/login".

Successful login is refered to home
---------------------------
tags: mvp

* Insert into field "user" the value "boaz".
* Insert into field "passowrd" the value "******".
* Press button "Let me in."
* Validate page is "/home".

Wrong credentials result in an alert
-----------------------------

* Insert into field "user" the value "not-boaz".
* Insert into field "passowrd" the value "!******".
* Press button "Let me in."
* Validate alert is shown with the text: "Wrong credentials".

Java

Also applicable:

Go

Python

Ruby

C#

Javascript

public class StepGodClass {
    @Step("Goto page <page>.")
    public void gotoPage(String page) {
        // ... Yada Yada Yada ...
    }

    @Step("Insert into field <field> the value <value>.")
    public void insertToField(String field, String value) {
        // ... Yada Yada Yada ...
    }

// ... Yada Yada Yada ...

    @Step("Validate page is <page>.")
    public void validatePage(String page) {
        // ... Yada Yada Yada ...
    }

    @Step("Validate alert is shown with the text: <alertTitle>.")
    public void validateAlert(String alertTitle) {
        // ... Yada Yada Yada ...
    }
}

What we get

Just Code It

Thanks!

Specifications: Make it Run

By Boaz Berman

Specifications: Make it Run

Why runnable specifications frameworks will be the next big thing. Gauge as an example.

  • 159