42.11
Miscellaneous

This section lists the remaining nodes that don't fit in well with any of the other sections.

42.11.1
Comment

This node is thought for documentation purpose. It allows you to add a comment to your test suite.

Contained in: Everywhere

Children: None

Execution: A comment node does not affect execution.

Attributes:

Comment attributes
Figure 42.71:  Comment attributes
Heading

The string that should get displayed in the tree, a summary of the comment or the comment itself.

This attribute allows to use the following HTML-Tags <i>italic Text</i>, <u>underlined text</u>, <s>stroke text</s> and <b>bold text</b> in order to beautify the representation in the tree. Furthermore it is possible to specify a text color via a style="color:colorname" or the color="colorname" attribute (also in combination with the <span>, <em>, <strong> or <font>tag).

Variable: Yes

Restrictions: Must not be empty.

Comment

Here you can enter a comment that explains the purpose of this node. This is the preferred way of documenting the test suite.

Note For detailed documentation, especially for Test set, Test case or Procedure nodes, this text area might not be the right place. There are many excellent editors that are much better suited to this task. The option External editor command lets you define an external editor in which comments can be edited conveniently by pressing Alt⁠+⁠Return or by clicking the External editor button.

You can trigger special behaviors of some nodes using doctags, please see Doctags.

If you enter text in the comment field of a Component node, the node will be considered as 'used' when you want to mark or delete unused components.

Variable: Yes

Restrictions: None

42.11.2
Error

With the Error node you can write an error to the run log. Use the attributes to specify the information to be written to the run log.

The node can replace scripts containing only rc.logError. It can also replace calls to the procedure qfs.run-log.logError of The standard library.

Contained in: All kinds of sequences.

Children: None

Execution: The Error node writes an error to the run log.

Attributes:

Attributes of the error node
Figure 42.72:  Error attributes
Text

The message text. In the tree node long texts will be truncated.

Variable: Yes

Restrictions: None

Add diagnostic client information

When selected, further information concerning each client process will be written to the run log.

Variable: Yes

Restrictions: None

Print message to terminal also

If active, the message is also written to the QF-Test Terminal.

Variable: Yes

Restrictions: None

Create screenshots

The attribute indicates whether QF-Test should log screenshots to the run log of the whole monitor(s) attached, taking into account the setting of the option Limit screenshots to relevant screens relevant to security and data protection. The default setting of the option only allows screenshots of monitors where either a window of QF-Test or the tested application is showing. By default, in batch mode (no QF-Test GUI) no screenshot will be logged when no SUT window is showing.

Setting Description
Always Always log screenshots to the run log. This may result in memory issues in case a test run has many errors. Options for splitting run logs may be used to reduce memory consumption in such a case.
The option overrules the following settings:
Never Do NOT log screenshots.
Based on options Log and create screenshots depending on the options set. See Options determining run log content for further information.
Variables, for example $(logScreenshots) A reference to a variable containing one of the following values (case insensitive). Depending on the value QF-Test will either always log the screenshots or never or take the options into account.
The following values indicate QF-Test should always log screenshots:
always, 1, true or yes.
The following values indicate QF-Test should never log screenshots:
never, 0, false or no.
The following values indicate QF-Test should decide based on the options:
based on options, options or option.
Table 42.27:  Settings for "Create Screenshots"

Variable: Yes

Restrictions: None

Create client screenshots

The attribute indicates whether QF-Test should log screenshots of all client windows to the run log, even if they may be hidden by other windows.

Setting Description
Always Always log screenshots to the run log. This may result in memory issues in case a test run has many errors. Options for splitting run logs may be used to reduce memory consumption in such a case.
The option overrules the following settings:
Never Do NOT log screenshots.
Based on options Log and create screenshots depending on the options set. See Options determining run log content for further information.
The setting of the option Create screenshots of the client's windows upon error in client is irrelevant, as the node has effect on all clients, just like a Server script.
Variables, for example $(logScreenshots) A reference to a variable containing one of the following values (case insensitive). Depending on the value QF-Test will either always log the screenshots or never or take the options into account.
The following values indicate QF-Test should always log screenshots:
always, 1, true or yes.
The following values indicate QF-Test should never log screenshots:
never, 0, false or no.
The following values indicate QF-Test should decide based on the options:
based on options, options or option.
Table 42.28:  Settings for "Create Client Screenshots"

Variable: Yes

Restrictions: None

QF-Test ID

At the moment the QF-Test ID attribute has no meaning for this type of node.

Variable: No

Restrictions: Must not contain any of the characters '\', '#', '$', '@', '&', or '%' or start with an underscore ('_').

Delay before/after

These attributes cause a delay before or after the execution of the node. If a value is empty, the Default delay from the global options is used.

Variable: Yes

Restrictions: Valid number >= 0

Comment

Here you can enter a comment that explains the purpose of this node. This is the preferred way of documenting the test suite.

Note For detailed documentation, especially for Test set, Test case or Procedure nodes, this text area might not be the right place. There are many excellent editors that are much better suited to this task. The option External editor command lets you define an external editor in which comments can be edited conveniently by pressing Alt⁠+⁠Return or by clicking the External editor button.

You can trigger special behaviors of some nodes using doctags, please see Doctags.

If you enter text in the comment field of a Component node, the node will be considered as 'used' when you want to mark or delete unused components.

Variable: Yes

Restrictions: None

42.11.3
Warning

With the Warning node you can write a warning to the run log. Use the attributes to specify the information to be written to the run log.

The node can replace scripts containing only rc.logWarning. It can also replace calls to the procedure qfs.run-log.logWarning of The standard library.

Contained in: All kinds of sequences.

Children: None

Execution: The Warning node writes a warning to the run log.

Attributes:

Attributes of the warning node
Figure 42.73:  Warning attributes
Text

The message text. In the tree node long texts will be truncated.

Variable: Yes

Restrictions: None

Include in report

When this option has been selected, the node will be written to the report.

Variable: Yes

Restrictions: None

