QF-Test itself now requires at least Java version 17. This is independent of the Java version for the SUT,
where compatibility with Java back to version 8 is still being maintained. An SUT application based on
Java Swing, JavaFX or SWT should always be started with its own, dedicated JRE and not the one from
QF-Test.
Except for special cases like the need to use a plugin that requires a higher Java version, QF-Test should
be run with the JRE provided during installation.
Note
The JRE used for QF-Test no longer includes the JavaFX modules. The modules required for running the JavaFX
demos for QF-Test are provided separately.
-
Upon startup QF-Test now ignores the environment variable
CLASSPATH
. If necessary,
QFTEST_CLASSPATH
can be used instead.
-
Support for 32 bit software was deprecated in QF-Test 7.0 and is now removed completely with the following
exceptions:
-
Testing of native 32 bit Windows applications on 64 bit Windows systems with the QF-Test Windows engine
remains fully supported.
-
Testing of Swing or JavaFX applications running in a 32 bit Java VM still works but is no longer
officially supported.
For testing other 32 bit software please use QF-Test version 7.1.
Web In QF-Test versions before 8.0, the ID attribute of DOM nodes in web applications was used
as the name of a component only if the ID was "unique enough" in the hierarchical context. For
compatibility reasons this was maintained even after better and more efficient methods for handling
non-unique names were introduced.
With the new variant of the option Use ID attribute as name the default is to always use ID
attributes as names, irrespective of uniqueness. To maintain compatibility for tests with older
components the option is set to "Only if unique" when migrating from an existing configuration.
-
The separate option for the font size for the shared terminal in the QF-Test workbench has been
replaced with the general option Font size (pt).
-
The outdated GNU regexp library has been removed from QF-Test along with the option "Use old-style GNU
regexps".
-
Working without workbench view - i.e. with a separate window for each test suite - has been deprecated.
The respective option has been moved from the »View« menu to the options dialog.
- Web
The support for JavaScript-only "WebResolvers" has been deprecated (see section 53.2). This does not affect the definition or execution of "CustomWebResolvers"
or resolvers implemented via the
resolvers
module.
- Web
The timeout for most requests in CDP-Driver connection mode has been reduced from 10 to 3 seconds for
alignment with WebDriver connection mode.
New features:
- iOS
The new iOS engine adds support for testing iOS applications in a simulator running on macOS or a real
device connected to a macOS system. See chapter 17 for further information.
- JavaFX
Support for JPro was greatly improved and updated to the current JPro version 2024.3. JPro brings JavaFX
applications into the browser and QF-Test can simultaneously interact with both technologies in a way that
ensures that tests written for JavaFX can run almost identically against JPro and the browser. See
chapter 19 for an explanation of the concepts and the demo test suite for JPro, accessible
via the menu »Help«-»Explore sample test suites...«, entry "JPro JavaFX CarConfig Suite".
-
The new UI theme "Solarized" is a standard theme based on the concept of using the same well-balanced
foreground colors in dark and light mode that many people find pleasing. It can be activated via the menu
»View«-»UI theme«.
-
QF-Test now includes its own assertion library for scripting, inspired by Chai.js.
-
The new JSON module simplifies handling of JSON objects in Groovy and Jython scripts as well as
serialization to QF-Test variables.
- Mac
QF-Test now runs as a native ARM process on macOS systems with Apple Silicon processors, leading to
significant performance improvements.
-
The JRE distributed with QF-Test has been updated to Temurin OpenJDK version 17.0.12.
- Web
The embedded Chrome browser used for QF-Driver mode has been updated to CEF version 126.
-
Support for Webswing has been updated for the current Webswing version 24.1.
- Web
Support for JxBrowser has been updated for JxBrowser version 7.40 as well as for the upcoming version 8.
-
Groovy has been updated to version 4.0.22.
- Web
The bundled cdp4j library has been updated to version 7.1.3.
- Web
The bundled GeckoDriver has been updated to version 0.35.0.
- Electron
QF-Test now supports the new object type
BaseWindow
of Electron version 30.
-
The embedded WebP image compression library has been updated to version 1.4.0.
-
The embedded Apache Commons IO library has been updated to version 2.16.1 and Apache Commons CSV to
1.11.0.
- Web
The option Use ID attribute as name now has a third value. The new default is to always use ID
attributes as names, irrespective of uniqueness. Where backwards compatibility is required, use the former
default setting "Only if unique". See Changes that can affect test execution for further information.
- Web
Generic class mappings in the 'Install CustomWebResolver' step can now map multiple alternative HTML tag names
and CSS classes in a single mapping.
- Web
Mapping a suitable component to the new generic class
ModalOverlay
prevents QF-Test from
bypassing the modal overlay and executing mouse events on elements covered by it.
- Web
The new interface
TreeIndentationResolver
can be implemented to assist QF-Test in determining
the structure of tree nodes in a web application. See subsection 53.1.24 for
details.
-
The layout of the HTML report is now better suited for smaller screens and printing.
-
The new command line argument
-noplugins
can be used to temporarily suppress the use of plugins in
order to find out whether a given problem might be caused by a plugin.
-
The menu has been reorganized with recent files move to a sub menu and
default bookmarks added for important library and sample suites.
Bugs fixed:
-
The sort order of attributes in the XML files for test suites and run logs is now independent of the
system locale.
-
When intercepting the IO streams
System.out
and System.err
of the SUT QF-Test now
takes extra care not to interfere with their implicit encoding.
- Android
The apk file required by QF-Test for interacting with the accessibility interface on Android devices has been
updated and signed for compatibility with newer Android versions.
- Web
The default installation of Firefox on Linux no longer accepts profile directories located outside
of the
~/.mozilla
directory. QF-Test now detects and works around that situation by creating
a dedicated Firefox testing profile directory in ~/.mozilla
instead of the in QF-Test user
directory.
- Web
On Windows systems headless browsers are now always started unscaled, independent of the scaling factor
of the current desktop session.
- Electron
The emulated web File System API for Electron applications can now read and write multiple files in
parallel.
- Mac
In some special cases QF-Test might have blocked on macOS systems when trying to bring one of its application
windows to the front.
-
The procedure
qfs.autowin.acrobat.saveAsText
in the standard library
qfs.qft
now also works for the English Acrobat Reader version 24.512 and up.
-
The QF-Test Gradle plugin now correctly forwards the "license" property to QF-Test.
New features:
- SWT
The visual UI Inspector is now also available for Eclipse/SWT applications and thus for all QF-Test UI
engines.
- Web
The bundled cdp4j library was updated to version 7.1.2.
- Web
The search engine selection dialog in Chrome is suppressed.
Bugs fixed:
-
Using an item as scope could lead to false positive component resolution if the target element didn't
exist inside the scope.
- Web
Components inside a FRAME in a second browser window were not detected reliably.
New features:
- SWT
QF-Test now supports tests for applications based on Eclipse/SWT 4.32 alias "2024-06".
- Web
Support for JxBrowser version 7.37, 7.38 and 7.39 was added.
Bugs fixed:
-
When running the Windows installer in silent mode, older QF-Test versions are no longer uninstalled.
-
Saving PDF files via the procedure
qfs.autowin.acrobat.savePDF
was not possible when
the Acrobat option "show online storage when saving files" was deactivated.
-
When creating testdoc documentation with the option for test steps deactivated, teststeps are now also
removed from the XML variant, not just the HTML version.
- Web
Webdrivers for newer versions of Microsoft Edge are now downloaded automatically again.
- Web
Automatic scrolling in web applications has been improved for special cases, where intermediate ancestors
in the component hierarchy are invisible.
- Web
In web applications with multiple documents the QF-Test UI inspector sometimes failed to retrieve the detail
information for a node.
-
In some cases importing node.js modules in JavaScript scripts didn't work.
New features:
-
Support was added for testing applications based on Java 23.
-
The JRE distributed with QF-Test has been updated to Temurin OpenJDK version 17.0.11.
-
Groovy was updated to version 4.0.21.
-
The bundled cdp4j library was updated to version 7.1.1.
- JavaFX
The visual UI Inspector is now also available for JavaFX applications and has received a few minor
improvements for all supported engines.
-
The special variable group "qftest" provides additional values for client properties (see section 6.6).
- Web
When starting Chrome from QF-Test, its new privacy banner is now disabled by default.
Bugs fixed:
-
When increasing the value of the option Font size (pt), attributes like
'Condition' in 'If'-nodes were not displayed correctly.
-
The @noreport doctag now also works with 'Procedure call' nodes.
-
The skipped test counter was incorrect when a 'Test case' with a forced dependency cleanup was exited
from a script with
skipTestCase
.
- Web
Injecting a JavaScript function via the deprecated procedure
updateCustomWebResolverProperties
in the standard library qfs.qft
was broken in
Firefox.
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.
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.
-
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 50.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".
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 53.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.
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.
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 49.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.
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.
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.
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.
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.
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.
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 61).
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.
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 53.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.
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 option 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 40.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 50.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 28.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 40.1.2 and section 43.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.
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.
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 31.
-
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.
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 53.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.
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 24.2.2). To that end the DaemonRunContext
API has two new methods,
setGlobals
and clearGlobals
(see section 54.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.
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.
- 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.
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.
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.
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.
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.
-
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.
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 61.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
.
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.
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.
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.
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.
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
.
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.
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.
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.
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.
-
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".
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 19 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.
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.
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.
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.
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 23.1.4 for details.
-
The
automac
module now provides methods for simulating keyboard and mouse events. See
chapter 52 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:
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.
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.
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.
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:
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.
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 50.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.