Chapter 1. Welcome to Squish!

This manual presents froglogic Squish®, a professional automated GUI testing framework. Squish makes it possible to test GUI applications based on toolkits such as Qt®, and the Tk, Java™, XView™ toolkits from Sun™, and Android™ (Android is a trademark of Google Inc.).

Squish can also be used to test HTML-based web applications running in popular browsers including Microsoft Internet Explorer®, Firefox and other Mozilla-based browsers and Apple's Safari™.

The manual is divided into several parts. The first two parts are Release Notes—for Upgraders (Chapter 2) and How to Install Squish (Chapter 3). The next parts are the tutorials—depending on your Squish package there may be one or more of these since they are GUI-toolkit-specific. Most of the tutorials have the same structure and the same example; they cover many—although by no means all—of Squish's features and provide a good introduction to Squish usage. The next part is the User Guide (Chapter 5) which provides task-oriented coverage of most of Squish's features and more in-depth examples than the tutorials provide. Then there are four reference manuals: the API Reference Manual (Chapter 6) which covers the test script APIs that Squish provides; the Tools Reference Manual (Chapter 7) which is a complete reference to all the functionality that Squish's tools have to offer; the IDE Reference Manual (Chapter 8) which is a complete reference to the Squish IDE; and the Add-Ons Reference Manual (Chapter 9). Finally, there is some additional information in the Frequently Asked Questions (Chapter 10), Java™ Extension API Reference (Section, and Appendix B, Copyright Acknowledgments.

In addition to the Squish documentation, froglogic also provides an online knowledge base of Squish-related hints, tips, tricks, and examples at

[Note]Look and Feel Differences

Squish runs on Linux, Mac OS X, various Unices, and Windows. Each of these platforms has its own unique look and feel—right down to the ordering of buttons in dialogs or sheets, and in the case of Mac OS X the arrangement of menus and menu items. Furthermore, the appearance of applications can vary depending on the theme being used.

In view of these differences—and the fact that the Squish IDE's continual development means that screenshots are not always of the most recent release—keep in mind that the Squish IDE screenshots shown in this manual may look different from the Squish IDE that you see running on your own computers. This is nothing to worry about since it doesn't affect Squish's functionality; but it does mean that sometimes when you look for a particular toolbar, dialog, or sheet button, it may not be in exactly the same place in your Squish IDE as shown in a screenshot.

Look and feel differences don't stop Squish from being able to do cross-platform testing. This is because Squish identifies GUI objects by their properties rather than by, say, their coordinates. This means that a Squish test suite that tests an application running on one platform can be used unchanged to test the same application running on another platform, even if say, the order of dialog buttons is different on the two platforms.

[Note]Searching the Squish HTML Documentation

If you are reading the Squish documentation in HTML you can navigate by using the Table of Contents link on the left of the page. Or, you can use the clickable index (Appendix C, Index) which lists all of Squish's functions as well as many other useful terms. Or, when you know what you're looking for—for example, a particular function—you can click the Search tab.

In the Search tab's Keywords editor enter all or part of the name of a function (case is ignored) and a list of relevant links will appear. Usually links to uses of the function appear first, followed by a link to the function itself (or links if there are toolkit-specific versions of the function).

For example, if you enter a search term of “exists” the bottom of the search list will provide links to Squish's object.exists and testData.exists functions, and to the JavaScript-specific File.exists function. And if you used the specific search term “object.exists”, you will just get a link to that function.

In addition, you can enter a module or class name—such as “squish.” or “test.”—and get a list of links to all of that module or class's functions. Note that for this to work you must end the search term with a period. The names that can be entered to get a list of their functions include: “applicationcontext.”, “objectmap.”, “object.”, “squishinfo.”, “squish.”, “testdata.”, “test.”, and “testsettings.”. There is also a name for those testing Java™ programs, “javaarray.”, and several for those using JavaScript, for example: “file.”, “os.”, “xml.”, “xmlnode.”, “sql.”, “sqlconnection.”, and “sqlresult.”. For those doing web testing there is “browser.”. And for all of Squish for Web's HTML elements use a search term of “html_” (note that this ends in underscore, not period).