Add diagnostic client information

When selected, further information concerning each client process will be written to the run log.

Variable: Yes

Restrictions: None

Print message to terminal also

If active, the message is also written to the QF-Test Terminal.

Variable: Yes

Restrictions: None

Create screenshots

The attribute indicates whether QF-Test should log screenshots to the run log of the whole monitor(s) attached, taking into account the setting of the option Limit screenshots to relevant screens relevant to security and data protection. The default setting of the option only allows screenshots of monitors where either a window of QF-Test or the tested application is showing. By default, in batch mode (no QF-Test GUI) no screenshot will be logged when no SUT window is showing.

Setting Description
Always Always log screenshots to the run log. This may result in memory issues in case a test run has many errors. Options for splitting run logs may be used to reduce memory consumption in such a case.
The option overrules the following settings:
Never Do NOT log screenshots.
Based on options Log and create screenshots depending on the options set. See Options determining run log content for further information. Please note: Screenshots will only be logged when the option Create screenshots for warnings is active.
Variables, for example $(logScreenshots) A reference to a variable containing one of the following values (case insensitive). Depending on the value QF-Test will either always log the screenshots or never or take the options into account.
The following values indicate QF-Test should always log screenshots:
always, 1, true or yes.
The following values indicate QF-Test should never log screenshots:
never, 0, false or no.
The following values indicate QF-Test should decide based on the options:
based on options, options or option.
Table 42.29:  Settings for "Create Screenshots"

Variable: Yes

Restrictions: None

Create client screenshots

The attribute indicates whether QF-Test should log screenshots of all client windows to the run log, even if they may be hidden by other windows.

Setting Description
Always Always log screenshots to the run log. This may result in memory issues in case a test run has many errors. Options for splitting run logs may be used to reduce memory consumption in such a case.
The option overrules the following settings:
Never Do NOT log screenshots.
Based on options Log and create screenshots depending on the options set. See Options determining run log content for further information.
The setting of the option Create screenshots of the client's windows upon error in client is irrelevant, as the node has effect on all clients, just like a Server script.
Please note: Screenshots will only be logged when the option Create screenshots for warnings is active.
Variables, for example $(logScreenshots) A reference to a variable containing one of the following values (case insensitive). Depending on the value QF-Test will either always log the screenshots or never or take the options into account.
The following values indicate QF-Test should always log screenshots:
always, 1, true or yes.
The following values indicate QF-Test should never log screenshots:
never, 0, false or no.
The following values indicate QF-Test should decide based on the options:
based on options, options or option.
Table 42.30:  Settings for "Create Client Screenshots"

Variable: Yes

Restrictions: None

QF-Test ID

At the moment the QF-Test ID attribute has no meaning for this type of node.

Variable: No

Restrictions: Must not contain any of the characters '\', '#', '$', '@', '&', or '%' or start with an underscore ('_').

Delay before/after

These attributes cause a delay before or after the execution of the node. If a value is empty, the Default delay from the global options is used.

Variable: Yes

Restrictions: Valid number >= 0

Comment

Here you can enter a comment that explains the purpose of this node. This is the preferred way of documenting the test suite.

Note For detailed documentation, especially for Test set, Test case or Procedure nodes, this text area might not be the right place. There are many excellent editors that are much better suited to this task. The option External editor command lets you define an external editor in which comments can be edited conveniently by pressing Alt⁠+⁠Return or by clicking the External editor button.

You can trigger special behaviors of some nodes using doctags, please see Doctags.

If you enter text in the comment field of a Component node, the node will be considered as 'used' when you want to mark or delete unused components.

Variable: Yes

Restrictions: None

42.11.4
Message

With the Message node you can write a message to the run log. Use the attributes to specify the information to be written to the run log.

The node can replace scripts containing only rc.logMessage. It can also replace calls to the procedure qfs.run-log.logMessage of The standard library.

Contained in: All kinds of sequences.

Children: None

Execution: The Message step writes a message to the run log.

Attributes:

Attributes of the message node
Figure 42.74:  Message attributes
Text

The message text. In the tree node long texts will be truncated.

Variable: Yes

Restrictions: None

Prevent compactification

The option is only relevant when the option Create compact run log has been set to compact run logs. In that case activate the option keep the node in the run log.

Variable: Yes

Restrictions: None

Include in report

When selected, the node will be written to the report.

Variable: Yes

Restrictions: None

Add diagnostic client information

When selected, further information concerning each client process will be written to the run log.

Variable: Yes

Restrictions: None

Print message to terminal also

If active, the message is also written to the QF-Test Terminal.

Variable: Yes

Restrictions: None

Create screenshots

The attribute indicates whether QF-Test should log screenshots to the run log of the whole monitor(s) attached, taking into account the setting of the option Limit screenshots to relevant screens relevant to security and data protection. The default setting of the option only allows screenshots of monitors where either a window of QF-Test or the tested application is showing. By default, in batch mode (no QF-Test GUI) no screenshot will be logged when no SUT window is showing.

Setting Description
Always Always log screenshots to the run log. This may result in memory issues in case a test run has many errors. Options for splitting run logs may be used to reduce memory consumption in such a case.
The option overrules the following settings:
Never Do NOT log screenshots.
Based on options Log and create screenshots depending on the options set. See Options determining run log content for further information.
Variables, for example $(logScreenshots) A reference to a variable containing one of the following values (case insensitive). Depending on the value QF-Test will either always log the screenshots or never or take the options into account.
The following values indicate QF-Test should always log screenshots:
always, 1, true or yes.
The following values indicate QF-Test should never log screenshots:
never, 0, false or no.
The following values indicate QF-Test should decide based on the options:
based on options, options or option.
Table 42.31:  Settings for "Create Screenshots"

Variable: Yes

Restrictions: None

Create client screenshots

The attribute indicates whether QF-Test should log screenshots of all client windows to the run log, even if they may be hidden by other windows.

