Version 6.4
Squish 6.4 is a feature release which delivers new features to all editions of the product.
Furthermore, a lot of features and bug fixes were applied to individual Squish editions since Squish 6.3; see the following sections for a detailed list of all changes.
Script-Based Object Maps
This Squish version introduces a new, more powerful scheme for expressing and managing object names: Script-Based Object Maps. Instead of using strings (starting with a colon) as symbolic names referencing real names (which are strings, too), Squish 6.4 uses script-based object maps in which the object map is a plain shared script which holds variables with dictionaries. This makes dealing with object names much easier and safer, enabling various useful use cases, such as:
- Dealing with translated UIs
- Splitting object maps into multiple files
- Resolving duplication between object names
- Auto-completion and refactoring support for object names
Script-Based Object Maps are the default for newly created test suites; existing test suites continue to work as before, but can be converted to use a script-based object map instead of a text-based object map using a convenient migration wizard.
See Script-Based Object Map for more information on the structure and functionality of object maps in Squish 6.4.
Image-based Object Lookup
Squish 6.3 introduced basic support for identifying controls in an application based on their visual appearance. Squish 6.4 builds on top and greatly improves the usability and power of this feature.
The search images can now be grouped together. Each image in a group is conidered equally valid representation of a control. Grouping together images captured on different platforms, with differnet rendering styles or different display resoluions increaes the protability of the test script.
Squish 6.4 supports tolerant Image-based Object Lookup. It permits small deviations between the template image and its occurrence(s) on the desktop, with an adjustable threshold on what constitutes a match.
The new scaled image search mode allows resized occurrences of the template image. The application controls that vary in size can be matched using a single image file.
The Squish IDE provides improved Image-based Object Lookup support. The new Image Not Found dialog and Image Search Preview dialog help diagnose and fix image search errors.
See ScreenRectangle findImage(imageFile, [parameterMap], [searchRegion]) and ScreenRectangle waitForImage(imageFile, [parameterMap], [searchRegion]) functions for more information on the Image-based Object Lookup configuration.
General
- squishrunner now logs a script stacktrace for any failed verification, failure or fatal error in generated test reports.
- Added an alternative JUnit report generator that preserves the testcase and BDD test structure in its generated test report.
- Reduced resource usage (memory as well as TCP connections) of squishrunner and squishserver in case ApplicationContext startApplication(autName) or ApplicationContext attachToApplication(autName) calls fail.
- Fixed a squishrunner crash that could occur when accessing application objects of an AUT that had just crashed.
- Fixed logging of incorrect timestamps in XML 3.x test reports when the AUT terminates abnormally.
- Fixed unattended installs of Squish packages on Unix when no X11 server is available.
- Fixed incomplete test reports when aborting squishrunner testsuite execution on commandline.
- Improved error reporting on squishrunner startup. Problems when writing a test report will now abort with a clear error message.
- Fixed error reporting when squishrunner connects to squishserver. Failure to connect will now produce a proper error in the test report.
- Relative paths passed to the
--reportgen
or--resultdir
options of squishrunner in testsuite replay mode are now handled as relative to the startup directory. Previously they were relative to the testsuite directory. - squishrunner in testsuite mode now supports the
--envvar
and--envvars
options to provide or override testsuite-wide environment variables. - Introduced a user license key option that is node-locked.
- The vpdiff utility gained support for creating and editing image masks which have the width or height smaller than 10 pixels.
- The xml2jira utility now supports updating JIRA tickets using test reports stored in xml3, xml3.1, xml3.2 and xml 3.3 formats.
Squish IDE-specific
- Fixed an issue due to which single-stepping in test scripts on macOS sometimes worked very slowly.
- Exported results are stored as a ZIP file and include failed images, screenshots and failed object dumps.
- Support for importing results into the Test Results view using either a zipped report or a plain XML report file.
- The Test Suite Test Suite Settings view had its contents split across multiple tabs shown at the bottom of the editor area.
- Support selecting the iOS simulator device to run a test with from the suites view.
- Hovering the mouse over symbolic names with Ctrl (Cmd on macOS) pressed in the script editors offers to highlight the object matching that name or checking for its existence.
- Improve feedback when loading application object children or properties takes long.
- Support copying method information from the Methods view.
- Support filtering in the Methods view and Properties view.
- include file/line numbers when copying the text of entries from the Results view.
- Fixed a problem with the test suite settings editor not updating itself when the Squish installation location has been changed. This led to outdated and incorrect information being shown in the suite settings.
- Provide Check Existence and Highlight Object entries in the Object Map editor's context menu.
- Made it possible to configure whether the crash dump dialog should be shown by Squish tools or AUT's started directly or indirectly from the Squish IDE.
- Support Ctrl + MouseClick on symbolic names in test script editor to check the names existence or highlight the object.
- Fixed a problem with auto-indentation in Ruby scripts affecting formatting of newly recorded script code.
- Remember selected toolkit, script language and AUT in the test suite creation dialog.
- Fixed a problem that led to not saving all open editors before executing a test or recording a single scenario.
- Make the Copy/Add actions in the context menu of the Application Objects view explain what happened via the status bar of the Squish IDE.
- Support drag and drop of folders from a systems file explorer into the global scripts view to add them as a global scripts directory.
- Added support for handling test data files in
xlsx
format (i.e., modern Excel versions). - Support filtering of file names in Global Scripts view and add default set of filters hiding compiled Python files and version control related files.
- When saving a feature file all lines will have whitespace at the line end removed.
- Add support for showing stacktrace information included in reports generated with xml3.3 report generator and use that generator when available for executing tests from the Squish IDE.
- Add a new context menu entry to the Test Results view view to re-execute a single testcase or scenario after having executed a bunch of them.
- Extended the Environment table in the test suite settings with Add/Remove buttons to make editing of the table easier to discover.
- Added the Test Settings page to the Test Suite Settings view to allow changing the default values of various items available from the testSettings object.
- Fixed a problem with the Properties view showing no properties list when the selected object has a realname that contains properties with linebreaks.
- Fixed a problem causing error dialogs to pop up when a testcase executed multiple feature files by calling
runFeatureFile
multiple times.
Scripting
- Allow passing native dictionaries / hashes to object lookup functions.
- Added shared and global script directories to search paths used by language-specific module import statements.
- Added support for JavaScript modules based on the
import
andexport
keywords from ECMAScript 2015. - Added support for JavaScript
for (... of ..)
ECMAScript 6 loops. - Added JavaScript
Set
object from ECMAScript 6. - Added support for default JavaScript function parameters from ECMAScript 2015.
- Added SequenceOfObjects findAllObjects(objectName) script function.
- Fixed snooze(seconds) not pausing script execution long enough in some cases.
- Added test.breakpoint() function.
- Support reading test data files using
xlsx
format. - Fixed a crash which could occur when using the
objectMap
script API in the toplevel scope of the main test script file. - Fixed a problem with invoking the wrong Squish functions in some rare cases.
- The Python and Ruby interpreters shipped with Squish now include support for SSL encryption, enabling e.g. secure hashing or HTTPS connections in test scripts.
- Honor the testSettings.logScreenshotOnError property on fatal script errors too.
Qt-specific
- Add support for Qt 5.11
- Fix performance problem for QtQuick name generation with many invisible objects being present.
- Log output from the Qt toolkit support is now correctly forwarded if squishserver started the AUT. The log output was handled as AUT standard error output before.
- The Qt toolkit support not honors the
--debugLog p
option passed to squishrunner and defaults to less log message output compared to earlier versions. - Enabled native screen grabbing for MinGW packages on Windows, fixing screenshot VPs for QtQuick/3D on certain driver/hardware combinations.
Java-specific
- Restored support for IBM Java virtual machines, which got removed after the support for Java 9 was added.
- Fixed doubleClick(objectOrName, x, y, modifierState, button) and doubleClickItem(objectOrName, itemText, x, y) for SWT on macOS to trigger a double-click instead of two consecutive clicks.
- Avoid trying to automate disposed SWT browser controls.
- Fixed application-specific security policies with Java 9. An option to specify a policy file is available in the wrapper configuration file (
etc/javawrapper.ini
resp. the file specified via theSQUISH_WRAPPER_CONFIG
environment variable). - Improved stability with applications using both SWT and JavaFx controls.
- Corrected detection of JFace
ControlDecoration
with recent Eclipse versions.
Web-specific
- Fix handling of Confirm/Prompt dialogs when inspecting a website from the Squish IDE.
- Fixed shutdown of Google Chrome to be more graceful avoiding the 'restore session' popup.
- Accessing properties or calling functions of HTML objects that are not available anymore will throw an error instead of silently failing. Most notably this affects object references that are kept alive while the website reloads or navigates to a different page.
- Support starting CEF-based browsers (and others automated via webdriver) without specifying a URL. This can be used for web-applications that load the web content from packaged resources.
- Fixed a problem causing Google Chrome to start up with two tabs (labelled files and (x86) instead of starting up normally, causing hooking into the browser to fail.
- Fixed a defect in nativeMouseClick(x, y, button) causing it to always fail if the element to click on was not inside the visible area of the browser.
- Session data (cookies, cache, history, form data etc.) is no longer reset when attaching to a running instance of Chrome or Firefox.
Windows (native)-specific
- Fixed an issue which would make Object waitForObject(objectOrName) sometimes assume that an object was ready for interaction even though the
visible
orenabled
property isfalse
. - Improved interoperability between WPF and Windows Forms GUI toolkits. GUI types with same name can have now different properties.
- Added the property
source
to WPFImage
objects to help with their identification. - Improved clicking on templated WPF controls.
- Fixed accessing .NET controls embedded into Qt applications but the .NET controls are executing in a separate thread.
macOS-specific (Cocoa/Carbon edition)
- Fix play back of mouseDrag(objectOrName, x, y, dx, dy) on a Mac with a locked screen or fast user switching.
iOS-specific (iPhone/iPad edition)
- Fix automatic enabling of accessibility for iOS 11 simulator.
Android-specific
- Support
apk
files built with Android SDK 3 (android-26
).
Source Packages
- Include WebSockets support in source packages for JavaScript and Squish for Web.
- Building Squish Tools (Runner, IDE Utils) now requires Qt 4.6 or newer
Documentation
- Extended documentation for automateLogin(username, password) to cover the scenario of a website requesting login during loading the page itself instead of upon a button click.
Known Issues
For a list of noteworthy issues which were found after the release of Squish 6.4, please see the Known Issues page on the froglogic Knowledge Base.
Platform Support
The support for running the Squish IDE or squishrunner on some older operating systems is being phased out. Hence, starting with one of the upcoming Squish releases, out-of-the-box support for some older platforms may be available in form of remote testing only. In particular, this affects
- Windows versions prior to Windows 7
- macOS releases before macOS 10.10
- Linux installations older than CentOS 6
- AIX and Solaris
This is due to the dwindling support of frameworks employed by squishrunner and Squish IDE. See this dropped platform announcement by the Eclipse project or the platforms supported by Qt 5.9 for example.
© 2024 The Qt Company Ltd.
Documentation contributions included herein are the copyrights of
their respective owners.
The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation.
Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property
of their respective owners.