QF-Test version 4.0
Version 4.0.11 - April 05, 2016

New features:

Bugs fixed:

  • QF-Test now again starts correctly with early access versions of Java 9. This was broken after changing the Java 9 versioning scheme. The value "9-ea" for the system property java.version does not contain the '.' character that QF-Test expected to find after the main version.
  • In some cases the record button could remain active even after the last SUT client terminated.
  • Web A few keystrokes for certain characters - e.g. '.' - were not replayed correctly as single events in QF-Test's Chrome browser.
  • Web When trying to launch a WebStart application in QF-Test's Chrome browser, the download dialog for the JNLP file appeared instead.
  • Automatically restoring a minimized SWT or web browser window before replay on Linux could trigger a Gtk error that caused the SUT to crash.
Version 4.0.10 - January 28, 2016

New features:

  • Web Support for the AJAX toolkits ICEfaces and PrimeFaces was updated for ICEfaces version 4.1 and PrimeFaces version 5.3.
  • Automatic handling of security dialogs in Java WebStart and applets now includes support for a new dialog that was added in Java 8 update 72.
  • JavaFX The new package qfs.autoscreen.fx in the standard library qfs.qft provides procedures for image based component resolution in a JavaFX application.

Bugs fixed:

  • Exceptions in the toString method of a component in the SUT could prevent component recognition and lead to a ComponentNotFoundException.
  • During QF-Test startup or when saving or loading a file, the list of recently opened files gets updated. If that list contained entries from slow or no longer valid network drives this could take an unreasonably long time during which QF-Test was blocked.
  • The procedures in the package qfs.autoscreen now throw a TestException with detailed information in case an invalid algorithm syntax is specified by the caller.
  • QF-Test now correctly handles images with a width or height greater than 8192 pixels and handling of large PNG images is faster.
  • Occasional exceptions that were thrown when sorting a column in a result list have been fixed.
  • A search in the - rarely used - separate debugger window could cause an exception.
  • Web Using rc.overrideElement in a web based SUT could cause a NullPointerException in some special cases.
  • Web Thanks to miscellaneous performance fixes, tests for large web pages should run a bit faster, most notably on Firefox.
Version 4.0.9 - December 17, 2015

New features:

  • Web Support was added for Firefox version 43.

Bugs fixed:

  • QF-Test now cleanly handles exceptions caused by Excel files with functions that are not directly supported by Apache POI.
  • JavaFX When checking the image of a JavaFX component QF-Test now makes sure that the target is scrolled into view first and that geometry changes from focus borders are compensated.
  • JavaFX Synchronization with JavaFX events during replay has been further improved.
  • Web Text input in a browser could get recorded as a mix of text input and keystroke events.
  • Web For the AJAX framework ZK it is now possible to check the enabled/disabled state of TabFolder items.
  • Web Recognition of web components was broken in case of leading or trailing whitespace in the name of a FRAME node.
  • Web Setting the browser's user agent during startup now also works for Chrome.
Version 4.0.8 - November 4, 2015

New features:

  • Web Support was added for Firefox version 42.
  • Web Some web components with JavaScript code that handles events in special ways do not react to "soft" mouse events. Besides "hard" events that actually move the mouse cursor, QF-Test also implements "semi-hard" events by sending events at OS level to the browser window. The new procedure qfs.web.general.clickIncreasinglyHard in the standard library qfs.qft makes it easier to choose the best method and keep the tests robust.

Bugs fixed:

  • Reading the output of a client process via ${qftest:client.output.<name>} immediately after the process terminated could occasionally fail and return an empty value.
  • The option settings for whether to record generic classes and system classes should have no impact on test replay. However, there was one special exception in case of Swing and SWT: If the 'Feature' attribute of ComboBox popups and lists was of the form 'Invoker class: ...', it was matched only against the class resulting from the current setting of the above options. Now the match is correctly performed against all classes of the invoker component.
  • The extra feature 'qfs:class', which holds the most specific class name of a component, is now always recorded and not only if recording of generic classes is activated.
  • When performing a successful search operation and starting to edit the highlighted attribute, the modification was lost when continuing the search without confirming the changes.
  • When reading data from a custom formatted cell in an Excel sheet that references a non-existing worksheet or file, the custom format was not applied correctly. Also, handling of cells that contain errors has been improved.
  • JavaFX JavaFX Tables and TreeTables with nested column headers are now handled correctly. Also, automatic horizontal scrolling for hard events and image capturing was not quite accurate for these components.
  • JavaFX QF-Test now works around a Java issue where capturing an image of a JavaFX component can mess up the internal geometry of a JavaFX client.
  • JavaFX Recording events in an embedded WebView browser has been improved. Most notably the first event after a page navigation and in general navigation in frames were not handled correctly.
  • Web In special cases registration of the Ext JS resolver could delay startup of a web application up to 20 seconds.
  • Web Even when specifying a dedicated Java program in the 'Executable' attribute of the 'Start browser' node, QF-Test still took some definitions from its own Java version which might cause problems with applets running in the embedded browser.
Version 4.0.7 - August 27, 2015

New features:

  • Web Support was added for Firefox version 41.
  • Web Support for the AJAX toolkit Ext JS was updated for Ext JS version 6.