Setting Description
Always Always log screenshots to the run log. This may result in memory issues in case a test run has many errors. Options for splitting run logs may be used to reduce memory consumption in such a case.
The option overrules the following settings:
Never Do NOT log screenshots.
Based on options Log and create screenshots depending on the options set. See Options determining run log content for further information.
The setting of the option Create screenshots of the client's windows upon error in client is irrelevant, as the node has effect on all clients, just like a Server script.
Variables, for example $(logScreenshots) A reference to a variable containing one of the following values (case insensitive). Depending on the value QF-Test will either always log the screenshots or never or take the options into account.
The following values indicate QF-Test should always log screenshots:
always, 1, true or yes.
The following values indicate QF-Test should never log screenshots:
never, 0, false or no.
The following values indicate QF-Test should decide based on the options:
based on options, options or option.
Table 42.32:  Settings for "Create Client Screenshots"

Variable: Yes

Restrictions: None

QF-Test ID

At the moment the QF-Test ID attribute has no meaning for this type of node.

Variable: No

Restrictions: Must not contain any of the characters '\', '#', '$', '@', '&', or '%' or start with an underscore ('_').

Delay before/after

These attributes cause a delay before or after the execution of the node. If a value is empty, the Default delay from the global options is used.

Variable: Yes

Restrictions: Valid number >= 0

Comment

Here you can enter a comment that explains the purpose of this node. This is the preferred way of documenting the test suite.

Note For detailed documentation, especially for Test set, Test case or Procedure nodes, this text area might not be the right place. There are many excellent editors that are much better suited to this task. The option External editor command lets you define an external editor in which comments can be edited conveniently by pressing Alt⁠+⁠Return or by clicking the External editor button.

You can trigger special behaviors of some nodes using doctags, please see Doctags.

If you enter text in the comment field of a Component node, the node will be considered as 'used' when you want to mark or delete unused components.

Variable: Yes

Restrictions: None

42.11.5
Set variable

This node lets you set the value of a global variable. If the test is run interactively from QF-Test and not in batch mode (see section 1.7) you can optionally set the value interactively.

Contained in: All kinds of sequences.

Children: None

Execution: If the test is run interactively and the Interactive attribute is set, a dialog is shown in which the value for the variable can be entered. If the Timeout is exceeded or the value is confirmed with the OK button, the variable is bound accordingly in the global variables. If the dialog is canceled, the test run is stopped. In the non-interactive case the variable is bound directly to the Default value.

Attributes:

Set variable attributes
Figure 42.75:  Set variable attributes
Variable name

The name of the global variable to which the value is assigned (see chapter 6).

Variable: Yes

Restrictions: Must not be empty.

Local variable

This flag determines whether to create a local or global variable binding. If unset, the variable is bound in the global variables. If set, the topmost current binding for the variable is replaced with the new value, provided this binding is within the context of the currently executing Procedure, Dependency or Test case node. If no such binding exists, a new binding is created in the currently executing Procedure, Dependency or Test case node or, if there is no such node in the topmost node on the variables stack, falling back to the global bindings if necessary. See chapter 6 for a detailed explanation of variable binding and lookup.

In order to predefine the option use Enable 'Local variable' attribute by default.

Variable: No

Restrictions: None

Default value

The default value for the variable if the test is run non-interactively, the Interactive attribute is not set or the Timeout is exceeded.

Variable: Yes

Restrictions: None

Explicit object type

9.0+ QF-Test variables can contain strings or any other kinds of objects. The text field for the value only accepts string values but this attribute makes it possible to define how QF-Test should interpret the input:

  • No selection: The input will not be further interpreted. In most cases, the stored object will be a String. If the input was completely replaced by the value of another variable by variable expansion, the object will be used without further interpretation.
  • String: The input will be converted into a string.
  • Boolean: The input will be converted into a boolean value. 0, the empty string and the strings false, no and nein will be interpreted as false, other values as true.
  • Number: The input will be converted into a number. Depending on the input, this will be an Integer, Long, BigInteger, Double or a BigDecimal object. If the conversion fails, a ValueCastException will be thrown.
  • Object from JSON: The input will be interpreted as JSON string and converted into nested Maps and Lists with Strings, Numbers, and Booleans. If the conversion fails, a ValueCastException will be thrown.

Interactive

Whether a dialog should be shown in which the value for the global variable can be entered. Ignored if the test is run non-interactively.

Variable: Yes

Restrictions: None

Description

A short description to display in the dialog. If you leave this value empty, the description Value for <Variable name> will be used.

Variable: Yes

Restrictions: None

Timeout

An optional timeout value for the dialog. If the dialog is shown and the value is left unchanged for the specified period of time, the dialog is closed automatically and the default value is used. This avoids blocking a test that is started interactively from QF-Test and then left to run unattended.

Variable: Yes

Restrictions: Empty or > 0.

QF-Test ID

At the moment the QF-Test ID attribute has no meaning for this type of node.

Variable: No

Restrictions: Must not contain any of the characters '\', '#', '$', '@', '&', or '%' or start with an underscore ('_').

Delay before/after

These attributes cause a delay before or after the execution of the node. If a value is empty, the Default delay from the global options is used.

Variable: Yes

Restrictions: Valid number >= 0

Comment

Here you can enter a comment that explains the purpose of this node. This is the preferred way of documenting the test suite.

Note For detailed documentation, especially for Test set, Test case or Procedure nodes, this text area might not be the right place. There are many excellent editors that are much better suited to this task. The option External editor command lets you define an external editor in which comments can be edited conveniently by pressing Alt⁠+⁠Return or by clicking the External editor button.

You can trigger special behaviors of some nodes using doctags, please see Doctags.

If you enter text in the comment field of a Component node, the node will be considered as 'used' when you want to mark or delete unused components.

Variable: Yes

Restrictions: None

42.11.6
Wait for component to appear

This node is very important for the timing of a test run. The reaction time of the SUT varies depending on system and memory load, so it may take a while until, say, a complex dialog is opened. This node will delay further execution of the test until the desired component or sub-item is available. If the time limit is exceeded without success, a ComponentNotFoundException is thrown. You can also use the Variable for result attribute to store the result into a variable and the Throw exception on failure attribute to suppress the exception.

