Version 6.0
Squish 6.0 is a major new release with many new features and bug fixes. Here is a selected summary of the release's highlights—a detailed list of all the main changes is given in the sections that follow.
- Support for Behavior-Driven Development (BDD)
- A new BDD test case type was added. It can co-exist with previously created test cases and make use of existing script functions. See the product feature page for an overview including a demo video. Tutorials are available for each edition.
- Gherkin step skeleton generation and completion.
- Test step recording in any of Squish's supported scripting languages.
- Switch between BDD feature and script implementation files.
- Advanced Reporting
- Modernized and dynamic HTML reports that can be created through a single command line call:
squishrunner --reportgen html,C:\Report\
. Repeated runs will append merge the results of multiple suites into a single report. - Added new
xml3
andjson
result formats for post-processing in other tools. - Added test.startSection(title) and test.endSection() functions that allow for grouping test results into logical sections.
- Modernized and dynamic HTML reports that can be created through a single command line call:
- Script Language Updates
The default versions of the five available scripting languages as used by the binary packages got upgraded:
- JavaScript: addition of various ECMAScript 5.x functions.
- Perl: version 5.22.0
- Python: version 2.7.10
- Ruby: version 2.2.2
- Tcl: version 8.6.4
Custom Squish builds using the old interpreter versions can be created on demand.
- GUI Coverage (Experimental)
In addition an experimental new capability for tracking the coverage of UI tests was added. See Tutorial: Coverage of GUI elements for an overview and usage instructions.
It's currently available for the Qt edition only.
General
- Attaching to running AUTs is now much more firewall-friendly; it uses a single connection from squishserver to the AUT.
- Test execution is now more stable when dealing with test data files which end with an empty line.
- The
squishide
binary was moved to the toplevel folder, i.e., it's no longer necessary to open thebin
folder to launch the Squish IDE. - Improved support of binary packages with very old Linux distributions like RedHat Enterprise Linux 4 and SuSE Enterprise Linux 10.
- A new XML 3 report generator was added which supports nested test cases and which improves reporting of verifications.
- A bug in the XML 2 report was fixed which caused the name of verification points to be missing sometimes.
Squish IDE
- The Squish IDE is now based on Eclipse 4.4.
- Various usability improvements to the verification point editor.
- The Squish IDE is bundled with Java now on macOS, so no manual installation is necessary anymore.
- The control bar is not placed above all other windows anymore.
- The Goto definition shortcut now works as expected for Python scripts.
- Various usability improvements to the control bar.
- An issue was fixed which caused opening test suites to fail in case the
suite.conf
file contained empty lines. - A problem was fixed which caused opening the offline HTML manual as well as the PDF manual to fail.
- An issue was resolved which caused the 'object highlighting' feature to interfere with creating screenshot verification points.
- Selecting more than one test case will hide the Test Case Resources to avoid confusion about which test case resources are shown.
- The Squish IDE no longer executes test cases multiple times when using the Execute Test Suite feature, even if a test case is listed multiple times in the
suite.conf
file. - Fixed a problem which caused the control bar to show HTML formatting tags like
<b>
when recording tests. - The list of supported GUI technologies and scripting languages shown when creating a new test suite is now sorted alphabetically.
- Using the Record Snippet feature in an empty Python
test.py
file will now correctly add the requiredmain()
function definition. - The test results view now works correctly with two subsequent result entries having the same text.
- An issue was resolved which caused the Squish IDE to attempt executing non-existing test cases when using the Execute Test Suite feature.
- Elements of lists shown in the variable watcher are now sorted.
- Methods shown in the Methods view of the Spy are now sorted alphabetically.
- Auto-completion for
testData.dataSet
now works correctly in Python scripts. - Fixed a problem with showing the checkmark in the Recent Test Results dropdown next to the currently selected test result.
- Changing the path to the Squish tools being used will now also switch the path to the Perl and Python interpreters such that the interpreters shipped with the selected Squish package are used.
- Warnings and errors in test scripts are now indicated by a small overlay icon in the test case list and in the test case and test suite resource views.
- A problem was fixed which caused the Squish IDE to show squishrunner output in the wrong order.
- Fixed an issue with creating table verification points which caused the table to be compared twice when selecting the table again before saving the verification point.
- The Make Code Data Driven wizard now saves all open editors to ensure that the latest data is used.
- Fix a problem with saving changes from the Object Map Editor when a name was removed and all referencing object names have been adjusted to point to another name.
- The Open Symbolic Name feature no longer triggers a null pointer exception when used in Tcl scripts.
- Fix a problem when trying to open the Object Map of a Test Suite right after closing another Test Suite for which the Object Map had been opened too.
- Fixed a problem with View Differences for verification points where the verification point filename differed in casing from the way it is being called in the test script's Boolean test.vp(name) invocation.
- A new setting was added to the preferences dialog which permits disabling that the Test Results view is raised automatically after executing a test.
- Script comments spanning multiple lines are now collapsed by default.
Scripting
- A new
testSettings.testCaseName
property was introduced which can be used to set the name of the current test case; he test name will be reflected in the test report. - Timeout errors which occur while executing script statements when using the
squishtest
Python module will now raise script exceptions instead of automatically terminating the Python interpreter. - The
squishtest
Python module now exposes a newsetHookSubprocesses()
method which can be used to enable hooking into sub-processes – this is mostly relevant when testing Qt applications. - Importing the
squishtest
module into a Python script will no longer attempt to connect to squishserver; instead, the connection is only established when needed (e.g. when invoking ApplicationContext startApplication(autName)). - The ApplicationContext waitForApplicationLaunch() function now takes an optional timeout argument which defaults to the "AUT timeout". This means it no longer waits forever in case no application is launched.
- The ApplicationContext.name property now returns the full filename of the AUT - it's no longer cut-off at the first dot.
- It's now possible to pass a callable (e.g. a function) to the Boolean waitFor(condition) function.
- The Boolean waitFor(condition) function in Python scripts now returns a boolean value as documented.
- A new script function StackTrace test.stackTrace() was added which yields the stack trace for the current script execution.
- squishrunner features a new
--scriptargs
switch which can be used to pass arguments to test scripts from the command line. - The testSettings.logScreenshotOnPass/testSettings.logScreenshotOnFail properties are now honored for all test functions that generate test results.
- The debugger for Perl test scripts was greatly improved; step into/over now work as expected, the call stack is displayed correctly and the variables view now works correctly with global variables.
- Syntax errors as well as runtime errors in Perl scripts are now reported correctly, and they show up as 'Script Error' results in the test report.
- The error location for exceptions raised in deeply nested Perl scripts is no longer
(eval N)
but the actual file location. - The testData.get(filename) function now works correctly with empty files.
Qt-specific
- Fixed the screen coordinates of web elements returned by the
screenRect
property. - Added support for
QQuickWidget
controls with Qt 5.4 or newer. - Improved support for QML context access.
- Added support for testing Qt applications on iOS and Android.
- Support for calling custom Qt methods with single precision
float
arguments. - Recording of input methods on Qt Quick 2 (i.e., when using an on-screen keyboard) is now supported.
- Squish for Qt now prefers the
QObject::objectName
property overtext
andcaption
. This can greatly improve the generated names for top-level windows which change their caption. - Added support for recording without coordinates for Qt Quick 2. This results in cleaner scripts which are less dependent on screen or object geometry. See
RecordWithoutCoordinates
in <SQUISHDIR>/etc/qtwrapper.ini
for more information. - Improved synchronization and reliability of replaying clicking, tapping and typing functions on Qt Quick 2 applications.
- Introduced support for calling custom
QObject
methods that take a custom enum value registered via theQ_ENUM
macro. - Added support for automating Qt 5 applications running on Windows CE.
Java-specific
- It is now possible to record & replay multi-touch gestures on JavaFX applications using Java 8 when running Windows 8 or later.
- Fixed an issue with recording actions on SWT combo box controls on macOS.
- Support for
SwingNode
was added, enabling recognition for Swing controls embedded into JavaFX applications.
Web-specific
- It is now possible to specify a
container
property in object names. This is already used to indicate the browser tab when generating names, but can also be added manually to help disambiguating object names that appear multiple times in different places on a web page. - A problem was fixed which caused hooking into Google Chrome not working correctly in some cases.
- It's no longer necessary to close all running Firefox instances before running a test with Firefox.
- A problem was fixed which caused replaying actions on Java applets to fail because of an exception raised by
SwingUtilities.invokeLater
. - A problem in the loadUrl(url) function was fixed which caused launching Microsoft Internet Explorer to fail if loadUrl(url) is called right after closeWindow(":[Window]").
- Speed up hovering over objects by removing the expensive occurrence calculation for the object name. The occurrence is only calculated once an object is selected by clicking it.
- Expose the browsers tabs/windows opened during a Squish test to the test script. Tabs are identified using multi-property names and hence can be looked up using Object waitForObject(objectOrName). Squish provides functions to query the tabs and activate a particular tab. Newly recorded scripts will automatically get object names generated that include the tab to ensure the object lookup is done in the right tab. This feature is supported for Microsoft Internet Explorer, Firefox, Google Chrome and Apple's Safari.
- An issue was resolved which caused the Object waitForObject(objectOrName) function to not consider the visibility of HTML objects, making it return too early.
- Closing Microsoft Internet Explorer windows will no longer show confirmation dialogs.
- Fixed a problem causing both mouseClick(objectOrName) and clickButton(objectOrName) to be recorded when clicking buttons in the 'addressbook' example.
- Recorded object names now make use of the
visible
property to reduce the necessity to use theoccurrence
property. - The Boolean setContext(context) and waitForContextExists(context) functions now throw an exception if the given context name is not found. The old behavior can be restored using the
ThrowErrorOnUnknownContextNames
setting available in <SQUISHDIR>/etc/webwrapper.ini
.This also affects object names using the
context
property. - A problem was fixed causing the object highlighting to not stop for Java applets.
- Fixed a problem with how the screen geometry of scrolled HTML elements were calculated which caused calling functions like nativeMouseClick(x, y, button) or typeText(objectOrName, text) to fail.
- Taking screenshots of HTML elements on macOS now works as expected.
- Automating web pages using Microsoft Internet Explorer no longer requires adding those pages to the Trusted Sites zone of Microsoft Internet Explorer.
Flex-specific
- A problem was fixed which caused accessing the
id
/name
attributes ofOBJECT
elements to not work correctly. - The Flex 'addressbook' example now launches correctly in newer versions of Firefox (version 29 and later).
Windows (native)-specific
- Fixed various issues with the UI Automation-based object recognition which caused objects to be missing from the Squish object hierarchy.
- The stability of the FoxPro support was improved.
- Various issues related to .NET applications which use multiple threads and sub-processes were fixed.
- A problem was fixed which caused the
text
property of top-level MFC windows to be empty in some cases. - Replaying clicks on Windows Forms radio button controls will no longer trigger a mouse click before the mouse cursor reaches the radio button.
- Added a property to fetch the plain text from .NET WPF text controls (based on the
RichTextBox
class). - Added support for drop-down menus of toolbar items in Windows Forms applications.
- Various issues related to recording text input were fixed (in particular recording key combinations like Ctrl+A).
- Fixed a problem which caused recording text input into the Microsoft Internet Explorer address bar to not work.
- Improved support for the WPF controls
TreeViewItem
,ListViewItem
,DataGridCell
,DataGrid
andToggleButton
. - Improved recognition of the Z-order of WPF controls.
- The handling of native Windows controls embedded into Windows Forms .NET controls was improved; they are now wrapped using the Windows Forms accessibility functionality, exposing more information.
- Executing two mouse clicks in a row will no longer trigger a 'double-click' action in the AUT.
macOS-specific (Cocoa/Carbon edition)
- Support for automating
WKWebView
controls was added. - A memory leak related to menu interactions was fixed.
iOS-specific (iPhone/iPad edition)
- Support for automating
WKWebView
controls was added. - Improved stability when replaying touch actions on iOS 8.3
- Fixed starting AUT in the iOS Simulator with the default launcher options in case no iPhone 4s is configured as an available device.
- Selecting AUT objects with the Spy will now highlight the objects.
Android-specific
- It's now possible to pass extra key-value pairs to the Intent of Android applications.
- Added initial support for the upcoming Android M release.
- Added support for CrossWalk-Cordova web view XWalkView
- Fixed a problem which caused detaching from AUTs to crash to which the test script connected using ApplicationContext attachToApplication(autName).
- Resolved a memory leak which might cause out-of-memory errors for very long running test scripts executed on the Dalvik virtual machine (Android prior to version 5.0).
- Added a new stopObserver() function to temporarily stop the observer in case an app needs to do a CPU-intensive task.
- Fixed an issue which caused tracking dialogs to fail in some cases if a new Activity is started at the same time.
Tk-specific
- Added support for recording of menubars and context menus when testing Tk applications on Windows.
Add-Ons & Integrations
- The Visual Studio integration supports Visual Studio 2013.
Source Packages
- Squish can now be built against Ruby 2.2.
- Squish can now be built using Visual Studio 2015.
- Experimental support for building against Python 3 was added.
- The compiler detection for GNU C++ and compatible toolchains, including Clang and QNX QCC, was improved.
- The
configure
switches--enable-debug
and--disable-debug
have been split into separate switches to allow building Squish against a release Qt library but with debug information; refer toconfigure --help
for details. - Support for cross-compiling on Windows for Unix targets is now supported for most components of Squish for Qt.
© 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.