GUI Automation – This Time For Sure! (And, Caution About Legacy Code)

I have done a few little proof-of-concept GUI projects with Robot Framework, but – finally! – have something underway that I expect to go live.

Almost all of my product’s legacy test library uses an in-house command line test framework, which is entirely appropriate given the way this product works. But there is a little bit of GUI, embedded in a few of those tests. I’m re-implementing those tests with Robot and also implementing mechanisms for the legacy framework to launch Robot tests.

Fun stuff! The interface that needs the GUI automation is GUI-automation-friendly, so that making the Page Object file for it has been easy, and we don’t actually use a lot of what’s there so I can blow off implementing some of it unless/until we decide to use it. I’m cloning the legacy framework’s interface for calling the GUI tests, so the actual test scripts can be updated to use the Robot implementation with a simple global replace.

Why re-implement something that works? The technical debt to deal with the per-release tweaks has become burdensome. We need something that’s a lot easier to maintain, and Robot looks like a reasonable way to get that.

The existing implementation uses a (separate) in-house framework for Selenium-based tests, and that framework was developed for use with a different product. To me right now, that implementation seems like a poor choice for my product, but that decision was made years before I joined the company, and I think I understand why it seemed like a reasonable choice at the time. So, no judgement! People did the best they could at the time they had to decide something, just like I’m doing right now.

Whatever one builds will eventually become legacy, assuming it goes live in the first place, and it has to be maintained. Those changes will include fixes for coding errors, extensions to cover additional requirements, deletions of stuff no longer needed (hope so anyway), and “in retrospect, that was a terrible way to accomplish X”. The “in retrospect” part of that is important. When the immediate reaction is “what was I/he/she thinking?” – remember “it seemed reasonable in the original context”.