Watai is defined as a declarative, bottom-up BDD, full-stack web testing framework. This document tries to define those qualifications a bit more precisely.
Most frameworks offering web integration tests make you write in an imperative fashion: execute some commands (usually walking the DOM), then assert some values (usually against some HTML attributes).
Watai shifts the testing procedure to be declarative, that is describing components states and associated transitions from one state to the other.
In web development, testing is often limited to unit level on server-side code, sometimes on client-side code, and rarely on full-stack (or end-to-end) functional testing, i.e. in the actual production environment: the browser. There are many reasons for this, too many for this quick definition.
What is important is that Watai uses Selenium to execute your tests in all browsers, so you can be confident in their results. You don't have to know a thing about Selenium though, as the whole point of Watai is abstracting away those implementation details.
Watai offers a Behavior-Driven Development frontend, in order to make your test suite a good boundary object across all your project’s stakeholders, and to make the purpose of testing clearer to everyone, including developers.
However, instead of presenting the usual scenario instrumentation pattern (describe expected feature, write scenario, instrument scenario, write actual testing code), Watai > leverages its declarative concepts and generates business-readable scenarios from the tests description information. Hence the “bottom-up” phrasing: instead of starting at the human-readable top-level, you finish your testing experience with it.
Last edited by Matti Schneider,