Bugs fixed:

  • Memory usage for creating an XML or HTML report from a split run log has been further reduced.
  • Step-by-step replacement of parameters or variable definitions could replace all matching values of a node instead of just the ones chosen.
  • JavaFX For some JavaFX components ItemName- and ItemValueResolver were either not separated cleanly or had no effect.
  • Swing Changes in the Java 9 API were causing problems with forced raising of windows and with replay of a file selection on the AWT FileDialog.
  • SWT Replay of a selection event on a CCombo element used inside a Tree or Table cell could fail due to focus issues.
  • Web Internet Explorer 10 and older could crash, deadlock or weirdly misbehave when running in quirks mode on pages with many nested IFRAMEs.
  • Web QF-Test's embedded Internet Explorer now treats JavaScript code in href attributes in the same way as the normal Internet Explorer.
Version 4.0.6 - July 16, 2015

New features:

  • Windows 10 is now officially supported. Internet Explorer in particular was causing a number of problems, ranging from crashes to broken documentMode, userAgent or language settings which should all be fixed now.
    Note Microsoft's new browser Edge is not supported yet.
  • SWT Support for Eclipse/SWT 4.5 has been updated for the final release of Eclipse 4.5 "Mars".
  • Web Experimental support was added for Firefox version 40.
  • Web Support for the AJAX toolkit RAP was updated for RAP version 3.0. For this version - and back to RAP 2.2 - names set by development via widget.setData("name", ...) can now be retrieved automatically by QF-Test, similar to handling names in SWT.

Bugs fixed:

  • JavaFX For JavaFX on Mac OS X QF-Test is now able to force the focus onto the SUT's windows, which is a prerequisite for stable and reliable test execution.
  • JavaFX JavaFX Tables and TreeTables with invisible columns are now handled correctly.
  • JavaFX Sequences recorded for editable JavaFX ComboBoxes were missing the popup Button and thus not replaying correctly. The Button and TextField inside the editable ComboBox are now automatically addressed as combo@:Button and combo@:TextField. Value checks for ComboBoxes were also improved.
  • JavaFX Custom headers in JavaFX table columns are now handled correctly.
  • Web On Windows the final release of Firefox 39 crashed with QF-Test 4.0.5 due to a change in the memory management of Firefox.
  • Web Firefox version 38.1 ESR was not recognized correctly by QF-Test 4.0.5.
  • SWT Geometry of SWT Widgets inside a titled Group was incorrect for SWT versions 4.4. and 4.5 on Linux.
Version 4.0.5 - May 12, 2015

New features:

  • Web Support was added for Firefox versions 38 and 39.
  • A new standard check for tool-tips has been added.
  • JavaFX For JavaFX the synchronization of QF-Test event replay with the JavaFX toolkit and its event handling and repaint mechanism has been significantly improved, which makes test replay more robust.
  • The new 'Procedure' qfs.utils.dumpComponents in the standard library qfs.qft logs a component (sub-)hierarchy including geometry and class information which may be helpful during test development.
  • Drag&Drop operations between components of different GUI engines, independent applications or the SUT and the desktop can now be performed with the help of the 'Procedure' qfs.utils.dragAndDrop.

Bugs fixed:

  • Creating a thread dump of the SUT is also working for 64 bit Java VMs on Windows now.
  • When recording procedures with a template file that contained an empty parameter list for container procedures, the resulting procedure calls were broken so badly that the test suite could no longer be saved.
  • Memory usage for creating an XML or HTML report from a run log containing externalized logs has been significantly reduced.
  • Swing Event replay for Swing, which was noticeably slower in QF-Test version 4.0.4, is now back to normal speed.
  • JavaFX In a few special cases the replay of mouse events on JavaFX menus was broken with Java 8 update 40.
  • JavaFX SUT connection with the FX engine now is being delayed until the FX toolkit has been fully initialized. This enables support for applications with embedded FX components that create the FX bridge during startup but initialize the FX toolkit later when the first FX component is shown.
  • JavaFX A possible deadlock for combined Swing and FX applications with a shared event dispatch thread has been fixed.
  • Web Class resolution despite compressed or obfuscated JavaScript has been significantly improved so that web applications based on the AJAX toolkit GWT are running much faster now.
  • Web In some cases, the check recording mode in the Chrome browser was not exited cleanly so that subsequent event recording failed.
  • Web Due to a rounding issue, image checks in the Chrome browser were sometimes one pixel off.
  • Web When checking text in web applications, combinations of NBSP and normal space were not always resolved correctly.
  • Web The QF-Test browser was leaking memory when a nested FRAME or IFRAME was unloaded during page navigation.
Version 4.0.4 - March 5, 2015

New features:

  • Web QF-Test now supports testing 64bit versions of Firefox on Linux.
  • Web Dedicated support was added for the AJAX UI framework jQuery EasyUI.
  • Web Support for Firefox has been updated to match the public release of Firefox version 36 and support for Firefox version 37 has been added.
  • SWT Support for Eclipse/SWT 4.4 "Luna" has been updated for the Eclipse 4.4 SR2 release.
  • Web The Java version for starting QF-Test's browser wrapper is no longer limited to the one QF-Test itself is using. It can now be set in the attribute 'Executable' of the 'Start browser' node. This makes it easier to mix 32bit and 64bit Java versions or to use the System JRE for the browser in order to support embedded Java applets.
  • The special variable syntax ${qftest:32} (or its alias ${qftest:32bit}) can be used to test whether QF-Test is running in a 32bit Java VM, with the obvious counterparts ${qftest:64} and ${qftest:64bit} to check for 64bit VM.
  • The new command line argument -daemonrmiport <port> can be used to run the QF-Test daemon behind a firewall by specifying a dedicated port for the daemon's RMI communication in addition to the daemon lookup port that is set with -daemonport <port>.
  • The default value of the option Wait for non-existent component (ms) is now temporarily set to at least 30000 ms during SUT startup. Adding a 'Wait for component to appear' node to the SUT startup sequence is still recommended, though less emphatically.

