There are many good books available for test automation with Selenium WebDriver and Java. Most of them are HOW-TO guides. They explain how to accomplish different automation tasks such as finding elements or synchronizing tests with the sites or creating page classes. This book is not one of them. Many automation projects still use a lot of bad code, bad practices and bad design. For example, I have seen many incorrect implementations of the page object model. Or projects that use heavily utility classes and static methods. Or code that relies on object repositories. Or, one of my favories, code that implements functionality that already exists in the Selenium WebDriver library. So, I have written this book hoping that it clarifies a little bit what coding practices are good and what practices are bad for test automation with Java and Selenium WebDriver. My hope is that it will help reducing the amount of bad automation code. But in the end, it is all up to you. I hope that you enjoy reading it and find it useful.