Automation Testing for CRM pyramid
Modern digitally progressive businesses and organisations need reliable, informative, trustworthy, reusable and optimal automated testing to achieve maximal user journey coverage across software projects.
Our client, is the large events company in the world. The project we are working on with them is a scalable and modular white label CMS used by leading online, offline and hybrid conferences as well as other events including festivals.
The application was initially built with a monolith architecture over 6 years ago now. The original team were experienced, skilled software developers but the monolithic architecture was not scalable and be suitably adapted to current and planned future needs.
The original software development team also took on the QA role alongside development responsibilities and set up automated testing for the monolithic CRM.
However, as the application’s features were consistently iterated on at the request of the business an increasing number of bugs and other issues started to appear.
Dt-Tech continues to enhance, support and maintain the CRM pyramid, releasing regular updates to enhance the platform based upon customer feedback and growth.
Our customer, a European startup, came up with an idea for a mobile audio and video editing app that would enable media creation, viewing, and distribution. Aimed at music artists and producers, the app would enable them to become audio/video content creators, publishers, and distributors regardless of their experience and background.
And due to the solution’s social network capabilities, artists could be discovered and their content could be reused, gaining popularity and monetization.
We had several problems with end-to-end test frameworks while setting up E2E automation due to:
We also had inherent limitations to our options eg. you do not want to add Python test frameworks into a Java/Javascript codebase.
Why Dt-Tech?
Dt-Tech’s software developers and QA engineers are highly skilled and mature professionals able to identify gaps, limitations, opportunities much faster than others.
DT-Tech teams include full-stack and QA automation engineers able to develop, maintain and test a wide range of application types.
Tech Stack:
The technology stack used in this project includes but is not limited to:
Languages:
Java & Typescript
Frameworks:
Spring & React.js
Test frameworks:
Puppeteer, Percy, Junit, Artillery, Lighthouse and Postman
Puppeteer provides a high-level API to control Google Chrome(or any other Chrome DevTools Protocol based browser) built by Google.
Jest is a framework developed by Meta Platforms (ex-Facebook).
Both are popular, well-supported and continuously developing tools used by a wide range of applications that require browser automation. The choice of these tools and technologies future-proofed the project and meant there was a deep pool of specialists from which to hire new team members while allowing for a high level of customisation.
The strategic decision was taken to bring in a Dt-Tech software development team to migrate the legacy app from a monolithic to microservices-based architecture. Initially, manual QA engineers were introduced into the team as a stand-alone role.
At a later date the decision was taken to evolve the CRM as a SaaS to be licensed to the multiple event brands under the Informa umbrella. Alongside the architectural changes that required the decision was taken to introduce a comprehensive automated testing system.
Without it, manual regressions of the application would have taken up to 2 weeks, followed by re-testing and any fixes required.
This wasn’t an option for the CRM’s agile development approach.
Our solution was to develop an automated test pyramid with the following components:
The unit/component and service integrations test were developed by the software developers and the remaining components by QA automation engineers.
That approach has helped us improve the project’s quality and the efficiency of ongoing work as developers were not also taking on the QA role and able to focus only on the development while QA automation engineers develop, maintain and optimize automated testing. The result was a sharp reduction in the amount of overtime required of the team and the number of hotfixes and production issues. It also reduced the number of features to be released per sprint but the quality of those releases increased which attracted more users of the CRM.
The decision between Java and Javascript test frameworks for end-to-end tests
We were choosing between Java and JavaScript test frameworks for end-to-end tests. First we selected Selenium+Mocha+Chai as great-value and well-supported stack for browser test automation.
We compared the stack to the Serenity BDD framework which natively offers valuable features that needed to be introduced to Selenium+Mocha+Chai stack through third-party libraries or in-house development. Serenity BDD also demonstrated better performance and we thought we had our test stack.
But we concluded Serenity was the best option for our context as we weren’t going to use BDD so went back to the drawing board.
We then assessed CodeceptJS, which provides a superset for all protocols as devtools or web drivers and supports Typescript out of the box. However, we concluded it still lacks features we required which we would have to develop by ourselves. The tool also offers limited support.
Finally, we settled on the same combination on Puppeteer + Jest + Java/Type-script we were using in other tests. This resulted in a clearer and more consistent test set requiring the same tech stack across development and maintenance.
With Nikon, users can break internal silos for delivering tailored client experiences and building deeper relationships with their customers in the education industry.