Version 7.0

Squish 7.0 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:

Video Capture

Improved License Server

  • The current status of floating licenses served by the Squish license server can be queried with HTTP requests using a REST API.
  • Legacy license keys are not compatible with Squish 7. Contact your sales representative for an upgrade.
  • The Squish license server is now offering an improved installer which registers the server as a system-wide service on Linux, macOS and Windows.

Mouse wheel support

  • Squish for Windows does support recording and replaying of scrolling with the mouse wheel by introducing the function mouseWheel.

Improved access to CSS properties

  • Provide access to the CSS attributes of HTML objects via the properties system of Squish. All HTML objects have a new 'css' property which contains all currently known CSS properties as sub-properties.

    This is accessible in the script as well as through the Properties view in the Squish IDE, making it easy to create verifications. Color-related CSS properties are provided as a new dedicated type which makes it seamless to verify individual properties (red, green, blue, alpha) of the color.

    More details can be found in the documentation of the HTML_Object.css on HTML_Object Class.

Enhancements to the JavaScript Engine

  • Added new null coalescing operators and others from ECMAScript 2021: ??, ??=, &&= and ||=
  • Added Object.seal() and Object.isSealed() as well as Object.freeze() and Object.isFrozen().
  • Adapted behavior of Object.preventExtensions() and Object.isExtendible() to ECMAScript 2015. Both functions will not throw an error on non-object type arguments anymore.
  • Support export class statements in modules.
  • Added additional object literal types: Next to {a: b, c: d} that is: {x}, {a: b,}, {[expr]: value}, {f() { return 1;}}, {get x() { }} and {set x(v) { }}.
  • Support the spread operator for function call arguments (foo(...args)), array literals [...e] and object literals {...x}.
  • Support 'deferred' default exports from modules. The syntax for exporting x as a default after its declaration is: export { x as default };.
  • Fixed this value in function called via a super reference.

General

  • The time precision of all events in the XML Report (starting with version 3.5) got increased to contain milliseconds. The format complies with ISO 8601 and reads like this for example: 2020-10-05T10:20:30.005+01:00.
  • The value for squishrunners --exitCodeOnFail option is now limited between 0 and 255 for all operating systems for better portability.

Squish IDE

  • Some of the dependencies of the Squish IDE had to be updated which causes a change in the minimum system requirements for running the Squish IDE. In particular the Squish IDE is now working with Java 11, Eclipse 2020-12 (4.18) and Open JavaFX 16.
    • Linux:
      • CentOS 7.5, RHEL 7.5, SLES 15, Ubuntu 18.04 and comparable distributions
      • Squish IDE is available only for 64-bit systems, 32-bit Linux packages of Squish ship without the IDE.
      • The platform has to provide at least GTK 3.20 for the Squish IDE to function
      • Older versions of the mentioned Linux distributions may also work as long as they provide the necessary minimum version of GTK.
    • macOS: macOS 10.13
    • Windows: Windows 7

    In addition, the new Video Playback feature of the Squish IDE requires a system installation of FFmpeg libraries on Linux systems and supports several different versions of FFmpeg: 56, 57 and 58.

    Some of these changes also apply to the Eclipse Squish Integration that can be installed into Eclipse. You can still use an older version of Eclipse, but it will have to run with Java 11 and Open JavaFX 16 may also need relatively recent versions of GTK.

  • Comments in BDD spanning multiple lines can be conveniently toggled now in the Squish IDE.
  • Re-enabled Eclipse-provided configuration for "Web Browser" behavior (under Preferences > General) when links are being opened in the Squish IDE.

    The configured browser is being used for example when opening the online manual or when opening URLs inside script editors after hovering over URLs while pressing Ctrl/Cmd.

    The configuration allows to override the default behavior of Eclipse when opening a URL in an external browser – in particular allowing to ensure that a browser is being used and not some other application.

    Note that this configuration entry is not related to the browser used by Squish for Web to run tests. The browser used for testing is still being configured through the Server Settings dialog.

  • The Python editor (Pydev) used by the Squish IDE has been updated to version 9.1.0, improving support for newer versions of Python.

Scripting

  • The bundled Perl interpreter was updated to version 5.34.
  • When calls to installEventHandler had a missing or invalid event handler function the error in the Squish report now includes a code location for Python, too.

Installer

  • Python 3 is selected for installation by default, Python 2 is still optionally available.
  • The installer for Squish for Mac, Squish for Java and Squish for Qt (6.2 or newer) is providing universal packages for installations on macOS.

