Release notes

QF-Test version 7.1

Version 7.1.2 - March 14, 2024

New features:

  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.31 alias "2024-03".
  • Electron Improved detection of new windows in Electron applications.
  • For improved clarity the interactive terminal windows for the various script languages in QF-Test and the SUT are now labelled as consoles.

Bugs fixed:

  • The recording button in the toolbar is now correctly displayed when changing the toolbar icon size.

Version 7.1.1 - February 27, 2024

The only change to this version is the removal of three executable files from the embedded cdp4j library that were suddenly flagged as malicious by various scanners. Those files were part of QF-Test since version 6.0.4 (November 2022), have never been used by QF-Test and should be harmless. Further information will be provided when we know more.

Changes that can affect test execution

  • Support for WebStart in Oracle Java 8 is now deprecated and has been marked for removal in a future QF-Test version. This does not affect OpenWebStart.
  • Support for applets has been removed from QF-Test. Internet Explorer was the last browser to support applets and support for Internet Explorer was deprecated in QF-Test version 6.0 and removed in QF-Test version 7.0.
  • The start of QF-Test with a JRE other than the bundled one, especially with Java 8, is now deprecated. This has no impact on the java versions supported for the SUT.
  • The embedded cdp4j library was updated to version 7. This implies a namespace change of the cdp4j classes from io.webfolder.cdp to com.cdp4j. If such classes are directly referenced in SUT scripts, the imports have to be adapted accordingly.

CustomWebResolver

After replacing the hard-to-digest qfs.web.ajax.installCustomWebResolver call with the 'Install CustomWebResolver' node in QF-Test 7.0 the underlying code has now been further optimized and cleansed. In some cases, adjustments may be required. Please contact <support@qfs.de> if you need any help with this. Specifically, the following points are affected:

  • Web The evaluation order of the CustomWebResolver categories "genericClasses" and "redirectClasses" is now well-defined: The first match wins, based primarily on the order of entries in the 'Install CustomWebResolver' node (see subsection 49.1.2 for details). For existing CWR configurations it is possible that entries apply that were not taken into account before.
  • Web The 'Install CustomWebResolver' step no longer supports the outdated categories "indirectFeatureClasses", "insertClassesFront", "textRedirectInFetch" and "goodClasses" as well as any previously deprecated categories including "ieHardClasses" and "ieSemiHardClasses".

Version 7.1.0 - February 20, 2024

New features:

  • QF-Test now also provides a high contrast theme in light and dark mode.
  • The visualization of steps in the trees for test suites and run logs has been freshened to a more condensed style that is highly configurable. See Display for the various new options.
  • Support was added for testing applications based on Java 22.
  • Web Web applications built with modern Vaadin frameworks (from 14 on) are now supported out of the box. Also included is support to enable basic testability for Flutter Web based applications as well as generic component recognition for web applications implementing the WCAG ARIA guidelines for accessibility.
  • Swing The visual UI Inspector is now also available for Windows and Swing/AWT applications, as well as web views embedded in Java applications (see subsection 5.12.2).
  • The UI inspector now provides an easy way to copy a suggested SmartID.
  • Conditions in 'If' and other nodes can now be implemented in any scripting language, not just Jython. The default scripting language for new nodes can be defined in the option Default script language for conditions.
  • The steps 'Error', 'Warning' and 'Message' can now optionally print the message to the QF-Test terminal.
  • Empty arguments in steps starting an SUT client are now ignored by default (see option Ignore empty arguments when starting a client for details).
  • Windows-Tests The Windows installer for QF-Test now directly supports uninstalling older QF-Test versions.
  • The JRE distributed with QF-Test has been updated to Temurin OpenJDK version 17.0.10.
  • Groovy was updated to version 4.0.18.
  • Web The embedded Chrome browser used for QF-Driver mode was updated to CEF version 120.
  • Web The embedded cdp4j library was updated to version 7.0.1. This also updates the Chrome Devtools Protocol API to r1245094.
  • Web The bundled GeckoDriver was updated to version 0.34.0.
  • The various CarConfigurator applications used for demos and trainings have been filled with new data and updated to a new look. The demo test suites for these applications now contain further examples of SmartID usage.
  • Web Added newer mobile devices specifications to mobile emulation mode.
  • Web The attribute 'Method' in the 'Server HTTP request' node now also supports variable values and the new attribute 'Additional headers' can be used to define additional headers on a textual basis which is easier to address at script level than the 'Headers' table.
  • The new package qfs.utils.json in the standard library qfs.qft provides utility procedures for comparing JSON files.
  • The mail handling procedures in the package qfs.utils.email.pop3 of the standard library qfs.qft now support SSL encrypted connections.
  • Android With the new package qfs.autoscreen.android it is now possible to create image based tests for Android applications.
  • The recording button in the toolbar now indicates whether SmartID recording is active.
  • The new class ImageRepDrawer adds support for simple drawing operations on ImageRep objects at script level (see subsection 52.10.3).
  • Web The flexibility of the CustomWebResolver configuration has been improved in the categories "redirectClasses", "abstractCoordinatesClasses", "ignoreTags", and "browserHardClickClasses", for example it is now more often possible to use regular expressions in the definitions.
  • Web Calls to the procedure qfs.web.ajax.updateCustomWebResolverProperties can now also be converted into 'Install CustomWebResolver' nodes.
  • Web It is now possible to use a procedure with an installCustomWebResolver call as "base" of an 'Install CustomWebResolver' step configuration.
  • Web The QF-Test pseudo DOM API was extended by the callJS method to execute JavaScript code in the web document context without implicitly calling window.eval().

Bugs fixed:

  • When replaying events the timeout values from the two options Wait for non-existent component (ms) and Wait for non-existent item (ms) are now taken into account individually and not just as a simple summation.
  • It is now possible to use a 'QF-Test component ID' as String parameter for the ImageWrapper.grabImage method.
  • After a tabulator character was pasted into a script editor field, moving the cursor could lead to an exception.
  • JavaFX A modal JavaFX window is now recorded with class name 'Dialog'.
  • Web It is now possible to send MOVED and SIZED events to the HTML component of a web page (using the 'Component event' step) to define the position and size of the inner browser area.
  • Web In component recording mode for web applications QF-Test now ignores invisible DOM nodes. The old behaviour can be restored via rc.setOption(Options.OPT_WEB_RECORD_INVISIBLE_ELEMENTS, true).
  • Web In some cases automatic Chromedriver download failed due to Chrome printing an unexpected error message during version detection.
  • Web Regular expressions in the CustomWebResolver category "ignoreTags" are now correctly parsed.
  • Web Elements with CSS class "visually-hidden" are now treated as invisible components in QF-Test.
  • Web In some special cases QF-Test could not connect to the Edge browser upon start.
  • Web CSS styling informationen contained in STYLE tags could mistakenly get interpreted as text content.

QF-Test version 7.0

Version 7.0.8 - December 5, 2023

New features:

  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.30 alias "2023-12".
  • Web Support for JxBrowser version 7.36 was added.

Bugs fixed:

  • Report nodes created with an empty @teststep doctag are now shown with expanded variable values.
  • Mac On macOS QF-Test was sometimes freezing during startup in case the WebP image compression library was not available.
  • Web In electron applications, popup menu item clicks could not be replayed unless a pulldown menu item was clicked beforehand.
  • Web The Microsoft Edge browser crashed when a new empty tab was opened manually.
  • Android The SUT client for android did not terminate automatically after closing the emulator if the recording window was open at that time.

Version 7.0.7 - October 11, 2023

New features:

  • Web The embedded Chrome browser used for QF-Driver mode has been updated to CEF version 117 which fixes the WebP security vulnerability.
  • Web The embedded websocket library was updated to Undertow 2.2.26.
  • The script method rc.overrideElement now also supports overriding nested SmartIDs. It is now complemented by the new method rc.getOverrideElement. See subsection 11.2.7 and section 48.5 for details.

Bugs fixed:

  • Test reports created in batch mode with QF-Test versions from 7.0.4 to 7.0.6 could show broken HTML when opened by navigating from the summary to a detail report.

Version 7.0.6 - September 29, 2023

Bugs fixed:

  • The embedded WebP library used for image compression in testsuites and run logs was updated to version 1.3.2. In this version a severe security vulnerability (CVE-2023-4863) was fixed.