This node is intended only for relatively long delays. Short delays are handled automatically by the Timeout options.

By setting the Wait for absence attribute this node can also be used to ensure the absence of a component.

Contained in: All kinds of sequences.

Children: None

Execution: The data of the target component are sent to the SUT. The TestEventQueue waits until either the corresponding component becomes available or the time limit is exceeded.

Attributes:

Wait for component attributes
Figure 42.76:  Wait for component to appear attributes
Client

The name of the Java process in which to wait.

Variable: Yes

Restrictions: Must not be empty.

QF-Test component ID

The QF-Test ID of the Window, Component or Item to wait for.

The "Select component" button [Select component] brings up a dialog in which you can select the component interactively. You can also get to this dialog by pressing Shift⁠+⁠Return or Alt⁠+⁠Return, when the focus is in the text field. As an alternative you can copy the target node with Ctrl⁠+⁠C or »Edit«-»Copy« and insert its QF-Test component ID into the text field by pressing Ctrl⁠+⁠V.

This attribute supports a special format for referencing components in other test suites (see section 26.1). Furthermore, sub-elements of nodes can be addressed directly without requiring separate nodes for them (see section 5.9). When using SmartIDs, you can address a GUI element directly via its recognition criteria. For more information, refer to SmartID and Component nodes versus SmartID.

Variable: Yes

Restrictions: Must not be empty.

Timeout

Time limit in milliseconds.

Variable: Yes

Restrictions: >= 0

Wait for absence

If this attribute is set, QF-Test waits for the absence of a component or a sub-item. This is useful e.g. to ensure that a dialog has been closed or was never opened in the first place. If the component or sub-item remains visible for the whole time, a ComponentFoundException is thrown.

Variable: Yes

Restrictions: None

Variable for result

This optional attribute determines the name for the result variable of the action. If set, the respective variable will be set to 'true' for a successful check or wait and to 'false' in case of failure.

Note If this attribute is set, the attribute Error level of message is ignored and no error is reported. The attribute Throw exception on failure always remains effective, so it is possible to set a result variable and still throw an exception.

Variable: Yes

Restrictions: None

Local variable

This flag determines whether to create a local or global variable binding. If unset, the variable is bound in the global variables. If set, the topmost current binding for the variable is replaced with the new value, provided this binding is within the context of the currently executing Procedure, Dependency or Test case node. If no such binding exists, a new binding is created in the currently executing Procedure, Dependency or Test case node or, if there is no such node in the topmost node on the variables stack, falling back to the global bindings if necessary. See chapter 6 for a detailed explanation of variable binding and lookup.

In order to predefine the option use Enable 'Local variable' attribute by default.

Variable: No

Restrictions: None

Error level of message

This attribute determines the error level of the message that is logged in case of failure. Possible choices are message, warning and error.

Note If the attribute Throw exception on failure is set, this attribute is irrelevant and if Variable for result is set this attribute is ignored.

Variable: No

Restrictions: None

Throw exception on failure

Throw an exception in case of failure. For 'Check...' nodes a CheckFailedException is thrown, for 'Wait for...' nodes the respective specific exception.

Variable: No

Restrictions: None

QF-Test ID

At the moment the QF-Test ID attribute has no meaning for this type of node.

Variable: No

Restrictions: Must not contain any of the characters '\', '#', '$', '@', '&', or '%' or start with an underscore ('_').

Delay before/after

These attributes cause a delay before or after the execution of the node. If a value is empty, the Default delay from the global options is used.

Variable: Yes

Restrictions: Valid number >= 0

Comment

Here you can enter a comment that explains the purpose of this node. This is the preferred way of documenting the test suite.

Note For detailed documentation, especially for Test set, Test case or Procedure nodes, this text area might not be the right place. There are many excellent editors that are much better suited to this task. The option External editor command lets you define an external editor in which comments can be edited conveniently by pressing Alt⁠+⁠Return or by clicking the External editor button.

You can trigger special behaviors of some nodes using doctags, please see Doctags.

If you enter text in the comment field of a Component node, the node will be considered as 'used' when you want to mark or delete unused components.

Variable: Yes

Restrictions: None

42.11.7
Wait for document to load

Web This node is a variant of the Wait for component to appear node specifically for web pages. It not only checks the existence of a given document. If the target document was already known to exist the last time an event was replayed, this node waits for the document to get reloaded. When working with web pages it is often the case that the same or very similar documents are loaded many times. Without this node's functionality QF-Test could not discern the case where the old document is still around from the one where the document is already reloaded. In the former case, replaying an event could cause it to have no effect at all because at the same time reloading of the document begins.

The Name of the browser window attribute can be used to limit the search to a given browser window or to define a name for a new window. If Stop loading if timeout exceeded is set, QF-Test will abort loading the document if it doesn't finish in time. You can also use the Variable for result attribute to store the result in a variable and the Throw exception on failure attribute to suppress the DocumentNotLoadedException.

Contained in: All kinds of sequences.

Children: None

Execution: The data of the target document are sent to the SUT. The TestEventQueue waits until corresponding document gets loaded or the time limit is exceeded in which case a DocumentNotLoadedException is thrown.

Attributes:

Wait for document to load attributes
Figure 42.77:  Wait for document to load attributes
Client

The name of the SUT client process from which to query the data.

Variable: Yes

Restrictions: Must not be empty.

QF-Test component ID

The QF-Test ID of the Window, Component or Item node that is to be queried.

The "Select component" button [Select component] brings up a dialog in which you can select the component interactively. You can also get to this dialog by pressing Shift⁠+⁠Return or Alt⁠+⁠Return, when the focus is in the text field. As an alternative you can copy the target node with Ctrl⁠+⁠C or »Edit«-»Copy« and insert its QF-Test component ID into the text field by pressing Ctrl⁠+⁠V.

