Examples you can use

This proxy sample explains how to extend the recording behavior of a control with SubItems and support for the corresponding playback.

Extended Capabilities: Recording controls with SubItems

This proxy sample extends the processSingleMouseEvent() proxy API to modify the recording behavior of a spin control. Although a spin control has two buttons and one text control as its children, from a testing perspective it must be treated as a single control with no children appearing in the TestObject Map. (In the TestObjectMap, the buttons and the text are treated as SubItems.) The processSingleMouseEvent() implementation sets methods with suitable SubItems, for example atButton("UP") or atButton("DOWN") as parameters for recording. Also note that although there are child objects for the spin control, you must make sure they are not listed as separate TestObjects. Therefore, the getChildAtPoint() and getChildren() APIs are extended to return null values. These child objects are treated as SubItems.

Playback Support

To support playback for each SubItem that is introduced during recording, looks for the screen rectangle for each SubItem through the proxy. The SubItem rectangle can be provided by extending java.awt.Rectangle getScreenRectangle(Subitem subitem) proxy API.

Deploy the binaries

Copy the JSpinnerProxy.jar and JSpinnerProxy.rftcust files to the customization directory and restart to test the sample application-under-test (AUT).

Verify the recording behavior

You can verify the recording behavior of the spin control:

  • Before you deploy the proxies, when you record results of the up and down buttons of JSpinner, the clicks are recorded as button.click(), where each up and down control is treated as a separate control.
  • After you deploy the proxies, clicking on the up button is recorded as spinner().click(atButton("UP")). Notice that the buttons are treated and recorded as SubItems and not as separate TestObjects.

Verify the playback behavior

  • Before you deploy the proxies, playing back user actions with SubItems, for example spinner().click(atButton("UP")) throws an exception, Point not found.
  • After you deploy the proxies, playing back user actions with SubItems work fine.