Version 7.0.5 - September 20, 2023

New features:

  • The procedures qfs.autowin.acrobat.savePDF and qfs.autowin.acrobat.saveAsText in the standard library qfs.qft were updated for Acrobat Reader versions 23 and higher.
  • Web Support for JxBrowser version 7.35 was added.
  • Web QF-Test now supports capture and replay of clicks on popup menus in Electron applications.

Bugs fixed:

  • Interactive QF-Test failed to start if a plugin contained an incompatible version of org.w3c.css.sac helper classes.
  • Web QF-Test now uses the new headless Chrome mode also on Linux. Without that headless Chrome version 117 and higher failed to start.

Version 7.0.4 - August 30, 2023

New features:

  • The JRE distributed with QF-Test has been updated to Temurin OpenJDK version 17.0.8.1_1.
  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.29 alias "2023-09".
  • Web Support for JxBrowser version 7.34 was added.
  • Mac On Apple Silicon devices, browsers connected via CDP-Driver are now launched with native ARM support, noticeably improving performance.
  • Most toolbar buttons now have a "What's this?" entry in their context menu, leading to the respective documentation in the manual.

Bugs fixed:

  • The jackson.jar library for YAML and JSON parsing no longer creates conflicts if another Jackson library is added to the QF-Test plugin directory.
  • Highlighting the scope component via the context menu of the node or the @scope doctag now works correctly again.
  • Web Automatic download of ChromeDriver and WebDriver binaries for Google Chrome and Microsoft Edge now works again. In both cases the respective URL and/or site layout changed.
  • Electron When starting an Electron application, QF-Test occasionally waited for the full timeout even if the connection could be established quickly.

Version 7.0.3 - Juli 13, 2023

Bugs fixed:

  • In rare cases a test run was aborted with an exception when QF-Test tried to save a split run log and encountered an incorrectly created empty screenshot.
  • Recognition of components via the old qfs:label algorithm could fail in special cases where an ExtraFeatureResolver was registered.
  • Variables in doctags of 'Execute shell command' nodes are now expanded correctly.
  • Swing In rare cases addressing a line as a sub item in a JTextArea could cause a NullPointerException.
  • Web When replaying a 'Fetch geometry' node on a non-existing sub item in a web application, the geometry of the parent component was mistakenly returned. Now the correct IndexNotFoundException is thrown instead.
  • Android The procedure qfs.android.adbUtils.appPackage.getCurrentPackage in the standard library qfs.qft now also works on Android devices that don't provide a grep program.

Version 7.0.2 - June 22, 2023

New features:

  • Support for JxBrowser version 7.33 was added.

Bugs fixed:

  • When starting QF-Test version 7.0.1 to only show a run log and later opening a test suite the previous session was not restored.
  • On Windows with a scaled monitor the PDF client now displays a scaled document with frames and check highlights correctly aligned. Image checks are created at 100% resolution and thus should remain compatible with image checks from a non-scaled monitor.
  • Web The installation of a CustomWebResolver lead to an exception in case it contained erroneous JavaScript commands. Now an error is logged instead.
  • Web The 'Install CustomWebResolver' node failed if some jar file in the plugin folder provided a conflicting Jackson library.

Version 7.0.1 - May 31, 2023

New features:

  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.28 alias "2023-06".
  • Mac Support for testing clients running with an ARM Java on macOS was added.
  • Web Support for JxBrowser version 7.32 was added.
  • Startup of QF-Test is now noticeably faster, in interactive mode as well as batch mode.
  • The new special variable ${qftest:suite.name} expands to the name of the test suite as defined in the root node.
  • Web New CWR node mappings and categories are now inserted at the cursor position instead of at the very end.
  • When using compact run logs (see option Create compact run log) it is now possible to exclude nodes from compactification via the doctag @dontcompactify (see chapter 60).

Bugs fixed:

  • QF-Test now starts with the system property -Dsun.io.useCanonCaches=true to enable canonical filename caches for Java version 17 in order to avoid performance degradation caused by large projects on slow file systems. This restores the behavior of previous Java versions.
  • Some procedures in the standard library failed when called with a SmartID due to use of ${qftest:engine.$(id)}. SmartIDs that don't include an explicit GUI engine now use the GUI engine "default".
  • Entries in configuration files were no longer sorted if QF-Test was running with Java 17.
  • Web Occasionally check mode remained activated in a Browser even after stopping recording, thus blocking further interaction.
  • Web If a website was used as scope for a SmartID, the scope was not updated correctly when navigating.
  • Web Deleting a file via the File System Access API could throw an exception in special cases.
  • Web Duplicated categories in a CWR configuration are no longer ignored and trigger an error instead.
  • Swing Screenshots of Swing windows are now taken with higher quality.
  • On Windows with a scaled monitor the PDF client now displays a scaled document with frames and check highlights correctly aligned. Image checks are created at 100% resolution and thus should remain compatible with image checks from a non-scaled monitor.

Changes that can affect test execution

New Java version for QF-Test

QF-Test is now distributed with Java 17 as its own JRE. Running QF-Test with Java 8 is deprecated, meaning it is still supported for QF-Test version 7.0 but may get removed at some later point.

This change can affect Java application tests which rely on using QF-Test's Java version instead of explicitly specifying a Java binary for starting the SUT. If you run into problems due to this you have two options:

Short-term workaround: You can switch back to Java 8 via the QF-Test Java configuration or the command line.

Long-term solution: The preferred solution is to explicitly specify a dedicated Java version matching the application's requirements in the 'Start Java SUT client' node or, better yet, use a 'Start SUT client' node to launch the application via a script or executable that ensures the correct environment including the Java version.

New algorithm for determining associated labels

Note In most cases label resolution should continue to work out of the box. The most notable exceptions are ExtraFeatureResolvers working with the qfs:label ExtraFeature. These will need to be updated as described in subsection 52.1.11. For help with updates or for means to disable the new algorithm entirely, please get in touch with <support@qfs.de>.

The algorithm for determining the associated label for a component has been rewritten from scratch for better performance, clarity and increased flexibility. The new qfs:label* variants like qfs:labelLeft or qfs:labelText can be used to designate specific label variants, with qfs:labelBest as the new counterpart for the legacy extra feature qfs:label. Please see subsection 5.4.4.1 for detailed information about the many new options.

In order to maximize backwards compatibility, the legacy algorithm is still maintained and used to resolve the qfs:label extra feature so tests based on recorded 'Component' nodes should not be negatively affected. If desired, recording can be switched to the legacy algorithm and qfs:label via the option Recording of qfs:label* variants.

For replay with SmartIDs the situation is slightly different. Without explicit qualifier or with the qualifier "label=" or "qlabel=", SmartIDs are resolved based on the new algorithm with qfs:labelBest. In most cases this should work as before. In case it fails you can either re-record the affected SmartID or change its qualifier to "qfs:label=" to enforce using the old algorithm.

Further breaking changes:

  • Web Support for Internet Explorer was deprecated in QF-Test version 6.0 and has now been removed, as it has reached End of Life. The IE-specific procedures qfs.web.browser.settings.enableCompatibilityMode and qfs.web.browser.general.isIE6 were removed from the standard library qfs.qft.
  • Web Support for Firefox version 43 and older using connection mode QF-Driver was deprecated in QF-Test version 6.0 and has now been removed.
  • Support for 32bit software is now deprecated for removal in a future QF-Test version. This applies to the Java versions QF-Test runs on as well as all supported SUT versions. In case you still need to support tests for specific 32bit applications, please get in touch with <service@qfs.de>.
  • The format of HTTP headers returned by the 'Server HTTP request' node was updated for easier parsing. Examples are provided in the procedures checkHttpResponseHeader and getHeaderValue in the web services demo suite, accessible via the menu item »Help«-»Explore sample test suites...«.
  • For faster startup IPv6 is now disabled in QF-Test, where it is not needed. This has no impact on the SUT and in case IPv6 is required for a QF-Test plugin it can be reactivated via the command line argument -ipv6.
  • When resolving a nested or scoped SmartID the already resolved parent or scope component was wrongly taken into account again, so that e.g. #Panel:Some title@#Panel:<0> would target the Panel "Some title" instead of its first child Panel.
  • Options like SmartID recording that have an effect in both QF-Test and the SUT can now be set in a 'Server script' node and will get automatically forwarded to all SUT clients.