This attribute supports a special format for referencing components in other test suites (see section 26.1). Furthermore, sub-elements of nodes can be addressed directly without requiring separate nodes for them (see section 5.9). When using SmartIDs, you can address a GUI element directly via its recognition criteria. For more information, refer to SmartID and Component nodes versus SmartID.

Variable: Yes

Restrictions: Must not be empty.

Name of the browser window

This attribute has a dual use. If set to an existing name for a browser window, QF-Test waits for the document to load in that window. If the name is set but no browser window by that name exists, the search is limited to documents in new or not-yet-named windows. If the wait succeeds and a new document is loaded, the window name is assigned to the document's browser window. This is the only way to define a name for a popup window. Explicitly launched browsers can have their name set via the Name of the browser window attribute of a Open browser window node. You find a brief description how to handle multiple browser windows in FAQ 25.

Variable: Yes

Restrictions: None

Timeout

Time limit in milliseconds.

Variable: Yes

Restrictions: >= 0

Stop loading if timeout exceeded

If this attribute is set and the timeout is exceeded without a matching document finishing to load, QF-Test will cause loading to stop, either in all browsers or, if Name of the browser window is set, the browser window specified therein. Result and exception handling are not affected by this attribute. If the timeout is exceeded the operation is considered a failure regardless of whether loading is stopped or not.

Variable: Yes

Restrictions: None

Variable for result

This optional attribute determines the name for the result variable of the action. If set, the respective variable will be set to 'true' for a successful check or wait and to 'false' in case of failure.

Note If this attribute is set, the attribute Error level of message is ignored and no error is reported. The attribute Throw exception on failure always remains effective, so it is possible to set a result variable and still throw an exception.

Variable: Yes

Restrictions: None

Local variable

This flag determines whether to create a local or global variable binding. If unset, the variable is bound in the global variables. If set, the topmost current binding for the variable is replaced with the new value, provided this binding is within the context of the currently executing Procedure, Dependency or Test case node. If no such binding exists, a new binding is created in the currently executing Procedure, Dependency or Test case node or, if there is no such node in the topmost node on the variables stack, falling back to the global bindings if necessary. See chapter 6 for a detailed explanation of variable binding and lookup.

In order to predefine the option use Enable 'Local variable' attribute by default.

Variable: No

Restrictions: None

Error level of message

This attribute determines the error level of the message that is logged in case of failure. Possible choices are message, warning and error.

Note If the attribute Throw exception on failure is set, this attribute is irrelevant and if Variable for result is set this attribute is ignored.

Variable: No

Restrictions: None

Throw exception on failure

Throw an exception in case of failure. For 'Check...' nodes a CheckFailedException is thrown, for 'Wait for...' nodes the respective specific exception.

Variable: No

Restrictions: None

QF-Test ID

At the moment the QF-Test ID attribute has no meaning for this type of node.

Variable: No

Restrictions: Must not contain any of the characters '\', '#', '$', '@', '&', or '%' or start with an underscore ('_').

Delay before/after

These attributes cause a delay before or after the execution of the node. If a value is empty, the Default delay from the global options is used.

Variable: Yes

Restrictions: Valid number >= 0

Comment

Here you can enter a comment that explains the purpose of this node. This is the preferred way of documenting the test suite.

Note For detailed documentation, especially for Test set, Test case or Procedure nodes, this text area might not be the right place. There are many excellent editors that are much better suited to this task. The option External editor command lets you define an external editor in which comments can be edited conveniently by pressing Alt⁠+⁠Return or by clicking the External editor button.

You can trigger special behaviors of some nodes using doctags, please see Doctags.

If you enter text in the comment field of a Component node, the node will be considered as 'used' when you want to mark or delete unused components.

Variable: Yes

Restrictions: None

42.11.8
Wait for download to finish

Web This specialized node is applicable only for web Clients. It can be used to wait for the completion of a download that was earlier started via QF-Test. This is important in case you need to verify the contents of the file or to measure the time it took to download it.

If the timeout is exceeded without the download finishing, a DownloadNotCompleteException is thrown unless suppressed via the Throw exception on failure attribute. Either way the download can be canceled by activating the Cancel download if timeout exceeded attribute, which may be necessary to enable another download to the same file. The result can also be stored in a variable by defining its name in the Variable for result attribute.

Contained in: All kinds of sequences.

Children: None

Execution: The target file identifying the download is sent to the SUT where QF-Test waits for the download to finish or the time limit is exceeded in which case a DownloadNotCompleteException is thrown.

Attributes:

Wait for download to finish attributes
Figure 42.78:  Wait for download to finish attributes
Client

The name of the SUT client process from which to query the data.

Variable: Yes

Restrictions: Must not be empty.

File

The target file for the downloaded.

Variable: Yes

Restrictions: Valid file name

Timeout

Time limit in milliseconds.

Variable: Yes

Restrictions: >= 0

Cancel download if timeout exceeded

If this attribute is set and the timeout is exceeded without the download finishing the download is canceled.

Variable: Yes

Restrictions: None

Variable for result

This optional attribute determines the name for the result variable of the action. If set, the respective variable will be set to 'true' for a successful check or wait and to 'false' in case of failure.

Note If this attribute is set, the attribute Error level of message is ignored and no error is reported. The attribute Throw exception on failure always remains effective, so it is possible to set a result variable and still throw an exception.

Variable: Yes

Restrictions: None

Local variable

This flag determines whether to create a local or global variable binding. If unset, the variable is bound in the global variables. If set, the topmost current binding for the variable is replaced with the new value, provided this binding is within the context of the currently executing Procedure, Dependency or Test case node. If no such binding exists, a new binding is created in the currently executing Procedure, Dependency or Test case node or, if there is no such node in the topmost node on the variables stack, falling back to the global bindings if necessary. See chapter 6 for a detailed explanation of variable binding and lookup.

In order to predefine the option use Enable 'Local variable' attribute by default.

Variable: No

Restrictions: None

Error level of message

