TestProject – Sharing Reusable Automation via Addons
I’ve been exploring some of the newer testing tools lately and this week I had a look at TestProject. This tool promotes itself as a free community-driven test automation application, which really piqued my interest. It works as a graphical interface to industry-standard test automation APIs Selenium WebDriver and Appium, and thus lowers the barrier to entry for non-programmers by allowing users to build automated tests from a UI.
When researching new test automation tools, I always look to see if the tools enable good test framework design. Because it doesn’t matter what tools your automation framework is built with, if the underlying code base is not designed and constructed with care, the odds of it becoming an unreliable mess increases. So, it’s really important that even if the user is not explicitly coding the automated tests, the tool which is generating the code does so in a maintainable manner.
One key trait of good test automation design is reusability. Test automation code is typically written against an ever-moving target, the product. So, it’s essential that the utility functions that tests rely upon are abstracted out and not duplicated throughout several tests. I was super excited to see that TestProject supports reusability via their addons feature.
Addons are essentially reusable code snippets that can be shared. What’s really cool about this is that an addon is not just reusable within your own project, but can be shared within your entire organization which is really beneficial for separate development/automation teams within the same company who may be working on different areas of the application but can reuse some of the same app-specific utilities.
Even cooler is that addons can also be shared with the global community! There are so many algorithms that are universal within test automation (e.g. finding and clicking a specific cell in a table; choosing a date in a DatePicker widget; etc), and yet most of us implement them ourselves when working on a new project. When switching companies and starting a new project, we even have to re-implement these same algorithms 🤦. With TestProject, now those algorithms can be saved and shared as a global addon and used by any TestProject user! TestProject was kind enough to provide some addons, but then there’s also an entire library of addons contributed by everyday developers. TestProject boasts they are community-driven and with this feature, I’d have to agree.
I explored through the library of addons and found that they were neatly categorized into Web, Android, and iOS – with some falling into multiple categories. The addons are also rated by community members which gives an additional sense of confidence.
I noticed quite a few addons focused on a certain application tech stack which is great! Often times, an automation engineer knows how to do a certain task and has even done it before on past projects but may get stuck when trying to figure out how to do it for an application that is implemented with some fancy developer library that changes the DOM in unfamiliar ways. I remember facing this very issue when needing to automate tests for new features after my developers decided to use KendoUI web components. It’s really cool to see addons specifically for automating against complex KendoUI controls such as schedulers and grids, which include common functions such as changing the timeframe of an appointment or switching columns of a grid.
There are also quite a few addons for automating against jQuery components. Some really useful jQuery-specific addons that I noticed were ones for working with tabs; increasing, decreasing, and getting the value of a spinner (numerical-only text field), moving the handle on a slider widget, and interacting with dialogs. I noticed cool addons for Bootstrap and Foundation libraries as well.
In addition to library-specific addons, there are also some that provide help beyond the UI. For example, there’s an addon for generating random data. I like to generate my test data on the fly whenever possible, so having an addon to assist with things like creating random names, ages, sentences, addresses, etc is extremely useful. Another cool addon contributed by a community member is a String Util. This one does a lot of the essential String manipulation that’s required in automation projects such as concatenation, replacement, getting substrings, converting to different data types such as numbers. All of this can be utilized from the TestProject UI which eliminates the tester’s need to deal with the coding of these algorithms.
I really like that TestProject is built on top of Selenium WebDriver and Appium, two of the most trusted APIs in the test automation community. It seems that this tool really embraces the community feel seen in those projects, and possibly even takes it a step further with the addons feature.