Bypassing the GUI
Graphical User Interfaces make test automation hard. The problems are well known. You need specialized tools to drive the GUI. Those tools can be confused by the common programming practice of inventing custom user interface controls. When they are used in the simplest way, the tools lead to fragile tests that tend to break en masse when the GUI changes. Making the test resistant to change requires elaborate and sometimes awkward testing frameworks. Learn how to use a scripting interface to get around the GUI problem.