A web application is built on several layers, each of them having their own responsibilities, such as storage, transport, or business. That's probably why it's so difficult to test an application like this as a whole.
Indeed, most of the time a unit test, or what could be considered as a unit piece of the software, will require boilerplates or mock-ups to run it.
The perfect example is fetching a user's information using the REST API our application is exposing. This will require us to have a database, an HTTP broker, and so on. But still it should be considered as a unit test. No business logic, no specific requirements, just a GET method using an ID.
That's why in a web application there exist tests that I'm calling atomic. These tests don't require a specific environment to be run and, of course, are the simplest tests – they can be seen as plain unit tests in a utility library, for instance.
A famous testing framework in Scala is specs2. specs2 has an amazing number of...