Introducing Kheera
TL;DR: Kheera is the best Cucumber based web automation tool on the planet.
When you are responsible for web automation for two multibillion websites, you very quickly learn the pitfalls of doing things a certain way because they have always been done like that.
A brief segue
I started my career helping an obscure little team called Softdollar, later renamed to Third Party Research and Brokerage (3RB), inside a powerhouse Wall Street company. When I joined this team after a successful internship at the same company with a different team, I expected 3RB's software to be top notch - well designed, robust systems which basically never broke down and just needed a little oil and elbow grease one a quarter. I was not prepared for what I saw. What I confronted were a pile of Java classes, each with their own 4-500 line main
method, no parameterization, each class custom built for each use case. So, like anyone would, I set about cleaning up this mess. And the template was set.
Next I moved to the equity trading systems team of that same company. I was on the trading floor when the Flash Crash of 2010 happened. Marquee names like Zipcar debuted on the stock market on trading systems I was responsible for. By the time my stint on Wall Street ended, I had enhanced the very heart of that company's NASDAQ trading system - the seat of this company's legendary trading prowess. When SEC decided that they wanted to better track proprietary trading, I was asked to design and implement the tracking mechanism which I was able to complete well ahead of the expected deadline. With my code in place, where we used to struggle to reconcile a handful of prop trades, we were now in a position to reconcile billions of prop trades every day - obviously, no firm would do billions of prop trades every day but the system was in a position to do this if they wanted to.
And back to the main point
When I started at my current job architecting web automation for the two multibillion dollar websites, I brought to it this history of working with mission critical, technologically complex systems.
What I found was an automation framework which could have been the best thing since sliced bread if it had been used correctly. The crud had accumulated and people had gotten so used to doing things a certain way that the good parts of this framework were all but hidden.
As a result,
- Tests took too long to execute
- When they failed, no one knew why they failed
- Other than the Automation team, no one could actually use the framework so automation was always lagging a sprint behind the development and test effort
- Tests were monolithic. For instance, you could not design a test which executed a few steps from Test 1 and a few steps from Test 2. That entire test would have to be written by hand.
There had to be a better way.
Last year, I had looked at using Cucumber to test some javascript modules and had really liked its philosophy. So I set about envisioning the new framework as a wrapper around Cucumber and Selenium.
I had a few end goals in mind
- The Automation effort had to be more collaborative. It couldn't stay stuck in the hands of automation engineers. We had to get manual testers and developers thinking "Automation First!"
- Writing glue code would be minimized. Glue code is code whose purpose is to connect the test steps to underlying Selenium web driver actions.
- The framework would be restrictive enough to lead to a better test suite but also flexible enough to get out of the way when you wanted to do something complicated.
I'm happy to report that Kheera has managed to check all these boxes. I will let the product speak for itself but I truly believe that it is a product of a lot of learnings and unlearnings that I have accumulated over the past 12 years in the software industry.
I hope you like it.