Testdown is a language for writing website smoke tests in plain text:

Click the recipe "banana smoothie". Wait. Look at the recipe pane. See some ingredients: "banana", "honey".

The simple language encourages high-level testing. A handful of verbs are enough to exercise much of a web site's functionality.

Meaningful names instead of cryptic selectors make for clear and maintainable test suites.

Test suites are valid Markdown files, so non-coders can read them as rich text documents.

Testdown comes with a JavaScript-based test runner for single-page apps. Run tests from your regular browser using the test HUD or in continuous integration using WebDriver.


A noun phrase like the thing will locate an element whose role is set to "thing".

You can also use the thing "foo" to select a thing that contains the text "foo" anywhere in its content.

"Look at" changes where the robot looks for elements. It starts at the root and resets with every scenario.

You can use compound words like "recipe search box" for roles, too.

Sentence types:

Look at the thing.
Locate the thing and henceforth only see things inside of it.
Now look at the thing.
Reset the gaze and then look at the thing.
See a thing.
Verify the visibility of a thing.
See a thing: "foo", "bar".
Verify the visibility of a thing whose inner text contains "foo" and "bar".
See some things: "foo", "bar".
Verify the visibility of two things whose inner texts contain "foo" and "bar" respectively.
See some things.
Verify that at least 3 things are visible. This number is configurable.
See exactly 5 things.
Verify that 5 things are visible, no more or less.
Click the thing.
Locate the thing and click it.
Waits for a configurable predicate to become true. The default is to wait until no element has the role "spinner".
Wait for the thing.
Waits for the thing to be visible.
Enter "foo" into the thing.
Locate the thing, which should be an input or textfield, and enter "foo" into it.
Scroll to the bottom of the thing.
Locate the thing and move its scrollbar to the bottom.
Scroll to the top of the thing.
Locate the thing and move its scrollbar to the top.