Building great end-to-end tests with Selenium and Cucumber / SpecFlow

Are you struggling with writing good Selenium tests? Wasting a lot of time and effort getting them to run, and then some more maintaining them? No surprise there, writing great Selenium WebDriver-based tests is hard!

Simply having knowledge of the WebDriver API is not enough to be able to create future-proof end-to-end tests with Selenium. To be able to live up to the hype that comes with the introduction of automated end-to-end tests, you’ll need to be able to manage the expectations around these tests and create a solid framework that will help you create and maintain this type of automated tests with a minimum of effort.

Before you dive into the creation of these tests, it is essential that you learn which tests make good end-to-end tests, and which tests are either better created at a lower level, for example in API- or unit tests, or left to a skilled tester instead of automating it in the first place.

In this training course, I’ll show you real-life examples of projects I’ve worked on and that are examples of great and not-so-great end-to-end test automation. Once we have established which tests are good candidates for end-to-end automation, you’ll learn how to define, create and maintain automated end-to-end tests that are:

  • Readable, through the use of the BDD frameworks Cucumber and SpecFlow for describing the intent of your tests in human readable language, as well as through applying good programming practices and useful Selenium patterns that keep your code readable and pretty much self-documenting.
  • Maintainable, through the use of good object-oriented programming practices such as abstraction and encapsulation, removing duplicate code and minimizing maintenance efforts in case of changes in the application under test.
  • Reliable, through the use of centralized synchronization, exception handling and reporting methods that minimize the risk of false positives when you’re running your tests.

Topics covered in this course
This course teaches you how to:

  • decide which scenarios should be turned into end-to-end tests, and which scenarios are better automated using another approach – or not automated at all,
  • combine Selenium WebDriver, Cucumber (for Java) or SpecFlow (for C#), JUnit (for Java) or NUnit (for C#) and ExtentReports for a tried and tested approach to creating end-to-end tests that you can rely on,
  • and make these tests part of your overall software development and delivery strategy

After completion of this course, you’ll have

  • the knowledge to decide what tests are fit for automation using Selenium WebDriver, and what other approaches there are to automating tests
  • experience in writing readable, maintainable and stable automated end-to-end tests using the aforementioned open source tools
  • working example tests as well as a fully functional framework that you can directly apply in your own work
  • had fun!

Duration of the course
The course as presented on this page covers either 2 full working days or 3 evening sessions. Customization is possible, though, so feel free to contact me if you have additional questions or requirements.

Programming languages
Course material is available for Java and C#.

Course delivery
This course is offered in house, in person. This facilitates interaction and asking questions and will make sure that participants get the most out of the course. It also allows me to adapt my material, examples and exercises as much as possible to your specific requirements.

I work with a maximum group size of 12 participants. Currently, I’m only able to deliver this course in the Netherlands, or any other location sufficiently close.

Availability and pricing
Are you interested in me teaching this course at your organization, or do you have any additional questions? Please contact me through the Contact page or send me an email at and I’ll be in touch.

Pricing available on request.