Version 7.0.0 - April 27, 2023

New features:

  • The new dark mode is just the most visible aspect of the streamlined UI with slightly larger fonts and icons and more spacing in general. See menu »View«-»UI Theme« and options Minimum font size (pt) and Terminal font size (pt).
  • The development of SmartIDs has left the preview stage. Based on the reimplementation of the algorithm for finding the associated or nearest label of a component, they combine simplicity with precise and efficient component recognition in many situations. The new qfs:label* variants also apply to classic 'Component' nodes. For detailed information please see section 5.6 and subsection 5.4.4.1 as well as the various options described in section 39.4.
  • Web The new 'Install CustomWebResolver' node for implementing a CustomWebResolver for web applications replaces the rather cryptic 'Procedure call' to qfs.web.ajax.installCustomWebResolver. Existing calls will of course continue to work, but can also easily be transformed into the new node via the context menu item »Transform node into« as described in subsection 49.1.2.
  • Web There is now a visual UI Inspector for web and Android applications (see subsection 5.12.2).
  • With the help of the new nodes 'Error', 'Warning' and 'Message' it is now possible to directly log errors, warnings or plain messages anywhere in the test suite with the added bonus of configurable screenshots and diagnostic logs.
  • QF-Test based tests can now easily be integrated into JUnit 5 tests. This simplifies the execution of QF-Test based tests from an IDE like IntelliJ or Eclipse. Also, a Gradle plugin is now available for including QF-Test based tests in build pipelines controlled by Gradle. See section 27.5 for details.
  • The XML format for saving test suites is now configurable. For example, new test suites are now saved with UTF-8 encoding by default and with longer lines. Existing suites are not changed by default, but can be converted in one go. The new format can still be read by older QF-Test versions. Further information is provided in subsection 39.1.2 and section 42.1.
  • XML reports are now saved with UTF-8 encoding by default.
  • Support was added for testing applications based on Java 21.
  • Groovy was updated to version 4.0.11.
  • Web The embedded Chrome browser used for QF-Driver mode has been updated to CEF version 108.
  • Web Support for JxBrowser version 7.31 was added.
  • The embedded JUnit library was updated to version 5.9.2.
  • Web Support was added for the web framework Fluent UI React version 8.
  • Web QF-Test now supports accessing local files from tested web applications using the File System Access API in WebDriver and CDP-Driver connection mode so that capture and replay for this use case should now work out-of-the-box.
  • Web Pseudo attributes can be used to simplify resolvers using JavaScript to retrieve values from a browser. In certain cases they can improve performance. For a closer look see Web – Pseudo Attributes.
  • QF-Test now provides readily accessible templates for frequently used scripts like resolvers via the 'Templates' popup in 'Server script', 'SUT script' and 'Unit test' nodes. It is also possible to define additional templates that show up in the list.
  • Via the new option Show step types for named tree nodes it is possible to hide redundant parts of the tree node descriptions in test suites and run logs.
  • Clicking on a line number in a script step now selects the whole line.
  • If the new option Automatically open created nodes is activated, new nodes are already expanded after insertion.
  • The name of the result variable of a 'Procedure call' node is now shown in the tree. The result of the call can also be displayed in the run log after the name of the procedure by activating the new option Show return values of procedures.
  • The buttons in the QF-Test toolbar can now be rearranged by dragging with the mouse. The original layout can be restored via the menu »View«-»Toolbar«.
  • The new special variable ${qftest:language} expands to the current language of the QF-Test user interface.
  • The new special variable ${qftest:project.dir} expands to the directory of the project to which the current test suite belongs.
  • Tree items in the SUT can now be addressed by a combination of numerical, textual and regular expression indices.
  • A 'Data driver' node below a 'Test step' node can now be packed into a nested 'Test step'.
  • A 'Comment' node can now be inserted above the currently selected node via the »Insert« menu or the keystroke [Shift-Ctrl-7].
  • If a 'Wait for client to connect' node is used to wait for a dedicated engine, that engine is now displayed in the tree.
  • Mac The QF-Test application icon for macOS was adapted to modern standards.
  • Web Many new mobile device specifications were added for mobile emulation mode.

Bugs fixed:

  • An exception was thrown in the procedure qfs.utils.xml.compareXMLFiles if one of the two files was empty.
  • Jython scripts that rely on the system property python.security.respectJavaAccessibility=false for accessing private class members now also work with Java 9 and higher.
  • Web Check and component recording could not be properly activated in parallel in web tests with CDP-Driver or WebDriver connection mode.
  • Web Running a mobile emulation test with CDP-Driver connection mode was updated for newer Chrome versions.
  • Web In special cases the execution speed of tests for web applications can be noticeably improved via MainTextResolver or WholeTextResolvers variants without default parameter.
  • Web In rare cases, use of the @:: syntax in the genericClasses parameter of the procedure qfs.web.ajax.installCustomWebResolver could lead to a CSS class being inadvertently mapped to the class of the node.
  • Android Text input has been improved for Android devices with API level 33 and higher.

QF-Test version 6.0

Version 6.0.5 - March 15, 2023

New features:

  • Support was added for testing applications based on Java 20.
  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.27 alias "2023-03".
  • The JRE distributed with QF-Test has been updated to Zulu OpenJDK Version 8_362.
  • Groovy was updated to version 4.0.10.
  • The embedded JUnit library was updated to version 5.9.2.
  • Web QF-Test now uses the "new headless mode" of Chromium based browsers.
  • Web Support for JxBrowser versions 7.29 and 7.30 was added.
  • Web The bundled GeckoDriver was updated to version 0.32.2.
  • Web QF-Test can now also intercept starting an external browser via Desktop.open().

Bugs fixed:

  • Jython now also works with Java 9 or higher if the system property python.security.respectJavaAccessibility is set to false in order to directly access private class members.
  • The SAX variant of the procedure qfs.utils.xml.compareXMLFiles in the standard library qfs.qft now ignores leading and trailing whitespace in the noCheck parameter.
  • Web When using the WebDriver connection mode, alert dialogs originating from IFRAMEs might not have been displayed.
  • Web With CDP-Driver connection mode on Windows QF-Test did not switch browser tabs correctly before replaying a hard mouse event. Also, empty tabs from downloads could remain open.
  • Electron It is now possible to set the working directory for the start of an Electron application.
  • The module qf is now also available in JUnit Groovy Scripts.

Version 6.0.4 - November 29, 2022

New features:

  • The JRE distributed with QF-Test has been updated to Zulu OpenJDK Version 8_352.
  • For the SUT QF-Test now also supports the Semeru OpenJDK from IBM.
  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.26 alias "2022-12".
  • The QF-Test manual now references the official QF-Test docker images in chapter 30.
  • With the new methods rc.pushOption and rc.popOption it is now possible to temporarily override an option without disturbing existing settings. Procedures in the qfs.qft standard library now use these methods instead of the less suited setOption/unsetOption.
  • When recording SmartIDs (see section 5.6) the option Always record class for SmartID now determines whether the class is always prepended. It is active by default. Besides readability this can have a significant impact on replay performance.
  • The embedded JUnit library was updated to version 5.9.1.
  • Web The bundled cdp4j library was updated to version 6.2.0.
  • Web Support for JxBrowser version 7.28 was added.
  • Web The bundled GeckoDriver was updated to version 0.32.0.
  • Web The CustomWebResolver for Angular Material has been updated for the latest release of the framework.
  • Web In web tests with CDP-Driver connection mode it is now possible to control the print dialog with QF-Test.
  • Web The selection event of type "reload" can now be used as an alias for "refresh" to reload the displayed web page.
  • Electron The procedures in the package qfs.web.browser.external of the standard library qfs.qft, which can be used to intercept the start of an external browser process from the SUT and redirect it to QF-Test, now also work with Electron applications.

Bugs fixed:

  • Web The automated mapping of Tables and TreeTables in the web resolver for Primefaces was updated to support Primefaces version 12.0.
  • Web Chrome with QF-Driver connection mode could crash in special cases after a failed navigation.
  • Android In rare cases special characters in the text of Android components could terminate the connection to an Android device.

Version 6.0.3 - September 6, 2022

