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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Bugs fixed:
- Web
Support for Firefox version 33 has been updated to cope with the new Firefox versioning
scheme introduced with Firefox 33.1.
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.
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.
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:
| Description | Further 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.
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 terminal for an SUT client, the command history from the
most recently created Jython or Groovy terminal 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.
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.4). 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.
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.
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.
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.