Table of Contents
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.
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
and json
result formats for post-processing in other tools.
Added test.startSection
and
test.endSection
functions that allow for
grouping test results into logical sections.
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.
In addition an experimental new capability for tracking the coverage of UI tests was added. See Tutorial: Coverage of GUI elements (Section 4.1.4) for an overview and usage instructions.
It's currently available for the Qt edition only. If you would like
to see it work with native Java, Windows, Web, iOS or Android
applications as well please contact us at
<squish@froglogic.com>
!
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 the bin
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.
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 required main()
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 test.vp
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.
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
new setHookSubprocesses()
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
startApplication
).
The 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 waitFor
function.
The waitFor
function in Python
scripts now returns a boolean value as documented.
A new script function 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
function now
works correctly with empty files.
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 over text
and caption
. 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
SQUISH_DIR/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
the Q_ENUM
macro.
Added support for automating Qt 5 applications running on Windows CE.
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.
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
function was fixed which caused launching Microsoft Internet Explorer to fail if loadUrl
is called right after closeWindow
.
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 waitForObject
. 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 waitForObject
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
and clickButton
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 the
occurrence
property.
The setContext
and waitForContextExists
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 SQUISH_DIR/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
or typeText
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.
A problem was fixed which caused accessing the
id
/name
attributes of OBJECT
elements to not work correctly.
The Flex 'addressbook' example now launches correctly in newer versions of Firefox (version 29 and later).
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
and ToggleButton
.
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.
Support for automating WKWebView
controls
was added.
A memory leak related to menu interactions was fixed.
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.
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
attachToApplication
.
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.
Added support for recording of menubars and context menus when testing Tk applications on Windows.
The Visual Studio integration supports Visual Studio 2013.
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 to configure
--help
for details.
Support for cross-compiling on Windows for Unix targets is now supported for most components of Squish for Qt.