Version 8.0

Squish 8.0 is a feature release which delivers new features, bug fixes, and usability improvements to all editions of the product.

See the following sections for a detailed list of changes.

Model-based Testing

Model-based testing (MBT) is a systemic approach to testing that utilizes models as high-level abstractions of systems under test.

In this release, Squish makes its first strides into providing a comprehensive set of tools for model-based testing and delivers the following new features:

  • An easy-to-use graphical MBT model editor in squishide for editing Squish Step diagrams
  • A test case editor to create MBT test cases as various paths through the model
  • Full integration into existing test projects: MBT test cases can co-exist in test suites along with previously created scripted or BDD test cases and make use of shared test scripts and resources
  • MBT step skeleton generation and completion
  • Script API in all supported scripting languages

To learn more about model-based testing, read the MBT introduction article in our QA blog, or try following one of the MBT tutorials.

Note: When you use Test Center and would like to manage test results of Model-based Testing, you need to upgrade Test Center to at least version 3.3.1.

Squish for Qt on a New Platform: Linux arm64

With the first pre-built Qt binaries for Linux on arm64 (LoA) landing in Qt 6.7, Squish for Qt follows the new development on this platform by adding compatible binary packages for Linux. These packages contain everything the users need to get started with testing Qt 6.7 AUTs on arm64-based Linux desktops, including squishide and squishrunner.

This greatly simplifies the set-up of testing environment on LoA platform, which was previously supported, but somewhat complex and only possible through building parts of Squish from source, installing squishide on a separate, x86_64-based system and testing the AUT remotely.

Squish for Qt becomes the first edition to support LoA. Squish for Java and Web will follow in the near future.

Installation

  • Minimum system requirements for installing Squish binary packages have changed as follows:
    • Packages for macOS now require macOS 12 or newer
    • Packages for Linux now require CentOS 7 or newer (compatible)

    Refer to the installation guide for the full list of system requirements for binary packages.

  • Offline documentation and examples are now separate components in the Squish installer. These components are selected to be installed by default, but it is possible to opt out of installing them. This is especially useful on small, embedded systems with limited storage space.
  • Test Center is no longer shipped with Squish binary packages and cannot be installed with the Squish installer. A dedicated Test Center binary package must be downloaded and installed instead, using the same license subscription (a separate subscription is not needed for this purpose).
  • On macOS, only the QtCore.framework folder is accepted as designated path to the Qt library during installation. Previously, it was possible to select any folder.
  • A deprecation warning is displayed in the installer's scripting language page if Python 2 is selected (see below for more details on Python 2 deprecation).

General

  • The end-user license of Squish that must be accepted during the installation from binary packages as well as the installation of the Squish Eclipse IDE plugin has changed from the legacy froglogic Squish License Agreement to the Qt Frame Agreement. You can read and review the full text of the license agreement in the online documentation too.
  • On Windows, the dllpreload and startaut executables of Squish now always forward the exit code of the AUT process they start to the calling process.
  • On macOS, Squish now supports taking desktop screenshot and using OCR functions across multiple screens. Previously, this was only possible on the main screen.
  • Added the possibility to replace an expected image with the actual one in the Screenshot Verification Point tool.
  • Execution of the entire test suite (squishrunner --testsuite mode) fails early when its configuration file (config.xml) is invalid. This is now consistent with every other squishrunner mode.
  • For passed screenshot verifications that needed multiple retries, the number of retries is now included in the detailed message (previously it was a part of the 'main' message).
  • Improved and modernized test scripts in example test suites.
  • zlib library shipped with Squish has been updated to version 1.3.1.
  • Fixed Remote Control and screen recording on 8 and 16 bit depth X11 screens.
  • The Test Center report generator now properly transfers the description of test suites and test cases. The reliability of the data transfer has also been improved.

