Table of Contents
Squish 6.3 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.2; see the following sections for a detailed list of all changes.
As a supplement to the main property-based object identification, elements can be located on the screen based on their visual appearance. This enables interactions with custom elements, controls from unknown toolkits, and controls from outside of the main application.
The Squish IDE now features the insertion of user interactions
like mouseClick()
and tapObject()
based on
images. The search is performed through a newly added
waitForImage
function. The algorithm
employed is still quite simple, but future versions will provide more
sophisticated look-up options that can deal with color and resolution
differences. See How to Do Image-Based Testing (Section 5.24) for an
example automating a chess application.
Once the extension leaves its beta state it will require an additional license. At that point a time-limited free upgrade option will be available for all existing customers.
The new functions test.compareTextFiles
and test.compareXMLFiles
compare the content of
two text and XML files, respectively. Instead of performing a plain,
byte-by-byte comparison, possible differences are reported for individual
lines and elements. Several configuration options exist to allow for
acceptable differences in content and formatting.
Significantly improved stability and resource usage of squishserver.
Fixed attaching to AUTs from squishserver running on Solaris.
Fixed an issue due to which executing tests using verification point files would not generate valid XML version 3.0 or 3.1 report files.
Fixed gem utility shipped with Ruby interpreter of Windows and macOS packages such that it's possible to install additional Ruby gems.
Fixed an issue causing object lookups to fail in case a
property value contains the substring }.
Improved detection of invalid command line arguments for squishrunner and squishserver.
The --retry
parameter for squishrunner
now works as intended for BDD
scenarios.
New report generator versions: xml3.2
and json1.2
. They include the retry count for a
retried test case resp. scenario.
The xml2jira (Section 7.4.11) utility now allows creating
and updating JIRA tickets which ask for user-defined CustomFields
to be set.
The xml2jira (Section 7.4.11) utility now supports handling tickets in user-defined workflows involving custom ticket states and custom ticket state transitions.
Python Interpreter for PyDev is always automatically
configured based on the PythonHome
entry from the Squish
installations SQUISH_DIR/etc/paths.ini
file.
Fixed a problem sometimes causing an error dialog to be shown while looking at tooltips in the feature editor.
Enforce the Test Suites view to be opened when the Squish IDE starts as it is crucial for using the Management Perspective.
Fixed a problem with activating the Scenarios tab in the Test Suites view when opening a test suite where the first test case is a BDD test.
Added option to disable generation of warnings for missing step implementations in BDD tests. See Edit > Preferences > Squish > BDD Support.
Support stepping out of a function to the caller (also known as 'Step Return').
Fixed a problem in the context menu of the test data editor causing all items there to be disabled.
Improved feature file editor performance when working with test suites that contain many feature files and scenarios.
Fixed a bug in the Squish IDE's test description editor causing it to show the descriptions in a single line instead of multiple ones.
When instrumenting Android applications, the Squish IDE now
ensures that the jarsigner
executable can be found
on the system before proceeding with instrumentation.
Support opening multiple testsuites through the commandline invocation of the Squish IDE by specifying the parent directory of the test suites.
Improve handling of source
and findFile
in JavaScript tests allowing
code-completion and Go To Declaration to work with
sourced scripts.
Improve auto-completion for ToplevelWindow
,
BDD and Screen
modules in
JavaScript.
Save and Restore the selection states in the Test Suites and Global Scripts views between Squish IDE sessions.
Support showing testcases, files and folders of the suite in the System Explorer.
The Squish IDE window is not deactivated as intended when creating screenshots or visual verification points on macOS. This avoids potential issues with different focus indicators when creating and replaying tests.
The image viewer used for viewing image files is now configurable in the Preferences dialog.
Screenshots taken for test failures can now be opened using the internal image viewer of the Squish IDE.
Fixed an issue causing an error message to be shown when saving an object snapshot in the root directory of a Windows drive.
Improved the visual appearance of the Squish IDE when running on Windows 8 and newer.
Improved the error message when attempting to open a test data file that is neither in a test case nor in a test suite directory.
When viewing the results of visual verification points, the object hierarchy showing matched objects now works as intended.
The Run Scenario and Record Scenario in the context menu of the Gherkin editor are now only available if it's actually possible to run resp. record a scenario. They used to be enabled even if a scenario was currently being executed or recorded, and clicking them would then trigger an error.
Improved performance of Ruby-based BDD tests with a lot of step definitions.
Improved stability of XML module for JavaScript tests.
Improved stability of Tcl scripts when using the source
command to load external Tcl files with
syntax errors.
The testData.put
function now
allows copying empty files.
Made waitForObjectItem
work correctly when the item text is empty.
It is now possible to invoke static member functions on null objects.
Using the RemoteSystem
Object (Section 6.3.20) in Ruby test
scripts no longer requires issuing an include Squish
statement first.
Fixed JavaScript Array.sort()
for strings
with different lengths.
Fixed invoking orientation
method on Tcl
Screen
Object (Section 6.3.15) when passing a screen index
value.
Fixed a bug in the squishtest
Python module
causing the setTestResult()
function to create too many
report generators; the function now throws an exception when called the
second time.
macOS only: Using the squishtest
Python
module no longer requires setting the DYLD_LIBRARY_PATH
environment variable and make it work with the system Python on macOS
10.11 and macOS 10.12.
Fixed a bug in the squishtest
Python module
which caused the test report to not get written out completely at the end
of a test execution.
Removed unneeded SquishRunner.py
convenience module to avoid confusion.
Fixed syntax for enum value recording in Perl to also work
when use strict;
is being used.
Fixed breakpoints in external source files in Perl.
The default timeout for waitForObject
and
similar script functions can now be configured via
testSettings.waitForObjectTimeout.
Improved memory usage of the JavaScript XML Object (Section 6.16.7).
The Python import
statement now works for test
suite resources as an alternative to Squish's own source()
function.
Running a BDD test with a filter,
skipped scenarios (and examples of a scenario outline) appear with a
Skipped
test result now (in the past, nothing was
reported at all).
Running a BDD test with a filter and
the filter causes no scenarios to be executed at all, the OnFeatureStart
and
OnFeatureEnd
hooks are no longer executed.
It is now possible to specify textual descriptions for Examples sections of scenario outlines, much like in Feature or Scenario sections.
It is now possible to specify more than one Examples section per scenario outline.
Added support Qt 5.8.0 and 5.9.0.
Added support for QVector2D, QVector3D and QVector4D types.
Added support for displaying QPalette properties including sub-properties in the IDE.
Fixed a possible crash of Squish for Qt on Android packages using Qt 5.7.
Fixed nativeMouseClick
replay
with non-primary mouse button.
Optimized object lookups based on the
text
property
Optimized accessing QModelIndex
objects in
Qt models.
Fixed set of 'unmatched properties' reported for failing object lookups when running tests on Windows.
Fixed object highlighter for Squish for Qt running on iOS in landscape mode.
Fixed crash in keyboard input recording for QtQuick when the mouse was moved at the same time.
Fixed object lookup for QObject
subclasses
that expose a custom property called
name
.
Fixed object lookup for QObject
subclasses
where properties mentioned in the Squish object name were skipped under
certain circumstances, causing unrelated objects to be returned instead.
If needed, the old behavior can be restored by changing the
QObjectLookupSkipMissingProperties
value in the
SQUISH_DIR/etc/qtwrapper.ini
configuration file.
Added support for desktop screenshots on platforms where screen grabbing fails. As an approximation, the contents of the currently maximized or fullscreen toplevel window will be grabbed if possible.
Support for QWebEngineView
objects is only
loaded into AUT processes that already have the
QtWebEngineWidgets
module loaded in order to avoid
AUT freezes on startup.
Fixed a crash when invoking
QVariant::toMap()
in a test script.
Improved dependency footprint on Windows by respecting
the etc\winwrapper.ini
configuration file to decide
whether to load code related to interacting with COM
objects.
Added autoRaise
, defaultAction
and menu
as readonly properties to QToolButton.
Fixed fetching children from QQuickWidget
,
also fixing support of QtQuickControls 2.x Popup
overlays
inside this view type.
Added support for testing PyQt applications using Qt 5 on macOS.
Added mouseWheel
function.
Fixed waitForObjectItem
such that it
correctly waits for a menu item to be ready.
Fixed possible hookup problems in SWT
applications when using a modified SWT .jar
file.
Accessing JTable
items now correctly scrolls
to the item.
startjavaaut
now waits for the
AUT to be up and running before opening its listening
port.
Fixed a bug which caused hooking into JavaFx WebView controls to only work shortly after a page load.
Improved stability of traversing HTML objects contained in a JavaFx WebView control.
Added full support for SWT browser controls, enabling dedicated recognition of HTML objects on all platforms and with all browser engines.
Added HiDPI support for SWT version 4.6.
Fixed a potential issue with hooking into Java applications running on macOS.
Added support for testing with the Microsoft Edge browser.
Improve error handling when a user starts a testcase for
Firefox or Chrome without having the extension
installed or having an outdated extension installed. There will now be
checks done in the Squish IDE before starting the test and as part of starting
the webhook
helper process before starting the
browser. If the check fails an error is generated and the browser start
is aborted.
Improved browser extension installation procedure for Firefox and Chrome. The Squish IDE will trigger this when recording/running a testcase (or launching the browser) and no working extension could be detected. The extension installation is not part of the Squish installation procedure anymore.
Text input in web applications is being recorded into a
typeText
command now instead of a setText
command.
Changed behavior of typeText
to only click into the beginning of the
field if the field has no focus, so that subsequent typeText
commands on the same field will append
to the field instead of prepending to it.
Improved execution speed of the typeText
function by removing a fixed three
second delay and instead relying on the focus state of the object to be
typed into.
Added a selectAll
method to HTML_TextBase
objects that selects all the text in
the field.
Added chooseFile
function
to interact with file dialogs inside the browser.
Fixed set of 'unmatched properties' reported for failing object lookups when running tests on Windows.
Support automation of Chromium-based desktop applications (built for example using CEF, Electron, nw.js).
Support filtering of the id
property
from names generated by Squish for Web. See
FilterIdPropertyFromGeneratedNames
in
SQUISH_DIR/etc/webwrapper.ini
for more
information.
Make nativeMouseClick
fail
when the bounding rectangle of the object to click on has no width or
height as this usually indicates that the screen coordinates calculated
are wrong as well and would just cause a click in the top-left
corner.
Make nativeMouseClick
verify
that the final coordinates (element position + provided relative click
parameters) are within the bounding rectangle of the viewport of the
browser and fail with an error if the coordinates are outside. This is
another measure by Squish to avoid clicking somewhere on the desktop
possibly bringing an automation system into an unusable
state.
The Squish extension for Google Chrome is now being installed from the Chrome Store to avoid developer-mode warning popups.
Fixed a crash happening sometimes with Chrome when the last tab is being closed.
Fixed a crash happening with Microsoft Internet Explorer when the test script closes a tab and immediately starts looking for another browser tab name.
Fixed a problem causing waitForContextExists
to always wait for the
timeout (20 seconds by default).
Improved error reporting when using the function
ToplevelWindow.focused
of the ToplevelWindow
Object (Section 6.3.16)
Fixed a regression that could lead to Squish not being able to access any elements in Microsoft Internet Explorer 11 after a link click navigated to a new page.
Fixed a crash happening when trying to access the title of a browser tab object in Microsoft Internet Explorer when a PDF is shown via an embedded viewer plugin in that browser tab.
Disallow usage of Firefox 57 and newer with Squish 6.3 as the extension being used by Squish is not compatible with Firefox 57.
nativeMouseClick
and typeText
will correctly signal an error now when
activating the tab corresponding to the HTML object to
interact with fails.
A WPF example program called
AddressbookWPF is now included, showcasing the
support for WPF controls such as
DataGrid
.
Fixed issue causing initial actions performed on .NET applications to not get recorded sometimes.
Fixed potential resource leak when replaying tests on .NET applications.
Handle vanishing objects more gracefully when replaying tests on .NET applications.
Fixed problem causing accesses to the
text
property of MFC tree view
items to abort test execution in some cases.
Made startwinaut (Section 7.4.7.4) print status (and
error) messages when using the --port
switch to simplify
diagnosing issues related to attaching to applications.
Applications launched via Squish for Windows will no longer show the standard WER (Windows Error Reporting) dialogs to avoid blocking test execution.
Script handlers for Crash
events
installed using the installEventHandler
function will now get invoked as expected.
Fixed error message being shown when picking (or
recording clicks on) empty Infragistics UltraGrid
controls.
Exposed new text
property on
Infragistics menu items and toolbar buttons for
consistency.
Added support for function keys
(F1-F19) for recording and playback of
type
.
Added tapObject
function which is the same as clickObject
and doubleTap
function which is the same as
doubleClick
. For consistency with
other Squish editions, the tapObject
function is recorded instead of
the clickObject
function. The clickObject
and doubleClick
functions are kept for
compatiblity with existing test scripts.
Fixed hanging and crashing during playback on a
WKWebView
.
Desktop screenshots are now taken in Retina resolution on
Retina devices. This affects the saveDesktopScreenshot
function and the testSettings.logScreenshotOnFail setting. The
behavior of screenshots in verification points is not
changed.
Added WebView.evalJS
method to the WebView
object type.
Better native Java method exception description than
InvocationTargetException
.
Fixed regression from Squish 6.2 that prevented <IP>:<port> network device strings from being recognized.
Fixed instrumentation of APKs which use the latest Android SDK.
Improved recording of text input by no longer considering
text input on XWalkViewBridge
controls (or child controls
thereof).
Support for building squishserver with Visual Studio 6 has been dropped, customers building Squish/Qt from sources with that compiler should use the Quick Install (Section 3.1.2.1) steps.
Fixed C++11 detection when building with Qt >= 5.7.0.
Fixed building Squish on macOS against a Qt build which uses a library name infix.
Fixed qtbuiltinhook.pri
for
including the Squish for Qt builtin-hook in
qmake projects to work with recent
qmake and Qt
Creator
versions.
Added experimental support for building squishidl (Section 7.4.5) with qmake.
Improved performance for file copying during build,
most notably when using build install
.
Added support for building squishrunner and Squish IDE utilities with Qt 5.
Fixed failed assertion in
doc/book/Buildsub
when building Squish from
sources with separate source and build directories but not enabling the
documentation in the build.
Fixed several data files being marked as executable in source packages.
Overhauled the Squish for Web tutorial.
The documentation of the attachToApplication
is now included in all Squish
packages. The function's documentation was also extended to document that
the timeout can be changed without specifying a host or port to connect
to.
Corrected the Squish for Java tutorial such that it no
longer claims that Squish needs to know the path to the
swt.jar
file.
For a list of noteworthy issues which were found after the release of Squish 6.3.0, please see the Known Issues page on the froglogic Knowledge Base.