Version 6.3

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 ScreenRectangle waitForImage(imageFile, [parameterMap], [searchRegion]) 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 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.

Comparison of Text and XML Files

The new functions Boolean test.compareTextFiles(expectedFilePath, actualFilePath) and Boolean test.compareXMLFiles(expectedFilePath, actualFilePath) 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.

General

  • 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 utility now allows creating and updating JIRA tickets which ask for user-defined CustomFields to be set.
  • The xml2jira utility now supports handling tickets in user-defined workflows involving custom ticket states and custom ticket state transitions.

Squish IDE-specific

  • 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(filename) and String findFile(where, filename) 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.

Scripting

  • 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(filename) command to load external Tcl files with syntax errors.
  • The testData.put(filename) function now allows copying empty files.
  • Made Object waitForObjectItem(objectOrName, itemOrIndex) work correctly when the item text is empty.
  • It is now possible to invoke static member functions on null objects.
  • Using the RemoteSystem object 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 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.
  • The Python import statement now works for test suite resources as an alternative to Squish's own source() function.

Behavior Driven Testing

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

Qt-specific

  • 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 Squish IDE.
  • Fixed a possible crash of Squish for Qt on Android packages using Qt 5.7.
  • Fixed nativeMouseClick(x, y, button) 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.

Java-specific

  • Added mouseWheel(n) function.
  • Fixed Object waitForObjectItem(objectOrName, itemOrIndex) 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.

Web-specific

  • 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(objectOrName, text) command now instead of a setText(objectOrName, text) command.
  • Changed behavior of typeText(objectOrName, text) to only click into the beginning of the field if the field has no focus, so that subsequent typeText(objectOrName, text) commands on the same field will append to the field instead of prepending to it.
  • Improved execution speed of the typeText(objectOrName, text) 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(filepath) 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(x, y, button) 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(x, y, button) 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(context) to always wait for the timeout (20 seconds by default).
  • Improved error reporting when using the function ToplevelWindow.focused() of the ToplevelWindow object
  • 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(objectOrName, button) and typeText(objectOrName, text) will correctly signal an error now when activating the tab corresponding to the HTML object to interact with fails.

Windows (native)-specific

  • 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 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(eventName, handlerFunctionNameOrReference) 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.

macOS-specific (Cocoa/Carbon edition)

iOS-specific (iPhone/iPad edition)

Android-specific

  • Added WebView.evalJS(script) 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).

Source Packages

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

Documentation

  • Overhauled the Squish for Web tutorial.
  • The documentation of the ApplicationContext attachToApplication(autName) 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.

Known Issues

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.

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