Version 7.1
Squish 7.1 is a feature release which delivers new features, bug fixes and usability improvements to all editions of the product.
Noteworthy highlights of this release include:
Support for Shadow DOM in Squish for Web
Squish for Web now provides easy access to HTML objects inside shadow DOM from test scripts in all scripting languages, as well as from squishide
.
Using the properties system of Squish, a new shadowRoot
property represents the root of a shadow tree (if present and open) and can be used to comfortably traverse, inspect and create verifications on the objects within the shadow tree.
More details can be found in the API documentation of HTML_Object.shadowRoot on HTML_Object Class.
Testing SwiftUI-based Applications with Squish for macOS
Added support for testing SwiftUI-based applications with Squish for macOS. Using a novel approach, SwiftUI does not rely solely upon injecting a Squish hook into an AUT, but additionally makes use of the accessibility API.
Recording and replaying interactions with objects of SwiftUI applications is in general possible, but the amount of exposed object properties and the ability to invoke object methods is limited by the capabilites of the accessibility API.
Revamped Squish Installer
Squish Installer has been upgraded to use Qt Installer Framework 4.1.1. This change not only fixes some long-standing usability issues and improves user experience, but also gives the installer a more unified Qt-style look and feel.
Multiple Squish Servers
Using multiple different squishservers has always been tedious in squishide
as it could only remember connection details of one squishserver at a time.
squishide
can now configure connection details of multiple squishservers and switch between these configurations comfortably in the GUI. The new Servers pane in IDE preferences supersedes the Remote testing pane, which has been dropped.
General
- Documentation in PDF format is no longer shipped with Squish packages.
- Introduced a new
testSettings.logScreenshotOnWarning
property, analogous totestSettings.logScreenshotOnError
, to take a screenshot when a warning is logged. squishrunner
now always uses ANSI colors for its stdout report format when running in a terminal. This format also honorsCLICOLOR
andCLICOLOR_FORCE
environment variables, which allow enabling colors for redirected or file output e.g. on CI systems. Colored output on Windows requires Windows 10 version 1909 or newer.
squishide
- Control bar in
squishide
now comes with visual indication of test execution progress. - Instead of displaying only the most recent test event, recorded or replayed, the control bar can now optionally show multiline history of previous test events in a logging console.
- Fixed that steps were missing when replaying a BDD scenario outline.
- Fixed that the Squish tools preferences page incorrectly labeled valid settings as invalid.
Scripting
- The bundled Python interpreter was updated to version 3.10, which is also selected for the installation by default. This version brings improvements in the following areas:
- The
pip
tool, as well as other executables and scripts in the Python installation, now work out of the box. - Previously incomplete modules, such as
sqlite3
orctypes
, are now completely functional.
- The
installEventHandler()
as well asuninstallEventHandler()
now support references to functions with any number of arguments as event handlers. Previously this was only possible for references to function overloads that take two arguments.- Fixed a possible crash using anonymous functions with
installEventHandler()
in JavaScript. - Fixed
snooze()
sometimes incorrectly reporting errors from preceding script statements. - Fixed that table verification points and
test.xvp()
only reported fails (FAIL) and passes (PASS), but not expected fails (XFAIL) and unexpected passes (XPASS). - Fixed a crash when using
test.log
inside a scripted object map file.
Qt
- Added support for testing applications built with Qt 6.4.x.
- Testing Qt3D scenes is not supported anymore with Qt 6.4 and newer.
- A function to hide the on-screen keyboard (
hideKeyboard()
), previously available only in Squish for Android and iOS, can now also be used in Squish for Qt. - Fixed the object highlighter on Android and embedded platforms to show correct positions on devices using HiDPI scaling.
castToQObject()
now raises an exception when being called withnull
. Previously, such usage could lead to the crash of the AUT.- Fixed a crash when using the
offscreen
Qt platform plugin on Windows. - Fixed a crash on Qt embedded platforms when using
xkbcommon
for keycode mapping. - Fixed that
object.children()
did not return any children ofQAction
objects. - Fixed an endless loop in
findAllObjects()
searching forQModelIndex
object names containing anoccurence
property. - Picking and recording in
QtQuick
applications now ignores items and children with zero opacity that are not visible on the screen. - Fixed a crash on the AUT start-up (
startApplication()
) caused by hooking intoQtWebEngineProcess
. - Fixed freeze when interacting with native file dialogs in Qt 5.x AUTs. This issue was caused by
UiAutomation
extension that now disables handling of native file dialogs by default. To restore the old behaviour for backwards compatibility, editUiAutomation
extension configuration and setHandleInProcessDialogs
value totrue
. - The
include/qtintrusive.h
header (deprecated since Squish 4) has been dropped from the Qt built-in hook. For equivalent functionality, useinclude/qtbuiltinhook.h
and callSquish::installBuiltinHook()
instead. See the Qt built-in hook documentation for more information. - Usage of the Qt built-in hook in Qt 5.1 and newer has been simplified to avoid the need to modify the
main()
function of the AUT. For most use-cases, extending qmake or CMake build rules is sufficient. - Fixed an issue where replay on QtQuick objects may get stuck due to a local eventloop in AUT code, i.e., when calling
QDialog::exec()
to show a modal dialog.
Tk
- Fixed a problem with hooking Tk applications on Linux distributions shipping with glibc 2.34 or newer - for example Ubuntu 22.04.
- Fixed a crash ocurring when attaching to an AUT and using the pick tool to select an AUT object.
Web
- Safari 12 is now the minimum version of the Safari browser that can be automated with Squish for Web. Conveniently, Safari 12 already comes with macOS 10.14, the minimum macOS version required by Squish.
- Fixed an issue with automating websites using Content-Security-Policy with Firefox 100 and newer.
- Fixed an issue with automating websites in newer Google Chrome and Chromium versions which prevented the Squish recorder from sending recorded events back due to Cross-Origin Resource Sharing mechanism (CORS).
- Fixed an issue with picking HTML elements on macOS, caused by wrong screen coordinates being reported in certain display configurations with secondary screen. Both web browsers (Squish for Web) as well as web views in Squish for macOS, Java and Qt were affected.
Windows
- Fixed a crash during the initial subprocess hook-up (
_hookwinaut.exe
) happening when the affected process exited early or had no GUI. - Fixed a problem causing recording to record 'expand' instead of 'collapse' on the second consecutive click on WPF combobox controls. This also applied to MFC combobox controls when clicking the drop down arrow two times.
iOS
- Squish for iOS can now be used to test applications on iOS 16.
Server
- Fixed that
squishserver
did not exit after being connected to an attachable AUT.
Source Packages/Building from Source
- Building the
squishrunner
andide-utils
Squish components now requires Qt 5.9 or newer, as well as a C++11-capable compiler. - On Unix systems,
configure
now fetches the information about thear
andranlib
tools from qmake when--enable-qmake-config
has been passed. This helps building with cross-compiler toolchains that may ship these tools under different names.
© 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.