Bugs fixed:

  • When automatically updating references after refactoring, multi-level sub-item syntax was cut off after the second item level.
  • The new command 'Find/Remove unused callables' treated procedures called only from dependencies as unused.
  • Swing The workaround for the Java 8 focus issues on Windows now handles the root cause instead of trying to keep the side effects under control.
  • Web The standard library procedures in the package qfs.web.browser.settings now explicitly check the browser parameter for validity instead of failing silently with no effect.
  • Web Chrome is now able to record 'Server HTTP request' and 'Browser HTTP request' nodes.
  • Web Chrome could crash when navigating to a previously visited page anew.
  • Web In some cases auto-expansion of tree nodes in Chrome could cause a deadlock.
  • Web When creating a new startup sequence with the quickstart wizard for the AJAX toolkit GWT the version for the GWT resolver was incorrectly set to 1 instead of 2. The same problem affected auto-detection for GWT.
  • Web The AJAX toolkit jQuery UI was not handled by the auto-detection mechanism for AJAX resolvers.
Version 4.0.3 - January 29, 2015

New features:

  • Web Support for Firefox has been updated to match the public release of Firefox version 35 and support for Firefox version 36 has been added.
  • Web The resolver for the AJAX framework GWT has been rewritten from scratch and supports a far wider range of GWT components based on GWT version 2.7.
  • SWT Support for Eclipse/SWT 4.5 "Mars" has been added based on Eclipse version 4.5M4.
  • JavaFX Recording of Drag&Drop is now implemented for JavaFX also.
  • JavaFX In addition to JavaFX components embedded in Swing, hybrid applications that work the other way round and embed Swing components in JavaFX are now also supported. This includes support for sharing the same event dispatch thread between JavaFX and Swing.
  • The new operation "Find/Remove unused callables" has been introduced in order to get rid of procedures which are never used in your test suites.
  • The new procedure qfs.check.compareDates in the standard library qfs.qft can be used to compare two date strings in arbitrary format.
  • The procedure qfs.utils.xml.compareXMLFiles has two new parameters for stripping white space and for handling namespace definitions.
  • The diagnostic information logged for every error and exception now also includes a full thread dump of the SUT as well as the SUT's Java memory usage and the current system load.
  • When executing QF-Test in batch mode for report generation or other commands that don't run any tests, QF-Test now runs in AWT headless mode if the command line argument -nomessagewindow is specified. This is useful when using such commands from a continuous integration server that runs without a display.
  • 'Server HTTP request' nodes can now use the syntax http://user:passwd@mydomain.com to send requests to secured servers.
  • The default Java memory setting for QF-Test is now 512 MB and the default Java memory for QF-Test's browser wrapper has been increased to 256 MB.
  • The new ResetListener extension API can be used to influence the behavior of the command »Run«-»Reset everything«, e.g. to prevent a certain client process from being killed or to perform additional cleanup like deleting Jython or Groovy variables. See section 52.8 for details.

Bugs fixed:

  • Changing the order of 'Catch' nodes under a 'Try' node was broken by the addition of the optional 'Else' node in QF-Test version 4.0.2.
  • Display of large amounts of output from the SUT in the terminal could slow down QF-Test and the test execution if rich text formatting was activated for the terminal.
  • In very rare cases test execution in batch mode could hang on Windows when the SUT ran into a deadlock.
  • Depending on timing, QF-Test sometimes did not kill all process clients when exiting.
  • Importing test suites could be very slow if tolerant class matching was activated.
  • If an Excel sheet contains too deeply nested functions, QF-Test will now throw a TestException instead of ignoring those cells. Handling such Excel files requires an increased thread stack size which can be achieved by starting QF-Test with the command line argument -J-Xss512k.
  • When recording procedures, some placeholders in nested sequences in the template were not replaced correctly.
  • The procedure recorder is now able to create container procedures with standard event nodes and sequences without relying on component-specific procedures.
  • If an HTTP exception was thrown from a 'Server HTTP request' node due to to status code > 399, the variables 'responseDate' and 'statusCode' were not set correctly.
  • The horizontal scroll bar of the internal script editor was not set correctly when hard TAB characters were contained in the code.
  • Waiting for the absence of a multi-level sub-item now works correctly.
  • For WebStart applications QF-Test now also automatically handles the German version of a possible HTTPS certificate warning.
  • HTML reports, testdoc and pkgdoc documents could get scrambled by HTML comments split across several lines if HTML pass-through was activated.
  • The declaration and encoding of XML reports, testdoc and pkgdoc documents were inconsistent if the default file encoding of QF-Test's Java VM was not ISO-8859-1.
  • The tool for the "QF-Test Java Configuration" could not save values to the Windows registry if setup.exe was never run before.
  • Swing When recording in Swing applications with a great number of deeply nested components, performance could suffer severely.
  • Swing In Swing applications running on Java 8, bringing up the menu for check recording could subsequently block input into text fields.
  • Swing The workaround for focus issues in Java 8 on Windows when changing the topmost state of a window has been improved to handle another special case.
  • JavaFX For hybrid JavaFX and Swing applications replaying an event on an embedded component now correctly raises and activates the surrounding window of the other toolkit which improves the reliability of such tests.
  • JavaFX Replaying a file selection in JavaFX for a save dialog now also sets the ExtensionFilter to match the chosen file's extension.
  • SWT Trying to record a check directly on the header of an SWT Table caused an exception.
  • Web Third-party plugins and extensions were not initialized correctly for Firefox 30 and above.
  • Web Resolving list items now also works for <SELECT> nodes and generic ComboBox elements that are located in another list.
  • Web The resolver for the AJAX framework ZK has been updated to version 1.1.1 which fixes a few minor issues and improves handling of MenuItems.
  • Web Playback of semi-hard mouse events with modifiers like [Ctrl] has been fixed.
  • SWT Checks for table cells in KTable components were not recorded correctly.
