Sikuli is a Java application that uses OpenCV and Java Robot to look for an image within a larger on-screen image and interact with it. This simplicity allows Sikuli to be used to automate almost anything - webpages, desktop applications, mobile phone apps, even games. As a result, however, one must create the structure to automate the application under test.
A typical Windows Desktop application has the following structure (see https://docs.microsoft.com/en-us/windows/win32/uxguide/visual-index):
- a Desktop on which the user interface of an Application appears
- one or more Screens which may extend the Desktop
- the Application itself
- at least one Window that contains the user interface
- at least one Form that contains user interface Elements
- at least one Element that the user interacts with
To make testing Windows desktop apps easier, this repository provides classes with a similar structure:
- SikuliDesktop: a single Desktop on which the application appears
- Screen: a pre-existing Sikuli class which simulates a computer monitor
- SikuliApp: a class used to open and manage application connections and focus windows
- SikuliWindow: one or more windows that can be used to restrict the image search area
- SikuliPage: one or more pages displayed in a window that contain elements (similar to a traditional WebDriver PageObject)
- SikuliElement: one or more elements that contain images used to drive UI interactions