Interlude and reflection on Selenium

I am putting my UI testing with Selenium series on hold for the moment. My goal at the start of the series was to be able to create UI tests and as I worked through learning how to, I blogged about what I was learning. My initial goal has been achieved and I can now write UI tests.

Before I continue the series I want to gain more experience UI testing, by writing tests for more advanced scenarios and allowing time for the way I write the tests to evolve. I also want to find out how robust (or brittle) the tests I create are when UI changes are made.

I think the blog series has been good. When I set out to learn Selenium, I personally found the available information confusing and had questions such as “which nuget packages do I actually need?”. I answered these questions and hopefully the series can help others who are looking to start using Selenium.

However, I do think the posts could have been better. It was not a conscious approach, but what I ended up doing was premeditating what I was going to blog about and then spend the week learning about that so that I could write the post. Deciding the goal in advance didn’t work out often and ended up splitting the blogging and learning into almost two separate activities.

I think a better approach would have been to have just blogged as I went about learning Selenium. For example something with a flow like the following bullet points.

  • I want to learn how to UI test with Selenium.
  • I can’t find any good guides for getting started.
  • I am attempting to create a UI test, but am confused about all the different nuget packages available.
  • Learn and describe the differences between them.
  • Create simple project with only the nuget required.

One of the things I struggled with was the structure of the posts and how to frame the information that I was learning. If I had written the posts as I went I think much of the background of why the information is important would have been taken care of. While writing the last post I started to make some changes to the example tests and the UI. Whilst making the changes I realised that I should add a page object to reduce code duplication and simplify any further changes. This led to me talking about page objects at the start of the last post, but I lost the context of why I introduced them, which would have help to demonstrate and explain the reason for the pattern.

I also think the posts require more code samples in the actual post. It would have been easier to add code snippets in if I was describing what I did in a more step by step manner.

My plans for the series are to look at libraries such as Seleno that simplify the UI tests, but as mentioned before I want to gain some more experience so that I can appreciate the benefits they provide. When I am ready to continue I will take the new approach to writing the blog posts.

Interlude and reflection on Selenium