Qt

  • Added support for Qt 6.2.x. Packages for Qt 6.3 will become available after its release.
  • Images captured with the grabWidget() API while testing embedded devices can be un-rotated with the setting DisplayRotation in etc/qtwrapper.ini to improve working with screenshot verification.
  • The RecordNativeMouseCommands setting (from qtwrapper.ini) has been dropped because it relied on script functions that have meanwhile been superseded by generic variants of mousePress and other functions.
  • Fixed initialization of extensions for the Qt Toolkit Support when Squish is included into a statically linked Qt AUT. Customers who use static Qt and a build-system other than qmake may have to adapt their build rules according to changes in qtbuiltinhook.pri.
  • Added embedded package for Qt 5.15 or newer running in the iOS Simulator.
  • Fixed loading of the support for QWebEngineView on Qt 6.2 and newer.
  • Fixed issues with loading Qt Wrapper via built-in hook in secure mode (eg. setuid) Linux applications.
  • Native test script functions like mousePress() are working now when Qt and its XCB platform plugin has been built without Xlib-support.
  • Support for Carbon-based menus in Qt applications on macOS was dropped.

    The macOS Carbon framework had been discontinued in 2007 and only ever was available as a 32-bit library. Modern 64-bit applications do not use it anymore, therefore any support is dropped.

Server

  • Modified the behavior of squishserver and startaut to ensure that AUTs supporting the ARM64 architecture are always being started in that architecture when running on an ARM64-based macOS system and the Squish edition supports this as well. This affects Squish for Qt, Squish for Java and Squish for macOS.

Web

  • If there is no default browser configured in Squish for Web, the fallback Internet Explorer (for Windows 10 or older) is saved as the default browser in the server.ini file.
  • The default browser for Squish for Web is changed from Internet Explorer to Edge on Windows 11 or newer.
  • Enable automation of websites that use Content-Security-Policy with Squish for Web when using Google Chrome. No additional third party extension is needed for that anymore.

Android

  • Respect the z-order of GUI elements when recording tapObject calls. This became relevant as of Android API level 21.
  • Packages builds have been upgraded to Android SDK 31 and usage of the optimized d8 Dalvik compiler.

Future Platform Changes

In order to allow us to keep supporting newer compilers and platforms it is going to be necessary to drop support for some older compilers and platforms. This is planned to happen for the next feature release after 7.0 (i.e. 7.1 or 8 whichever comes first), but we wanted to announce this plan early on so that customers can prepare themselves or reach out to us to learn more about this plan via our support channel.

The main impact of this change will be on the Squish for Qt edition, both affecting binary package and source package users. Our plans for source packages can be found in Source Packages. We plan to drop the following binary packages of Squish for Qt:

  • packages using MSVC < 14 (Visual Studio 2015)
  • packages using MinGW < 4.8
  • packages for Windows CE < 8

The binary packages of the other Squish editions will not be affected as much. We may need to require CentOS 7 (or comparable) Linux distributions when the change is implemented however we do not expect any changes on binary packages for the Windows or macOS platforms. We will reflect the changed requirements in Minimum System Requirements for Binary Packages accordingly.

Native Windows

  • First testing on Windows 11, .NET 6 and on ARM64 hardware (in emulated mode) revealed good results.

macOS

  • The Squish for Mac packages have been prepared to also support M1 machines, i.e. macOS running on ARM64 hardware.

iOS

  • Squish now supports iOS simulators from Xcode 13 and up. Older Squish releases failed to find simulated devices after upgrading from Xcode 12 to 13.

Tk

  • Fixed a problem with tcleval sometimes raising script errors for successful evaluation of Tcl code in the AUT.
  • Improved error reporting when reading a property of a Tk widget failed.

Source Packages

  • configure now detects q++ from QNX 7.0 or newer as a valid C++ compiler.
  • Fixed build problems (especially for cross-compilation) caused by an explicit runtime library path. Build environments that require their Qt to be found via the runtime library path now need to set this up before a Squish build.
  • Building squishrunner and ide-utils with Qt 6.0 or newer is now supported.
  • Squish for Qt can now be built without QtWidgets and can reduce memory footprints especially on embedded devices.
  • For the next feature release after 7.0 we will be requiring C++11 and thus a C++11 compatible compiler for all source packages. This change will drop support for the following compilers and platforms:
    • MSVC7 (Visual Studio 2005) up to and including MSVC12 (Visual Studio 2013), none of them fully supports C++11
    • GCC < 4.8 (Linux and MinGW)
    • QNX < 7.0
    • Windows CE < 8
    • Solaris (no Qt version available that works with a C++11-compiler)

    See also, Future Platform Changes.