New features:

  • The JRE distributed with QF-Test has been updated to Zulu OpenJDK version 8_345.
  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.25 alias "2022-09".
  • Web Support for JxBrowser version 7.27 was added.
  • The methods getFirstChild, getNextSibling, getPreviousSibling, getFirstElementChild,getNextElementSibling and getPreviousElementSibling were added to the QF-Test pseudo DOM API. See subsection 52.11.1 for details.

Bugs fixed:

  • Web When performing an upload with CDP-Driver connection mode, a TestException is now thrown in case the specified file does not exist.
  • Web In rare cases the information about sub-items was lost when recording a mouse click in a web application.
  • Web In some cases a browser window was mistakenly closed in case of a WebDriver timeout triggered for a different frame.
  • Web Overlays in web applications driven by the Angular framework might not have been recognized correctly.
  • SWT For SWT applications on Linux, replaying a selection on a ToolItem in a vertical ToolBar could trigger the wrong item.

Version 6.0.2 - July 20, 2022

New features:

  • Clean shutdown of running QF-Test instances - especially in batch mode - has been greatly improved. With the new command line arguments -allow-shutdown [<shutdown ID>] and -shutdown <ID> it is now possible to target individual QF-Test processes based on their process ID or a previously specified shutdown ID. The former command line arguments -allowkilling and -kill-kunning-instances still work but are now deprecated.
  • The command line argument -clearglobals now also works for calldaemon mode (see subsection 23.2.2). To that end the DaemonRunContext API has two new methods, setGlobals and clearGlobals (see section 53.2).
  • Web Support for JxBrowser version 7.26 was added.
  • The faster variant of the procedure qfs.utils.xml.compareXMLFiles in the standard library qfs.qft now also supports sorting.
  • For SmartIDs the prefix of special features like "Tab: some tab" or "Label: some label" is now optional. See section 5.6 for details about SmartID syntax.

Bugs fixed:

  • When logging screenshots of individual windows, QF-Test mistakenly also used to create images for embedded windows from different GUI engines.
  • When editing options, assigning duplicate hot keys is no longer allowed.
  • Web The pseudo DOM method DomNode.getElementsByTagName now also returns slotted elements.
  • Web Text from slotted elements was not taken into account when determining the feature of web components.
  • Web In direct download mode existing files are no longer overwritten by default but saved with a unique name.
  • SWT Replay of TAB keystrokes is now significantly faster for SWT on Windows.

Version 6.0.1 - June 9, 2022

New features:

  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.24 alias "2022-06".
  • There is a new variable group to conveniently escape special characters in SmartIDs. ${quotesmartid:...} deals with the item syntax characters '@', '&' and '%' as well as the SmartID special characters ':', '=', '<' and '>'.

Bugs fixed:

  • Android Replay of text input for android applications has been improved.
  • Web In web applications a GenericClassNameResolver registered on "DOM_NODE" was not called correctly.
  • SWT Replaying text input as single events for SWT applications running on Ubuntu 22 could lead to garbled text with the order of some characters changed. QF-Test now replays these events with improved synchronisation.

Changes that can affect test execution

  • Web Support for testing Firefox using QF-Driver connection mode, which is limited to Firefox versions 43 and lower, has been deprecated for removal in a future QF-Test version. Please consider using current Firefox versions with WebDriver connection mode instead.
  • Web Support for testing Internet Explorer, which has officially reached end-of-life, has been deprecated for removal in a future QF-Test version.
  • Web Support for testing Opera using WebDriver connection mode has been deprecated for removal in a future QF-Test version. Please use CDP-Driver connection mode instead.
  • Web When testing web applications in CDP-Driver or WebDriver connection mode, slottable nodes are no longer referenced as direct children of the WebComponent node, but as children of their assigned slot node. This is unlikely to break existing tests, but if it does, please contact QFS support.
  • Swing The way QF-Test internally addresses table columns in a Swing JTable was changed from model-based to view-based. This has no effect if table columns or cells are addressed with a textual index @... or %... or if the order of the columns in the table view and model is identical. In case a test based on numeric column indexes &... fails you can either update the column index or restore the previous functionality with an SUT script of the form rc.setOption(Options.OPT_SWING_TABLE_USE_VIEW_COLUMN, false).
  • Windows-Tests The internal API of the UI automation library has been reworked to simplify class names (e.g. "AutomationWindow" became "Window"). If you use the uiauto module directly in your scripts and reference class names directly, you may need to adapt the class names according to the supplied JavaDoc.

Version 6.0.0 - May 17, 2022

New features:

  • The new Android engine adds support for testing Android applications in an emulator or a real device. See chapter 16 for further information.
  • Though the embedded JRE of QF-Test is still version 8 - currently at relase 8_332 - QF-Test can now also be started with Java 17 (see command line argument -java <executable>(deprecated)). This provides crisp display on scaled monitors and enables support for plugins that require newer Java versions.
  • Support was added for testing applications based on Java 19.
  • In order to reduce the chances of creating screenshots showing sensitive data during a test run QF-Test now takes screenshots only from relevant monitors that show a window that belongs to QF-Test or a connected SUT. While this default setting is useful for personal workstations it may be preferable to turn it off for dedicated test systems via the new option Limit screenshots to relevant screens.
  • The HTML report has undergone a major overhaul. Readability is improved thanks to many subtle details with a more pleasant design and screenshots and error messages are shown as an overlay when clicked, including navigation between screenshots.
  • Report creation can now also be triggered via a new toolbar button in the run log window.
  • In reports, the name of a test suite, which can be specified in the 'Name' attribute of the root node, is now used in place of the file name of the test suite. This can be configured in the report creation dialog or in batch mode via the new command line argument -report-include-suitename.
  • Display of duration indicators for a better understanding of the run-time behaviour of a test run can be turned on for run logs via a new toolbar button and the »View« menu. See subsection 7.1.3 and the options Show relative duration indicators and Duration indicator kind for further information.
  • Activating the new option Create screenshots for warnings causes screenshot creation for warnings in the run log in addition to those for errors and exceptions.
  • It is now possible to link nodes in a test suite to external resources or documents via the @link doctag. Via a right-click the target can then be opened in a browser or the application associate with the file type. See Doctags for reporting and documentation for further information.
  • Groovy was updated to version 4.
  • The new parameters warningDelay and errorDelay in the procedure qfs.utils.logMemory in the standard library qfs.qft are used to introduce a short delay in case the warningLimit or errorLimit are exceeded, followed by an additional garbage collection and another check.
  • The performance and memory consumption of the qfs.qft procedure qfs.utils.xml.compareXMLFiles have been improved.
  • Web Display and responsiveness of the highlights in check mode were significantly improved for CDP-Driver and WebDriver connection mode.
  • Web The handling of WebComponents using ShadowDOMs and slots has been improved for testing web application in CDP-Driver or WebDriver connection mode (QF-Driver support is still pending): The shadow root node is now accessible as the only child of its host node and slotted nodes are referenced as children of their assigned slot node.
  • Web Text retrieval with CDP-Driver connection mode has been greatly improved and the DOM hierarchy is now consistent with other connection modes.
  • Web Performance of image checks in headless browsers has been improved.
  • Web QF-Test now supports multiple parallel downloads in web-tests with CDP-Driver connection mode.
  • Web The new procedure qfs.web.browser.settings.setDirectDownload in the standard library qfs.qft allows to download files directly into the directory provided, suppressing the download dialog. Currently for CDP-Driver connection mode only.
  • Web The embedded Chrome browser used for QF-Driver mode has been updated to CEF version 100.
  • Web Support for JxBrowser versions 7.23 and 7.24 was added.
  • Web The bundled cdp4j library has been updated to version 5.5.0.
  • Web The bundled GeckoDriver was updated to version 0.31.0.
  • Web The method FrameNode.getFrameElement() was added to the pseudo-DOM API of QF-Test.
  • Web Via the parameter consoleOutputValue in the procedures qfs.web.browser.settings.doStartupSettings and qfs.web.browser.settings.setTerminalLogs in the standard library qfs.qft it is now possible to also set the type of the terminal logs.
  • Windows-Tests The embedded UI automation library has been updated to version 0.7.0.
  • Mac On macOS the occasionally showing message dialogs about Safari browser automation are now handled automatically by QF-Test and no longer block test execution.

Preview features:

The following features are not yet complete, but development has reached a point where they are already of great use and the released functionality can be relied upon without concerns about backwards compatibility.

  • SmartIDs enable a flexible, easy recognition of components directly from the 'QF-Test component ID' without recording component information first. Please see section 5.6 and 'Component' nodes versus SmartID for detailed information.
  • Thanks to the new integration with Robot Framework, QF-Test procedures can be used as Robot Framework keywords.

Bugs fixed:

  • Windows-Tests The mini-installer files for Windows - minisetup.exe and minisetup_admin.exe - can now be run in silent and very-silent mode, similar to the full installation.
  • Mac QF-Test might crash when replaying hard key events on macOS.
  • When using split run logs, the maximum number of screenshots for a run log was not always respected, if the option Count screenshots individually for each split log was turned off.
  • The procedure qfs.autowin.acrobat.saveAsText in the standard library qfs.qft now also works for Acrobat Reader version 22.1 and up.
  • A call of rc.clearTestRunListeners() in a server script in batch mode broke the output resulting from the command line argument -verbose [<level>].
  • Web Detection of the Chrome window for semihard clicks has been improved.
  • Web For current Opera versions in WebDriver connection mode QF-Test now supports automatic download of the required ChromeDriver version.
  • Electron The window of an electron application was inadvertently resized upon startup when tested with CDP-Driver connection mode.
  • Electron Popups were not recognized when testing an Electron application in CDP-Driver connection mode.

QF-Test Version 5.4

Version 5.4.3 - March 11, 2022

New features:

  • QF-Test now supports tests for applications based on Eclipse/SWT 4.23 alias "2022-03".
  • Support for JxBrowser 7.22 was added.

Bugs fixed:

  • In very special cases instant rerun of a failed node, triggered via the @rerun doctag, could lead to wrong values on the variable stack.

Version 5.4.2 - February 18, 2022

New features:

  • Web QF-Test now supports testing with Opera 84.
  • Web The Kendo UI and Smart GWT CustomWebResolvers have been updated for the latest release of the respective framework.
  • Web The bundled cdp4j library has been updated to version 5.5.0.
  • Web The method FrameNode.getFrameElement() was added to the pseudo-DOM API of QF-Test.
  • Web In the procedure qfs.web.browser.settings.setTerminalLogs in the standard library qfs.qft it is now possible to set the type for terminal logs via the consoleOutputValue.

Bugs fixed:

  • Web Cookies were not properly reset upon browser start for Chrome and Edge version 98 and higher on Windows.
  • Web When elements of a webpage were reordered QF-Test sometimes failed to synchronize them correctly with the new order.
  • The procedure qfs.daemon.startRemoteSUT in the standard library qfs.qft did not work correctly if the QF-Test daemon was started with a keystore for securing the communication via TLS.
  • Swing Feature resolution for Swing components had a subtle bug in QF-Test versions from 5.3.4 to 5.4.1, resulting in a tool-tip having higher precedence than an explicitly associated label.

Version 5.4.1 - January 20, 2022

New features:

  • Web QF-Test now supports testing with Opera 83.
  • Web The bundled cdp4j library has been updated to version 5.4.1.

Bugs fixed:

  • Web When using CDP-Driver connection mode QF-Test 5.4.0 could sometimes not find elements added after page load.
  • Web It is now possible to display non-string console log data from a browser started in CDP-Driver connection mode in the QF-Test terminal.
  • Web The Chrome DevTools can now be detached when developing a web test in CDP-Driver connection mode.
  • Electron In some situations, dialogs in Electron applications were not closed properly when using WebDriver connection mode.
  • Electron Connection to an electron application on Windows failed in CDP-Driver connection mode in case the application was starting slowly.
  • Mac The command automac.sendText made QF-Test crash on newer macOS systems.
  • Mac${qftest:os.version} now returns correct values for Windows 11 as well as macOS 11 and up.

Changes that can affect test execution

  • An error was fixed in the qftest launch script on Linux. While processing command line arguments with an escaped $-expression in the value of a -variable or -option argument, the $-expression was inadvertently expanded.
  • Swing Components in a Swing JScrollPane, most notably JTree and JTable, were assigned inconsistent qfs:label extra features.
  • Web Testing with Microsoft Edge (legacy) is no longer supported because that version of Edge is generally discontinued. This does not affect support for the current Microsoft Edge browser.
  • Web Execution of the 'Wait for document to load' step has been fixed and the check for document reload improved. This may lead to errors in places where the testsuite design relied on the malfunction. In such a case it is advisable to examine the affected 'Wait for document to load' steps and possibly disable or remove them, or replace them with a 'Wait for component to appear' step. Alternatively it is also possible to reinstate the broken version via the option Reset web-document load state during rescan (before 5.4).
  • Web For web applications the attributes "aria-checked" and "aria-selected" are now automatically taken into account for 'Boolean check' nodes with check type selected or checked.

Version 5.4.0 - December 15, 2021

New features:

  • Support was added for testing applications based on Java 18.
  • Electron Electron applications can now be tested using CDP connection mode which is far more effective and works without requiring inclusion of the problematic module @electron/remote into the electron application.
  • The dialog for the option settings of QF-Test now provides search functionality.
  • It is now possible to copy and paste images from and to QF-Test, most notably for 'Check image' nodes and screenshots in a run log.
  • 'Mouse event' nodes with a 'Modifiers' attribute of 4, designating a right-button click, are now shown in the tree as "right-click".
  • Web The embedded Chrome browser used for QF-Driver mode has been updated to CEF version 95.
  • Groovy was updated to version 3.0.9
  • The JUnit library has been updated to version 5.8.1.
  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.22 alias "2021-12".
  • Web QF-Test now supports testing with Opera 80, 81 and 82.
  • Web Support for JxBrowser 7.20 and 7.21 was added.
  • Web For a web application the attribute 'Check type identifier' of a 'Boolean check' node can now be set to "attribute:<name>" to check for the boolean value of the attribute <name> in the target node.
  • The new doctag @outputFilter can be used in client starter nodes in order to suppress unwanted messages in the QF-Test terminal. See section 60.3 for details.
  • If the 'Default value' attribute of a 'Set variable' is a QF-Test component ID in the form ${id:...}, it is now possible to highlight or jump to the target component by right-clicking and selecting the respective item in the context menu.

Bugs fixed:

  • The search for unused callable nodes sometimes missed certain references and thus could turn up nodes that were actually still in use.
  • QF-Test now tries to avoid creating non-daemon threads in the SUT, including implicitly created threads from the RMI sub-system. These threads could prevent a process from terminating completely after closing the last window of the SUT.
  • Performance and memory consumption have been improved in several places.
  • Swing The title of a JPanel with a TitledBorder is now correctly retrieved as its feature.
  • Swing The order of the components in a Swing JSplitPane seen by QF-Test could vary depending on the order of creation and replacement of those components. QF-Test now uses left->right or top->bottom order irrespective of that.
  • Web QF-Test now also supports automatic ChromeDriver download for the Google Chrome variants "Dev" and "Canary".
  • Web QF-Test sometimes failed to record events after frame navigation in CDP-Driver mode.
  • Web An exception was fixed that could cause failures during document initialization in CDP connection mode.
  • Web The "label" attribute of an OPTION element is now taken into account when determining the name of the option.
  • Web When a browser window crashes in CDP connection mode, an error is now reported and the window is automatically closed.
  • Web Handling of unload dialogs during web tests with CDP-Driver connection mode has been improved.
  • Web When running web tests on a headless browser with CDP-Driver connection mode QF-Test no longer attempts to show a temporary Swing dialog for file up- or download. As a result, headless-only web tests with CDP-Driver should now run as batch tests in a container with no X-server at all.
  • Web Synchronization with animations in web applications has been improved for CDP-driver connection mode.
  • Web By default, console output of Firefox in Webdriver connection mode was redirected to the process' standard output so that QF-Test could check it for JavaScript errors. Due to the potentially heavy load on CPU and memory this has been turned off and can be re-enabled by setting the parameter consoleOutputValue to 1 in the call to the procedure qfs.web.browser.settings.doStartupSettings in the standard library qfs.qft.

QF-Test Version 5.3

Version 5.3.4 - September 30, 2021

New features:

  • The bundled GeckoDriver was updated to version 0.30.0.