Version 4.0.2-p2

New features:

  • Web Support for Firefox has been updated to match the public release of Firefox version 34 and support for Firefox version 35 has been added.

Bugs fixed:

  • Web In QF-Test version 4.0.2-p1 the user agent string returned by Firefox browsers was incomplete.
Version 4.0.2-p1

Bugs fixed:

  • Web Support for Firefox version 33 has been updated to cope with the new Firefox versioning scheme introduced with Firefox 33.1.
Version 4.0.2 - October 22, 2014

New features:

  • Web Support was added for Firefox versions 33 and 34.
  • SWT Support for Eclipse/SWT 4.4 "Luna" has been updated for the Eclipse 4.4 SR1 release.
  • JavaFX Support for JavaFX has been updated for some FX changes in the Java update 8u20.
  • The QF-Test Agent mechanism is now compatible with the tighter security restrictions introduced with Java updates 8u25 and 7u71/7u72.
  • JavaFX JavaFX Charts are now fully supported with improved representation of the component parts and various dedicated checks.
  • Web Support for the AJAX toolkits Ext JS and PrimeFaces has been updated to include support for Ext JS version 5 and PrimeFaces version 5.
  • The backwards compatibility for recording components with generic classes into test suites with pre-QF-Test-4.0 components has been extended to include support for merging such components via the import feature.
  • The 'Try'/'Catch'/'Finally' construct has been extended to support an 'Else' node which is executed in the case when the contents of the 'Try' are executed cleanly without throwing an exception.
  • 'Window' nodes now also support 'Extra feature' attributes, just like 'Component' and 'Web page' nodes.
  • It is now possible to override the way how QF-Test determines generic classes by implementing a GenericClassNameResolver as described in subsection 52.1.8.
  • Web There is now a dedicated section in the manual explaining how to quickly implement resolvers for AJAX web toolkits that are not yet supported out-of-the-box: section 49.1.

Bugs fixed:

  • In some cases the record button could remain active even though no SUT client was connected to QF-Test anymore.
  • On a Windows machine with only a 64bit Java installed, QF-Test now explicitly searches for the 64bit Java installation in "C:\Program Files" in case it does not find a javaw.exe program on the default PATH.
  • The procedures in the qfs.utils.ssh package did not use the correct default known_hosts file.
  • The 'Excel data file' node now handles the character encoding of old-style .xls files correctly.
  • The runid was not stored correctly in a run log in case a batch test was run with split run logs disabled via the command line argument -splitlog=false.
  • Check visible tests for items could incorrectly fail with an IndexNotFoundException instead of reporting a passed or failed check.
  • The QF-Test editor for the proc-builder configuration file could get corrupted while recording new procedures and editing the file in parallel.
  • The context diff for a failed 'Check items' was incomplete in some rare cases.
  • Swing Startup for WebStart and applets has been made more robust, including a fix for a ClassCastException occasionally seen in applets.
  • Swing The newly introduced support for custom tab components assigned via JTabbedPane.setTabComponent could break replay of existing recordings.
  • SWT Cells of a Nebula Grid component can now be recorded correctly from a scrolled location and also addressed via negative indexes.
  • JavaFX Recording of events on FX controls embedded in an SWT based SUT no longer produces duplicates and checks can now be recorded normally for such FX controls.
  • Web The default compatibility mode for Internet Explorer 10 and up has been fixed and the user agent returned by IE for document.documentMode now always correctly reflects the current compatibility mode.
  • Web Waiting for a dynamically inserted FRAME and its document to be loaded now works correctly in all browsers.
  • Web QF-Test now uses a different method for determining the geometry of TEXT nodes in all browsers that is less invasive and more efficient. The old method could occasionally interfere with JavaScript code in web pages.
  • Web There was a tricky race condition mostly seen in connection with a special kind of download, triggered by opening a temporary web page which automatically closes immediately. QF-Test now handles such situations and the respective download cleanly.
  • Web The Chrome browser now displays a confirmation dialog when a window gets closed and an onbeforeunloadhandler is defined.
  • Web Component and procedure recording in the Chrome browser is considerably faster.
  • Web The embedded Chrome browser can now show videos.
  • Web Double click events are now correctly recorded in the Chrome browser.
