Writing web user interface tests
Until now, you have written specifications for the business and HTTP layers. However, these specifications do not cover user experience. For instance, you might want to define the following user story as a testable specification: a user browses the item list, clicks on a button to add a new item, enters the name and price of the item to create and submit the form, and the created item is displayed.
You can define such specifications using Selenium WebDriver (https://code.google.com/p/selenium/); this library allows you to programmatically drive a web browser. Play applications automatically depend on Selenium WebDriver as well as on FluentLenium, a library that provides a fluent interface for the WebDriver. For instance, a specification for the user story described previously can be defined as follows:
import play.api.test.{WithBrowser, PlaySpecification} class UISpec extends PlaySpecification { "A user" should { "add a new item to the item list" in...