Bugs fixed:

  • A memory leak in QF-Test, introduced in version 5.3.3 has been fixed.
  • The procedure qfs.autowin.acrobat.saveAsText in the standard library qfs.qft now also works for Acrobat Reader version 21.6 and up.

Version 5.3.3 - September 14, 2021

New features:

  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.21 alias "2021-09".
  • Web QF-Test now supports testing with Opera 78 and 79.
  • Web Support for JxBrowser 7.17, 7.18 and 7.19 was added.
  • Web The bundled cdp4j library was updated to version 5.4.0.

Bugs fixed:

  • The dialog for editing step details is now properly shown the range of visible screens, even when a previously attached monitor gets removed or when switching a session to RDP.

Version 5.3.2 - July 21, 2021

Bugs fixed:

  • Web Some websites containing custom HTML elements were not testable with CDP connection mode.
  • Web In CDP connection mode whitespace was missing from fetched text in some cases.
  • Web In CDP connection mode, the keyCode property of key events generated from text is now set correctly.
  • Web In CDP connection mode the location of elements in nested IFRAMEs was calculated wrongly.
  • Web The 'Name of the browser window' attribute of 'Wait for document to load' nodes was ignored.

Version 5.3.1 - June 15, 2021

New features:

  • Support was added for testing applications based on Java 17.
  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.20 alias "2021-06".
  • Performance in CDP connection mode with dynamic content updates has been improved.
  • Support for JxBrowser 7.16 was added.
  • Electron QF-Test now supports applications built with Electron 14 or newer, if the @electron/remote is bundled with the app.
  • QF-Test now supports testing with Opera 77.

Bugs fixed:

  • Web Validity of text input to web applications via single events has been improved through additional explicitly defined keycodes.

Changes that can affect test execution

  • Jython issues with character encoding have been reduced and it is now possible to treat Jython literals as 16-bit unicode string which is the natural representation for Java and thus QF-Test. For compatibility reasons the new option Literal Jython strings are unicode (16-bit as in Java) is turned off by default if QF-Test encounters an existing system configuration.

    Please see subsection 11.3.4 for detailed information about why the option should be turned on and how to trouble-shoot possible issues. Chances are high that your Jython scripts will simply work and string handling will become much cleaner. If not, either undo the option change or fix the resulting incompatibilities. We had to do the latter in only a handful of places in our over 1600 test suites, some of which date back over 20 years. The section Trouble shooting Jython encoding issues explains the most common pitfalls and of course our support is always there to help.

  • The default folder name of the Firefox profile when executed in WebDriver connection mode has been renamed from mozProfile to firefoxProfile and it is now used in place instead of copying it to a temporary directory. This behaviour is now consistent with using QF-Driver but has the side-effect that preferences from one test execution are preserved for the next execution and might have to be overwritten during the next browser start. To restore the previous behavior, set the OPT_WEBDRIVER_COPY_MOZPROFILE option to true before starting the browser.
  • The procedures in the package qfs.utils.ssh of the standard library qfs.qft and the underlying Jython module ssh have been updated to default to RSA public key authentication with the default private key file /.ssh/id_rsa instead of DSA which is no longer supported by most current ssh servers.
  • The option Create compact run log is now deactivated by default in interactive mode. Existing system configurations are not affected and the option has no effect in batch mode where compactification is controlled via the command line attribute -compact.

Version 5.3.0 - May 20, 2021

