Squish Manual

froglogic Squish 6.5.1


Table of Contents

1. Welcome to Squish!
2. Release Notes—for Upgraders
2.1. Version 6.5.1
2.1.1. General
2.1.2. Squish IDE-specific
2.1.3. Scripting
2.1.4. Qt-specific
2.1.5. Java™-specific
2.1.6. Web-specific
2.1.7. Windows (native)-specific
2.1.8. macOS-specific (Cocoa/Carbon edition)
2.1.9. Tk-specific
2.1.10. Source Packages
2.1.11. Known Issues
2.2. Version 6.5
2.2.1. Platform Support
2.2.2. General
2.2.3. Squish IDE-specific
2.2.4. Scripting
2.2.5. Qt-specific
2.2.6. Java™-specific
2.2.7. Web-specific
2.2.8. Windows (native)-specific
2.2.9. macOS-specific (Cocoa/Carbon edition)
2.2.10. iOS-specific (iPhone/iPad edition)
2.2.11. Source Packages
2.2.12. Known Issues
2.3. Version 6.4.3
2.3.1. General
2.3.2. Squish IDE-specific
2.3.3. Qt-specific
2.3.4. Web-specific
2.3.5. Windows (native)-specific
2.3.6. macOS-specific (Cocoa/Carbon edition)
2.4. Version 6.4.2.1
2.4.1. Qt-specific
2.5. Version 6.4.2
2.5.1. General
2.5.2. Scripting
2.5.3. Android-specific
2.5.4. Web-specific
2.5.5. Qt-specific
2.5.6. Java™-specific
2.5.7. macOS-specific (Cocoa/Carbon edition)
2.5.8. Windows (native)-specific
2.5.9. Source Packages
2.6. Version 6.4.1
2.6.1. General
2.6.2. Squish IDE-specific
2.6.3. Android-specific
2.6.4. Web-specific
2.6.5. Qt-specific
2.6.6. Java™-specific
2.6.7. Source Packages
2.7. Version 6.4
2.7.1. Script-Based Object Maps
2.7.2. Image-based Object Lookup
2.7.3. General
2.7.4. Squish IDE-specific
2.7.5. Scripting
2.7.6. Qt-specific
2.7.7. Java™-specific
2.7.8. Web-specific
2.7.9. Windows (native)-specific
2.7.10. macOS-specific (Cocoa/Carbon edition)
2.7.11. iOS-specific (iPhone/iPad edition)
2.7.12. Android-specific
2.7.13. Source Packages
2.7.14. Documentation
2.7.15. Known Issues
2.7.16. Platform Support
2.8. Version 6.3.2
2.8.1. Qt-specific
2.8.2. Java™-specific
2.8.3. Windows (native)-specific
2.8.4. Android-specific
2.9. Version 6.3.1
2.9.1. Squish IDE-specific
2.9.2. Scripting
2.9.3. Qt-specific
2.9.4. Java™-specific
2.9.5. Web-specific
2.9.6. Windows (native)-specific
2.9.7. macOS-specific (Cocoa/Carbon edition)
2.9.8. iOS-specific (iPhone/iPad edition)
2.9.9. Source Packages
2.10. Version 6.3
2.10.1. Image Search
2.10.2. Comparison of Text and XML Files
2.10.3. General
2.10.4. Squish IDE-specific
2.10.5. Scripting
2.10.6. Behavior Driven Testing
2.10.7. Qt-specific
2.10.8. Java™-specific
2.10.9. Web-specific
2.10.10. Windows (native)-specific
2.10.11. macOS-specific (Cocoa/Carbon edition)
2.10.12. iOS-specific (iPhone/iPad edition)
2.10.13. Android-specific
2.10.14. Source Packages
2.10.15. Documentation
2.10.16. Known Issues
2.11. Version 6.3 Beta
2.11.1. Image Search
2.11.2. Comparison of Text and XML Files
2.12. Version 6.2
2.12.1. General
2.12.2. Squish IDE-specific
2.12.3. Scripting
2.12.4. Qt-specific
2.12.5. Java™-specific
2.12.6. Web-specific
2.12.7. Windows (native)-specific
2.12.8. macOS-specific (Cocoa/Carbon edition)
2.12.9. iOS-specific (iPhone/iPad edition)
2.12.10. Android-specific
2.12.11. Tk-specific
2.12.12. Source Packages
2.12.13. Platform Support
2.13. Version 6.1
2.13.1. General
2.13.2. Squish IDE-specific
2.13.3. Scripting
2.13.4. Qt-specific
2.13.5. Java™-specific
2.13.6. Web-specific
2.13.7. Windows (native)-specific
2.13.8. macOS-specific (Cocoa/Carbon edition)
2.13.9. iOS-specific (iPhone/iPad edition)
2.13.10. Android-specific
2.13.11. Tk-specific
2.13.12. Source Packages
2.13.13. Documentation
2.14. Version 6.1 Beta
2.14.1. General
2.15. Version 6.0.3.1
2.15.1. Android-specific
2.16. Version 6.0.3
2.16.1. Squish IDE-specific
2.16.2. Scripting
2.17. Version 6.0.2
2.17.1. Squish IDE-specific
2.17.2. Scripting
2.17.3. Web-specific
2.17.4. Flex-specific
2.17.5. Qt-specific
2.17.6. Windows (native)-specific
2.17.7. Java™-specific
2.17.8. Android-specific
2.17.9. Tk-specific
2.17.10. Examples
2.18. Version 6.0.1
2.18.1. General
2.18.2. Squish IDE-specific
2.18.3. Scripting
2.18.4. Web-specific
2.18.5. Qt-specific
2.18.6. Windows (native)-specific
2.18.7. Mac-specific (Cocoa/Carbon edition)
2.18.8. Java™-specific
2.18.9. iOS-specific (iPhone/iPad edition)
2.18.10. Android-specific
2.18.11. Documentation
2.18.12. Source Packages
2.19. Version 6.0
2.19.1. General
2.19.2. Squish IDE
2.19.3. Scripting
2.19.4. Qt-specific
2.19.5. Java™-specific
2.19.6. Web-specific
2.19.7. Flex-specific
2.19.8. Windows (native)-specific
2.19.9. macOS-specific (Cocoa/Carbon edition)
2.19.10. iOS-specific (iPhone/iPad edition)
2.19.11. Android-specific
2.19.12. Tk-specific
2.19.13. Add-Ons & Integrations
2.19.14. Source Packages
2.20. Version 6.0 Beta
2.20.1. Support for Behavior-Driven Development (BDD)
2.20.2. Advanced Reporting
2.20.3. Script Language Updates
2.20.4. GUI Coverage (Experimental)
2.21. Version 5.1.5
2.22. Version 5.1.4
2.22.1. Windows-specific
2.22.2. iOS-specific
2.22.3. Web-specific
2.22.4. Flex-specific
2.22.5. Qt-specific
2.23. Version 5.1.3
2.23.1. Qt-specific
2.23.2. Java™-specific
2.23.3. iOS-specific
2.23.4. Android-specific
2.23.5. IDE
2.24. Version 5.1.2
2.24.1. Java™-specific
2.24.2. Web-specific
2.24.3. Windows (native)-specific
2.24.4. iOS-specific
2.24.5. Android-specific
2.24.6. General
2.24.7. IDE
2.24.8. Scripting
2.25. Version 5.1.1
2.25.1. General
2.25.2. Squish IDE
2.25.3. Scripting
2.25.4. Qt-specific
2.25.5. Java™-specific
2.25.6. Web-specific
2.25.7. Windows (native)-specific
2.25.8. macOS-specific (Cocoa/Carbon edition)
2.25.9. iOS-specific (iPhone/iPad edition)
2.25.10. Android-specific
2.25.11. Add-Ons & Integrations
2.25.12. Source Packages
2.26. Version 5.1.0
2.26.1. General
2.26.2. Squish IDE
2.26.3. Scripting
2.26.4. Qt-specific
2.26.5. Java™-specific
2.26.6. Web-specific
2.26.7. Windows (native)-specific
2.26.8. macOS-specific (Cocoa/Carbon edition)
2.26.9. iOS-specific (iPhone/iPad edition)
2.26.10. Android-specific
2.26.11. Tk-specific
2.26.12. Add-Ons
2.26.13. Documentation
2.26.14. Qt-specific Source Packages
2.27. Version 5.0.4
2.27.1. Web-specific
2.27.2. Java-specific
2.27.3. Android-specific
2.28. Version 5.0.3
2.28.1. Web-specific
2.28.2. iOS-specific
2.29. Version 5.0.2
2.29.1. Qt-specific
2.29.2. Web-specific
2.29.3. Android-specific
2.30. Version 5.0.1
2.30.1. Java-specific
2.30.2. Web-specific
2.30.3. iOS-specific
2.30.4. Qt-specific
2.30.5. Documentation
2.31. Version 5.0.0
2.31.1. New Editions
2.31.2. General
2.31.3. IDE
2.31.4. Qt-specific
2.31.5. Java™-specific
2.31.6. Web-specific
2.31.7. Windows (native)-specific
2.31.8. macOS-specific (Cocoa/Carbon edition)
2.31.9. iOS-specific (iPhone/iPad edition)
2.31.10. Tk-specific
2.31.11. Add-Ons
2.31.12. Documentation
2.32. Version 4.2.3
2.32.1. General
2.32.2. IDE
2.32.3. Qt-specific
2.32.4. Java™-specific
2.32.5. Web-specific
2.32.6. Windows (native)-specific
2.32.7. macOS-specific (Cocoa/Carbon edition)
2.32.8. iOS-specific (iPhone/iPad edition)
2.32.9. Tk-specific
2.32.10. Add-Ons
2.32.11. Source Packages
2.32.12. Documentation
2.33. Version 4.2.2
2.33.1. General
2.33.2. IDE
2.33.3. Qt-specific
2.33.4. Java™-specific
2.33.5. Web-specific
2.33.6. Windows (native)-specific
2.33.7. macOS-specific (Cocoa/Carbon edition)
2.33.8. iOS-specific (iPhone/iPad edition)
2.33.9. Tk-specific
2.34. Version 4.2.1
2.34.1. General
2.34.2. IDE
2.34.3. Qt-specific
2.34.4. Java™-specific
2.34.5. Web-specific
2.34.6. Windows (native)-specific
2.34.7. macOS-specific (Cocoa/Carbon edition)
2.34.8. iOS-specific (iPhone/iPad edition)
2.34.9. Tk-specific
2.34.10. Source Packages
2.34.11. Documentation
2.35. Version 4.2.0
2.35.1. General
2.35.2. IDE
2.35.3. Qt-specific
2.35.4. Java™-specific
2.35.5. Web-specific
2.35.6. Windows (native)-specific
2.35.7. macOS-specific (Cocoa/Carbon edition)
2.35.8. iOS-specific (iPhone/iPad edition)
2.35.9. Tk-specific
2.35.10. Quality Center™-specific
2.35.11. Source Packages
2.35.12. Documentation
2.36. Version 4.1.1
2.36.1. General
2.36.2. Qt-specific
2.36.3. Java™-specific
2.36.4. Web-specific
2.36.5. Windows (native)-specific
2.36.6. Mac-specific (Cocoa/Carbon edition)
2.36.7. iPhone/iPad-specific
2.36.8. Source Builds
2.36.9. Documentation
2.37. Version 4.1.0 Final
2.37.1. Highlights
2.37.2. General
2.37.3. New IDE
2.37.4. Qt-specific
2.37.5. Java™-specific
2.37.6. Web-specific
2.37.7. Windows (native)-specific
2.37.8. Mac-specific (Cocoa/Carbon edition)
2.37.9. iPhone/iPad-specific
2.37.10. Tk-specific
2.37.11. HP Quality Center Plug-In
2.37.12. Documentation
2.37.13. Source Builds
2.38. Version 4.1.0 Beta 2
2.38.1. General
2.38.2. New IDE
2.38.3. Qt-specific
2.38.4. Java™-specific
2.38.5. Web-specific
2.38.6. Windows (native)-specific
2.38.7. Mac-specific (Cocoa/Carbon edition)
2.38.8. iPhone/iPad-specific
2.38.9. Tk-specific
2.38.10. Documentation
2.38.11. Source Builds
2.39. Version 4.1.0 Beta 1
2.39.1. General
2.39.2. New IDE
2.39.3. Qt-specific
2.39.4. Java™-specific
2.39.5. Web-specific
2.39.6. Windows (native)-specific
2.39.7. Mac-specific (Cocoa/Carbon edition)
2.39.8. iPhone/iPad-specific
2.39.9. Tk-specific
2.39.10. Documentation
2.39.11. Source Builds
2.39.12. Classic IDE
2.40. Version 4.0.2
2.40.1. General
2.40.2. Classic IDE
2.40.3. New IDE
2.40.4. All toolkits
2.40.5. Qt-specific
2.40.6. Java™-specific
2.40.7. Web-specific
2.40.8. Native Windows (new edition)
2.40.9. Mac-specific (Cocoa/Carbon edition)
2.40.10. iPhone/iPad-specific
2.40.11. Tk-specific
2.40.12. Source Builds
2.40.13. Documentation
2.41. Version 4.0.1.1
2.41.1. iPhone/iPad-specific
2.42. Version 4.0.1
2.42.1. General
2.42.2. New IDE
2.42.3. Qt-specific
2.42.4. Java-specific
2.42.5. Web-specific
2.42.6. Native Windows (new edition)
2.42.7. Mac-specific (Cocoa/Carbon edition)
2.42.8. iPhone/iPad-specific
2.42.9. Tk-specific
2.42.10. Source Builds
2.43. Version 4.0.0
2.43.1. The Squish 4.0 IDEs
2.43.2. General
2.43.3. Squish for Win32 Edition—New Edition
2.43.4. Squish for iPhone Edition—New Edition
2.43.5. Squish for Qt—Improved and Enhanced
2.43.6. Squish for Java—Improved and Enhanced
2.43.7. List of changes
2.44. Changes in 4.0 Beta 3
2.44.1. General
2.44.2. Qt Edition
2.44.3. Mac Edition
2.44.4. New IDE
2.44.5. Classic IDE
2.45. Changes in 4.0 Beta 2
2.45.1. General
2.45.2. New IDE
2.46. Changes in 4.0 Beta 1
2.46.1. General
2.46.2. Scripting
2.46.3. Web-specific
2.46.4. Qt-specific
2.46.5. Java-specific
2.46.6. Mac-specific
2.46.7. Classic IDE
2.46.8. Source builds
2.47. Version 3.4.5
2.47.1. General
2.47.2. IDE
2.47.3. Qt-specific
2.47.4. Java-specific
2.47.5. Web-specific
2.47.6. Mac-specific (Cocoa/Carbon edition)
2.47.7. Tk-specific
2.47.8. Source Builds
2.48. Version 3.4.4
2.48.1. General
2.48.2. IDE
2.48.3. Qt-specific
2.48.4. Java-specific
2.48.5. Web-specific
2.48.6. Tk-specific
2.48.7. Source Builds
2.49. Version 3.4.3
2.49.1. General
2.49.2. IDE
2.49.3. Qt-specific
2.49.4. Java-specific
2.49.5. Web-specific
2.49.6. Tk-specific
2.49.7. Mac-specific (Cocoa/Carbon edition)
2.49.8. Source Builds
2.50. Version 3.4.2
2.50.1. General
2.50.2. Qt-specific
2.50.3. Java-specific
2.50.4. Web-specific
2.50.5. Tk-specific
2.51. Version 3.4.1
2.51.1. General
2.51.2. Qt-specific
2.51.3. Java-specific
2.51.4. Web-specific
2.51.5. Tk-specific
2.51.6. Native Win32 Support
2.51.7. Native X11 Support
2.52. Version 3.4.0
2.52.1. General
2.52.2. Qt-specific
2.52.3. Java-specific
2.52.4. Web-specific
2.52.5. Tk-specific
2.52.6. Source Builds
2.53. Version 3.3.1
2.53.1. General
2.53.2. Qt-specific
2.53.3. Java-specific
2.53.4. Web-specific
2.53.5. Source Builds
2.54. Version 3.3.0
2.54.1. General
2.54.2. Qt-specific
2.54.3. Java-specific
2.54.4. Web-specific
2.54.5. Mac-specific
2.54.6. Source Builds
2.55. Version 3.3.0 Beta 1
2.55.1. General
2.55.2. Qt-specific
2.55.3. Java-specific
2.55.4. Web-specific
2.55.5. Mac-specific
2.55.6. Source Builds
2.56. Version 3.2.3
2.56.1. General
2.56.2. Qt-specific
2.56.3. Web-specific
2.56.4. XView-specific
2.56.5. Source Builds
2.57. Version 3.2.2
2.57.1. General
2.57.2. Qt-specific
2.57.3. Web-specific
2.58. Squish for macOS, Beta 1
2.59. Version 3.2
2.59.1. General
2.59.2. Qt
2.59.3. Web
2.59.4. Java
2.59.5. Tk
2.60. Version 3.1.2
2.60.1. General
2.60.2. Qt
2.60.3. Java
2.60.4. Web
2.60.5. Tk
2.61. Version 3.1.1
2.61.1. General
2.61.2. Qt
2.61.3. Java
2.61.4. Web
2.62. Version 3.1.0
2.62.1. General
2.62.2. Web
2.62.3. Qt
2.62.4. Qt and Tk
2.62.5. XView
3. How to Install Squish
3.1. Installing the Command Line Tools, Server, and IDEs
3.1.1. Installing from Binary Packages
3.1.2. Installing Squish for Qt from Desktop Source Packages
3.1.3. Installing Squish for Qt from Embedded Source Packages
3.1.4. Installing Squish for Qt for iOS testing
3.1.5. Installing Squish for Qt for Android testing
3.1.6. Distributing and Sharing an Installation
3.1.7. Installing Squish for Web
3.1.8. Installation for Flex applets in web pages
3.1.9. Installing Squish for Android
3.2. Standalone Installation of the IDE
3.2.1. Installing the IDE on Windows
3.2.2. Installing the IDE on Linux
3.2.3. Installing the IDE on macOS
3.3. OCR and Installing Tesseract for Squish
3.3.1. OCR Functionality in Squish
3.3.2. Configuring the Package
3.3.3. Performing Unattended Installations
3.4. Using Squish
4. Tutorials
4.1. Squish for Qt Tutorials
4.1.1. Tutorial: Starting to Test Qt Applications
4.1.2. Tutorial: Designing Behavior Driven Development (BDD) Tests
4.1.3. Tutorial: Migration of existing tests to BDD
4.1.4. Tutorial: Coverage of GUI elements
4.2. Squish for Java (AWT/Swing) Tutorials
4.2.1. Tutorial: Starting to Test Java™ AWT/Swing Applications
4.3. Squish for Java (SWT) Tutorials
4.3.1. Tutorial: Starting to Test Java™ SWT Applications
4.4. Squish for JavaFX Tutorials
4.4.1. Tutorial: Starting to Test JavaFX Applications
4.5. Squish for Java BDD Tutorials
4.5.1. Tutorial: Designing Behavior Driven Development (BDD) Tests
4.5.2. Tutorial: Migration of existing tests to BDD
4.6. Squish for Web Tutorials
4.6.1. Tutorial: Starting to Test Web Applications
4.6.2. Tutorial: Designing Behavior Driven Development (BDD) Tests
4.6.3. Tutorial: Migration of existing tests to BDD
4.7. Squish for Windows Tutorials
4.7.1. Tutorial: Starting to Test Windows Applications
4.7.2. Tutorial: Designing Behavior Driven Development (BDD) Tests
4.7.3. Tutorial: Migration of existing tests to BDD
4.8. Squish for Mac OS X Tutorials
4.8.1. Tutorial: Starting to Test macOS Applications
4.8.2. Tutorial: Designing Behavior Driven Development (BDD) Tests
4.8.3. Tutorial: Migration of Existing Tests to BDD
4.9. Squish for iOS Tutorials
4.9.1. Tutorial: Starting to Test iOS Applications
4.9.2. Tutorial: Designing Behavior Driven Development (BDD) Tests
4.9.3. Tutorial: Migration of existing tests to BDD
4.10. Squish for Tk Tutorials
4.10.1. Tutorial: Starting to Test Tk Applications
4.11. Squish for GDC Tutorials
4.11.1. Tutorial: Starting to Test GDC Applications
4.12. Squish for Android Tutorials
4.12.1. Tutorial: Starting to Test Android Applications
4.12.2. Tutorial: Designing Behavior Driven Development (BDD) Tests
4.12.3. Tutorial: Migration of existing tests to BDD
4.13. Squish for Flex Tutorials
4.13.1. Tutorial: Starting to Test Flex Applications
5. User Guide
5.1. How to Identify and Access Objects
5.1.1. How to Access Named Objects
5.1.2. How to Access Objects Using Real (Multi-Property) Names
5.1.3. How to Access Objects Using Symbolic Names
5.1.4. How to Access Objects Using Images
5.2. How to Use the Qt API
5.2.1. How to Access Qt Objects
5.2.2. How to Call Functions on Qt Objects
5.2.3. How to Access Qt Enums
5.2.4. How to Use the Qt Convenience API
5.2.5. How to Use Qt Signal Handlers
5.2.6. How to Test Qt Widgets
5.2.7. How to Test non-Qt Widgets in Qt Applications
5.2.8. How to Do Automatic Stress Testing on Qt
5.2.9. How to Test Internationalized Qt AUTs
5.3. How to Use the Web API
5.3.1. How to Find and Query Web Objects
5.3.2. How to Use XPath
5.3.3. How to Access Web Object Properties
5.3.4. How to Call Web Object Functions
5.3.5. How to Use evalJS
5.3.6. How to Use retrieveJSObject
5.3.7. How to Use the Web Convenience API
5.3.8. How to Synchronize Web Page Loading for Testing
5.3.9. How to Test Web Elements
5.3.10. How to Do Web Application Load Testing
5.4. How to Use the Java™ API
5.4.1. How to Find and Query Java™ Objects
5.4.2. How to Call Functions on Java Objects
5.4.3. How to Access Java™ Object Properties
5.4.4. How to Use the Java™ Convenience API
5.4.5. How to Create and Access Java™ Arrays
5.4.6. How to Test Java™ Applications
5.4.7. How to Use the GestureBuilder class
5.5. How to Use the Windows nativeObject API
5.6. How to Use the Tk API
5.6.1. How to Find and Query Tk Objects
5.6.2. How to Access Tk Object Properties
5.6.3. How to Use tcleval
5.6.4. How to Use the Tk Convenience API
5.6.5. How to Test Tk Widgets
5.7. How to Use the Android API
5.7.1. How to Work with Accessibility objects
5.7.2. How to Use the nativeObject Property
5.7.3. How to Use the GestureBuilder class
5.8. How to Use the iOS API
5.8.1. How to Use the GestureBuilder class
5.9. How to Use Test Statements
5.10. How to Use Event Handlers
5.10.1. Global Event Handlers
5.10.2. Event Handlers for All Objects of a Specified Type
5.10.3. Event Handlers for Specific Objects
5.11. How to Create and Use Synchronization Points
5.12. How to Test Multiple AUTs from a Single Test Script, Using ApplicationContext
5.12.1. How to Start and Access Multiple Applications Under Test
5.12.2. Notes on using startApplication with Android
5.12.3. How to Use ApplicationContext Objects
5.13. How to Automate Native Browser Dialogs, ActiveX, and more
5.13.1. Automating native browser dialogs (login, certificates, etc.)
5.13.2. ActiveX
5.14. How to Create Semi-Automatic Tests that Query for User Input
5.15. How to Create Automatic Screenshots on Test Failures and Errors
5.16. How to Do Keyword-Driven Testing
5.16.1. How to Create a Keyword-Driven Test
5.16.2. How to Create AUT-Specific Support for Keyword Driven Tests
5.16.3. How to Create a Generic Keyword Driver Function
5.17. How to Interact with Files and with the Environment in Test Scripts
5.17.1. How to Interact with External Files in Test Scripts
5.17.2. How to Compare External Files inside Test Scripts
5.17.3. How to Read Environment Variables inside Test Scripts
5.18. How to Access Databases from Squish Test Scripts
5.18.1. How to Compare Application Data with Database Data
5.18.2. How to Log Test Results Directly into a Database
5.19. How to Handle Exceptions Raised in Test Scripts
5.20. How to Modify Squish Functions
5.21. How to Edit and Debug Test Scripts
5.21.1. How to Use the Script Debugger
5.21.2. How to Record After a Breakpoint
5.21.3. How to Use the Spy
5.22. How to Create and Use Verification Points
5.22.1. How to Create and Use Property Verifications
5.22.2. How to Create and Use Table Verifications
5.22.3. How to Do Screenshot Verifications
5.22.4. Visual Verification Point
5.22.5. How to Create and Use Property Verification Points in Test Scripts
5.23. How to Create and Use Shared Data and Shared Scripts
5.23.1. How to Store and Locate Shared Scripts and Shared Data Files
5.23.2. How to Do Data-Driven Testing
5.23.3. How to Use Test Data in the AUT
5.24. How to Do Image-Based Testing
5.24.1. OCR setup
5.24.2. Start a New Game
5.24.3. Move the Pawn
5.24.4. The Recorded Script
5.24.5. Tolerant image search
5.24.6. Verifications by Image-Search
5.25. How to Do Automated Batch Testing
5.25.1. Processing Test Results
5.25.2. Automatically Running Tests
5.25.3. Conclusion
5.26. How to Create and Access Application Bindings
5.26.1. Instrumenting and Wrapping
5.26.2. Creating a Test Using the Wrapper Library
5.27. How to Create Cross-Platform Tests
5.27.1. How to Create Cross-Platform Java AWT/Swing Tests
6. API Reference Manual
6.1. Tester-Created Special Functions
6.2. Equivalent Script API
6.3. Squish API
6.3.1. Constructors, Functions and Properties
6.3.2. Functions and Properties (macOS)
6.3.3. Object Access Functions
6.3.4. Synchronization Functions
6.3.5. Interaction Functions
6.3.6. Debugging Functions
6.3.7. Conversion Functions
6.3.8. Verification Functions
6.3.9. Script-based Creation of Visual Verification Points
6.3.10. Test Data Functions
6.3.11. Object Map Functions
6.3.12. Application Context
6.3.13. Image Object
6.3.14. Screen Object
6.3.15. ToplevelWindow Object
6.3.16. squishinfo Object
6.3.17. testInteraction Functions
6.3.18. testSettings Object
6.3.19. RemoteSystem Object
6.3.20. User Interface Types
6.3.21. Miscellaneous Functions
6.3.22. Low-Level Functions
6.4. Qt Convenience API
6.4.1. QWebView Class
6.4.2. QML Extension API
6.4.3. GestureBuilder
6.5. Tk Convenience API
6.6. XView Convenience API
6.7. Java™ Convenience API
6.7.1. Native Java Arrays
6.7.2. GestureBuilder
6.7.3. Java™ Hardcoded Synthetic Properties
6.7.4. Java Extension API for Custom Widgets
6.8. macOS Convenience API
6.9. iOS Convenience API
6.9.1. GestureBuilder
6.10. Web Object API
6.10.1. Browser Object
6.10.2. BrowserTab Class
6.10.3. HTML_Anchor Class
6.10.4. HTML_Array Class
6.10.5. HTML_Button Class
6.10.6. HTML_ButtonBase Class
6.10.7. HTML_CheckBox Class
6.10.8. HTML_CalendarEvent Class
6.10.9. HTML_CalendarView Class
6.10.10. HTML_ColorField Class
6.10.11. HTML_CustomButton Class
6.10.12. HTML_CustomButtonBase Class
6.10.13. HTML_CustomComboBox Class
6.10.14. HTML_CustomCheckbox Class
6.10.15. HTML_CustomItem Class
6.10.16. HTML_CustomItemView Class
6.10.17. HTML_CustomRadioButton Class
6.10.18. HTML_CustomSelectList Class
6.10.19. HTML_CustomText Class
6.10.20. HTML_DateChooser Class
6.10.21. HTML_Document Class
6.10.22. HTML_ExpandableSectionHeader Class
6.10.23. HTML_Form Class
6.10.24. HTML_FormElement Class
6.10.25. HTML_ImageButton Class
6.10.26. HTML_Menu Class
6.10.27. HTML_MenuButton Class
6.10.28. HTML_MenuItem Class
6.10.29. HTML_Object Class
6.10.30. HTML_Option Class
6.10.31. HTML_RadioButton Class
6.10.32. HTML_Select Class
6.10.33. HTML_ProgressBar Class
6.10.34. HTML_Style Class
6.10.35. HTML_Table Class
6.10.36. HTML_Tab Class
6.10.37. HTML_TabWidget Class
6.10.38. HTML_Text Class
6.10.39. HTML_TextArea Class
6.10.40. HTML_TextBase Class
6.10.41. HTML_XPathResult Class
6.10.42. JsObject Class
6.10.43. JavaScript Extension API
6.11. Flex Object API
6.12. Windows Convenience API
6.13. Android Convenience API
6.13.1. GestureBuilder
6.13.2. UiAutomator
6.14. Python Notes
6.14.1. Default File Encoding (UTF-8)
6.14.2. Default type of string return values (Unicode)
6.14.3. Squish's Python Modules
6.14.4. Python Symbols Hidden by Squish
6.14.5. Importing Custom Python Modules
6.14.6. Using Squish Functions in Python Modules/Packages
6.14.7. Python Language Documentation
6.15. Tcl Notes
6.15.1. Tcl Language Documentation
6.16. JavaScript Notes and Extension APIs
6.16.1. JavaScript Language Documentation
6.16.2. Language Core
6.16.3. File Object
6.16.4. Console Object
6.16.5. OS Object
6.16.6. XML Object
6.16.7. SQL
6.16.8. Socket Object
6.16.9. WebSocket Object
6.16.10. XMLHttpRequest Object
6.17. Perl Notes
6.17.1. Perl Language Documentation
6.18. Ruby Notes
6.18.1. Ruby Language Documentation
6.19. Behavior Driven Testing
6.19.1. Defining Step Implementations using Step
6.19.2. Using Step Patterns with Placeholders
6.19.3. Using Step Patterns with Regular Expressions
6.19.4. The BDD context Object
6.19.5. context.userData: Passing Data Between Steps
6.19.6. Accessing Tables and Multi-Line Text
6.19.7. Defining Step Implementations using Given/When/Then
6.19.8. Step Lookup Order & Overriding Shared Step Implementations
6.19.9. Influencing Scenario Execution from Within Step Implementations
6.19.10. Performing Actions During Test Execution Via Hooks
6.19.11. The Anatomy of a BDD Test Case
6.19.12. Reading Tables from External Files using the From Keyword
6.20. FMI Interface support
6.20.1. FMI Overview
6.20.2. Fmi2Import class
6.20.3. Fmi2Variable class
6.20.4. Fmi2Type class
6.20.5. Fmi2Unit class
6.20.6. Fmi2State class
6.20.7. Examples
7. Tools Reference Manual
7.1. Automated Batch Testing
7.1.1. Automated Test Runs
7.1.2. Distributed Tests
7.1.3. Processing Test Results
7.2. AUT Script Bindings—Creating and Accessing
7.3. AUTs and Settings
7.3.1. AUT Class Name and Classpath for Java
7.3.2. AUT Paths and Mapped AUTs
7.3.3. Setting Environment Variables
7.3.4. Shell Scripts and .bat-Files as AUT
7.3.5. Setup custom Java™ security policy
7.3.6. Testing Java Applets
7.3.7. Testing Java Web Start
7.3.8. Wrapping custom Java™ classes
7.3.9. Configuring the recognition of native Windows controls
7.3.10. Launcher arguments for Android
7.4. Command Line Reference
7.4.1. Installer
7.4.2. squishconfig
7.4.3. squishrunner
7.4.4. squishserver
7.4.5. squishidl
7.4.6. squishide
7.4.7. start*aut
7.4.8. Web Proxy
7.4.9. convertvp
7.4.10. uibrowser
7.4.11. xml2jira
7.4.12. Command Files
7.4.13. configure
7.5. Environment Variables
7.6. Squish Initialization Files
7.6.1. .ini Files
7.6.2. ignoredauts.txt
7.7. Record / Replay on Sub-Processes started by the AUT
7.7.1. Hooking up Java Sub-Processes in Squish for Java
7.7.2. Hooking up Qt Sub-Processes in Squish for Qt
7.7.3. Hooking up Sub-Processes in Squish for Windows
7.7.4. Hooking up Sub-Processes in Squish for macOS
7.8. Attaching to Running Applications
7.8.1. Overview
7.8.2. Start the AUT
7.8.3. Register the Attachable AUT
7.8.4. Attaching from a Script
7.9. Attaching to a running Web Browser
7.9.1. Overview and Motivation
7.9.2. Making the Browser attachable
7.9.3. Attaching to the Browser from the Script
7.10. Improving Object Identification
7.10.1. Matching Objects with Changeable Texts
7.10.2. Exact Matching
7.10.3. Wildcard Matching
7.10.4. Regular Expression Matching
7.10.5. Real (Multi-Property) Name Properties
7.11. Object Map
7.11.1. The Concept of the Object Map
7.11.2. Creating an Object Map
7.11.3. Editing an Object Map
7.11.4. Script-Based Object Map
7.11.5. Text-Based Object Map
7.12. Object Name Generation
7.12.1. Object Names
7.12.2. Defining Property Sets
7.12.3. Advanced Property Set Definitions
7.12.4. Name Generation Algorithm used by Squish for Web
7.13. Squish's C++ API
7.13.1. Recording Hints to Influence and Control the Event Recorder
7.13.2. Using the Built-in Hook
7.14. Testcase Templates
7.14.1. Creating a New Template
7.14.2. Using a Template
7.14.3. Choosing a Custom Location for Storing Templates
7.15. Migrating to the Scripted Object Map: Common conversion problems
7.15.1. Real Names that contain Symbolic Names
7.15.2. Custom functions that take Symbolic Names as parameters
7.15.3. Symbolic Names that use characters that need to be escaped in the script language
8. IDE Reference Manual
8.1. Main Window
8.1.1. Main Window Actions
8.1.2. Perspectives
8.1.3. Control Bar Window
8.2. Views
8.2.1. Application Objects view
8.2.2. Breakpoints view
8.2.3. Console view
8.2.4. Call Hierarchy view
8.2.5. Debug view
8.2.6. Editor view
8.2.7. Global Scripts view
8.2.8. Image Viewer
8.2.9. Methods view
8.2.10. Object Map view
8.2.11. Outline view
8.2.12. Properties view
8.2.13. Runner/Server Log view
8.2.14. Image Selection Editor view
8.2.15. Search view
8.2.16. Settings view
8.2.17. Test Results view
8.2.18. Test Suites view
8.2.19. Test Summary view
8.2.20. Variables view
8.2.21. Verification Point Creator view
8.3. Dialogs
8.3.1. Customize Perspective dialog
8.3.2. Find/Replace dialog
8.3.3. Image Not Found dialog
8.3.4. Text Not Found dialog
8.3.5. Image Search Preview dialog
8.3.6. Import Squish Resource dialog
8.3.7. The Search Image Selection dialog
8.3.8. Manage AUTs dialog
8.3.9. New dialog
8.3.10. New Squish Test Case wizard
8.3.11. New Squish Test Data dialog
8.3.12. New Squish Test Script dialog
8.3.13. New Squish Test Suite wizard
8.3.14. Object Not Found dialog
8.3.15. OCR Selection dialog
8.3.16. Open Perspective dialog
8.3.17. Pref­er­ences dialog
8.3.18. Screenshot Verification Point dialog
8.3.19. Search dialog
8.3.20. Show View dialog
8.3.21. Squish Server Settings dialog
8.3.22. Switch to Editor dialog
8.3.23. Visual Verification Point editor
8.4. Keyboard Shortcuts
9. Add-Ons Reference Manual
9.1. Introduction
9.2. Third-Party Add-Ons
9.3. Ant integration
9.3.1. Obtaining the Ant Plugin
9.3.2. Installing the Ant Plugin
9.3.3. Using the Ant Plugin
9.3.4. Ant Plugin XML reference
9.4. Atlassian Bamboo integration
9.4.1. Introduction
9.4.2. Installation
9.4.3. Squish capability
9.4.4. Job definition
9.4.5. Task definition
9.4.6. Test results
9.5. CruiseControl integration
9.5.1. Obtaining the CruiseControl Plugin
9.5.2. Installing the CruiseControl Plugin
9.5.3. Using the CruiseControl Plugin
9.5.4. CruiseControl XML reference
9.6. Eclipse IDE Integration
9.6.1. Download and Install the Squish Integration
9.7. Eclipse Test & Performance Tools Platform (TPTP) integration
9.8. Helix ALM integration
9.8.1. Obtaining the Helix ALM™ Plugin
9.8.2. Installing the Helix ALM™ Plugin
9.8.3. Configuring the Helix ALM™ Plugin
9.8.4. The .squishtcm description file
9.8.5. The configuration file
9.8.6. Example: How to run a Squish test case
9.9. Quality Center™ Integration
9.9.1. Definitions
9.9.2. Creating the VAPI-XP-TEST in Quality Center
9.9.3. Preparing the test instances
9.9.4. Test report
9.10. Jenkins integration
9.10.1. Obtaining the Plugin
9.10.2. Installing the Plugin
9.10.3. Using the Plugin
9.10.4. Execution Results
9.11. Maven integration
9.11.1. Obtaining the Maven Plugin
9.11.2. Installing the Maven Plugin
9.11.3. Using the Maven Plugin
9.11.4. Maven Plugin XML reference
9.12. JetBrains TeamCity integration
9.12.1. Introduction
9.12.2. Installation
9.12.3. Build Step definition
9.12.4. Build execution
9.13. IBM Rational Quality Manager integration
9.13.1. Installing the Squish Adapter
9.13.2. Squish Adapter Concept
9.13.3. Preparing test configuration files
9.13.4. Starting the Squish Adapter
9.13.5. Using the Squish Adapter from Rational Quality Manager
9.13.6. Executing a Test Script
9.14. Microsoft® Visual Studio® Integration
9.14.1. Microsoft® Visual Studio® 2010 Integration
9.14.2. Microsoft® Visual Studio® 2012/2013 Integration
10. Frequently Asked Questions
Glossary
A. Copyright Acknowledgments
B. Index