Version 4.0.1 - August 28, 2014

New features:

  • JavaFX The JavaFX TreeTableView component, which was introduced with Java 8, is now fully supported.
  • Swing QF-Test now supports recording and checking of tabs for JTabbedPane components which use the setTabComponent method to implement some or all tabs as actual components.
  • If the 'File encoding' attribute of a 'CSV data file' node is set to "UTF-8", QF-Test now tries to determine itself whether the file starts with a Byte Order Mark (BOM) or not and handle it accordingly. QF-Test also treats an 'File encoding' attribute with "x-UTF-8-BOM" or "x-UTF-8-No-BOM" correctly, even though Java has no direct support for these encodings.
  • When moving the mouse over any image stored in a test suite or run log, QF-Test now displays the (X,Y) coordinates and color values of the associated pixel.

Bugs fixed:

  • The timeout value of the option Wait for non-existent item (ms) was ignored in some cases, e.g. when performing checks with a timeout.
  • An 'Extra feature' using variables for a regular expression value could mistakenly trigger a BadRegexpException.
  • In QF-Test version 4, leading and trailing whitespace is removed from sub-item names. Playback compatibility was provided for most cases, but not all. This should now work consistently.
  • The context diff for a failed 'Check selectable items' node in the run log now includes visual representation for the expected and actual selected states and is shown correctly also in cases where there are differences only in the selected state.
  • Formulas in Excel files that return boolean values or that switch cell types more than once are now handled correctly by the 'Excel data file' node and the procedure qfs.utils.files.readExcelFile.
  • Swing In a hybrid Swing and JavaFX application, handling of Swing JTable components was partly broken due to interference from the JavaFX ItemResolver for tables.
  • JavaFX Recording of items in a multi-rooted JavaFX tree (i.e. a tree with its primary root node hidden) is now correct.
  • SWT Component highlighting was broken when recording checks in an Eclipse / SWT application.
  • SWT There were still dependencies on a newer version of glibc left in the instrumentation files for 64bit versions of Eclipse, causing failures on some Linux systems with an old version of glibc - for example RHEL 6.5.
  • Web Tests with Firefox versions 27 and 28 did not work correctly.
  • Web Text checks for table headers were broken in some web tables.
  • Web A proxy auto-config (PAC) file defined in a procedure call of qfs.web.browser.settings.setProxy is now interpreted correctly.
  • Web The Chrome browser now displays a confirmation dialog when a window gets closed and an onbeforeunload handler is defined.
  • Web JavaScript errors in the Chrome browser are no longer printed to the terminal but written to the run log.
  • Web In the Chrome browser coordinates inside an IFRAME were displaced if the frame had a border defined, leading to offsets when highlighting components and to image check failures caused by insufficient automatic scrolling.
  • Web Drag&Drop via the procedure qfs.web.general.dragFromTo now also works with Chrome.
  • Web Clearing the browser cache did not work with Firefox version 32.
  • Web The procedure qfs.web.table.getRowCount could fail in the rare case when the first column of a table is invisible.
Main new features in version 4

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

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

DescriptionFurther info
New GUI engine: JavaFX Full support for JavaFX based applications
Support for Chrome browser Currently Windows only
Improved support for Java WebStart and applets Fast and reliable startup and connection via Java agent
Support for the AJAX framework jQuery UI Special support for various web frameworks
Generic classes for components Uniform classes for all GUI engines (subsection 5.4.1.1)
Multi-level sub-item concept QPath concept, similar to XPath (subsection 5.9.2)
Support for embedded browsers JavaFX WebView and JxBrowser 4
Improved user interface with colored syntax highlighting Option Syntax highlighting for tree nodes, Terminal options
New package for client-side ssh connections Standard library qfs.qft, package qfs.utils.ssh
Table B.5:  Highlights in QF-Test version 4

Changes that can affect test execution:

  • The 'Wait for component to appear' node implicitly waits for the respective SUT client to connect for the required GUI engine. In case the wait fails, a ComponentNotFoundException is thrown with a message that explains whether the component was not found, the respective SUT client is not connected or whether there is no matching GUI engine available for that client. The 'Expected message' attribute of a 'Catch' node can be used to differentiate between those causes.
    In absence of a suitable client there was an inconsistency in older QF-Test versions, causing either a ComponentNotFoundException or a ClientNotConnectedException to be thrown, depending on whether such a client was previously connected or not. In case your test still expects a ClientNotConnectedException you either need to change the 'Catch' node, add an additional 'Catch' or prepend the 'Wait for component to appear' node with a 'Wait for client to connect' node.
  • The new option How to handle disabled components defines what to do when a disabled 'Component' node is referenced during test execution. In previous versions of QF-Test the disabled state was ignored which sometimes led to confusion. The default now is to log an error. Consequently, disabled 'Component' nodes are no longer re-used when recording.
  • There is a new option called Default timeout for checks (ms) that - as its name implies - defines a default timeout for checks that have no 'Timeout' attribute set. It increases general stability of check execution. If your tests include a lot of 'Check' nodes without 'Timeout' that are expected to fail, test execution time may increase. In this case you may want to set this option back to 0, the old default or, preferably, update the respective nodes and set their 'Timeout' attribute to 0.
  • Web The AJAX toolkit RAP does not use the 'ID' attribute of DOM nodes to define IDs, so the option Eliminate all numerals from 'ID' attributes had no effect for RAP. This has been fixed, so that with the option activated, numerals are now removed from IDs generated for RAP elements. In case this causes problems with existing tests, simply deactivate the option Eliminate all numerals from 'ID' attributes.

