The Weather Shopper application – a tool for QA

Qxf2 has been using a web application called Weather Shopper to train our interns on Python and Selenium, interview candidates that list GUI automation as a skill on their resume, validate the capabilities of new GUI automation frameworks, etc. While we shared a write up about this tool several months ago on Reddit, I realized we hadn’t shown it to the regular readers of this blog. So here you are!


Qxf2 has interviewed and hired many QA engineers. We notice that testers tend to learn automation in weird ways. For example, many QA are comfortable producing Selenium scripts but not comfortable with programming! ¯\_(ツ)_/¯ This means that they end up writing flakey scripts. When we point this out to our new hires, they (correctly) reply that learning a new language without being able to apply it sucks. They do not want to go back and take a programming course. Instead, they prefer to steadily improve at programming by taking on new challenges and being hands on with the language. So, my colleague Annapoorani and I designed an exercise that needs Selenium but incidentally needs the tester to write some good code as well.

What is Weather Shopper?

Weather Shopper is a simple web application that lists an automation exercise on each of its pages. The application has just about enough business logic and UI elements to cover a lot of what a tester writing automation scripts can expect to encounter. It will help testers practice Selenium and a programming language of their choice simultaneously.

From a visual standpoint, you get to interact with changing text, buttons, tables, forms, etc. You also get to struggle with writing robust locators for dynamically generated content.

From a programming perspective, you get to exercise some simple if-else logic, typecast scraped data, loop through elements, write code to identify the minimum value in a list, perform substring searches, refactor your code into methods, manipulate arrays, assert correctness, etc.

How to use Weather Shopper?

Visit Each page will have an ‘i’ icon that allows you to click and read the task you need to complete. Don’t get fooled by how easy the task might seem. We have put in a lot of thought and design effort into making sure the exercises cover most of what somebody writing GUI automation for a web application will encounter in their work.

When to use Weather Shopper?

Weather Shopper was created as a training tool. It has helped us train several interns and new hires. It also let us create related training exercises like makemework that introduce Qxf2’s popular GUI automation framework to new hires. However, Weather Shopper has proven to be much more versatile than just a training tool.

We use Weather Shopper in our interviews. In Qxf2 interviews, candidates are never asked knowledge based questions. We also do not ask candidates about anything not listed on their resume. These two rules meant that we had a hard time giving practical interview exercises to candidates who claimed to know about GUI automation. But with Weather Shopper, we have a way to not only give a practical exercise but also check how far the candidate proceeds within the allotted time and how well they organize their code.

We can also use Weather Shopper for the evaluation of new GUI automation libraries and frameworks. We are looking for some good ideas and new tools. Whenever we stumble across a promising automation library, we like to try it out. Weather Shopper has proven to be a reliable baseline. When we try out a new tool, we simply solve the Weather Shopper challenges with it. When we’re done, we’ve got a reasonable idea of the different quirks presented by the new tool. As an example, my colleague Raji used Weather Shopper to evaluate Nightmare JS.

How to give feedback

If you use Weather Shopper and would like to give us feedback, please leave a comment below. You could also email either me [Arun: [email protected]] or Annapoorani [[email protected]] directly.

Leave a Reply

Your email address will not be published. Required fields are marked *