List of Figures

4.1. Squish Control Bar

List of Tables

3.1. A Cut-Down List of Example Package Names
3.2. Supported Browsers
5.1. Tesseract OCR for Squish packages
7.1. Semantics of --tags switch to select scenarios or test scripts
7.2. The Wildcard Special Characters
7.3. Squish's Key Artificial Properties
8.1. Line Number Context Menu
8.2. Folding Context Menu
8.3. Text Area Context Menu
8.4. Source Submenu
9.1. squish:config tag
9.2. squish:runtest tag
9.3. squish:report tag
9.4. squishtest tag
9.5. testcase tag
9.6. report tag
9.7. run-test goal
9.8. run-test goal
9.9. run-test goal
9.10. Scripting arguments
9.11. run-test goal

List of Examples

5.1. The Shared Code
5.2. The tst_check_mode Test Script's main function
5.3. The tst_check_mode Test Script's other functions
5.4. The tst_card_mode Test Script's main function
5.5. The tst_card_mode Test Script's other functions
5.6. The tst_listwidget Test Script
5.7. The tst_listview Test Script
5.8. Setting up a Table Widget
5.9. Testing a Table Widget's Items
5.10. The tst_tableview Test Script
5.11. The tst_treewidget Test Script
5.12. The tst_treeview Test Script
5.13. The tst_loading Test Script
5.14. Extracts from the Shared Scripts
5.15. Extracts from the tst_editing Script
5.16. Testing a Table Widget's Properties
5.17. The tst_cash_mode Test Script
5.18. The Shared Code
5.19. The tst_check_mode Test Script's main function
5.20. The tst_card_mode Test Script's main function
5.21. The tst_jlist Test Script
5.22. The tst_jtable Test Script
5.23. The tst_jtree Test Script
5.24. The tst_loading Test Script
5.25. Extracts from the Shared Scripts
5.26. Extracts from the tst_editing Script
5.27. The tst_cash_mode Test Script
5.28. The Shared Code
5.29. The tst_check_mode Test Script's main function
5.30. The tst_check_mode Test Script's other functions
5.31. The tst_card_mode Test Script's main function
5.32. The tst_card_mode Test Script's other functions
5.33. The tst_list Test Script
5.34. The tst_table Test Script
5.35. The tst_tree Test Script
5.36. The tst_loading Test Script
5.37. Extracts from the Shared Scripts
5.38. Extracts from the tst_editing Script