Software that is no longer supported:

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

QFS is taking pains to support even very old software. QF-Test still runs, for example, under Windows XP or with an SUT based on Java 1.5 or 1.6 but for systems that are no longer supported by their own vendors we cannot provide full support.

Libraries that are required for the Firefox and Eclipse/SWT versions listed below are no longer part of the default installation of QF-Test. The majority is still being maintained, albeit with limited testing. If you need support for such a system, please get in touch with QFS via support@qfs.de.

Official support has been dropped for Java 1.5, Internet Explorer 7 and older, Firefox 25 and older (except Firefox 24 ESR) as well as Eclipse/SWT 3.6 and older.

Version 4.0.0 - July 31, 2014

New features:

  • Web Support was added for Firefox versions 31 and 32.
  • A more user-friendly way of updating a QF-Test license is now available via the menu »Help«-»Update license...«.
  • When opening a Jython or Groovy console for an SUT client, the command history from the most recently created Jython or Groovy console is copied. This makes it easier to try out the same scripts when repeatedly restarting the SUT.
  • When importing QF-Test results into TestLink it is now possible to use the 'QF-Test ID' for associating test cases and to omit the platform.
  • After starting QF-Test the record button now has a help icon that leads to the quickstart wizard for launching an SUT. This feature is intended to assist first-time users that often wonder why they cannot start recording right away.
  • Web The procedure qfs.web.ajax.installToolkitResolver now allows specifying default versions for automatically detected AJAX toolkit resolvers. This prevents inadvertent updates to versions with potential incompatibilities in newer QF-Test versions.
  • Web The default severity level for JavaScript errors in web pages has been changed to 'Warning'. Current browsers simply ignore JavaScript problems by default so that treating those as an error caused too much irritation. The setting can be changed via the option How to handle errors in a web application.

Bugs fixed:

  • SWT On Linux systems like RHEL 6.5 with an old version of glibc, instrumented 64bit versions of Eclipse failed to start. This dependency on a newer version of glibc has been removed.
  • SWT When the QF-Test agent was enabled, an Eclipse / SWT application with embedded Swing components connected as two SUT clients instead of one client with two GUI engines.
  • JavaFX Column header cells in JavaFX tables are now addressed correctly.
  • JavaFX CheckBox elements inside JavaFX table cells or tree nodes are now recorded with the new @:CheckBox item syntax.
  • Web The check for the editable state of TextField, PasswordField and TextAreas nodes was missing for web clients.
  • Web A selection in a ComboBox that initiated a navigation to another page could cause Internet Explorer to crash.
  • Web Check recording in the browser did not work in an area covered by an invisible IFRAME.
  • Web Event synchronization for the AJAX toolkit Ext JS now handles modal dialogs correctly.
  • Web Replay of text input for INPUT elements of type "number" has been fixed.
  • Web When defining proxy settings for Internet Explorer via the qfs.web.browser.settings.doStartupSettings procedure, proxy.pac files were not handled correctly.
  • Swing In newer Java and Browser versions the startup behavior of applets has changed, sometimes causing two JRE versions to start up simultaneously. Depending on timing, this could cause the real applet to connect as $(client):2 instead of $(client). QF-Test now works around this problem by connecting to an applet only after it has become visible.
  • Swing The "All lines" check for Swing JTextArea components was not recorded correctly when clicking below the first line of text.
  • Swing There are now two different text checks for JEditorPane components that display HTML, "Text" and "HTML source". In many cases the check against the plain, displayed text is more useful than the former default check for the HTML source code. Also, the text check for JEditorPane components that display RTF has been fixed.
  • When canceling an edit in the detail view or adding of a new node, QF-Test now checks whether modifications were made and asks for confirmation before discarding those. This confirmation dialog can be suppressed via the option Ask before discarding detail modifications.
  • When toggling the disabled state of the selected node, modifications made but not confirmed in the detail view were silently discarded.
Version 4.0.0-rc1 - July 4, 2014

New features:

  • QF-Test now supports multi-level sub-items for addressing components within an item. A typical example is a TextField within a table cell that can now be addressed as table@Header&row@:TextField. The syntax is extremely powerful with the potential to mix XPath-like syntax with QF-Test's component representation (see subsection 5.9.2).
  • The former 'Id' attribute of 'Window' and 'Component' nodes is now called 'QF-Test ID' in order to disambiguate it from the various kinds of IDs used by the supported GUI engines.
  • Web Generic classes are now also implemented for standard HTML nodes even without a dedicated AJAX resolver.
  • Web Support for the AJAX toolkit RichFaces was updated to RichFaces version 5.
  • SWT Support for Eclipse/SWT has been updated for Eclipse version 4.4 "Luna".
  • SWT The Nebula Grid component is now supported by default and automatically recognized.
  • It is now possible to define a directory for saving temporary run logs in interactive mode via the option Directory for run logs. During QF-Test startup this directory can be specified on the command line via -runlogdir <directory>.
  • The new option Directory map for test suites can be used to map directories for test suites. This is very useful when working with a run log from a machine with a different file layout (e.g. Windows vs. Unix) because with the correct directory mapping QF-Test can locate a test suite without manual help.
  • There are two new special variable groups to conveniently escape special characters. ${quoteitem:...} deals with characters like '@' or '&' in a textual sub-item index and ${quoteregexp:...} handles '.', '(', '[' etc. in a regular expression.
  • It is now possible to specify a directory as a bookmark (see subsection 39.1.5). When such a bookmark is selected, the file selection dialog is opened directly for this directory.