New features:

  • Web The newly added browser connection mode CDP-Driver supplements QF-Driver and WebDriver for controlling Chromium based browsers via the Chrome DevTools Protocol. By talking directly to the browser without the intervening WebDriver protocol, speed, stability and feature set of CDP-Driver are on par with QF-Driver (and that's after the QF-Driver performance boost, see below). In addition, while QF-Driver is limited to Chrome on Windows, CDP-Driver now supports Google Chrome, Microsoft Edge and Opera on Windows, Linux and macOS, so this is a real game-changer for web test automation with QF-Test.
  • Web The performance of web tests with QF-Driver for Chrome has been significantly improved. Observed speed-up ranges from 10% to over 500%.
  • The user interface of QF-Test has been cleaned up and streamlined, using a uniform flat look with fewer lines and beautiful new icons that still maintain the existing image language and are immediately recognizable. The HTML manual and tutorial as well as report and test documentation have also received a face-lift.
  • Use of international character sets in Jython scripts is now straightforward. If the new option Literal Jython strings are unicode (16-bit as in Java) is turned on, literal strings (explicitly specified string constants like "abc") in Jython scripts are treated as 16-bit unicode and are thus equivalent to strings in Java and the other QF-Test scripting languages. Please see subsection 11.3.4 for detailed information.
  • Web Detection of errors in the browser console has been improved and, depending on the option How to handle errors in a web application, they are logged in the QF-Test run log. Besides, the new procedure qfs.web.browser.settings.setTerminalLogs in the standard library qfs.qft can be used to define if and how messages from the browser console are to be shown in the QF-Test terminal.
  • Web The embedded Chrome browser used for QF-Driver mode has been updated to CEF version 89.
  • Web The bundled GeckoDriver was updated to version 0.29.1.
  • Web Support for JxBrowser 7.14 and 7.15 was added.
  • Web QF-Test now supports testing with Opera 76.
  • The JRE distributed with QF-Test has been updated to Zulu OpenJDK version 8_292.
  • The quickstart wizard now has its own toolbar button. This - or any other unwanted toolbar button - can now be removed from the toolbar via a right-click popup menu.
  • The 'Wait for absence' node now has a dedicated entry in the »Insert« menu and its logic when applied to sub-items has been simplified: Execution of the node is successful if either the parent component of the sub-item is absent or the sub-item itself.
  • When running a test with the command line argument -verbose [<level>], QF-Test now expands variables in node names for console output also.
  • The default setting for the available Java memory for QF-Test has been increased to 1024 MB. The configuration of existing QF-Test installations is not affected.
  • Swing Sub-items of Swing JComboBox components can now be addressed relative to the JComboBox without requiring identification of the popup list.
  • Linux The ability to bring windows of the SUT to the foreground when needed and set the input focus is crucial for automated testing. On Linux QF-Test now uses an updated, more reliable method to bring a window on top regardless of desktop settings if the option Force window to the top when raising is not deactivated.
  • Exception messages in the run log or an error dialog are now displayed using word-wrap to break long lines. This can be turned off via the option Wrap lines in exception messages.

Bugs fixed:

  • Installing a resolver via the generic method resolvers.addResolver() did not work in SUT scripts with the JavaScript language.
  • Web The browser zoom level is now reset to 100% when clearing the browser cache.
  • The procedure qfs.swing.startup.startWebstartSUT now ensures proper quoting of the jnlp argument for use on the command line of Linux systems in order to avoid side-effects from special characters it might contain.
  • Windows-Tests The qfs:label extra feature for elements within a TabPanel of a native WPF application was not determined correctly.
  • Web Since QF-Test version 5.2.2 in very special cases elements in a web page were mistakenly considered to be invisible.
  • Mac QF-Test now runs again on macOS versions older than 10.14.
  • Resolution of the qfs:label extra feature for a label located above the target component is now slightly more tolerant about horizontal alignment.
  • Swing Fast replay of several mouse clicks onto the same location of a Webswing application could accidentally create double clicks when redirecting events through the browser.

QF-Test version 5.2

Version 5.2.3 - March 9, 2021

New features:

  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.19 alias "2021-03".

Bugs fixed:

  • In special cases, unluckily placed comment nodes could lead to unwanted side-effects during test execution like a 'Setup' or 'Cleanup' node run just for a comment.
  • Improved timing for client shutdown when ending batch mode execution.
  • Web In WebDriver connection mode mutations on a website might have gone unnoticed in case the page contained too many elements.

Version 5.2.2 - February 12, 2021

New features:

  • Support was added for testing applications based on Java 16.
  • Web QF-Test now supports testing with Opera 74.
  • Web The bundled GeckoDriver was updated to version 0.29.0.
  • The new shortcuts [Ctrl-/] or [Ctrl-7] can be used to insert a new comment node in the test suite tree.

Bugs fixed:

  • Web Several performance bottlenecks for web tests have been fixed, most notably for Firefox on Linux with WebDriver.
  • Web In very rare situations, Chrome was closed in case a JavaScript-execution intervened with a frame reload.
  • Web Delayed attachment of a shadow DOM is now recognized correctly.
  • Swing In special cases the improved event synchronization for Swing might have missed some events, causing slower test execution.
  • If a 'Test case' with the 'Expected to fail if...' attribute set to true does not fail, it should be treated as an error. That error was incorrectly reported as an expected error itself.
  • The sort order of parameters is now also automatically applied when changing the target procedure of a 'Procedure call' node via the chooser dialog.

Version 5.2.1 - December 3, 2020

New features:

  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.18 alias "2020-12".
  • Support for JxBrowser 7.12 was added.

Bugs fixed:

  • Due to wrong file permissions on Linux machines, Jython scripts would fail when running QF-Test as a user other than the one that installed it.
  • The JRE distributed with QF-Test has been changed back to Zulu OpenJDK. The version remains 8_275.
  • In some cases, showing an alert box on a web page lead to a browser deadlock.
  • Several details for the Webswing integration have been improved, including correct filtering of KeyEvents, focus handling for embedded JavaFX components and cleaner separation of client processes in the demo test suites.
  • Daemon connection might have failed during handshake if different java version where used on client and server side.

Changes that can affect test execution

  • Testing applications running on Java 7 is no longer supported.
  • Windows-Tests Many procedures in the standard library package qfs.qft.autowin have been deprecated in favor of the much better suited Windows engine.
  • Due to the updated JRE in the QF-Test installation, graphical elements and graphs in the PDF client may be painted with slightly different anti-aliasing. This can lead to errors in 'Check image' nodes. Given that such problems cannot be ruled out for future JRE updates you should set the 'Algorithm for image comparison' attribute of affected nodes to "algorithm=similarity;expected=0.98".

Version 5.2.0 - November 10, 2020

New features:

  • QF-Test now supports integrated testing of Swing and JavaFX applications that are displayed in a browser using the technologies Webswing or JPro. See chapter 18 for an explantion of the concepts and the demo test suite for Webswing, accessible via the menu »Help«-»Explore sample test suites...«, entry "Webswing SwingSet Suite".
  • Mac QF-Test is now notarized by Apple and thus starts on modern macOS systems without showing a warning message.
  • Web QF-Test now also supports testing with the Microsoft Edge browser on Linux.
  • The JRE distributed with QF-Test has been updated to Liberica OpenJDK version 8_275.
  • Web The embedded Chrome browser used for QF-Driver mode has been updated to CEF version 85.
  • Groovy has been updated to version 3.0.6.
  • Jython has been updated to version 2.7.2.
  • Web Support for JxBrowser 7.11 was added.
  • Web The embedded GeckoDriver has been updated to version 0.28.0.
  • Web QF-Test now supports testing with Opera 72.
  • Web Device specifications for many current mobile devices have been added to mobile emulation mode.
  • The JUnit library has been updated to version 5.7.0.
  • Web On Windows systems with a scaled display QF-Test now starts QF-Driver browsers in compatibility mode so that scaling is transparently handled by Windows and tests work very similar to unscaled mode except for image checks.
  • It is now possible to specify options on the command line via the argument -option <name>=<value>.
  • QF-Test command line arguments can now contain "." and "-" characters in arbitrary places and upper or lower case characters at will.
  • When testing Java applications, QF-Test can now intercept calls that open a native browser window in order to launch a browser controlled by QF-Test for the given URL. An example is provided in the demo test suites "CarConfig Swing test project" and "CarConfig JavaFX test project", accessible via the menu item »Help«-»Explore sample test suites...«.
  • The new procedure qfs.utils.waitForClientOutput in the standard library qfs.qft assists in synchronizing with terminal output of the SUT.
  • Several more node conversions are now possible.
  • The 'Server HTTP request' step now also supports the PATCH method.
  • The two new procedures qfs.utils.sendKey and qfs.utils.sendText in the standard library qfs.qft can be used to enter text into the currently focused element of the active window.
  • The 'No events were recorded' dialog can now be suppressed via the new option Show message if no events were recorded.
  • When merging run logs in batch mode, the command line argument -mergelogs-masterlog [<file>] can now be combined with -mergelogs-mode [<mode>] set to "append". The appended run logs will be stored as externalized thus minimizing memory use both during merging and when opening the resulting run log.
  • Similar to Jython, script steps for Groovy and JavaScript can now use common exceptions without an explicit import.
  • When propagating the parameters of a callable node to its callers, there are now explicit choices for whether to add missing parameters, remove extraneous parameters and/or update the sort order.

Bugs fixed:

  • Opening a run log with an automatic rerun still in progress could lead to an exception.
  • Encrypted connections to the QF-Test daemon are now also supported by the external daemon-API.
  • When generating reports, thumbnail images were created even if -report-thumbnails was not specified.
  • The 'Unit test' step now correctly supports the self.assertEqual call in Jython scripts.
  • Text input on Swing and JavaFX components was slowed down if a browser embedded into Java was detected.
  • Swing Event synchronization under heavy load for Swing based applications has been improved.
  • Swing Text input with single events on a Swing JTextArea now handles newline characters correctly.
  • Windows-Tests Elements of Windows applications may not have been scrolled visible correctly for hard events and image checks.
  • Web With a browser in WebDriver mode a failed frame focus switch could lead to a StackOverflowException.
  • Web In some cases the MSEdgeDriver was not downloaded correctly.
  • Web Checks on elements inside a shadow DOM could not be recorded.
  • Web Soft (invisible) hyphen characters are now implicitly ignored.
  • Electron In some cases, dialog boxes from Electron where displayed empty.
  • JavaFX The visibility of JavaFX components embedded in Swing was sometimes not determined correctly.
  • SWT For SWT version 4.17 on Windows highlight rectangles on Menus were not restored correctly.

QF-Test version 5.1

Version 5.1.2 - September 15, 2020

New features:

  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.17 alias "2020-09".

Bugs fixed:

  • In rare cases QF-Test could crash during image compression if memory was tight.

Version 5.1.1 - August 26, 2020

New features:

  • Web QF-Test now supports testing with Opera 70.
  • Web The embedded GeckoDriver has been updated to version 0.27.0.
  • Web For WebDriver based tests with Chrome/Chromium, site isolation is automatically deactivated.
  • Web Support for JxBrowser 7.10 was added.
  • A link to the JavaScript documentation was added to the help menu.

Bugs fixed:

  • The 'Unit test' node now also searches for JUnit 5 (Jupiter) tests on the classpath.
  • Electron In some cases, native menu clicks on Electron applications were not properly recorded.
  • Web The cache of Chromium based browsers might not have been cleared properly.
  • The option Enable 'Local variable' attribute by default will now be taken into account when pasting a copied 'Procedure' node as a 'Procedure call', for node conversions in general and also when recording checks.
  • Web A deadlock could occur if embedded browser containers (e.g. JxBrowser) were removed and added at the same time.
  • Adding 'Comment' nodes to a procbuilder configuration file could break procedure recording.
  • Mac On macOS, JVM options (starting with "-J-") are now handled correctly.
  • Windows-Tests Text input in Windows applications may not have worked properly when the AltGr key was involved.
  • Web When working with dialogs in headless browser tests, sometimes the invisible dialog was not closed properly.
  • Web A ClassNotFoundException could be triggered when an SWTBrowser was under test.
  • When creating procedures via the Procbuilder using FORCECREATION the separation dots for the package structure were replaced by underscores.
  • When generating procedures via the Procbuilder values from the 'Extra features' of parent and grand parent nodes can now be used as fallback.

Changes that can affect test execution

  • Due to the updated JRE in the QF-Test installation, graphical elements and graphs in the PDF client may be painted with slightly different anti-aliasing. This can lead to errors in 'Check image' nodes. Given that such problems cannot be ruled out for future JRE updates you should set the 'Algorithm for image comparison' attribute of affected nodes to "algorithm=similarity;expected=0.98".

    The JRE update can also cause communication problems between QF-Test and the QF-Test license server in case the license server is run with a very old Java version that cannot cope with the key length required for SSL in current Java versions. In that case it is best to update the license server to the current QF-Test version and use its included JRE.

  • The library jniwrapper is no longer loaded by default because our old jniwrapper version crashes QF-Test on newer JDKs. Modules with native dependencies like autowin have been rewritten to no longer depend on it and all references to jniwrapper have been removed from the standard library qfs.qft.

    If you still have script nodes in your test suites that depend on jniwrapper you should try to reimplement these in order to remove that dependency. Please get in touch with our support if you need help.

    As an interim solution you can get such scripts to work again (on older JDKs where jniwrapper does not crash) as follows:

    • Copy the files from misc/jniwrapper in the QF-Test installation directory to qftest in the QF-Test plugin directory. To locate those directories, open the »Help«-»Info« dialog and look for dir.version and dir.plugin on the 'System info' tab.
    • Add either a Jython server script to your startup sequence with
      from com.jniwrapper import DefaultLibraryLoader
      from java.io import File
      DefaultLibraryLoader.getInstance().addPath \
        (File(rc.lookup("qftest", "dir.plugin") + "/qftest"))
      or the following Groovy variant
      import com.jniwrapper.DefaultLibraryLoader
      DefaultLibraryLoader.getInstance().addPath
        (new File(rc.lookup("qftest", "dir.plugin") +
             "/qftest"))
  • The ChromeDriver library for old Chrome versions (older than 72) is not bundled wit QF-Test anymore.
  • Testing applications running on Java 7 ist still supported in this QF-Test version. However, support for Java 7 has been deprecated and will be removed in QF-Test version 5.2.

Version 5.1.0 - July 8, 2020

Video Video: QF-Test 5.1.0.

New features:

  • Support was added for testing applications based on Java 15.
  • The JRE distributed with QF-Test has been updated to Zulu OpenJDK version 8_252.
  • Web Recording and replay of tests for embedded browsers has been significantly improved.
  • JxBrowser is now supported in version 7, embedded into Swing, JavaFX or Eclipse/SWT applications.
  • Electron Support was added for handling native dialogs in Electron applications.
  • Web QF-Test now supports testing with Opera 69.
  • Web Support for the web framework Qooxdoo has been updated for Qooxdoo version 6.
  • HTML reports can now be customized via JavaScript in the form of a user.js. See subsection 22.1.4 for details.
  • The automac module now provides methods for simulating keyboard and mouse events. See chapter 51 for further information.
  • The root node of a test suite now also has a 'Name' attribute that is shown in the tree.
  • The new option Enable 'Local variable' attribute by default determines, whether the attribute 'Local variable' gets pre-activated in newly created nodes.
  • The procedure qfs.utils.dragAndDrop in the standard library qfs.qft has a new optional parameter eventDelay to control replay speed.
  • It is now possible to convert a 'CSV data file' node into an 'Excel data file' node and vice versa.
  • test suite tabs can be moved left or right using the keyboard shortcuts [Shift-Ctrl-Page up] and [Shift-Ctrl-Page down].

Bugs fixed:

QF-Test version 5.0

Version 5.0.3 - June 17, 2020

New features:

  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.16 alias "2020-06".
  • The included jsch.jar library used by the qfs.utils.ssh package in the standard library qfs.qft has been updated to version 0.1.55 in order to add support for modern Linux systems like Ubuntu 20.

Bugs fixed:

  • The included WebP image compression library was rolled back to version 1.0.0 to avoid incompatibilities.
  • Web Component recognition might have failed when web components had non-integer sizes.
  • In rare cases calling rc.callProcedure inside the parameters of a 'Procedure call' node could lead to the global variables in the variable stack getting lost.
  • The special syntax ${qftest:engine.<componentid>} that can be used to determine the engine of a component now also works if <componentid> contains a '@', '%' or '&' character.
  • Selecting a single value in a run log's error list and using "Set value as filter" twice caused an ArrayIndexOutOfBoundsException.

Version 5.0.2 - May 5, 2020

New features:

  • The WebP image compression library has been updated to version 1.1.0.
  • Keyboard event input in JX Browser is now more stable.
  • Contrast of toolbar icons has been improved especially for disabled buttons.
  • QF-Test now supports testing with Opera 68.

Bugs fixed:

  • Angular 9 is now auto-detected correctly.
  • The 'CSV data file' node now correctly handles UTF-8 encoded files with BOM that start with an encapsulated complex expression.
  • Windows-Tests The 'Start windows application' node can again attach to a client via a given class name (-class) in the 'Window title' attribute.
  • Error handling and retry for automatic downloads of WebDriver libraries has been improved.
  • Windows-Tests Recording elements with a flat hierarchy did not work.
  • The PDF client is now able to check a Text component which contains only null "\u0000" characters and treats it as an empty String.

Version 5.0.1 - March 2, 2020

New features:

  • Windows-Tests A new demo test suite was added for the Windows 10 Calculator.
  • QF-Test now supports Opera 67 with Operadriver 80.0.3987.100.
  • SWT QF-Test now supports tests for applications based on Eclipse/SWT 4.15 alias "2020-03".

Bugs fixed:

  • Windows-Tests When recording components for the whole window, elements within a WPF TabPanel were omitted.
  • The qfs.database.executeSelectStatement procedure now works again for databases requiring an explicit db.commit() statement.
  • When executing a 'Server HTTP request' node, the returned body was mistakenly not stored in a variable in case of a server error.
  • JavaFX Processing JavaFX images in order to calculate a hash value could cause a NullPointerException; to get printed to the terminal.
  • Windows-Tests Fixed a bug where a TextField in a Windows application might not get cleared before input.
  • Windows-Tests Occasionally a ModalDialogException might get incorrectly thrown in WPF Windows applications.

Main new features in version 5

Note For a detailed list of new features please see the release notes below for QF-Test versions 5.0.0.

The following major new features have been implemented for QF-Test version 5:

DescriptionFurther info
New GUI engine: Windows Testing native Windows applications
Modernized User Interface of QF-Test QF-Test looks more modern
Tests with Java 14 Applications based on Java 14 can be tested now
test suites with comments 'Comment' node directly in the tree of a test suite
Edge based on Chromium Tests with the final Edge based on Chromium are now possible
File download via the 'Server HTTP request' node Attribute 'Save response to file'
Table B.1:  

Changes that can affect test execution:

Software that is no longer supported:

Note Please see section 1.1 for a detailed list of system requirements and supported technology versions.

  • Testing of applications based on Java 6 is no longer supported.

Version 5.0.0 - February 6, 2020

New features:

  • With the new Windows engine QF-Test can now test native Windows applications.
  • Support was added for testing applications based on Java 14.
  • The new 'Comment' node can be used to improve the structure and readability of test suites and run logs.
  • It is now possible to download a file via the new 'Save response to file' attribute of the 'Server HTTP request' node.
  • Windows-Tests A package for Windows applications has been added to the standard library qfs.qft.
  • On Windows 10 QF-Test is now correctly displayed at scaled high resolution displays.
  • Web In the manual the chapter Web testing has been revised and a section (subsection 49.1.2) describing the procedure qfs.web.ajax.installCustomWebResolver of the standard library has been added.
  • The option Show message dialog after now has a setting to show a message dialog also when a test run finishes successfully.
  • If the result dialog gets shown after a search the search dialog is now closed automatically.
  • The new procedure qfs.util.click in the standard library qfs.qft can be used to click at an arbitrary position on the screen.
  • You can now create an electron start sequence in the quickstart wizard that automatically detects the required ChromeDriver.
  • When copying a 'Procedure call', 'Test call' or 'Dependency reference' node the name of the target node is now also copied as text to the clipboard.
  • Web The bundled GeckoDriver has been updated to version 0.26.0.
  • Web On Windows, tests with the Microsoft Edge 78 and newer are also possible in headless mode.
  • Web QF-Test now supports Opera 66 with Operadriver 79.0.3945.79.
  • The new variable engine.$(componentId) in the qftest special group makes it possible to find out which GUI engine a component belongs to.
  • The project tree view in QF-Test now uses a natural sort order, respecting indexes and cases.
  • Data for several new mobile devices was added to the Mobile Emulation setup in the quickstart wizard.

Bugs fixed:

  • An image might have been removed from the run log in low-memory situations.
  • Fixed a sporadic exception that could appear when creating a test suite from a run log.
  • 'Finally' nodes inside a 'Try' now get executed even when an instant rerun gets triggered from within the 'Try' node.
  • ImageWrapper methods now log warnings whenever the method fails.
  • In very rare cases the [Ctrl] key might accidentally have stayed in pressed state after finishing replay.

QF-Test version 4

QF-Test version 3