In the world of software development, the adage "the cobbler always wears the worst shoes" holds true. If you're building a testing tool, why not put it to the test on your own app? That's precisely what we did here at Waldo. Allow us to introduce you to Waldo on Waldo (WoW), our internal process for testing our web app using our very own solution.
Not familiar with Waldo? We're a leading Automated Testing platform for mobile applications (iOS and Android). Our mission is to help developers deliver high-quality, visually-perfect digital experiences to their users.
In this four-part article series, we explore how WoW has transformed our web app testing.
In Part 1: What is WoW and Why is it Important? we introduce you to the inception of WoW and the platform limitations we encountered. Discover how we overcame these challenges, allowing us to test our web app within our own solution.
Part 2: User State Managementuncovers the importance of managing user states in testing. Explore the two approaches we considered, the advantages of using fresh user accounts, and how we automated plan upgrades within WoW.
In Part 3: Clone Data for Complex Scenarios, we delve into the complexities of creating and managing data for various testing scenarios. Learn how we implemented data cloning endpoints in our backend to streamline the process and test a wide range of use cases.
Finally, Part 4: Performance and Cost Optimizations reveals our quest for efficient and cost-effective testing. Uncover the optimizations we made, including streamlined sign-up processes, bypassing unnecessary backend logic, and improving device configuration management.
Lets dive in!
In this first part of our four-part series of articles, we'll delve into the inception of WoW and why it holds significance for us.
Dogfooding: Putting Our Solution to the Test
Dogfooding is an integral part of our development process at Waldo. It allows us to gain firsthand experience with our testing tool by applying it to our own application.
By using WoW, we put our solution through its paces: identifying and addressing any issues or limitations that arise. This commitment to dogfooding ensures that we have a thorough understanding of our product's capabilities and usability, enabling us to continuously enhance it.
As a web SaaS company, we faced a challenge: our product exclusively supported iOS and Android apps. This posed a predicament since our web app was meant to be accessed by our customers on desktops.
We created an iOS app that functions as a simple Safari web view, occupying the entire screen. Initially designed for phones, we decided to expand our support to iPads and set them to default to landscape mode. This breakthrough allowed us to launch our web app within Waldo, providing a user experience akin to what our customers encounter.
One final addition we made here was enabling zoom functionality to adjust the page size, allowing for comprehensive testing across various screen resolutions.
Addressing Keyboard Issues
However, another hurdle awaited us: the keyboard issue. Unlike desktop browsers, when you tap on any input field on an iPad, the keyboard appears, altering the layout.
To mimic the desktop browser experience, we developed a custom iPad simulator. This simulator crops the screen when the keyboard is displayed, aligning it with what users see in a browser on a desktop. With this enhancement, we were getting closer to our goal.
Automation and Version Control
The next challenge was automating the process so that with every commit, we could generate a custom build to test the specific version of our app corresponding to the latest commit. To achieve this, we integrated additional logic into our web app server.
Upon each commit, we build our React web app and store the corresponding assets in Amazon S3. When building WoW for a particular commit, we instruct it to open a Safari window using our web app's URL, which includes a query parameter representing the commit's Git SHA. Opening the web app with this parameter triggers the server to download the matching assets from S3 if they are not already present, serving the specific version for testing.
This way, we maintain a single server that primarily serves the currently deployed version while simultaneously enabling us to test any frontend version via WoW.
Waldo on Waldo (WoW) is our innovative approach to testing our web app using our own testing solution. By overcoming platform limitations and addressing keyboard issues, we have successfully integrated our web app into Waldo, allowing us to experience and verify it as our users would.
Through automation and version control, we ensure that every commit undergoes rigorous testing in a controlled environment. Read on for Part 2, where we'll delve into the technical aspects of building tests on WoW, and how we managed to overcome user email verification.