Scripting

  • Squish now logs a warning whenever a test script calls a deprecated method. To avoid these warnings, follow the instructions given in the warning message.
  • JavaScript: Fixed OS.version.name returning an incorrect value on Windows 11.
  • Added values NoModifier and NoButton to Modifier and MouseButton enumerations. None values of both of these enums respectively are going to be deprecated since they conflict with a reserved keyword in Python 3.
  • Improved error handling and error messages in the startApplication function
    • when reaching a timeout
    • when an unknown or invalid wrapper is passed as an argument
  • The Image.load() function now displays a warning in both IDE and CLI when the file extension of the loaded image does not match the actual file type (e.g. filename.jpg is actually a .png). Loading an image without any extension shows a warning as well.
  • Fixed a problem in the testdata API when reading and looking up multi-line text from MS Excel (xlsx) table cells.
  • The undocumented objectName() function is now deprecated, the names it returned were not unique and not configurable. Users of this function are advised to use other, more stable means of identifying an object, for example:
    • objectMap.realName() which returns a Squish object name
    • Object properties introduced by Squish such as name or id depending on the UI toolkit
    • UI toolkit API such as QObject::objectName()
  • SQL database client libraries used by JavaScript's SQL module that is shipped with Squish have been updated: MariaDB to version 3.3.8, PostgreSQL to version 16.1.

IDE

  • The squishide window now has a fixed minimum size. This prevents users from making the window so small that it nearly disappears on some platforms.
  • squishide now allocates more memory (768 MB) on the heap to reduce the likelihood of out-of-memory errors when doing memory-intensive tasks, such as handling large screenshots or OCR on HiDPI desktops.
  • Fixed a problem with the squishide window interfering with taking screenshots in a test working with multiple AUTs.
  • On Linux, the native master password provider (Linux Integration) that can be used to securely store Test Center login credentials, is now disabled by default. This is because it requires installing and configuring additional software and the Eclipse framework does not handle the absence of these requirements gracefully. For details on how to make secure password storage work on Linux, please refer to secure storage preferences documentation.
  • Improved the workflow when creating a new test case or a new test data when no test suite is open.
  • Restored the ability to switch between active test suites in Spy mode while an AUT is running.
  • In the test results view, double-clicking on a warning result without associated line of code no longer raises an exception.
  • Improved formatting of multi-line steps in the Gherkin (BDD) editor.
  • Fixed a problem with the text cursor always jumping to the beginning of the line in squishide script console.
  • Fixed a problem where squishide did not resume after replaying a test case containing '[' or ']' character in the name.
  • E-mail addresses to contact the Squish support team in squishide error and crash dump dialogs have been replaced with links to Qt Support Center. These links are now clickable.
  • Fixed graphical glitches in squishide utilities on macOS.

Qt

  • Testing AUTs built with Qt 6.7 is now supported.
  • QObject::setObjectName now works as expected with Qt 6.4 and newer
  • The following QStringList methods and their overloads: QStringList::sort, QStringList::removeDuplicates, QStringList::join, QStringList::filter, QStringList:replaceInString are now available in Squish test scripts when using Qt 5.5 or newer.
  • Fixed out-of-bounds access (warning or assertion) when handling '&' characters at the end of an item text
  • Added the HeaderViewItem.selected property to the row/column header items of Qt item views. This property shows whether all items in a row/column are marked as selected. It is known to work for QTableView.
  • Fixed a crash in Qt 6 when Squish failed to generate an object name after unsuccessfully waiting for an object to become ready for interaction.
  • QColor in Squish now supports direct string conversions, with the format identical to what QColor::name() returns. This makes the object properties of type QColor work in Squish object names in more cases and appear in the squishide Properties and Variables view.
  • Sub-properties in object names can now be used for finding QQuickItem objects. For example:
    // here, 'green' is a sub-property of 'color'
    waitForObject({"type": "Label", "color.green": 40, "container": ...})

    This change modifies the look-up logic to use Squish instead of Qt API to match property values and may cause different behavior of test scripts across different Squish versions.

  • Fixed a problem that caused the QtWebEngineWidgets extension not to load automatically on macOS. Consequently, HTML content inside QWebEngineView controls was not recognized and could not be recorded.
  • Fixed duplicate objects and duplicate input recording in AUTs using namespaced Qt libraries.