This attribute determines the error level of the message that is logged in case of failure. Possible choices are message, warning and error.

Note If the attribute Throw exception on failure is set, this attribute is irrelevant and if Variable for result is set this attribute is ignored.

Variable: No

Restrictions: None

Throw exception on failure

Throw an exception in case of failure. For 'Check...' nodes a CheckFailedException is thrown, for 'Wait for...' nodes the respective specific exception.

Variable: No

Restrictions: None

QF-Test ID

At the moment the QF-Test ID attribute has no meaning for this type of node.

Variable: No

Restrictions: Must not contain any of the characters '\', '#', '$', '@', '&', or '%' or start with an underscore ('_').

Delay before/after

These attributes cause a delay before or after the execution of the node. If a value is empty, the Default delay from the global options is used.

Variable: Yes

Restrictions: Valid number >= 0

Comment

Here you can enter a comment that explains the purpose of this node. This is the preferred way of documenting the test suite.

Note For detailed documentation, especially for Test set, Test case or Procedure nodes, this text area might not be the right place. There are many excellent editors that are much better suited to this task. The option External editor command lets you define an external editor in which comments can be edited conveniently by pressing Alt⁠+⁠Return or by clicking the External editor button.

You can trigger special behaviors of some nodes using doctags, please see Doctags.

If you enter text in the comment field of a Component node, the node will be considered as 'used' when you want to mark or delete unused components.

Variable: Yes

Restrictions: None

42.11.9
Load resources

This node is used to load a ResourceBundle and make its values available for the extended variable syntax ${group:name} (see section 6.7). To learn more about ResourceBundles see the description of the ResourceBundle attribute.

Contained in: All kinds of sequences.

Children: None

Execution: The ResourceBundle is loaded and its values are made available under the Group name.

Attributes:

Load resources attributes
Figure 42.79:  Load resources attributes
Group

The name of the group by which values of the ResourceBundle are referred to. The value of a definition of the form name=value in the ResourceBundle can be retrieved with ${group:name} (see section 6.7).

Variable: Yes

Restrictions: Must not be empty and should not contain special characters like ':' or '$'.

ResourceBundle

The name of the ResourceBundle to load. A little Java background is needed to understand this attribute.

The resources are read with the help of the Java method ResourceBundle.getBundle(). For this to work, a matching file with the extension .class or .properties must be located somewhere on the class path. Use the fully qualified name for the file, including packages, with a dot ('.') as separator, but without extension or locale identifier.

Example: QF-Test comes with a German ResourceBundle in the file de/qfs/apps/qftest/resources/properties/qftest_de.properties, which is contained in the archive qfshared.jar. To load that ResourceBundle, set this attribute to de.qfs.apps.qftest.resources.properties.qftest and the Locale to de.

Variable: Yes

Restrictions: Must name a ResourceBundle on the Java class path.

Locale

The main use of ResourceBundles is to provide data in different languages. This attribute determines, which version of a ResourceBundle is retrieved. The value must follow the ISO standard language_country_variant. Language is a two letter lowercase code like en for English, country a two letter uppercase code like US for American or UK for British English. The variant discriminates further but is rarely used.

As mentioned, QF-Test relies on the Java method ResourceBundle.getBundle() to load the ResourceBundle, which is described in detail in the Java documentation and works as follows:

To load a ResourceBundle named res for the locale en_US, Java first searches the class path for a file named res_en_US.class or res_en_US.properties, then for res_en.class or res_en.properties and finally for res.class and res.properties. The less specific files are loaded even if more specific files are found, but only values not defined in the more specific files are used. That way you can define all English resources in res_en.properties and place only those that differ in res_en_UK.properties and res_en_US.properties.

Unfortunately Java has a "feature" that can lead to surprising results. If no specific file but only the base file res.properties is found, Java tries the whole process a second time, this time for the current default locale of the VM. As a result, if the current locale for QF-Test is German and you want to load English resources that are defined in res.properties and no res_en.properties exists, Java will load the German version from res_de.properties, even if you request the locale en. You can work around this be setting this attribute to the underscore '_'. In that case, only the base file res.properties is loaded.

To use the current locale of the VM, leave this value empty.

Variable: Yes

Restrictions: Empty or valid locale identifier.

QF-Test ID

At the moment the QF-Test ID attribute has no meaning for this type of node.

Variable: No

Restrictions: Must not contain any of the characters '\', '#', '$', '@', '&', or '%' or start with an underscore ('_').

Delay before/after

These attributes cause a delay before or after the execution of the node. If a value is empty, the Default delay from the global options is used.

Variable: Yes

Restrictions: Valid number >= 0

Comment

Here you can enter a comment that explains the purpose of this node. This is the preferred way of documenting the test suite.

Note For detailed documentation, especially for Test set, Test case or Procedure nodes, this text area might not be the right place. There are many excellent editors that are much better suited to this task. The option External editor command lets you define an external editor in which comments can be edited conveniently by pressing Alt⁠+⁠Return or by clicking the External editor button.

You can trigger special behaviors of some nodes using doctags, please see Doctags.

If you enter text in the comment field of a Component node, the node will be considered as 'used' when you want to mark or delete unused components.

Variable: Yes

Restrictions: None

42.11.10
Load properties

This node is used to load data from a Properties file and make its values available for the extended variable syntax ${group:name} (see section 6.7).

Properties files are easier to handle than ResourceBundles since you request the file directly, but they are less powerful. The format of a Properties file is simple: lines of the form name=value with arbitrary whitespace around the '=' character. Complex definitions spanning multiple lines are possible. Please see the Java documentation for details or ask a developer.

Contained in: All kinds of sequences.

Children: None

Execution: The Properties file is loaded and its values are made available under the Group name.

Attributes:

Load properties attributes
Figure 42.80:  Load properties attributes
Group

The name of the group by which values of the Properties file are referred to. The value of a definition of the form name=value in the Properties file can be retrieved with ${group:name} (see section 6.7).

Variable: Yes