Bugs fixed:

  • Web Multiple instances of the Chrome browser can now run simultaneously on one machine.
  • Web Performance, stability and supported feature set for browsers embedded via JavaFX WebView and JxBrowser were improved.
  • Web The AJAX toolkit RAP does not use the 'ID' attribute of DOM nodes to define IDs, so the option Eliminate all numerals from 'ID' attributes had no effect for RAP. This has been fixed, so that with the option activated, numerals are now removed from IDs generated for RAP elements. In case this causes problems with existing tests, simply deactivate the option Eliminate all numerals from 'ID' attributes.
  • With support for JavaFX and its Swing InterOp embedding capabilities as well as support for embedded browsers, SUT clients often have more than one GUI engine. This caused problems with 'SUT script' nodes in the standard library qfs.qft which were relying on the default GUI engine. All procedures with 'SUT scripts' now have an optional parameter named guiengine which is predefined correctly, so that for example a 'Procedure' in the 'Package' qfs.web automatically works correctly in an embedded browser. In the exceptional case of an SUT client with more than one GUI engine of the same kind you can define the guiengine parameter to address a particular engine.
  • After introducing generic classes, replay was broken in case an anonymous inner class was manually assigned for a component.
  • During dependency resolution, 'Parameter default values' of 'Dependency' nodes were not correctly bound.
  • Performance of test execution in interactive mode suffered from repaint issues caused by the new syntax highlighting in the tree view.
Version 4.0.0-beta3 - May 13, 2014

New features:

  • Web Support was added for Firefox version 30.
  • JavaFX Procedure recording is now fully supported for JavaFX.
  • Web For web applications based on the AJAX framework ZK QF-Test now resolves the original developer-assigned IDs and uses them as names for components.
  • Web Support for the Chrome browser is continuously improving. Up- and download are now fully supported as well as login dialogs, closing of browser windows, key and text input including modifiers and cursor position. Also, there now is a custom profile folder to separate testing from normal use with support for cookie and cache cleanup, locale and proxy settings.
  • Web Embedded browsers in JavaFX WebView or via JxBrowser are also making headway and multiple embedded browsers in one window are now handled correctly.
  • Simple but very useful: The dialog shown when an error or exception occurs during a test now has an additional button for jumping directly to the respective node in the run log.
  • JavaFX A check was added for the checked state of a CheckBox in JavaFX table cells, tree nodes and list entries.
  • The new procedure qfs.web.general.dragFromTo supports HTML5 style drag and drop operations without blocking the application, alternatively at JavaScript level or via hard events.

Bugs fixed:

  • SWT The introduction of generic classes for SWT caused a serious performance issue that has been fixed.
  • SWT For SWT QF-Test refused to replay hard events on negative coordinates which, however, are necessary to reach a window on a second monitor placed to the left of the main screen on Windows.
  • Web The print dialog is now shown correctly in Firefox.
  • In very special cases running a test in a QF-Test daemon could fail due to a missing engine license even though the license was available.
Version 4.0.0-beta2 - April 11, 2014

New features:

  • Generic classes are now also implemented for Swing and SWT.
  • QF-Test records generic class, custom class and system class as extra features named qfs:genericclass, qfs:class and qfs:systemclass respectively. This is useful information and can be used to switch individual components to a more specific or less specific class. In case the generic class also has a more specific sub-type QF-Test also records the extra feature qfs:type, e.g. "PanelTitle" for a Label that is the title of a TitledPanel.
  • Web Supported standard functionality for Chrome now includes support for downloads, handling prompt and confirm dialogs as well as getting and setting the cursor position in text fields which is required for recording mouse events relative to a character position and for 'Text input' nodes which insert text into the middle of existing text.
  • Support for embedded browsers now includes JavaFX WebView and JxBrowser 4. Though this is still work in progress, basic capture and replay for mouse events already works.
  • Web When started from QF-Test Chrome now also automatically accepts SSL certificates for HTTPS connections.
  • It is now possible to choose between different layouts of the test suites in the selection dialog for 'Procedures'.

Bugs fixed:

  • JavaFX Thanks to improved focus management replay for JavaFX on Linux should be more reliable now, especially selection of menu items.
  • JavaFX Replaying hard mouse click for the middle or right button did not work correctly with JavaFX.
  • An Excel 2010 sheet with a cross-sheet reference to a pure number is now handled correctly by the 'Excel data file' node.
Version 4.0.0-beta1 - March 26, 2014

