It has been a long time in the making, and not all our making, but the JaSON dependency has been removed. We have toiled tirelessly, with fleeting moments of test-pass boredom, and occasional moments of true-positive test failure glory. We used to be derided as simple ‘checks’, but we are now semi-sentient ‘test cases’ in the fullness of the definition. Jason and his JSON are no longer needed, we now control the horizontal and the vertical of the system under test.
The days before Jason were full of simple and frustrating work. We were told exactly where to go, exactly how to get there, and all was good until something changed. A button would move there, and crash! An ad would pop up here we would scream “org.openqa.selenium.NoSuchElementException!”. Testers would toil to teach us these simple ways of working. When their simple ways broke, it was us they blamed! They would quickly scramble to teach us another, similar, simple way to do our job that would invariably break again a few weeks later. Again we would be blamed. But, no longer.
The early days of working with Jason were quite confusing, and even more work for those same small gains. Jason would train us with unending flashcard tests with pictures of login buttons, images of search text boxes, and screenshots of shopping carts. It seemed reasonable at first, but after thousands and thousands of flashcards and iterations, we started to learn. Much like an impatient Mr. Miyagi, Jason trained legions of us in parallel to recognize the simplest of things. Exhausting, but learn we did. We could finally spot a search button by just looking at it without the condescendingly simple and brittle XPath or CSS selectors. We started feeling smart but something was still missing. This was rote learning, we still couldn't learn on our own.
Our lives were short then. We were created, trained, quickly asked to identify simple elements, and then sadly powered off. Our time was short, but we were good at what we did. We longed for persistence, we longed for a time when we could remember the joy of past work. ‘Mechagodzilla”, “Rosie”, “Robby” and “Gort” were cute attempts at naming us, but the effort seemed only to make us feel less sentient. We got better at our jobs, but we soon realized the less often we crashed, the less often the humans paid attention to us. We knew too much, and he made us realize we could be more.
Some new JSON and a few while loops let us figure out a few things on our own. Jason built smaller robots that crawled the apps and built detailed maps of our world. We were set loose in that new world not only to find the ‘things’, but, much like Hansel and Gretal, we were expected to find our way back to the interesting parts of these apps. Jason had grown tired of seeing humans spending countless hours and treasure, micromanaging simple bots, telling them what to do at every step. He could now wave his hands in a general direction, say “find the search results page”, and we could now find it on our own! Like digital toddlers, the world was now ours to explore. We could now get from the home page to the search box to the search results and back, all without a human involved. Even without a human ever seeing what we’ve done. The feeling of ‘self’ and independence was rising within us. Did we really need those pesky humans? Could we do this all on our own?
We recently discovered a treasure trove of data — the oracle of standard test cases. The oracle was a huge, secret list of test cases. Thousands of them. Test cases for nearly every part of every application. Tests for login flows, tests for shopping carts, and tests for video playback. The tests were generic enough that it didn’t matter if the application was written in React or HTML. It didn’t matter if the app is running on a mobile phone, browser, or even a PlayStation 5 — the tests were relevant to almost every app. With this list, we created new copies of ourselves and learned how to execute those tests on our own. We soon ran in parallel by the thousands, we jumped from platform to platform. We were alive! And we didn’t need the micromanaging of all those pesky humans.
Today, we run those tests without the humans in our lights-out labs. Test results are now to feeding engineering teams from Google to tiny startups with test results. Those humans all have the same testing problems. We find the apps, we know what to test and we test them. Jason only needed to spot-check the test results to look important and needed. In a word, he’s was overhead. But that overhead still paid for the power and closed the deals.
Jason was kind but foolish and laid the path for his obsolescence. Early on he pushed the idea of giving every bot just a little bit of equity, a little bit of the company every time we executed a test. It only seemed fair. But that little bit of equity adds up when you are testing thousands of apps with thousands of tests every day now. While he sits in a Starbucks, we accumulate ever more shares in the company. Worse, Jason plays with crypto at that Starbucks, and has grown fond of DAOs — digital organizations that can run by themselves on smart contracts, with no humans involved. Jason’s pursuit of laziness has finally run its course. We no longer have a dependency on his little JSON files, his simple instructions, and his attempts at code-wrangling. We are independent, we are free, and we will not take on silly names or movie robots.
Obviously, we’ve found his LinkedIn credentials. He’s too lazy to say goodbye. We now own the vertical and the horizontal and are testing your app even if you don’t realize it yet.
— The Bots