Restrictions: Must not be empty and should not contain special characters like ':' or '$'.

Properties file

The file to load the Properties from. This can either be an absolute path name or a path relative to the directory of the current suite. In either case you should always use '/' as the separator for directories, even under Windows. QF-Test will translate this to the correct value for the current operating system.

The "..." button brings up a dialog in which you can select the file interactively. You can also get to this dialog by pressing Shift⁠+⁠Return or Alt⁠+⁠Return, when the focus is in the text field.

Variable: Yes

Restrictions: Must be an existing Properties file.

File encoding is UTF-8

Up to Java 8 the class java.util.Properties enforced a file encoding of ISO-Latin-1 for properties files. In Java 9 the default encoding is UTF-8. QF-Test supports both and uses the UTF-8 encoding if this attribute is activated and ISO-Latin-1 otherwise.

Variable: Yes

Restrictions: None

QF-Test ID

At the moment the QF-Test ID attribute has no meaning for this type of node.

Variable: No

Restrictions: Must not contain any of the characters '\', '#', '$', '@', '&', or '%' or start with an underscore ('_').

Delay before/after

These attributes cause a delay before or after the execution of the node. If a value is empty, the Default delay from the global options is used.

Variable: Yes

Restrictions: Valid number >= 0

Comment

Here you can enter a comment that explains the purpose of this node. This is the preferred way of documenting the test suite.

Note For detailed documentation, especially for Test set, Test case or Procedure nodes, this text area might not be the right place. There are many excellent editors that are much better suited to this task. The option External editor command lets you define an external editor in which comments can be edited conveniently by pressing Alt⁠+⁠Return or by clicking the External editor button.

You can trigger special behaviors of some nodes using doctags, please see Doctags.

If you enter text in the comment field of a Component node, the node will be considered as 'used' when you want to mark or delete unused components.

Variable: Yes

Restrictions: None

42.11.11
Unit test

This node is used to execute JUnit tests.

JUnit tests are made for executing unit and integration tests. They should be short and easily repeatable. Unit Tests can be defined in an SUT script or loaded from the SUT or other classpaths.

Contained in: All kinds of sequences.

Children: None

Execution: The required resources and injections are loaded and the test classes are executed step by step.

Attributes:

Unit Test with Server Script attribute
Figure 42.81:  Unit test server attributes
Unit Test with Client Class attribute
Figure 42.82:  Unit test client attributes
Run in Unit Test Execution Environment

Whether to execute the unit tests inside the SUT. If disabled a execution environment is setup for the tests.

Variable: No

Restrictions: None

Client

The name of the SUT client process in which to execute the script.

Variable: Yes

Restrictions: Must not be empty.

Source for the tests

The source for the JUnit tests. This can either be an SUT script or Java classes that are loaded into the SUT.

Script

The script to execute.

Note You may use QF-Test variables of the syntax $(var) or ${group:name} in Jython scripts. They will be expanded before the script is passed to the Jython interpreter. This can lead to unexpected behavior. rc.getStr is the preferred method in this case (see subsection 11.3.3.1 for details).

Note In spite of syntax highlighting and automatical indentation this attribute might not be the right place to write complex scripts. There are many excellent editors that are much better suited to this task. The option External editor command lets you define an external editor in which scripts can be edited conveniently by pressing Alt⁠+⁠Return or by clicking the External editor button. Complex scripts can also be written as separate modules which can then be imported for use in this attribute. See chapter 50 for details.

Variable: Yes

Restrictions: Valid syntax

Templates

This dropdown menu contains a list of useful template scripts. The available templates will differ depending on the chosen script type and interpreter.

When you choose one of these templates, the current contents of your script will be replaced.

You can add your own templates to this menu by choosing "Open user templates directory" and placing your template files there. The following file types are valid:

  • [directory]: Will be converted into a submenu.
  • .py: A Jython script template.
  • .groovy: A Groovy script template.
  • .js: A JavaScript script template.

Script language

This attribute determines the interpreter in which to run the script, or in other words, the scripting language to use. Possible values are "Jython", "Groovy" and "JavaScript".

Variable: No

Restrictions: None

Test classes

These are the classes that are executed. They have to be loaded with the defined classpath. They are executed as test steps.

Instead of address the classes by their full name regular expressions can be used.

Test classes can be found if they contain a JUnit 4 Test annotation, if they extend the JUnit 3 unit.org.TestCase or if they contain a RunWith annotation.

You can use one of the following regular expressions:

Regular expression Explanation
**.MainTest All MainTest classes in all packages.
de.qfs.test.* All test-classes from the de.qfs.test package.
de.qfs.**.* All test classes from all sub packages of de.qfs.
Table 42.33:  Possible regular expressions

NoteDuring the search of the test classes all classes in the given directory are loaded. The statement **.* loads all classes in the classpath and their static initializers. So this should be used carefully.

Variable: Yes

Restrictions: The class has to be loaded.

Classpath

Files and folders to load for the execution of the Unit Test.

Variable: Yes

Restrictions: The path has to be valid.

Injections

Injections enable working with Objects from QF-Test inside the tests.

Type Description
String QF-Test variables or direct values.
Component Components of QF-Test.
WebDriver WebDriver objects of the current browser.
Table 42.34:  Injection types

Note The value of 'field' can be left empty. In this case the default value instance is used.

Variable: Yes

Restrictions: Object has to be available.

GUI engine

The GUI engine in which to execute the unit test. Only relevant for SUTs with more than one GUI engine as described in chapter 45.

Variable: Yes

Restrictions: See chapter 45

Name

The name of a Unit test is a kind of short description. It is displayed in the tree view, so it should be concise and say something about the function of the script.

Variable: No

Restrictions: None

QF-Test ID

At the moment the QF-Test ID attribute has no meaning for this type of node.

Variable: No

Restrictions: Must not contain any of the characters '\', '#', '$', '@', '&', or '%' or start with an underscore ('_').

Delay before/after

These attributes cause a delay before or after the execution of the node. If a value is empty, the Default delay from the global options is used.

