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 Squish IDE.

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 Squish IDE as it could only remember connection details of one squishserver at a time.

Squish IDE can now configure connection details of multiple squishservers and switch between these configurations comfortably in the GUI.

General

  • Documentation in PDF format is no longer shipped with Squish packages.
  • Introduced a new testSettings.logScreenshotOnWarning property, analogous to testSettings.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 honors CLICOLOR and CLICOLOR_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.

Squish IDE

  • Control bar in Squish IDE 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 or ctypes, are now completely functional.
  • installEventHandler() as well as uninstallEventHandler() 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 with null. 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 of QAction objects.
  • Fixed an endless loop in findAllObjects() searching for QModelIndex object names containing an occurence 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 into QtWebEngineProcess.
  • 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, edit UiAutomation extension configuration and set HandleInProcessDialogs value to true.
  • The include/qtintrusive.h header (deprecated since Squish 4) has been dropped from the Qt built-in hook. For equivalent functionality, use include/qtbuiltinhook.h and call Squish::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 and ide-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 the ar and ranlib 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.