New features:

  • JavaFX JavaFX is the successor of Swing as the standard UI Toolkit in Java 8. QF-Test version 4.0 introduces the new product line QF-Test/fx that fully supports testing JavaFX applications. This GUI engine is nearly complete. Missing at this point is recording of procedures and support for handling the embedded WebView as a full-featured QF-Test Web engine is incomplete.
  • Support for the Chrome browser on Windows is well advanced and mostly stable. As before with Internet Explorer and Firefox the goal is to hide the browser differences and enable a single test to run unchanged on all three browsers. Not implemented at this point are various browser dialogs as well as file up- and download. Another current restriction is that only one instance of Chrome can be run by QF-Test in parallel.
  • The concept of generic classes, initially available for the web engine only, has been extended to support JavaFX and soon all GUI engines. It is the basis for interoperable tests that work for different GUI engines, provides a higher level of abstraction and more flexible and robust component recognition. Recording of generic classes is configured via the option Record generic class names for components.
    See the video Dealing with the explosion of complexity in web test automation for a vivid demonstration of the explosion of complexity in AJAX user interfaces. This applies just as well to JavaFX which shares the automation problems of a UI built from a large number of small GUI elements and for which QF-Test's approach with generic classes fits perfectly.
  • Tolerant class matching when recording: Existing nodes in QF-Test's component hierarchy will be reused as long as they match one of the classes of the recorded component. This means that when switching to/from generic class recording, no components will be forcibly re-recorded. This has no impact on the 'Update components' feature which always updates the respective components according to the current recording option settings.
  • Connection with the SUT is now implemented via the Java agent mechanism by default. It is faster, more stable - especially for Java WebStart and Applets - and much more flexible and powerful. In case of problems the Java agent mechanism can be disabled via the option Connect via QF-Test agent.
  • During SUT startup Jython and Groovy are now loaded on demand, leading to faster and more reliable startup. Jython in particular was one of the main reasons for problems with Java WebStart. This also reduces the overhead and memory footprint if either of the languages is not used at all.
  • Web Support was added for the AJAX framework jQuery UI.
  • SWT Eclipse/SWT support was added for the Eclipse 4.4 "Luna".
  • SWT The Nebula NatTable component is now supported by default and automatically recognized.
  • Colored syntax highlighting of tree nodes was added which significantly improves readability of test suites.
  • The shared terminal now provides coloring of different message types. The new group of Terminal options encloses a bunch of new settings to adjust text display in the shared terminal. Font size and type can be defined as well as a number of regular expressions to highlight and/or filter arbitrary text in the output.
  • It is now possible to set breakpoints on 'Component' nodes so as to enter the debugger as soon as the node gets referenced.
  • For a failed 'Check items' node both run log and report now contain a context diff of the expected and actual values so that all deviations can quickly be identified.
  • Relative 'Test calls' with a leading '.' in the 'Test name' attribute are now supported.
  • In places where QF-Test supports regular expressions, e.g. 'Text', 'Feature' or 'Items', normal text can now be turned into a properly quoted regular expression by right-clicking and selecting 'Escape text for regular expressions' from the context menu.
  • Handling of items with multi-line text, e.g. tree nodes, table headers or cells, list items etc. has been improved.
  • Search and replace operations for variables can now be limited further to cover only variable names or variable values.
  • The manual chapter on integration with HP ALM - QualityCenter was rewritten from scratch: section 26.1.

Changes that can affect test execution:

  • The 'Wait for component to appear' node implicitly waits for the respective SUT client to connect for the required GUI engine. In case the wait fails, a ComponentNotFoundException is thrown with a message that explains whether the component was not found, the respective SUT client is not connected or whether there is no matching GUI engine available for that client. The 'Expected message' attribute of a 'Catch' node can be used to differentiate between those causes.
    In absence of a suitable client there was an inconsistency in older QF-Test versions, causing either a ComponentNotFoundException or a ClientNotConnectedException to be thrown, depending on whether such a client was previously connected or not. In case your test still expects a ClientNotConnectedException you either need to change the 'Catch' node, add an additional 'Catch' or prepend the 'Wait for component to appear' node with a 'Wait for client to connect' node.
  • The new option How to handle disabled components defines what to do when a disabled 'Component' node is referenced during test execution. In previous versions of QF-Test the disabled state was ignored which sometimes led to confusion. The default now is to log an error. Consequently, disabled 'Component' nodes are no longer re-used when recording.
  • There is a new option called Default timeout for checks (ms) that - as its name implies - defines a default timeout for checks that have no 'Timeout' attribute set. It increases general stability of check execution. If your tests include a lot of 'Check' nodes without 'Timeout' that are expected to fail, test execution time may increase. In this case you may want to set this option back to 0, the old default or, preferably, update the respective nodes and set their 'Timeout' attribute to 0.

New packages and procedures in the standard library qfs.qft

Software that is no longer supported:

QFS is taking pains to support even very old software. QF-Test still runs, for example, under Windows XP or with an SUT based on Java 1.5 or 1.6 but for systems that are no longer supported by their own vendors we cannot provide full support.

Libraries that are required for the Firefox and Eclipse/SWT versions listed below are no longer part of the default installation of QF-Test. The majority is still being maintained, albeit with limited testing. If you need support for such a system, please get in touch with QFS via support@qfs.de.

Official support has been dropped for Java 1.5, Internet Explorer 7 and older, Firefox 25 and older (except Firefox 24 ESR) as well as Eclipse/SWT 3.7 and older.