This question came up in the AutomatedQA newsgroup and this was my response:
A short list off the top of my head…
For Windows Apps
- Avoid use of painted controls or use controls that support UI Automation or MSAA particularly in the event they are painted
- Avoid non-standard custom UI skinning while it can look good it often will seriously thwart automation.
- Provide UI cues when the state of the application is changing or when there is a long running operation (title/status bar messages)
- Use keyboard shortcuts wherever possible "&" in menus, labels etc.
- Be sure to name controls dynamically created at run time
For Web Apps
- Avoid using frames
- Try to adhere to the Accessibility Standards (Section 508 here in the US)
I’d also mention that if the code they (the developer’s) are writing is hard to read and they dread debugging it, automation it is likely to be a nightmare. No matter how many hints about automation one can give there really is no substitute for good design.
Any other suggestions you would add?