I interact with a GUI application both locally and remotely (via a VPN). When I work with it locally, most actions happen pretty quickly and my sikuli scripts execute fine. However, when I work with it remotely, actions take longer to complete.
That is, Sikuli may detect the screen and elements to wait for, but the cursor is still "busy" (e.g. the spinning circle in windows). This results in my sikuli scripts breaking when working with the application remotely due to the increased "lag" (not sure if that's the right term for it).
For example, if I did
wait(laggy_field.jpg)
click(laggy_field.jpg)
type("so laggy")
Sikuli will wait for laggy_field. Laggy_field will appear but the cursor will still be busy. However, sikuli does not appear to be aware of this and moves the curosr to the field and clicks the field. The result is that the focus is not on that field because the cursor was actually busy/inactive. Thus, the type("so laggy") command results in keys being sent to nowhere.
If I put in an arbitrary time like 30 seconds to wait in between the wait and click commands the scripts will "work" but I would have liked a more elegant solution. It seems like the ability to detect changes in the mouse pointer is some way off Sikuli's roadmap