Table of contents

Table of contents
Preface
How to use this manual
I
User manual
1
Installation and startup
1.1System requirements
1.1.1Hard- and Software
1.1.2Supported technologies - QF-Test
1.1.3Supported technologies - System under Test
1.2Windows Installation
1.2.1Installing via the Windows setup file QF-Test-.exe
1.2.2Unpacking the self-extracting archive QF-Test--sfx.exe
1.2.3Completing the installation and configuring Java
1.3Linux Installation
1.4macOS Installation
1.5The license file
1.6The configuration files
1.7Starting QF-Test
2
The user interface
2.1The test suite
2.2Basic editing
2.2.1Checking the validity of attribute values
2.2.2Undo
2.2.3Navigating the tree
2.2.4Insertion marker
2.2.5Moving nodes
2.2.6Transforming nodes
2.2.7Tables
2.2.8Packing and Unpacking
2.2.9Sorting Nodes
11+2.3The command palette
2.3.1Searching
2.3.2Category filters
2.4Advanced editing
2.4.1Searching
2.4.2Replacing
2.4.3Complex searches and replace operations
2.4.4Multiple views
2.4.5Hiding toolbar buttons
3
Quickstart your application
3.1Setup sequence creation – The Quickstart Wizard
3.2Executing the setup sequence
3.3In case the client does not connect ...
3.4Program output and the Clients menu
3.5An application started indirectly from an already connected SUT
4
Capture and replay
4.1Recording sequences
4.2Running tests
4.3Recording checks
4.4Fetching data from the UI
4.5Recording components
4.6Recording of HTTP requests (GET/POST)
5
Components
5.1Components of a GUI
5.2Component nodes versus SmartID
5.2.1Improved readability of tests
5.2.2Test-driven development
5.2.3Keyword-driven testing
5.2.4Stability of recognition
5.2.5Maintainability
5.2.6Performance
5.2.7Combining Component nodes and SmartIDs
5.3How to achieve robust component recognition
5.3.1How to judge robust component recognition
5.3.2Opportunities for optimization
5.4Recognition criteria
5.4.1Class
5.4.2Name
5.4.3Feature
5.4.4Extra features
5.4.5Index
5.4.6Geometry
5.4.7Component hierarchy
5.5Component node
5.6SmartID
5.6.1Use cases for SmartIDs
5.6.2SmartID syntax for Class name
5.6.3SmartID syntax for Name
5.6.4SmartID syntax for Feature
5.6.5SmartID syntax for Extra features
5.6.6SmartID with index
5.6.7SmartID syntax for component hierarchies
5.6.8Recording and replaying SmartIDs
5.6.9Component QF-Test ID as SmartID
5.7Scope
5.8Generic components
5.9Sub-items: Addressing relative to a parent component
5.9.1Addressing via index
5.9.2Addressing via QPath
5.9.3Addressing via XPath and/or CSS selectors
5.9.4Addressing via Items nodes
5.10Troubleshooting component recognition problems
5.10.1Timing synchronisation
5.10.2Recognition
5.11Component tree maintenance
5.11.1Clean up the component tree
5.11.2Update Components
5.12 Inspecting components
5.12.1Show methods
7.0+5.12.2UI Inspector
6
Variables
6.1Variable references
6.1.1Referencing simple variables
6.1.2Referencing group variables
6.1.3Referencing variables in scripts and script expressions
6.2Variable lookup
6.3Defining variables
6.4Variable levels
6.4.1Primary stack
6.4.2Seconday stack
6.5Displaying variables in debug mode
6.5.1Displaying simple variables – Example
6.5.2Displaying group variables
6.6Data types of variables
6.6.1JSON data
6.7External data
6.8Special groups
6.9Immediate and lazy binding
6.10Encrypted Variables
7
Problem analysis and debugging
7.1The run log
7.1.1Error states
7.1.2Navigating the run log tree
7.1.3Run-time behavior
7.1.4Showing return values
7.1.5Accepting values of failed checks as good
7.1.6Split run logs
7.1.7Run log options
7.1.8Creating a test suite from the run log
7.1.9Merging run logs
10.1+7.1.10Copying steps from the run log to a test suite
7.2The debugger
7.2.1Entering the debugger
7.2.2Displaying the current variable values
7.2.3Debugger commands
7.2.4Manipulating breakpoints
7.2.5The debugger window
11+7.3The Recording Log
8
Organizing the test suite
8.1Test suite structure
8.2Test set and Test case nodes
8.2.1 Test management with Test set and Test case nodes
8.2.2Concept
8.2.3Variables and special attributes
8.3Sequence and Test step nodes
8.4Setup and Cleanup nodes
8.5Procedures and Packages
8.5.1Local Procedures and Packages
8.5.2Relative Procedures
8.5.3Inserting Procedure call nodes
8.5.4Parameterizing nodes
8.5.5Transforming a Sequence into a Procedure
8.6Dependency nodes
8.6.1Concept
8.6.2Usage of Dependencies
8.6.3Dependency execution and Dependency stack
8.6.4Characteristic variables
8.6.5Forced cleanup
8.6.6Rolling back Dependencies
8.6.7Error escalation
8.6.8Error handling
8.6.9Name spaces for Dependencies
8.7Documenting test suites
9
Projects
9.1Subprojects
9.2Project View
9.3The file qftest.qpj
10
The standard library
11
Scripting
11.1General
11.2Script expressions
11.3The run context rc
11.3.1Logging messages
11.3.2Performing checks
11.3.3Variables
11.3.4Accessing the SUT's GUI components
11.3.5Calling Procedures
11.3.6Setting options
11.3.7Override components
11.4Fundamentals of the Jython integration
11.4.1Jython Variables
11.4.2Jython Modules
11.4.3Post-mortem debugging of Jython scripts
11.4.4Boolean type
11.4.5Jython strings and character encodings
11.4.6Getting the name of a Java class
11.4.7A complex example
11.5Scripting with Groovy
11.5.1Groovy packages
11.6Scripting with JavaScript
11.6.1JavaScript imports
11.6.2NPM modules
11.6.3Print statements
11.6.4Execution
12
Unit Tests
12.1Java Classes as the Source for the Unit Test
12.2Basics of the Test Scripts
12.2.1Groovy Unit Tests
12.2.2Jython Unit Tests
12.2.3JavaScript Unit test
12.3Injections
12.3.1Component-Injections
12.3.2WebDriver-Injections
12.4Unit Tests in Report
13
Java desktop application testing
14
Web testing
14.1Supported browsers
14.2General approach
14.3Browser connection
14.4Recognition of web components and toolkits
14.5Cross browser tests
14.6Emulation of mobile browsers
14.7Web-Tests in headless mode
14.8Integrating existing Selenium web tests
14.9Selecting the browser installation
5.0+
15
Native Windows application testing
15.1Getting started
15.2Technical background
15.3Launching/Attaching to an application
15.4Recording
15.5Components
15.6Playback and Patterns
15.7Scripting
15.8Options
15.8.1Windows scaling
15.8.2Visibility
15.8.3Attaching to a window with a given class
15.8.4Child count limitation
15.9(Current) Limitations
15.10Links
6.0+
16
Android application testing
16.1Preconditions and known restrictions
16.1.1Preconditions
16.1.2Known restrictions
16.2Emulator or real device
16.3Installing Android Studio, emulator and virtual devices (AVD)
16.3.1Android Studio installation
16.3.2Android Studio virtual device configuration
16.4Connecting to a real Android device
16.5Create a QF-Test setup sequence for Android testing
16.5.1Usage of an Android emulator
16.5.2Usage of a real Android device
16.6Record actions and checks for Android
16.7Android utility procedures
8.0+
17
iOS application testing
17.1Preconditions and known restrictions
17.1.1Preconditions
17.1.2Known restrictions
17.2Installing Xcode, Simulators and IDB
17.2.1Xcode Installation
17.2.2iOS Development Bridge (idb) Installation
17.3Testing on a real iOS device
17.4Create a QF-Test Setup sequence for iOS testing
17.5Record actions and checks for iOS
17.6iOS utility procedures
18
PDF document testing
18.1PDF Client
18.1.1PDF Client start
18.1.2PDF Client window
18.2PDF events
18.2.1Open a PDF document
18.2.2Switch page
18.3Checks for PDF components
18.3.1Check text
18.3.2Check image
18.3.3'Check Font'
18.3.4'Check Font size'
18.4PDF component types
18.5PDF component recognition
9.0.0+
19
Accessibility Testing
19.1Getting started
19.2Overview of all accessibility tests
19.2.1Axe checks with QF-Test
19.2.2Color contrast check for simple graphics
19.2.3Focus visible check
19.2.4Checking the "lang" attribute
19.2.5The "impact" rating of accessibility tests
19.3A11y run logs and reports
19.3.1Working with the run log
19.3.2Notes on report generation
20
Webswing and JPro: Java desktop application testing in a browser
20.1Technical concepts of JiB for Webswing and JPro
21
Electron application testing
21.1Starting the Electron Client
21.1.1Electron settings for the quickstart wizard
21.2Electron specific functionality of QF-Test
21.2.1Native Menus
21.2.2Native Dialogs
21.2.3Extended Javascript-API
21.3Technical remarks on testing Electron applications in WebDriver connection mode
22
WebAPI – Web services testing
22.1Structure of WebAPI tests
22.2Request authentication data
22.2.1Accept all SSL certificates
22.3Request settings
22.3.1Cookies
22.3.2Proxy
22.3.3Timeouts and network errors
22.4Body
22.4.1multipart/form-data
22.5End-to-end scenarios – Business application logic
22.6Single-request API call generator
22.7Reporting of test runs
22.8Postman migration
22.9Importing an OpenAPI Specification
22.9.1What is covered from the OpenAPI standard
22.9.2Generated test suite structure
22.9.3CRUD test cases
22.9.4Before running the generated suite
22.9.5Additional notes and limitations
22.10HTTP standards and web services
22.10.1Web API Inspector
22.11The Server HTTP request and Browser HTTP request nodes (legacy)
23
Data-driven testing
23.1Data driver examples
23.2General use of Data drivers
23.3Examples for Data drivers
23.4Advanced use
24
Reports and test documentation
24.1Reports
24.1.1Report concepts
24.1.2Report contents
24.1.3Creating reports
24.1.4Customizing reports
24.2Testdoc documentation for Test sets and Test cases
24.3Pkgdoc documentation for Packages, Procedures and Dependencies
25
Test execution
25.1Test execution in batch mode
25.1.1Command line usage
25.1.2Windows batch script
25.1.3Groovy
25.2Executing tests in daemon mode
25.2.1Launching the daemon
25.2.2Controlling a daemon from QF-Test's command line
25.2.3Controlling a daemon with the daemon API
25.3Re-execution of nodes (Rerun)
25.3.1Triggering rerun from a run log
25.3.2Rerunning failing nodes immediately
26
Using Artificial Intelligence
26.1Bring your own model
26.2Setting up AI
26.2.1Setting up CLI tools (Claude Code, GitHub Copilot)
26.3AI During Editing
11+26.3.1Plan and Generate Tests with AI
26.3.2Generate Data with AI
26.4AI During Test Execution
26.4.1Check Text with AI
26.4.2The AI Instruction Node
26.4.3Scripting with AI
11.0+26.5MCP Server
26.5.1Set up QF-Test MCP Server
26.5.2Built-in MCP Tools
26.5.3Create Custom MCP Tools and Prompts
26.5.4Security considerations
27
Distributed test development
27.1Referencing nodes in another test suite
27.2Managing Components
27.3Merging test suites
27.3.1Importing Components
27.3.2 Importing Procedures and Testcases
27.4Strategies for distributed development
27.5Static validation of test suites
27.5.1Avoiding invalid references
27.5.2Unused procedures
11.0+
28
Procedure calls: recording and converting
29
Automated Creation of Basic Procedures
29.1Introduction
29.2How to use the Procedure Builder
29.3Configuration of the Procedure Builder
29.3.1The Procedure Builder definition file
30
Interaction with Test Management Tools
10.0+30.1Q12-TMT
30.1.1Integration concepts
30.1.2Uploading test results to TMT
10.1+30.2Xray
30.2.1Integration concepts
30.2.2Uploading test results to Xray
30.3HP ALM - Quality Center
30.3.1Introduction
30.3.2Step-by-step integration guide
30.3.3Troubleshooting
30.4Imbus TestBench
30.4.1Introduction
30.4.2Creating QF-Test template from interactions
30.4.3Importing test execution results
30.5QMetry
30.5.1Introduction
30.5.2Sample Configuration
30.6TestLink
30.6.1Introduction
30.6.2Generating template test suites for QF-Test from test cases
30.6.3Execution of test cases
30.6.4Importing QF-Test results into TestLink
31
Integration with Development Tools
31.1Eclipse
31.1.1Installation
31.1.2Configuration of the test nodes
31.2Ant
31.3Maven
31.4Jenkins
31.4.1Install and start Jenkins
31.4.2Requirements for GUI tests
31.4.3Install QF-Test Plugin
7.0+31.5JUnit Jupiter
31.6TeamCity CI
6.0+
32
Integration with Robot Framework
32.1Introduction
32.2Prerequisites and installation
32.3Getting started
32.4Using the library
32.5Creating your own keywords
33
Keyword-driven testing with QF-Test
33.1Introduction
33.2Simple Keyword-driven testing with QF-Test
33.2.1Business-related Procedures
33.2.2Atomic component-oriented procedures
33.3Keyword-driven testing using dynamic or generic components
33.4Behavior-driven testing (BDT)
33.4.1Behavior-Driven Testing (BDT) from technical perspective
33.4.2Behavior-Driven Testing (BDT) from business perspective
33.5Scenario files
33.6Custom test case description
33.7Adapting to your software
34
Usage of QF-Test in Docker Environments
34.1What is Docker?
34.2QF-Test Docker Images
35
Performing GUI-based load tests
35.1Background and comparison with other techniques
35.2Load testing with QF-Test
35.2.1Provision of test systems
35.2.2Conception of the test run
35.2.3Preparing test systems prior to the test run
35.2.4Test execution
35.2.5Evaluating results
35.3Hints on test execution
35.3.1Synchronization
35.3.2Measuring end-to-end response times
35.4Troubleshooting
35.5Web load testing with headless browsers
36
Executing Manual Tests in QF-Test
36.1Introduction
36.2Step-by-step Guide
36.3Structure of the Excel file
36.4The ManualTestRunner test suite
36.5Results
II
Best Practices
37
Introduction
38
How to start a testing project
38.1Infrastructure and testing environment
38.2Location of files
38.2.1Network installation
38.3Component Recognition
39
Organizing test suites
39.1Organizing tests
39.2Modularization
39.3Parameterization
39.4Working in multiple test suites
39.5Roles and responsibilities
39.6Managing components at different levels
39.7Reverse includes
40
Efficient working techniques
40.1Using QF-Test projects
40.2Creating test suites from scratch
40.3The standard library qfs.qft
40.4Component storage
40.5Extending test suites
40.6Working in the script editor
41
Hints on setting up test systems
41.1Using the task scheduler
41.2Remote access to Windows systems
41.3Automated logon on Windows systems
41.4Test execution on Linux
42
Test execution
42.1Dependencies
42.2Timeout vs. delay
42.3What to do if the run log contains an error
III
Reference manual
43
Options
43.1General options
43.1.1Project settings
7.0+43.1.2Saving test suites
43.1.3Display
43.1.4Editing
43.1.5Bookmarks
43.1.6External tools
43.1.7Backup files
43.1.8Library
43.1.9License
43.1.10Updates
10.1+43.2Test management options
43.2.1TMT settings
43.2.2Xray settings
43.3Recording options
43.3.1Events to record
43.3.2Events to pack
43.3.3Components
43.3.4Recording sub-items
6.0+43.3.5Recording Window
43.3.6Procedure calls
43.3.7Recording procedures
43.4Replay options
43.4.1Client options
43.4.2Terminal options
43.4.3Event handling
43.4.4Component recognition
43.4.5Delays
43.4.6Timeouts
43.4.7Backward compatibility
7.0+43.5SmartID und qfs:label
6.0+43.6Android
8.0+43.7iOS
43.8Web options
43.8.1HTTP Requests
43.8.2Web request step defaults
43.8.3Backward compatibility
43.9SWT options
43.10UI Inspector options
43.11Artificial Intelligence
10.0+43.11.1General AI options
11.0+43.11.2Agent skills options
11.0+43.11.3AI security options
43.12Debugger options
43.13Run log options
43.13.1General run log options
43.13.2Options for splitting run logs
43.13.3Options determining run log content
43.13.4Run log options for screenshots
43.13.5Options for mapping between directories with test suites
43.14Variables
43.15Runtime only
44
Elements of a test suite
44.1The test suite and its structure
44.1.1Test suite
44.2Test and Sequence nodes
44.2.1Test case
44.2.2Test set
44.2.3Test call
44.2.4Sequence
44.2.5Test step
44.2.6Sequence with time limit
44.2.7Extras
44.3Dependencies
44.3.1Dependency
44.3.2Dependency reference
44.3.3Setup
44.3.4Cleanup
44.3.5Error handler
44.4Data driver
44.4.1Data driver
44.4.2Data table
44.4.3Database
44.4.4Excel data file
44.4.5CSV data file
44.4.6Data loop
44.5Procedures
44.5.1Procedure
44.5.2Procedure call
44.5.3Return
44.5.4Package
44.5.5Procedures
11+44.5.6Procedure call definition
44.6Control structures
44.6.1Loop
44.6.2While
44.6.3Break
44.6.4Continue
44.6.5If
44.6.6Elseif
44.6.7Else
44.6.8Try
44.6.9Catch
44.6.10Finally
44.6.11Throw
44.6.12Rethrow
44.6.13Server script
44.6.14SUT script
44.7Processes
44.7.1Start Java SUT client
44.7.2Start SUT client
44.7.3Start process
44.7.4Execute shell command
44.7.5Start web engine
44.7.6Start PDF client
44.7.7Start windows application
44.7.8Attach to windows application
44.7.9Launch Android emulator
44.7.10Connect to Android device
44.7.11Connect to iOS device
44.7.12Wait for client to connect
44.7.13Wait for mobile device
44.7.14Open browser window
44.7.15Launch a mobile app
44.7.16Stop client
44.7.17Wait for process to terminate
44.8Events
44.8.1Mouse event
44.8.2Key event
44.8.3Text input
44.8.4Window event
44.8.5Component event
44.8.6Selection
44.8.7File selection
44.9Checks
44.9.1Check text
44.9.2Check text with AI
44.9.3Boolean check
44.9.4Check items
44.9.5Check selectable items
44.9.6Check image
44.9.7Check geometry
44.10Queries
44.10.1Fetch text
44.10.2Fetch index
44.10.3Fetch geometry
44.10.4Fetch image
44.11WebAPI
44.11.1Web request
44.11.2Pre-request handler
44.11.3Post-request handler
44.11.4Request authentication data
44.11.5Request settings
44.12Miscellaneous
44.12.1Comment
44.12.2Error
44.12.3Warning
44.12.4Message
44.12.5Set variable
44.12.6Set image
44.12.7Wait for component to appear
44.12.8Wait for document to load
44.12.9Wait for download to finish
44.12.10Load resources
44.12.11Load properties
44.12.12Server HTTP request
44.12.13Browser HTTP request
44.12.14Unit test
44.12.15Install CustomWebResolver
44.12.16 Accessibility Checks
11+44.12.17AI Instruction
44.13Windows, Components and Items
44.13.1Window
44.13.2Web page
44.13.3Component
44.13.4Item
44.13.5Window group
44.13.6Component group
44.13.7Windows and components
44.14Deprecated nodes
44.14.1Test
44.14.2Procedure installCustomWebResolver
45
Exceptions
IV
Technical reference
46
Command line arguments and exit codes
46.1Call syntax
46.2Command line arguments
46.2.1Arguments for the starter script
46.2.2Arguments for the Java VM
46.2.3Arguments for QF-Test
46.2.4Placeholders in the filename parameter for run log and report
46.3Exit codes for QF-Test
47
GUI engines
48
Running an application from QF-Test
48.1Various methods to start the SUT
48.1.1A standalone script or executable file
48.1.2An application launched through Java WebStart
48.1.3An application started with java -jar <archive>
48.1.4 An application started with java -classpath <classpath> <class>
48.1.5 A web application in a browser
48.1.6Opening a PDF Document
49
JRE and SWT instrumentation
49.1JRE deinstrumentation
49.2SWT instrumentation
49.2.1Preparation for manual SWT instrumentation
49.2.2Manual SWT instrumentation for eclipse based applications
49.2.3Manual instrumentation for standalone SWT applications
50
Technical information about components
50.1Weighting of recognition features for recorded components
50.2Generating the component QF-Test ID
50.3SmartIDs - general syntax
50.4SmartIDs - special characters
50.5Android - list of trivial component identifiers
51
Technical details about miscellaneous issues
51.1Timing
51.2Regular expressions
51.3Line breaks under Linux and Windows
51.4Quoting and escaping special characters
51.5Include file resolution
52
Advanced scripting (Jython, Groovy and JavaScript)
52.1Advanced script concepts
52.1.1Module load-path
52.1.2The plugin directory
52.1.3Initialization (Jython)
52.1.4Namespace environment for script execution (Jython)
52.1.5Exception handling
52.1.6Debugging scripts (Jython)
52.2The rc module: Run context API
52.2.1The expand parameter
52.3The ai module
52.4The qf module
52.5The Image API
52.5.1The ImageWrapper class
10.0+52.6WebAPI scripting API
10.0+52.6.1The QF-Test WebAPI module (qw)
10.0+52.6.2The WebRequest class (qw.request)
10.0+52.6.3The WebResponse class (qw.response)
52.7The JSON module
52.8The excelapi module
52.9The Assertions module: Natural Language Assertions
52.9.1Motivation
52.9.2API documentation
52.9.3Result handling
53
Web
53.1Improving component recognition with a CustomWebResolver
53.1.1General configuration
53.1.2The Install CustomWebResolver node
53.1.3CustomWebResolver – Tables
53.1.4CustomWebResolver – Tree
53.1.5CustomWebResolver – TreeTable
53.1.6CustomWebResolver – Lists
53.1.7CustomWebResolver – Combo boxes
53.1.8CustomWebResolver – TabPanel and Accordion
53.1.9Example for "CarConfigurator Web" demo
53.2Special support for various web frameworks
53.2.1Web framework resolver concepts
53.2.2Setting unique IDs
53.3Browser connection mode
53.3.1QF-Driver connection mode
5.3+53.3.2CDP-Driver connection mode
53.3.3WebDriver in general
53.3.4Known limitations of the WebDriver mode
53.4Web – Pseudo Attributes
53.5Accessing hidden fields on a web page
53.6WebDriver with Safari
54
Configuring the "Accessibility Checks" node
54.1YAML syntax of the Accessibility Checks node
54.2Top-level category Rules to Check
54.2.1Generic parameters of accessibility tests
54.2.2Rules to Check – axe
54.2.3Rules to Check – color-contrast-simple-graphics
54.2.4Rules to Check – focus-visible
54.2.5Rules to Check – language-lang-value
54.3Top-level category Issues to Ignore
54.3.1Issues to Ignore – URL
54.3.2Issues to Ignore – Errors and warnings
11.0+
55
Configuration of the Procedure call definition node
55.1Mapping procedure structures
55.2Setting values in the procedure call
55.2.1Setting parameters in the procedure call
55.2.2Setting a variable for the return value
55.2.3Setting a comment/doctags
55.3Optional nodes
55.4Special case: adding a comment, no conversion
55.5Criteria for identifying nodes
55.5.1Node type
55.5.2Node attributes
55.5.3Component values
55.5.4State conditions
55.6Automatic creation of procedure call definitions
55.6.1Definition-relevant nodes
55.6.2Mandatory and optional nodes
55.6.3Resolving procedure calls
55.6.4Conditional structures
55.6.5Priority
55.6.6Using substitute procedures for generating definitions
55.6.7Doctags for controlling automatic definition creation
55.7YAML syntax of the Procedure call definition node
55.7.1Individual definition
55.7.2priority
55.7.3sequential group
55.7.4choice group
55.7.5unsorted group
55.7.6expected nodes
55.7.7node
55.7.8node type
55.7.9attributes
55.7.10component
55.7.11condition
55.7.12set procedure call parameters
55.7.13your-parameter
55.7.14overwrite option
55.7.15separator
55.7.16set variable for return value
55.7.17doctags
55.7.18repeat/occurrences
55.8Placeholders
55.8.1Placeholders for node attributes (apart from component nodes)
55.8.2Placeholders for component nodes
55.8.3Placeholders for component states in the SUT
55.9Entries in the recording log
56
Controlling native Windows applications via the UIAuto module - without the QF-Test win engine
56.1Proceeding
56.1.1Starting the application
56.1.2Listing the GUI elements of a window
56.1.3Information on single GUI elements
56.1.4Identifiers for GUI elements
56.1.5Actions on GUI elements
56.2Example
56.2.1Starting the application
56.2.2GUI element information
57
Controlling and testing native macOS applications
57.1Proceeding
57.1.1Starting the application
57.1.2Listing the GUI elements of a window
57.1.3Information on single GUI elements
57.1.4Identifiers for GUI elements
57.1.5Actions on GUI elements
58
Extension APIs
58.1The resolvers module
58.1.1Usage
58.1.2Implementation
58.1.3addResolver
58.1.4removeResolver
58.1.5listNames
58.1.6Accessing 'Best label'
58.1.7 The NameResolver Interface
58.1.8 The GenericClassNameResolver Interface
58.1.9 The ClassNameResolver Interface
58.1.10 The FeatureResolver Interface
58.1.11The ExtraFeatureResolver Interface
58.1.12 The ItemNameResolver Interface
58.1.13 The ItemValueResolver Interface
58.1.14The TreeTableResolver Interface
58.1.15The InterestingParentResolver Interface
58.1.16 The TooltipResolver Interface
58.1.17The IdResolver interface
58.1.18 The EnabledResolver Interface
58.1.19 The VisibilityResolver Interface
58.1.20 The MainTextResolver Interface
58.1.21 The WholeTextResolver Interface
58.1.22 The BusyPaneResolver Interfaces
58.1.23 The GlassPaneResolver Interfaces
8.0+58.1.24 The TreeIndentationResolver Interface
58.1.25 The EventSynchronizer Interface
58.1.26 The BusyApplicationDetector Interface
58.1.27Matcher
58.1.28External Implementation
58.2The ResolverRegistry
58.3 Implementing custom item types with the ItemResolver interface
58.3.1ItemResolver concepts
58.3.2The ItemResolver interface
58.3.3The class SubItemIndex
58.3.4The ItemRegistry
58.3.5Default item representations
58.4 Implementing custom checks with the Checker interface
58.4.1The Checker interface
58.4.2The class Pair
58.4.3 The CheckType interface and its implementation DefaultCheckType
58.4.4The class CheckDataType
58.4.5The class CheckData and its subclasses
58.4.6The CheckerRegistry
58.4.7Custom checker example
58.5 Working with the Eclipse Graphical Editing Framework (GEF)
58.5.1Recording GEF items
58.5.2Implementing a GEF ItemNameResolver2
58.5.3Implementing a GEF ItemValueResolver2
58.6Test run listeners
58.6.1The TestRunListener interface
58.6.2The class TestRunEvent
58.6.3The class TestSuiteNode
58.7ResetListener
58.8DOM processors
58.8.1The DOMProcessor interface
58.8.2The DOMProcessorRegistry
58.8.3Error handling
58.9Image API extensions
58.9.1The ImageRep class
58.9.2The ImageComparator interface
58.9.3The ImageRepDrawer class
58.10Pseudo DOM API
58.10.1The abstract Node class
58.10.2The DocumentNode class
58.10.3The FrameNode class
58.10.4The DomNode class
58.10.5The DialogNode class
58.11WebDriver SUT API
58.11.1The WebDriverConnection class
5.0+58.12Windows Control API
58.12.1The WinControl class
59
Daemon mode
59.1Daemon concepts
59.2Daemon API
59.2.1The DaemonLocator
59.2.2The Daemon
59.2.3The TestRunDaemon
59.2.4The DaemonRunContext
59.2.5The DaemonTestRunListener
59.3Daemon security considerations
59.3.1Creating your own keystore
59.3.2Specifying the keystore
59.3.3Specifying the keystore on the client side
60
The Procedure Builder definition file
60.1Placeholders
60.1.1Fallback values for placeholders
60.2Conditions for Package and Procedure Definition
60.3Interpretation of the Component Hierarchy
60.4Details about the @CONDITION tag
61
The ManualStepDialog
61.1The ManualStepDialog API
62
Details about transforming nodes
62.1Introduction
62.2Transformation with type changes
62.3Additional transformations below the Extras node
62.3.1Transformations without side-effects
62.3.2Transformations with side-effects
63
Details about the algorithm for image comparison
63.1Introduction
63.2Description of algorithms
63.2.1Classic image check
63.2.2Pixel-based identity check
63.2.3Pixel-based similarity check
63.2.4Block-based identity check
63.2.5Block-based similarity check
63.2.6Histogram check
63.2.7Analysis with Discrete Cosine Transformation
63.2.8Block-based analysis with Discrete Cosine Transformation
63.2.9Bilinear Filter
63.3Description of special functions
63.3.1Image-in-image search
64
Result lists
64.1Introduction
64.2Specific list actions
64.2.1All types of lists
64.2.2Replacing
64.2.3Error list
64.3Exporting and loading results
65
Generic classes
65.1Accordion
65.2BusyPane
65.3Button
65.4Calendar
65.5CheckBox
65.6Closer
65.7ColorPicker
65.8ComboBox
65.9Divider
65.10Expander
65.11FileChooser
65.12Graphics
65.13Icon
65.14Indicator
65.15Item
65.16Label
65.17Link
65.18List
65.19LoadingComponent
65.20Maximizer
65.21Menu
65.22MenuItem
65.23Minimizer
65.24ModalOverlay
65.25Panel
65.26Popup
65.27ProgressBar
65.28RadioButton
65.29Restore
65.30ScrollBar
65.31Separator
65.32Sizer
65.33Slider
65.34Spacer
65.35Spinner
65.36SplitPanel
65.37Table
65.38TableCell
65.39TableFooter
65.40TableHeader
65.41TableHeaderCell
65.42TableRow
65.43TabPanel
65.44Text
65.45TextArea
65.46TextField
65.47Thumb
65.48ToggleButton
65.49ToolBar
65.50ToolBarItem
65.51ToolTip
65.52Tree
65.53TreeNode
65.54TreeTable
65.55Window
66
Doctags
66.1Doctags for reporting and documentation
66.1.1@noreport Doctag
66.2Doctags for Robot Framework
66.3Doctags for test execution
66.4Doctags for Editing
66.5Doctags influencing the procedure builder
A
FAQ - Frequently Asked Questions
B
Release notes
B.1QF-Test version 11.0
B.1.1Version 11.0.0 - July 29, 2026
B.2QF-Test version 10.1
B.2.1Version 10.1.3 - July 7, 2026
B.2.2Version 10.1.2 - June 23, 2026
B.2.3Version 10.1.1 - June 2, 2026
B.2.4Changes that can affect test execution
B.2.5Version 10.1.0 - May 7, 2026
B.3QF-Test version 10.0
B.3.1Version 10.0.3 - March 11, 2026
B.3.2Version 10.0.2 - January 15, 2026
B.3.3Version 10.0.1 - December 18, 2025
B.3.4Changes that can affect test execution
B.3.5Version 10.0.0 - December 9, 2025
B.4QF-Test version 9.0
B.4.1Version 9.0.6 - September 10, 2025
B.4.2Version 9.0.5 - July 30, 2025
B.4.3Version 9.0.4 - June 11, 2025
B.4.4Version 9.0.3 - April 29, 2025
B.4.5Version 9.0.2 - April 9, 2025
B.4.6Version 9.0.1 - March 12, 2025
B.4.7Changes that can affect test execution
B.4.8Version 9.0.0 - February 20, 2025
B.5QF-Test version 8.0
B.5.1Version 8.0.2 - December 05, 2024
B.5.2Version 8.0.1 - September 11, 2024
B.5.3Changes that can affect test execution
B.5.4Version 8.0.0 - August 8, 2024
B.6QF-Test version 7.1
B.6.1Version 7.1.5 - July 16, 2024
B.6.2Version 7.1.4 - June 12, 2024
B.6.3Version 7.1.3 - April 24, 2024
B.6.4Version 7.1.2 - March 14, 2024
B.6.5Version 7.1.1 - February 27, 2024
B.6.6Changes that can affect test execution
B.6.7Version 7.1.0 - February 20, 2024
B.7QF-Test version 7.0
B.7.1Version 7.0.8 - December 5, 2023
B.7.2Version 7.0.7 - October 11, 2023
B.7.3Version 7.0.6 - September 29, 2023
B.7.4Version 7.0.5 - September 20, 2023
B.7.5Version 7.0.4 - August 30, 2023
B.7.6Version 7.0.3 - Juli 13, 2023
B.7.7Version 7.0.2 - June 22, 2023
B.7.8Version 7.0.1 - May 31, 2023
B.7.9Changes that can affect test execution
B.7.10Version 7.0.0 - April 27, 2023
B.8QF-Test version 6.0
B.8.1Version 6.0.5 - March 15, 2023
B.8.2Version 6.0.4 - November 29, 2022
B.8.3Version 6.0.3 - September 6, 2022
B.8.4Version 6.0.2 - July 20, 2022
B.8.5Version 6.0.1 - June 9, 2022
B.8.6Changes that can affect test execution
B.8.7Version 6.0.0 - May 17, 2022
C
Keyboard shortcuts
C.1Navigation and editing
C.2UI Inspector
C.3Record and replay functions
C.4Keyboard helper
D
Glossary
E
Privacy
E.1Server data for version query
E.2Sending support requests from within QF-Test
E.3Context Information for Online Manual
E.4Request Data on WebDriver Download
E.5Client data in QF-Test log files
E.6AI Integration and Third-Party Language Models
E.7QF-Test MCP Server and AI Integration
F
Third party software
List of figures
List of tables