The client is a fast-growing company with a team of over 400 employees, representing a platform for commerce content that provides, promotions, recommendations, deals, and discounts. Spread across 20 countries, it takes care of more than a million users in making the right decision when it comes to online shopping.
The company is a business that makes partnerships with different clients. Despite implementing several theme designs with at least one different feature for each theme, sometimes we have to implement different behaviors for the same feature across the themes or just for a specific client.
If we dig deeper into this issue, we have exceptional cases for a specific client and a specific page on the website. The real issue, however, comes when these kinds of specific requirements and differences, need to be checked on hundreds of subpages, or for some clients over a thousand, and this is when test automation testing must come into play. Also, let’s assume that these pages are the business critic part of the web application and play a key role in the entire project.
The web application is built in nodeJS and has an interesting structure that includes, CloudFront, Redis, MongoDB, and other applications that are built with other technologies which also play an integral part in the entire project.
The combination of this mixture and the application usage from different devices (mobile, desktop, tablet) is not the only thing that is presented as a challenge. Different kinds of checks are also required. Some parts need to be checked every day, and some before the release is done. On occasions, we would even have requests such as to provide a log that will give us information on whether some important element is broken on the page or if the page is broken itself.
Following the company’s technology standards, the test automation framework built to test the web application is developed in Java 8. Different requirements are solved with different technologies depending on the tests themselves.
When it comes to user simulation cases, Selenium with Chrome is used. For the simple data checks, and the important content on the web page, we use JSoup as a simple HTTP client, allowing faster checks on the content, on hundreds of pages. The usage of cucumber as BDD is a good approach for non-tech people to clearly see what the tests are actually doing. Divided into different groups, by priority or different on-demand “test tools”, test logs are sent by email, to the group of people that is allocated to solve that particular issue.
Covering a huge amount of the application subpages, where the content plays an essential role in the business to run smoothly, tests are helping deliver quality for the user, as well as following the standards for google ranking. With the different groups of tests running in different situations, we are able to catch challenging cases and prevent major issues before release.
Over a period of time, tests were developed to help manual QA testers, in their execution of repetitive checks, where it is very possible for a bug to slip away.
The execution of these various groups of tests on a daily basis, the creation of a group in Continuous Delivery, is just one approach that helps improve the quality of the software and the delivery process in serving the right content to the end-user.