Web

macOS

  • Added a new Elements example to showcase a SwiftUI AUT on macOS (requires macOS 12 or newer).
  • Added the chooseFile() function to reliably automate choosing a file/folder from the file dialog (NSOpenPanel) in Cocoa AUTs. This change introduces a delay into opening NSOpenPanel in scripts not using the chooseFile() function and likely breaks existing automation of file dialogs using some combination of nativeType() and snooze(). Consider using chooseFile() in your test scripts instead or refer to the API documentation on how to adjust the delay.
  • Fixed an occasional crash during AUT shutdown on macOS.

iOS

  • Fixed a problem with the AUT hanging on the splash screen in the iOS 17 simulator while loading the Squish iOS wrapper library.
  • Fixed a problem with the AUT hanging on the splash screen while loading the Squish iOS wrapper library if both UIKit and SwiftUI are used.
  • Improved debugging in iOS simulator with extra information printed in the process of hooking an iOS application.
  • Removed support for the UIWebView class that is deprecated since iOS 12. Squish already supports its successor, WKWebView.

Java

  • Improved performance of recording keyboard input in Swing AUTs.
  • Fixed a problem where dragging of splitters was not recorded in Swing AUTs.
  • Fixed a problem with replay of typing the '@' character on Linux.
  • Menu bars of SWT AUTs can now be accessed in the application objects view of squishide.
  • Extended SWT Addressbook example with a toolbar.
  • Fixed a problem with hooking Java applications which add old bcel version to the application classloader.

Squish Server

  • Explicit Windows firewall registration was removed from squishserver. It caused potentially large delays during start-up and could only succeed when squishserver was executed with elevated privileges.
  • The host:port argument of the removeAttachableAUT action is no longer needed. It can still be provided for backwards compatibility, but this usage will results in a warning

Source Packages/Building from Source

  • Added support for building squishidl with various versions of libclang. The following libclang versions have been tested: 11.0.0, 12.0.0, 13.0.0, 14.0.0, 15.0.0, 16.0.0, 17.0.1.
  • Qt6 cross-compilation is now supported thanks to improvements to squishidl compile flags. This change affects especially cross-compiled 32-bit targets, such as Android and Boot2Qt.
  • Fixed Qt wrapper compilation with namespaced Qt libraries.
  • Added support for building with LLVM-MinGW toolchains on Windows.
  • Building Squish from source on Windows now requires Windows 7 or newer.
  • Support for building Squish from source on AIX, HP-UX and IRIX has been removed.
  • Support for building XView, testing XView-based AUTs, and related documentation has been removed.
  • Support for building with the Qt 4 Desktop Light edition has been removed.
  • Building Squish with Qt 3 as well as the --with-qtdir configure switch is no longer supported. Users of Qt 4 who build from source are encouraged to use the --with-qmake switch instead. If you plan to continue testing Qt 3 AUTs, please get in touch with the Qt Support Center.

Python 2: Notice of Deprecation

Starting with Squish 8.0 (this release), Python 2 is marked as deprecated and unsupported. It is no longer maintained upstream and has been removed from many platforms already. Users are encouraged to migrate their existing test suites to Python 3 and to refer to the official Python documentation for the best migration practices. Python 2 will be completely removed from Squish in Q2 2025 at the earliest.

To switch existing test suites from Python 2 to Python 3, run squishconfig –python=3

Note: You will see a Python 2 deprecation message in the standard error stream when executing Python-2-based tests. You will also see a warning when selecting Python 2 as a scripting language during Squish installation. Furthermore, if you have Python 2 set up as the default Python interpreter in the squishide, you will see a warning dialog upon startup.

© 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.