As a developer, we either have no tester and have to test our own application, or we have a tester who is shared with other developers.
When we have no tester, our process is like: create some api and UI components, open the browser and go to the webpage, click around, make sure everything works. Every time we made a change, we need to manually click around and test everything again.
When we are a developer who has tester on the team, we probably don't do that much testing ourselves. Our process is like, do some coding and test the new feature, hand it to tester for regression testing. But tester is shared among the team, it's unlikely that we get feedback immediately, after a day or 2, while we already pick up a new project and working on it, tester will come back and say they found a bug, then we have to put aside what we are working on, fix the bug, hand it back to tester. Hopefully everything works this time, otherwise the same process will be repeated, and time will be wasted with this back and forth.
It will be awesome if we have a tool that allow us to automate the tests and easily select which test we want to run, so instead of us manually click around for testing, with one button click, the tool will execute the test for us and provide an nice report when test finished running. The tests are reusable so we saved time and effort from repeating the same task.
What it does
With Tomato Blue, you can easily select which test to run from the UI and just click run. Even the person who didn't create the automation test can figure out how to use it. When you selected the test, you can see the test steps in UI, so it can also serve as a documentation tool to tell other developers how the software should work. Tests are created in cucumber language, people who are not used to coding can understand it as well. You can also add or edit tests by clicking the edit icon. After test is completed, a report is created and you can see what steps are execute and which steps passed.
How I built it
I built the automation in ruby, capybara, and cucumber. The UI is built in React, bootstrap, node.js, and used electron to built it as a desktop application. I used Facebook analytics to keep track how often each area of the software is being tested and how often we update existing tests.
Challenges I ran into
Because the User Interface will change depends on which tests the user selected, and when user click run test, there are many steps happening in the background, so my challenge is to manage the process and take care event handling carefully. Another challenge is handling system path change when I package the application into a OS-specific bundles, file structure is changed in the distributable version.
Accomplishments that I'm proud of
Tomato Blue is very easy to use, and user interaction is very smooth. After each test run, user can view the test report and know what steps are executed. Users who didn't use Tomato Blue to create automation test can easily figure out how to use it to run automation test, it bridges the gap between developers and testers.
What I learned
I have learned that React is a great tool to build interactive UIs, and with electron, I can turn it into an cross platform desktop application. Facebook analytics is very easy to set up too, and I can improve Tomato Blue with the user data that I gathered.
What's next for Tomato Blue
Tomato Blue helps developer's productivity by saving time from repeated manual testing or waiting for tester to get feedback. I hope there will be more developers and testers would use this tool to help improve their software quality with less time spent on manual tasks.