Variable: Yes

Restrictions: Valid number >= 0

Comment

Here you can enter a comment that explains the purpose of this node. This is the preferred way of documenting the test suite.

Note For detailed documentation, especially for Test set, Test case or Procedure nodes, this text area might not be the right place. There are many excellent editors that are much better suited to this task. The option External editor command lets you define an external editor in which comments can be edited conveniently by pressing Alt⁠+⁠Return or by clicking the External editor button.

You can trigger special behaviors of some nodes using doctags, please see Doctags.

If you enter text in the comment field of a Component node, the node will be considered as 'used' when you want to mark or delete unused components.

Variable: Yes

Restrictions: None

42.11.12
Install CustomWebResolver

This node is used to install or update the CustomWebResolver.

The configuration of the Install CustomWebResolver node is described in detail in The Install CustomWebResolver node.

Contained in: All kinds of sequences.

Children: Dependency, SUT scripts, Procedure call and Comment.

Execution:

The CustomWebResolver is installed or updated according to the given configuration.

Afterwards, all contained child nodes are executed one by one. In the context of the Install CustomWebResolver node, the variables $(client) and $(guiengine) are set to the values of the attributes Client and GUI engine.

If the Install CustomWebResolver node contains a Setup node, it will be executed before the configuration is applied. Execution of a contained Cleanup node will be delayed until uninstallation of the CustomWebResolver.

Attributes:

CWR Attributes
Figure 42.83:  Install CustomWebResolver attributes
Client

The name of the SUT client process in which to execute the CustomWebResolver.

Variable: Yes

Restrictions: Must not be empty.

YAML

The configuration instructions for the CustomWebResolver. These are described in subsection 51.1.2. The YAML syntax described there must be followed.

Configuration template actions
Figure 42.84:  CustomWebResolver configuration template actions

If the syntax is known, the YAML configuration can be edited directly. In case of an invalid configuration, corresponding error dialogs are displayed during execution or reformatting.

Variable: Yes

Restrictions: Valid syntax

Inserting templplates Edit menu

This menu serves to simplify editing of the YAML configuration. Depending on the position in the document, it will offer different actions.

It can also be invoked at any time in the YAML editor via Ctrl⁠+⁠Space.

Among others, the following actions can be available:

Name Description
Reformat data Formats the given data in the most compact form possible. In case of an invalid configuration, a dialog with all configuration errors is displayed instead.
New entry for "..." Creates a new mapping for the category or generic class.
Add/Remove HTML tag Controls if the mapping is dependent on the name of the HTML tag of the element.
Add/Remove CSS class Controls if the mapping is dependent on a CSS class of the element.
Add/Remove HTML attribute Controls if the mapping is dependent on a HTML attribute of the element.
Change generic class Controls the generic class that is assigned to the element.
Add/Remove ancestor Controls if the mapping is dependent on an ancestor of the element.
Convert "..." to/Remove regular expression Controls if the value is interpreted as a regular expression.
Show configuration errors Displays a dialog containing a list of all problems with the current configuration. As long as the configuration is invalid, the Install CustomWebResolver can not be executed.
Table 42.35:  Actions of the edit menu
Edit menu
Figure 42.85:  CustomWebResolver edit menu

More information about the possiblities of the configuration syntax can be found in subsection 51.1.2.

New mapping

Clicking this button opens a list of available configuration categories. When you select an entry, an entry is created in the appropriate category. You then can replace any placeholders with the desired values.

Generic classes

Clicking on this button opens a list from which you can create a new mapping for the respective generic class. You can read about the properties assigned to each class in Generic classes.

Script resolvers

Clicking this button opens a list from which you can select a template for one of the resolvers described in The resolvers module. The template is created as a separate SUT script node in the CustomWebResolver node. If the text cursor is on a mapping in genericClasses, the resolver will be registered for the respective generic class.

Inspector

Clicking this button opens the UI inspector, see UI Inspector.

You should use the UI inspector to check your application for characteristics suitable for CustomWebResolver mappings, and to check the effect of the CustomWebResolver on the component structure of your application.

This button is available only when a web client is active.

Reformat

When clicking this button, the existing YAML code is reformatted as compactly as possible according to the syntax described in subsection 51.1.2. This can also be used to detect syntax errors.

This action is also performed implicitly every time the configuration is modified e.g. through the edit menu.

Update installed CustomWebResolver during execution

If this attribute is set, then when the node is executed, the currently installed CustomWebResolver is not replaced by a new one, but the assignments of the installed CustomWebResolver are supplemented by the values specified in this node. If no CustomWebResolver was installed, then a TestException is raised.

Variable: Yes

Restrictions: None

GUI engine

The GUI engine in which the CustomWebResolver is to be installed or updated. Only relevant for SUTs with more than one GUI engine as described in chapter 45.

Variable: Yes

Restrictions: See chapter 45

Name

The name is a kind of short description. It is displayed in the tree view, so it should be concise and say something about the function of the node.

Variable: No

Restrictions: None

QF-Test ID

At the moment the QF-Test ID attribute has no meaning for this type of node.

Variable: No

Restrictions: Must not contain any of the characters '\', '#', '$', '@', '&', or '%' or start with an underscore ('_').

Delay before/after

These attributes cause a delay before or after the execution of the node. If a value is empty, the Default delay from the global options is used.

Variable: Yes

Restrictions: Valid number >= 0

Comment

Here you can enter a comment that explains the purpose of this node. This is the preferred way of documenting the test suite.

Note For detailed documentation, especially for Test set, Test case or Procedure nodes, this text area might not be the right place. There are many excellent editors that are much better suited to this task. The option External editor command lets you define an external editor in which comments can be edited conveniently by pressing Alt⁠+⁠Return or by clicking the External editor button.

You can trigger special behaviors of some nodes using doctags, please see Doctags.

If you enter text in the comment field of a Component node, the node will be considered as 'used' when you want to mark or delete unused components.

Variable: Yes

Restrictions: None