In the previous chapter, we saw how to test web applications and, in general, applications that rely on the HTTP protocol, both client and server side, but we were unable to test how they perform in a real browser. With their complex layouts, the fact that CSS and JavaScript are heavily involved in testing your application with WebTest or a similar solution might not be sufficient to guarantee users that they are actually able to work with it. What if a button is created by JavaScript or it's disabled by CSS? Those conditions are hard to test using WebTest and we might easily end up with a test that clicks that button even though the button wasn't actually usable by users.
To guarantee that our applications behave properly, it is a good idea to have a few tests that verify at least the more important areas of the application...