eggPlant Reference - eggPlant Documentation Home

Published on Documentation (http://127.0.0.1)
Home > eggPlant Reference
eggPlant Reference
eggPlant Functional Reference
This reference section is designed to provide quick information about the interface and script elements you'll find in
eggPlant Functional, TestPlant's test automation tool.
The appendices contain comprehensive lists of eggPlant Functional's script elements, suitable for printing.
PDF Version
If you want to access the documentation offline, you can download a PDF version of this manual from the following link:
Click Here for PDF Documentation [1]
Main Components of eggPlant Functional
1.
2.
3.
4.
The
The
The
The
Connection List [2]
Viewer Window [3]
Suite Window [4]
Run Window [5]
Table of Contents
The eggPlant Functional Menus [6]
The Info/eggPlant Functional Menu
The File Menu [8]
The Edit Menu [9]
The Run Menu [10]
The Connection Menu [11]
The Control Menu [12]
[7]
1
The Window Menu [13]
The Help Menu [14]
The Connection List [2]
The Viewer Window [3]
The Suite Window [4]
The Guide Tab [15]
The Script Editor [16]
The Image Viewer [17]
Tables Pane and Keyword-Driven Testing [18]
Results Pane [19]
Schedules Pane [20]
Sessions Tab [21]
Settings Tab [22]
The Run Window [5]
eggPlant Functional Preferences [23]
General Preferences [24]
Viewer Window Preferences [25]
VNC Preferences [26]
Script Preferences [27]
Run Options Preferences [28]
Text Preferences [29]
Mail Preferences [30]
eggPlant Functional Commands and Functions [31]
Image References [32]
Mouse Commands and Functions [33]
Text Commands and Functions [34]
Image-Searching Commands and Functions [35]
Image Information Functions [36]
Found-Image Information Functions [37]
Script Commands and Functions [38]
Reporting Commands [39]
SUT Commands and Functions [40]
Mobile Commands and Functions [41]
Global Properties [42]
eggPlant Functional Global Properties [43]
Run Options [44]
Running from the Command Line [45]
Mac: Running from the Command Line [46]
Windows: Running from the Command Line [47]
Linux: Running from the Command Line [48]
Appendix A: eggPlant Functional Commands [49]
Appendix B: eggPlant Functional Functions [50]
Appendix C: TypeText Keywords [51]
Appendix D: Global Properties [52]
Appendix E: Property Lists [53]
Appendix F: Pango Markup Tags [54]
Appendix G: OCR Language Support [55]
Help and Additional Information
Manuals
You can access all of the following manuals online through the TestPlant Documentation website [56]. You can also access
documentation within individual products by going to Help > Documentation.
Getting Started [57] provides instructions for a basic eggPlant Functional set up to get you started using this testing tool
and familiarize you with its functionality.
Using eggPlant Functional [58] is a collection of articles that delve into the eggPlant Functional workflow and explain a
variety of important tasks and concepts such as how to organize your testing process and how to use eggDrive to
integrate scripts from other testing tools.
eggPlant Functional Reference [59] describes the eggPlant Functional interface and scripting processes, and the
SenseTalk commands, functions, and global properties that are unique to eggPlant Functional.
SenseTalk Reference [60] is a comprehensive guide to the SenseTalk scripting language used with eggPlant Functional.
This manual discusses all aspects of the SenseTalk language that are used for general scripting purposes. Commands
and functions that are unique to eggPlant Functional are also described here.
The eggPlant Performance [61] manual describes how to set up, run tests, and view results with eggPlant Performance, a
load and performance testing tool.
The eggPlant Manager [62] manual provides instructions for a basic set up of eggPlant Manager, a test management
system. Learn how to schedule and execute tests and view results.
The eggCloud [63] manual describes how to deploy and administer eggCloud, a test-reservation system. You'll also learn
how to make reservations and how to connect through eggCloud.
The eggMan [64] reference helps you set up and get started using this free tool for manual testing.
The eggBox [65] manual describes this appliance, which comes with a range of pre-installed TestPlant tools and related
applications, and shows how you can use it to easily set up and run a test lab.
The eggPlant Network [66] reference describes the eggPlant Network appliance and how to use it to emulate network
conditions when testing with eggPlant Functional and eggPlant Performance.
Connecting to SUTs [67] is a reference for everything you need to know about how to connect to and test against mobile
devices with eggPlant Functional using either eggOn or iOS Gateway.
2
The Knowledge Base [68] is a collection of articles from different contributors that describe a variety of techniques and
approaches to using eggPlant Functional, as well as best practices and use-case scenarios.
Further Resources
The Examples section [69] of the TestPlant documentation provides a variety of example scripts using SenseTalk to run
eggPlant Functional tests, which you can adapt to fit your testing needs.
The FAQ section [70] gathers common problems and solutions for TestPlant products.
Online eggPlant Functional Tutorials: [71] This series of four interactive tutorials introduces the scripting environment and
some frequently used commands and functions.
eggPlant Functional User Forum: [72] Use this forum to ask questions of other eggPlant Functional users, help your peers,
and share ideas and approaches for using the product.
eggPlant Functional Examples Forum: [73] This forum is a collection of eggPlant Functional scripts written in SenseTalk
that address a variety of scripting problems.
The eggPlant Functional Menus
The eggPlant Functional Menus
This section describes the menus that are always present in the eggPlant Functional menu bar.
The eggPlant Menu
The eggPlant Menu
The eggPlant menu lets you view version and license information and access the General Preferences panel. The following
choices are found on the eggPlant menu:
About eggPlant
The About eggPlant option displays your current eggPlant Functional version number, followed by credits for the dedicated
and talented eggPlant Functional development team.
Preferences…
Preferences opens the General Preferences panel, which contains settings for a variety of features in eggPlant Functional.
Choose Preferences to fine-tune your test environment. (For more information, see eggPlant Functional Preferences [23].)
License Agreement
License Agreement brings up a document describing the conditions under which you are licensed to use eggPlant Functional.
Licenses…
Licenses opens the eggPlant License Registry, a panel that provides information on the specific eggPlant Functional licenses
available and those in use on the network. (For more information, see Licensing [74].)
Quit eggPlant
Use Quit eggPlant to quit or exit eggPlant Functional. If a script is running, Quit eggPlant displays a confirmation dialog
before quitting the program. You can choose to Quit Now, Quit After Next Script Run, or Cancel. If there is no script running,
you can bring up this dialog by holding down Alt (Option on Mac OS X) when you quit.
If you click Quit After Next Script Run, eggPlant Functional delays the quit until the next script run is complete, then quits
without further confirmation. (To cancel a delayed quit, choose Quit eggPlant again, and click Cancel in the confirmation
dialog.)
The File Menu
The File Menu
The File menu allows you to manage test suites and scripts; there are menu items that create, open, close, save, revert, and
print.
3
New Suite…
New Suite creates a new test suite in the Suite Editor. (For more information, see The Suite Editor [4].)
Note: You can name a default directory for new suites in the General preferences panel.
Open Suite…
Open Suite brings up an Open dialog in which you can select an existing suite to open.
New Script…
New Script creates opens the Script Editor for a new script for the active suite. The new script appears in the Scripts pane of
the Suite Editor.
Open Script…
Open Script brings up an Open dialog in which can select an existing script to open.
Close
The Close menu item closes the active window.
Save
If the Script Editor is the active window, the Save menu items saves the active script. If a Suite Editor is the active window,
the Save menu item saves all open scripts in the active suite.
Save As…
The Save As menu item saves the active script under a new name that you specify.
Save All
The Save All menu item saves all open scripts and suites.
Revert
Revert reloads the last saved version of the active script in the Script Editor.
Print…
The Print menu item prints the active script.
The Edit Menu
The Edit Menu
The Edit menu contains a menu items for editing and finding text in your scripts while working in the eggPlant Functional
Script Editor.
Undo
Undo reverses the last change you made to the text in the Script Editor. You can undo and redo many steps, in the order in
which they were performed.
Redo
Redo reverses the Undo menu item.
Cut
Cut removes selected text from your script and stores it in the computer’s clipboard. After you cut text, you can paste it
elsewhere using the Paste menu item.
Copy
4
The Copy menu item copies selected text to the computer’s clipboard without removing it from its original location. After
you copy text, you can paste it using the Paste menu item.
Paste
Paste inserts cut or copied text from the computer’s clipboard into a script.
Note: When you have a VNC connection open, you can paste text between the local computer and the SUT.
Select All
The Select All menu item selects every selectable item in the active window, or all of the text in a text field.
Extract New Script
The Extract New Script option lets you create a new script from a selection of code in the Script Editor, a form of code
refactoring. The selection is removed from the current script and a call to the new script put in its place. For detailed
information about using this feature, see the "Extracting Code into New Scripts" section of Reusing Code [75].
Complete
When you have typed at least one character in the Script Editor, Complete [76] attempts to finish your current word using
variables, commands, and names of scripts or images from your current suite. If there is a single match, the word is
completed. If there are multiple matches, you can select the appropriate word from a list of options.
To cancel the Complete without selecting any of the options, press the Escape key.
Show Resource
Show Resource opens the script or image selected in your text. Alt+click (Option+click on Mac OS X) is a shortcut for Show
Resource.
Insert Comment
Use the Insert Comment option to insert comment tags into your code. If you select text in the Script Editor, the option says
only Comment and selecting it will wrap your chosen text in comment tags.
Find
Find displays a submenu of the following commands that search for text in your scripts:
Find. The Find menu item opens the Find panel.
Find Next. Find Next searches forward in the current document and displays the next occurrence of the current Find
term.
Find Previous. Find Previous searches backward in the current or previous document and displays the last occurrence
of the Find term.
Use Selection for Find. Use Selection for Find takes the selected text in the Script Editor as the current Find term.
Jump to Selection. Jump to Selection scrolls through the current window to display the selected text. If no text is
selected, Jump to Selection displays the current insertion point.
Show Colors
You can use the Show Colors option to open the Colors panel. You can use the controls in the panel to define colors or use
the magnifying glass to pick an on-screen color, then drag from the color box into your script to define specific RGB color
codes in your scripts.
Special Characters (Mac OS X only)
The Special Characters menu item opens a panel that allows you to insert special Unicode characters into your script.
Note: Typing an international character in your script does not guarantee that it can be reproduced on the SUT. The ability
to send particular characters to a SUT depends on the capabilities of the SUT's operating system and VNC server.
Examples:
Your SUT and its VNC server both support unicode characters, so any unicode character in your script can be typed on
the SUT with no additional steps.
Your SUT uses an American keyboard layout, and when you type Asian characters, you use an input method editor
(IME). eggPlant Functional would also have to use the IME to send Asian characters to this SUT.
Your SUT supports unicode characters, but its VNC server does not. It may be possible to find a VNC server that
supports unicode characters; otherwise, eggPlant Functional would need to use an IME to produce international
characters on the SUT.
The Run Menu
The Run Menu
The Run menu contains controls for running and debugging scripts. (For more information, see The Run Window. [5])
5
The eggPlant Functional Run Menu when no script is running
Run Window. Opens the eggPlant Functional Run window, which will display the most recently run code and related results.
Run Script. Runs the script currently active in the Script Editor or Run window.
Tip: To start the script in a paused state for debugging, hold down Alt (Option on Mac OS X) as you choose Run Script.
Run Selection. Runs only the selected part of a script that is active in the Script Editor or Run window. Only available when
there is selected text in the active window.
Abort Script. Cancels the current script run. Only available when a script is actively running.
Animation. Highlights the current line of code in the Script Display area of the Run window as the script is running.
Animation Off: When you choose Animation Off, the Display area of the Run window does not update as the script
runs; only the initial handler for the script is shown, unless the execution is paused.
Animate Calls: When you choose Animate Calls, the Run window shows each script or handler as it is called, but it
does not highlight each line of the script.
Animate All: When you choose Animate all, the Run window highlights each line of each script or handler as it is run.
Notes: Animations cause scripts to execute more slowly, because eggPlant Functional is doing more work at the display
level. To improve script execution speed, turn off all animations when you are not debugging.
The script animation setting can be changed while a script is running, with immediate effect; it can also be modified
temporarily by scripts as they run. (For more information, see the ScriptAnimation in Global Properties [42].)
Tracing. Causes eggPlant Functional to “echo” information about what the script is about to execute to the Log Area in the
Run window. This is similar to script animation, but it allows you to review all of the code that is executed during the script
run, interspersed with logged output. This can provide more context when debugging a script.
Note:The tracing setting can be changed while a script is running, with immediate effect; it can also be modified
temporarily by scripts as they run. (See the ScriptTracing [77].)
Update Image. Brings up a submenu to control the Image Doctor settings.
When Image Not Found: If an image search fails...
6
Throw Exception (Doctor Off): Turns the image doctor off. The script will fail and an Exception will be thrown.
Show Panel (Manual Doctor): The image doctor is set to manual. The Update Image panel will appear, allowing you
to view diagnostic searches and adjust settings, among other things.
Auto Doctor: Sets the image doctor to auto. The Image Doctor will try a variety of diagnostic searches to see if it can
find the image without manual intervention.
When Multiple Occurrences Found: If multiple instances of an image are found with the current image search settings...
Use First Location: (Default.) eggPlant Functional will interact with the first image detected.
Show Panel: The Update Image panel [78] will appear, allowing you to view diagnostic searches and adjust settings,
among other things.
Log Warning: eggPlant Functional will log a warning, and then interact with the first location of the image found.
Throw Exception: eggPlant Functional will throw an exception, the script will fail, and it will not interact with any of
the instances of the image found on the screen.
Other Actions: There are some special instances where Image Doctor does not automatically engage. One of these is when
an image is referenced within an ImageFound() function.
Validate ImageFound(): Enables validation of images within ImageFound() functions by the Image Doctor.
Validate All Image Searches: Runs the image doctor
Diagnostics. Toggles that allow the selection of which Diagnostic searches are performed by the image doctor, as shown in
the Update Image panel.
See Image Update Tools [78] for information on the different diagnostic searches.
Image Highlighting. Toggles image highlighting on (checked) or off (unchecked). When image highlighting is turned on,
images are highlighted in the Viewer window as they are found during a script execution.
Debug Script. Runs the script in the active Script Editor or Run window, starting in a paused state. This allows you to step
through the script and follow its execution closely (The next line to be executed is highlighted in the Script Display area of
the Run window.)
Notes: While you are debugging, you can use the toolbar buttons in the Run window to step through the script, or allow it to
continue at a normal rate. (For more information, see The Run Window. [5])
You can also use Debug Script by Alt-clicking (Option-clicking on Mac OS X) the Run Script button in the Script Editor toolbar.
Debug Selection. runs only the selected part of a script in the active Script Editor or Run window, starting in a paused
state. This allows you to step through the script and follow its execution closely (The next line to be executed is highlighted
in the Script Display area of the Run window.)
Notes: While you are debugging, you can use the toolbar items on the Run window to step through the script, or allow it to
continue at a normal rate. (For more information, see The Run Window. [5])
You can also use Debug Selection by Alt-clicking (Option-clicking on Mac OS X) the Run Script button in the Script Editor
toolbar.
Pause/Continue Script. Toggle between Pause and Continue to pause and continue the current script execution. This
allows you to examine the state of the script and interact with the Viewer window in Live Mode.
Step Into. executes the next line of a script, then pauses. If this line calls another script or handler, the script “steps into”
the first line of the called script or handler before pausing again.
Step Over. performs a similar function, with one exception: If the line calls another script or handler, Step Over executes
the called script or handler entirely before pausing.
Step Over. Executes the next line of the script, then pauses. However, if this line calls another script or handler, that script
or handler runs in its entirety, “stepping over” it to the next line of original script before pausing again.
Note: During the execution of the script or handler that is stepped over, you can click Pause to regain control of the
execution before the Step Over action has finished.
Step Out. Executes all of the remaining lines in the current script or handler, then pauses. (Using Step Out on an initial
handler is the same as clicking Continue.)
Note: During the execution of the code being stepped out of, you can click Pause to regain control before the Step Out
action has finished.
Set/Remove Breakpoint. Toggle between Set and Remove Breakpoint to insert or remove a dynamic breakpoint in the
selected line of a script. (For more information, see Dynamic Breakpoints in The Script Editor [79].)
Remove All Breakpoints. Removes all breakpoints in all of your currently open scripts.
The Connection Menu
7
The Connection Menu
The Connection menu contains items that allow you to open and close VNC connections to SUTs. (For more information, see
The Connection List [2].)
Connection List
The Connection List menu item opens the Connection List, in which you can manage and open VNC connections to your
SUTs. (For more information, see The Connection List. [2])
Connect
The Connect menu item attempts to establish a VNC connection with the SUT selected in the Connection List.
Disconnect
Disconnect closes the VNC connection with the SUT selected in the Connection List.
Check Availability
Check Availability updates the availability status of SUTs in the Connection List.
To read about what the different status icons mean, please see "Status"
[80]
in The Connection List .
Add Connection...
Add Connection opens the Add/Edit panel in the Connection List, allowing you to add a new SUT to the Connection List.
Edit Connection...
Edit Connection opens the Add/Edit panel in the Connection List, allowing you to edit the selected SUT.
Remove
Remove deletes the selected SUT from the Connection List.
The Control Menu
The Control Menu
The Control menu contains many of the features that are in the Viewer window toolbar. (For more information on these
menu items, see The Viewer Window. [3])
Enter Capture Mode / Enter Live Mode
Enter Capture Mode disables your remote control of a SUT, so you can use your local eggPlant Functional tools to capture
images in the Viewer window. Capture Mode dims the Viewer window, making the selected Capture Area stand out at
normal brightness. (For more information on capturing images, see Capture Mode, in The Viewer Window [3].)
Enter Live Mode restores your remote control of the SUT.
To toggle between Capture Mode and Live Mode quickly, press Control (Command on Mac OS X). (You can change the toggle
key in Viewer preferences.)
Capture Image...
When the Viewer window is in Capture Mode, Capture Image takes a snapshot of the Capture Area.
Use Image... (Mac OS X and Linux only)
Use Image brings up an Open panel in which you can select a saved image to use in your script.
Find Text...
Find Text (formerly Text Image) allows you to search for text based on content and formatting properties.
Script Command submenu
The Script Command submenu contains common eggPlant Functional script commands and functions. Each menu item
inserts the indicated command into the current script. (For more information, see The Viewer window Toolbar in The
Viewer Window [3].)
Control Panel
The Control panel allows you to enter Full-Screen Mode, viewing the SUT in place of your own desktop.
Capture Screen
8
Capture Screen takes a snapshot of the entire Viewer window of your SUT. (For more information, see Capture Screen, in
The Viewer Window [3].)
Refresh Display
Refresh Screen requests a full-screen update from the SUT. This is useful for cleaning up occasional artifacts (drawing
errors) during scripting.
Send... Escape Codes and Function Keys
These items allow you to send commands to the SUT that would otherwise be intercepted by the eggPlant Functional
computer. For example, if you tried to type Control-Alt-Delete to force quit an application on your SUT, your eggPlant
Functional computer would intercept that command, and quit eggPlant Functional. Instead, you could choose the Send
Control Alt Delete menu item, and the command would bypass your local system.
Record Movie / Stop Movie (Mac OS X only): Deprecated
Note: This functionality has been deprecated.
Record movie opens a Save dialog in which you select a location to save your QuickTime movie. Recording starts when you
click the Save button. (For more information, see Record movie, in The Viewer window [3].)
The Window Menu
The Window Menu
The Window menu contains items that allow you to manage eggPlant Functional windows and toolbars.
Close Window
The Close menu item closes the active window.
Zoom Window
For most windows, Zoom Window enlarges the active window to the size of your display, or returns it to its previous size.
(The exception is the Viewer window, which never grows larger than its contents.)
Minimize Window
Minimize Window sends the active window to the Taskbar or Dock.
To see the window again, click it in the Dock, or choose it in the Window menu.
Hide Toolbar / Show Toolbar
Hide Toolbar causes the toolbar of the active window to disappear. If the active window’s toolbar is already hidden, the
action becomes Show Toolbar.
Customize Toolbar
Customize Toolbar brings up a panel in which you can select the buttons that are available in the toolbar of the active
window.
To add a button to the toolbar, drag the button from the Customize panel to the toolbar;
To remove a button from the toolbar, drag it off of the toolbar.
While the Customize panel is open, you can also drag buttons to different locations within the toolbar.
Active Connection
The Active Connection menu item brings up the Viewer window of the SUT you are currently working with. If your VNC
connection has been closed, you can still bring up the Viewer window showing the last known state of the SUT.
Run Window
The Run Window menu item brings the Run window in front of all other windows. If the Run window is minimized or closed,
choosing Run Window opens it.
The Help Menu
The Help Menu
The Help menu contains the eggPlant Functional help documents, as well as channels through which you can provide
feedback about eggPlant Functional and get additional assistance.
Use Online Documentation and Documentation
9
Use Online Documentation can be selected (checked) or not. When it is selected, clicking Documentation takes you to the
online documentation. If it isn't selected, clicking Documentation provides access to a PDF version of the online
documentation; the PDF version is updated with every release of eggPlant Functional.
Release Notes
The Help menu has an option to open the Release Notes document. This document contains information about the current
release of eggPlant, including changes that have been made since the previous release. The release notes are also available
online here. [81]
When you update to a new eggPlant Functional version, please check the Release Notes to read about significant changes to
the software.
eggOn Servers
This menu item takes you to the location in the local file system where any eggOn servers are located.
Tutorials
This menu item takes you to the online tutorials available for eggPlant Functional.
Examples
The Examples option takes you to theeggPlant Functional Examples [82] discussion forum where you can post questions and
engage in discussion with other eggPlant Functional users and TestPlant support.
Report Bug…, Request Feature…, Submit Question…
These three menu items open an eggPlant Support Request panel.
The Connection List
The Connection List
The Connection List contains the names and other information about all of the SUTs you can control through eggPlant
Functional. (For more information, see eggPlant Functional: Getting Started.)
Information Provided by the Connection List
The Connection List
The columns in the Connection List contain the following information for each SUT:
1. Status
The Status column indicates the SUT’s availability, denoted by a color-coded dot. To receive a status update, choose
Connection menu > Availability.
Connection List status colors:
Color
Meaning
Green
Connected
Blue
Available
10
Color
Meaning
Gray
Unavailable
Yellow
Unknown
Partial Yellow Connecting
Red
Error
Gold Halo
Active Connection
2. Name
The Name column refers to the display name a SUT sends to eggPlant Functional. Before eggPlant Functional connects
to a SUT, the Name column displays the same information as the Host column.
Tip: To insert the name of a SUT into a script quickly, drag it from the Connection List to the Script Editor. To insert a
connection property list into the script, Alt-drag (Option-drag on Mac OS X) the SUT to the Script Editor.
3. Host
The Host column displays the SUT’s host name or IP address.
4. Port
The Port column displays the number of the port on which the SUT listens for VNC connections.
5. Color
The Color column displays the setting you choose in the Color Depth menu.
6. SSH Host
The SSH Host column displays the host name or IP address of the computer that hosts an SSH tunnel for the SUT’s
secure connections.
7. SSH User
The SSH User column displays the account name with which the SUT user logs into an SSH host.
8. Activity
The Activity column displays a running description of your VNC connection.
For information on how to add, edit, and remove SUTs in the Connection list, please see Creating a Connection from
eggPlant Functional [83].
The Viewer Window
The Viewer Window
The Viewer window shows an image of the SUT as you would see it on its own display.
The Viewer Window has two modes; Live Mode and Capture Mode. You can interact with the SUT as a user in Live Mode [84],
and capture images to use in eggPlant Functional scripts in Capture Mode [85]. To toggle between Live Mode and Capture
Mode, click the "Enter Capture Mode" or "Enter Live Mode" icon in the toolbar [86].
Note: To toggle between Live Mode and Capture Mode quickly, press Control on Windows or Command on Mac OS X. You
can select a different key to perform this action in Viewer Window preferences.
Live Mode
11
The Viewer Window in Live Mode
In Live Mode, you can use your local mouse and keyboard to interact with the SUT as a user. This works just as if you were
using the SUT’s own keyboard and mouse directly. In Live Mode, you can also copy and paste text between applications
running on the SUT and your local computer.
Note: If the Viewer window is not your active window, your clicks and keystrokes are applied to your local computer, not the
SUT.
Capture Mode
12
The Viewer Window in Capture Mode
In Capture Mode, you can capture images of your SUT and insert commands and functions into your current script. You
continue to receive display updates from the SUT, but your mouse and keyboard events are applied to your local computer.
The Viewer window is dimmed in Capture Mode, except for the Capture Area, described below.
The Capture Area
The Capture Area
In Capture Mode, the Capture Area shows the area that is included when you save an image. It is the rectangle shown at
normal brightness when the rest of the Viewer window is dimmed.
To move the Capture Area, drag the edges. You can also nudge the Capture Area one pixel at a time by pressing the Arrow
keys. (Add the Shift key to move the Capture Area in ten-pixel increments.)
To resize the Capture Area, drag the corners. You can also nudge the size one pixel at a time with Alt-arrow (Option-arrow on
Mac OS X) keys. (Add the Shift key to resize in ten-pixel increments.)
The Hot Spot [87] is the little red cross-hair that you see inside of the Capture Area.
Note: The Capture Area is drawn with a grey border to make it easier to see on dark backgrounds; you can turn this border
off in Viewer window preferences.
The Hot Spot
The hot spot is the point that is clicked when a script executes a Click command on an image. The hot spot is typically
marked with red crosshairs; it automatically turns black when it is positioned over a predominantly red image.
13
To move the hot spot in a Capture Area, Control-click or Control-drag the crosshairs. You can also nudge the hot spot in onepixel increments with Control-arrow (Command-arrow on Mac OS X). Adding the Shift key moves the hot spot in ten-pixel
increments.
Capturing Images
To capture an image of the portion of the SUT as selected by the Capture Area, click the Capture Image button in the Viewer
window toolbar, or choose Control menu > Capture Image. For more information on image capture, see Best Image Capture
Practices [88].
Note: Images can also be captured using the assisted scripting functionality of other icons in the Viewer window toolbar,
described below. When these icons are used, related SenseTalk code is generated at the same time as the image is
captured.
Full-Screen Control
With full-screen control, you can view the SUT as your entire desktop. A small control panel provides access to the regular
Viewer window features.
To open the control panel, choose Control menu > Control panel.
To customize the buttons displayed on the control panel, right-click in the panel, and choose Viewer window items from the
contextual menu.
To return to your own desktop, click the Exit Full screen button, or use the keyboard shortcut Option+Command+1 .
The Full-Screen Control Panel
Zooming
It is possible to zoom in on the SUT while in capture mode. The Viewer window must be set to show the SUT at full scale; It
cannot be in "Scale to Fit" mode. To zoom in on Windows or Linux, hold Ctrl and press "+". To zoom out, hold Ctrl and press
"-". This is the same on Mac, except use the Cmd key instead of Ctrl.
The Viewer Window Toolbar
14
The Viewer Window, with the Toolbar Highlighted
Most of the buttons in the Viewer window toolbar are also represented as menu items in the Control menu
.
[12]
The toolbar buttons are described below. Since the toolbar can be customized, you might not see all of the buttons on your
own toolbar. (For more information on adding and removing toolbar buttons, see Customize, below.)
The Toolbar Icons
Enter Capture Mode / Enter Live Mode
This button toggles the Viewer window between Live Mode and Capture Mode. When you click the Enter Capture Mode
button, it turns to Enter Live Mode button, and vice versa. Images of both instances of this button as it is shown in the
Viewer window can be seen below.
: Enter Capture Mode
: Enter Live Mode
Note: You can also toggle between Live Mode and Capture Mode quickly by pressing Control on Windows or Command on
Mac OS X. You can select a different key to perform this action in the Viewer Window Preferences [25].
Full Size/ Scale to Fit
This button toggles between showing the Viewer window at the SUT's full display size, and showing the entire SUT scaled to
fit the size of the Viewer window. Images of both instances of this button as it is shown in the viewer window can be seen
below.
: Show Full Size
: Scale to Fit
Note: Switching between the sizing options has no effect on the functionality of the Viewer window, image captures, or
image matching.
15
Start Session/End Session
This button can be used to start and end Turbo Capture Sessions. It toggles between Start Session and End Session
according to whether or not a Turbo Capture Session is in progress.
: Start Session
: End Session
To read about how to use the Turbo Image Capture, please see Creating Tests with eggPlant Functional [89].
Capture Image
The Capture Image button takes a snapshot of the SUT as selected by the Capture Area and opens the Image Capture panel,
which is described in detail below [90].
Use Image (Mac OS X and Linux only)
The Use Image button opens the Use Image panel, in which you can select a saved image to use in a script. Option-clicking
a command button also opens a Use Image panel. The Use Image panel is described in detail below [91].
At the bottom of the Use Image panel, there is a pop-up menu of eggPlant Functional commands and functions [31] that you
can insert into the script with your selected image. For more information, see The Use Image Panel [91].
Find Text
The Find Text button (formerly the Text Image button) opens the Find Text panel, which allows you to search for text without
using a previously captured image. This feature can be used either with TIG [92] (Text Image Generation) or OCR [93] (Optical
Character Recognition). The Find Text panel is described in detail below [94].
Note: Shift-clicking a command button also opens the Find Text panel.
Click, DoubleClick, RightClick, MoveTo, Drag, Drop
These command buttons perform three actions at once:
Save an image of the SUT as selected by the Capture Area into the Images folder of the current suite.
Insert the respective SenseTalk command into the active script.
Perform the respective action on the SUT.
Please see the list below for images of these buttons and links to the associated commands for more information:
inserts a Click command
.
[95]
inserts a DoubleClick command
inserts a RightClick command
.
[96]
.
[97]
inserts a MoveTo command [98].
inserts a Drag command
[99]
.
inserts a Drop command
[100]
.
Add Image
16
The Add Image button takes a snapshot of the SUT as selected by the Capture Area, and adds it to the line indicated by your
insertion point in the Script Editor. (The exact location of the insertion point does not matter, as long as it is in the correct
line of the script.) The Add Image button is only available if the Viewer window is in Capture Mode.
WaitFor
The WaitFor command causes a script to pause and wait for an image to appear in the Viewer window.
When you click the WaitFor button, an image capture panel opens. In the Maximum Wait text field, enter the longest period
of time (in seconds) that you want the script to wait for the image to appear in the Viewer window.
When you run the script, the script executes the next command as soon as the WaitFor image appears. If the image does
not appear in the maximum wait time, the test fails.
Wait
The Wait command causes a script to wait for a specified period of time before executing the next command. This way, you
can allow an arbitrary length of time for the SUT to complete a task before proceeding with the script.
The Wait button opens a dialog in which you must specify the time (in seconds) of the Wait command.
Tip: The WaitFor command has two advantages over the Wait command:
WaitFor delays the next action in your script only as long as necessary to locate the appropriate image, while Wait
delays the next action for a fixed period of time, even if less time is needed.
The WaitFor command returns the time it took for its target image to appear. If you use the Wait command, you only
know that the image appeared sometime in the Maximum Wait time frame.
TypeText
The TypeText command sends text as keystrokes typed in the Viewer window, allowing you to simulate typing on the SUT.
The TypeText button opens a panel in which you can enter your text parameters. When you create a TypeText command
with this panel, clicking the Insert button automatically encloses your text parameters in quotation marks in your script.
Note: Text parameters enclosed in quotation marks are typed as literal text on the SUT. Text parameters that are not
enclosed in quotation marks are treated as variables.
Tip: When the Viewer window is in capture mode, you can start a TypeText command by typing the text you want to insert
into your script. For more information, see "Recording TypeText Commands" in Using eggPlant Functional.
Log
The Log command creates a custom entry in a script’s execution log.
To insert a Log command, click the Log button and type an entry into the Log panel. (If you provide multiple parameters,
each one is added to the script as a separate entry.)
Note: You can see the execution log in the Results Pane [101] of the Suite Window [4].
Comment
The Comment button opens a panel in which you can type a comment for the active script. The comment is inserted into the
script in the form (*Comment*). Comments can also be created through the Script Editor [102] as described here [103].
Capture Screen
The Capture screen button takes a snapshot of the entire Viewer window of your SUT.
Although screen captures in your Images directory appear in the Images pane of the Suite Editor, they are not added to a
script when you choose Capture screen . Instead, Capture screen is useful for other purposes, such as reporting,
documentation, and interface design discussions.
Note: The CaptureScreen command [104] performs screen captures from within a script, as opposed to the Capture screen
button, which performs screen captures independently of a script.
Refresh Screen
The Refresh screen button requests a full-screen update from the SUT. This is useful for cleaning up occasional artifacts
(drawing errors) during scripting.
Note: The Refresh screen button does not add a command to your script, as opposed to the RefreshScreen command
.
[105]
17
Abort Script
Abort Script stops a script in progress. It stops before executing the next line of the script.
Cursor Location
This field contains screen coordinates for the SUT cursor in the Viewer window. You can move the cursor to a particular
location by editing the coordinates in this field.
Home
The Home button presses the home button on mobile devices.
Rotate
The Rotate button rotates the screen of mobile devices in the Viewer window 90 degrees clockwise.
Swipe
The Swipe button brings up a panel to select the direction of the swipe. Options are to swipe left, right, up, or down.
Customize
The Customize button opens a panel in which you can select the buttons that are available in the Viewer window toolbar.
To add a button to the toolbar, drag the button from the Customize panel to the toolbar;
To remove a button from the toolbar, drag it off of the toolbar.
While the Customize panel is open, you can also drag buttons to different locations within the toolbar.
Deprecated Toolbar Buttons
Record Movie/Stop Movie (currently Mac OS X only): Deprecated
Note: This functionality is now deprecated.
The Record movie button opens a Save dialog in which you select a location to save your QuickTime movie. Recording starts
when you click the Save button.
All screen updates from the SUT are recorded in the movie, whether they are caused by a script, your interaction with the
Viewer window, or a user operating the SUT directly.
To end the movie, click the Stop movie button.
Note: The Record movie button does not create a script command; to add movie recording to a script, you must edit the
script manually.
The Image Capture Panel
The Capture panel is similar to a Save dialog box, with some additional script and image controls.
18
1. Image Name Field: The Image Name field defaults to a dynamically generated name that is unique to the current
suite, beginning with image0001 . This name may be sufficient for temporary scripts and experimentation, but more
descriptive names are easier to follow as you start scripting in earnest.
Image names can contain alphanumeric characters, spaces, and most punctuation marks.
2. Where Pop-Up Menu: The Where pop-up menu displays the folders in which you can save an image. The default
choice is the Images folder of the current suite.
3. Image Well: The central portion of the Capture panel is an image well that displays the captured image.
The Hot Spot in the image is indicated by red cross hairs. To move the Hot Spot, Control-click in the image (Commandclick on Mac OS X) or Control-drag the cross hairs (Command-drag on Mac OS X).
Note: If the captured image is too large for the image well, it is scaled down to fit. The actual image is not affected, but
it may appear distorted in the Capture panel.
4. Search Type Pop-Up Menu: The Search Type pop-up menu allows you to choose a search type other than the default
at the time of image capture.
Note:The Default Search Type
The default choice in the Search Type pop-up menu depends upon the image you are saving. eggPlant Functional
attempts to choose the most appropriate search type for each image. (Tolerant is usually the best choice, so it is the
most common default search type. Text and Text&Pulsing are never default choices.)
Note: You can adjust the tolerance of the Precise and Tolerant search types settings in Run Options preferences.
5. Command/Function Pop-Up Menu: To insert a command or function into the script with your image, choose the
command or function in the Command/Function pop-up menu.
To insert the image into the script with no command or function, choose Capture Image.
To insert the image into a selected command or function in the script, choose Add Image.
6. Creating a New Folder: To create a subfolder within the currently selected folder, click the New Folder button.
7. Making an Image Collection: To make an Image Collection based upon an existing image, select the image and click
the Make Collection button. The Image Collection takes on the same name as the image, and the image is
automatically moved into the Image Collection.
To read more about Creating an Image Collection, click here [106].
8. Max Wait Field: To specify the maximum wait time associated with the Wait or WaitFor commands, type the time (in
seconds) in the Max Wait field.
9. Cancel Button: To cancel the image capture and close the Capture panel, click the Cancel button.
10. Save Button: To complete the image capture and close the Capture panel, click the Save button.
The Use Image Panel (Mac OS X and Linux only)
The Use Image panel is similar to a standard Open dialog, with added script controls at the bottom.
You can open the Use Image panel by Alt-clicking (Option-clicking on Mac OS X) any command that typically opens a Capture
panel.
19
1. File Browser: The upper portion of the Use Image panel is a standard file browser. Use it to navigate between the
current suite’s Images directory and subfolders.
2. Command/Function Pop-Up Menu: To insert a command or function into the script with your image, choose it in the
Command/Function pop-up menu.
To incorporate the image into the selected command or function in the script, choose Add Image.
3. Max Wait Field: To specify the maximum wait time associated with the Wait or WaitFor commands, type the time (in
seconds) in the Max Wait field.
4. Cancel Button: To cancel the image selection and close the Use Image panel, click the Cancel button.
5. Insert Button: The Insert button completes the Use Image operation. It inserts the generated command or function
into the script, executes the command (if possible) and closes the Use Image panel.
The Find Text Panel
The Find Text panel allows you to search for text without using captured images. This can be used to find text with either the
OCR (Optical Character Recognition) or TIG (Text Image Generator).
OCR: The default platform is Generic OCR which uses the Optical Character Recognition functionality in eggPlant
Functional. OCR uses interpretive algorithms to look at pixel patterns on the screen of the SUT and identify characters
present on the screen. It checks its findings against a dictionary (the default dictionary is English) and it has access to a
variety of dictionaries, which allows it to read in many lanugages. For a list of supported languages, please see
Appendix G: OCR Language Support [55].
TIG: The is a Text Image Generator installed on the SUT to dynamically generate images of text and then search for
them. Text Image Generators can be downloaded from the TestPlant downloads [107] page.
To open the Find Text panel, click the Find Text button in the Viewer window, or choose Control menu > Find Text.
The Find Text Panel contains two sets of text properties; one for text platforms that use OCR (Optical Character
Recognition), and one for platforms that dynamically generate images of your defined text.
20
1. Text String Field: The Text String field contains the actual text that appears in your image. You must enter text here
before you can insert the text property list.
2. Platform Pop-up Menu: The Platform pop-up menu comprises the text platforms that you define in Text preferences.
Text platforms are usually distinguished by SUT operating system. Choose the Generic text platform or a text platform
that represents the SUT you are working with. (For more information about text platforms and TIGs, see Using eggPlant
Functional: "More About Text Platforms".
3. Style Pop-Up Menu: The Style pop-up menu contains choices of predetermined text styles. After you choose a style
as a starting point, you can change the individual attributes as needed. (For example, if your text uses a SUT’s standard
menu font but displays it in red, you can choose the menu style, then change the text color to red.)
You can define new styles in Text preferences.
4. Text Language Pop-Up Menu: The Text Language pop-up menu contains choices OCR language dictionaries.
5. Case Sensitive: The Case Sensitive check box determines whether or not your search is case-sensitive.
6. Contrast On: The Contrast On check box determines whether or not your search uses contrast. This is often useful
when working with anti-aliased text. It filters the screen of the SUT so that it appears two-toned to the OCR engine. You
can set a contrast Tolerance and contrast Color.
Best Practice: It is generally advised to use the background color as the contrast color, though in some circumstances
the text color can be used.
7. Command/Function Pop-Up Menu: To insert a command or function into the script with your text property list,
choose from the Command/Function pop-up menu. The preview field below the pop-up menu shows the text that is
inserted into your script.
To incorporate the text image into the selected command or function in the script, choose Add Image.
8. Max Wait Field: To specify the maximum wait time associated with the Wait or WaitFor commands, type the time (in
seconds) in the Max Wait field.
9. Cancel Button: To cancel the text property list and close the Find Text Panel, click the Cancel button.
10. Save Button: The Save button inserts the text property list into your script with the chosen command or function,
executes the command (if applicable), and then closes the Find Text panel.
TIG Only Elements:
Font and Size Fields: In the Font and Size fields, choose the font and size of your text if they differ from the chosen
style.
Bold, Italic and Underline Check Boxes: Select these checkboxes to generate bold, italicized, or underlined text in
your text image. Not all fonts can be drawn in a bold or italic form, so some font and style combinations cannot
produce a usable text image.
Note: Programs can differ in the way they draw underlining, so an underlined image may not produce the exact image
you need. If this is the case, use Capture Image to take a snapshot of your text in the Viewer window.
Text-Image Preview: To hide or show the image preview area, click the disclosure triangle or the words Text Image
Preview.
Previews of text images can be useful if your selected text platform uses a native eggPlant Functional text-image
generator (TIG) or another fast TIG on the network.
If the selected text platform uses a slower TIG, or the platform’s TIG is currently unavailable, the image preview can
slow down your system.
Search Type Pop-Up Menu: Search Type describes the level of precision eggPlant Functional requires to consider a
part of the Viewer window a match for your target image. For text, the best search type is usually Text. (For more
information, see Search Type pop-up menu, in The Capture Panel, above.)
This pop-up menu is only available when the image preview area is shown.
Text and Background Color Wells: To edit a text or background color, click the respective color well and select a
new color in the Colors panel.
Tip: The color picker in the Colors panel is especially useful for eggPlant Functional; it allows you to copy a color from
any place in your display, including the Viewer window. To use the color picker, click the magnifying glass in the Colors
panel, then click again wherever you see the color you would like to copy.
21
The Suite Window
The Suite Window
The Suite window is where you manage scripts, images, and run results within eggPlant Functional; it's the control hub for
all of your testing operations. However, more detailed results can be viewed with eggPlant Manager [62].
Opening a New Suite
To open a Suite window, choose File > New Suite or Open Suite. When you're working with multiple suites, you must open a
separate Suite window for each one.
When you create a new suite, you'll be prompted to select a Save location for the suite. After you've done that, the Suite
window opens, showing the Guide tab [15].
Note: On Mac OS X and Linux, if a suite folder is locked in your file system, a lock icon appears in the top left corner of the
Suite window. When a suite is locked, you can't add, remove, or edit any script resources. You can still run scripts, but run
data isn't saved.
Guide Tab
The Guide Tab
When you first create a new suite, it will open with the Guide tab open. The Guide tab gives you some pointers to get
started.
The Guide Tab in eggPlant Functional's Suite Window
Here are the options you can select on this pane:
22
New Script: Switches you to the Script Editor and creates a new, untitled tab.
Show Connection List: opens the Connection List window, where you define connections to your systems under test
(SUTs) and can open connections.
Note: If you're already connected to a SUT, section 2 of the Guide tab displays the Show SUT in Capture Mode button,
which takes you directly into your SUT.
New Table: Switches you to the Table Pane and creates a new, untitled table.
New Schedule: Opens a new tab and takes you to the Schedule pane to define a new schedule to run scripts.
To access the Guide tab from another part of the Suite window, you can select its tab at the top of the suite or you can click
the Guide button at the bottom left. If you wish, you can close the Guide pane; to re-open it at any time, click the Guide
button.
The Script Editor
The Script Editor
You use the eggPlant Functional Suite window to manage all the scripts in the active suite. You also use it to create new
scripts and run scripts.
The Scripts Pane
The Suite window's Scripts pane on the left sidebar shows all of the scripts in the suite. When you select a script in the
Scripts pane, the main pane of the Suite window opens a Script Editor tab with your selected script displayed in preview
mode (in a temporary tab). If you click away from it, its tab goes away. When a script is in preview mode, the Script Editor
appears gray.
eggPlant Functional's Scripts Pane in the Suite Window
Right-click within the Scripts pane (or on a specific script in the list) for a list of actions you can perform. On Mac OS X, you
can also click the gear icon at the top of the pane to view the actions list. Your options include:
New Script: Creates a new, untitled script in the scripts list, and a new Script Editor tab opens. You can also select
New Script from the File menu.
Run: Executes the selected script; you can also click the Run button on the Script Editor toolbar.
Debug: Runs the selected script in debug mode.
Open: Opens a script from preview mode into a permanent Script Editor tab for editing. You can also double-click the
script name to open it, or you can click in the Script Editor when the script is displayed in preview mode.
Reveal In Explorer/Finder: Opens a Windows Explorer or Mac OS X Finder window and shows the location of the
current script.
Rename: Allows you to change the name of the current script.
23
Delete: Deletes the selected script. You can select and delete multiple scripts at one time. All Script Editor tabs
associated with deleted scripts close.
Sort by: Allows you to sort the scripts list by Name, Modified Date, Last Run Date, and Status.
Show > Table Actions: Turns on the color indicator in the Scripts list so that any scripts that are enabled as table
actions are shown in blue.
Searching for a Script
To search for a particular script in your suite, type part of a script name or script text in the search field above the Scripts
list. To set a search filter, click the magnifying glass beside the Search field and choose Search All, Search Names, or Search
Contents from the drop-down list.
The Script Editor Toolbar
Along the top of the Script Editor, you'll find a toolbar with buttons to run scripts as well as other controls to help with
creating scripts.
The Script Editor Toolbar
The functions available on the toolbar are:
1. Run Script: Use this button to execute your scripts. While the script is running, the Run Script button changes to Abort
Script.
While a script is running (and not paused), you cannot perform any manual actions in the Viewer window or open and
close VNC connections.
To run a script in debug mode, Alt-click (Option-click on Mac OS X) the Run Script button. Debug mode loads the script
for execution and immediately pauses it so that you can step through line by line to closely follow its execution.)
Dynamic Breakpoints
Dynamic breakpoints are markers that cause a script to pause for debugging at designated points.
To set a dynamic breakpoint in the Script Editor, click in the narrow column to the left of the script. A black triangle
appears next to the line, denoting the breakpoint.
To change or remove a breakpoint, drag the triangle to another line in the script or out of the script entirely.
2. Run Selection: This button executes only the selected part of the script. The selection does not have to include an
entire line of code, but it must be syntactically complete and executable. For example, if you select the beginning of an
if block, you must select all the way through the end if statement.
To run the selection in debug mode, Alt-click (Option-click on Mac OS X) the Run Selection button. Debug mode loads
the selection for execution and immediately pauses it so that you can step through line-by-line to closely follow its
execution.
Note: When you run a selection, results are not generated in the Results pane of the Suite window.
3. Show Results: Click this button to go to the Results pane for this script.
4. Show Resource: Use this button to see the source of an image or script referenced in your script. When you select an
image name and click the Show Resource button, the image opens in a new Image Viewer [108] tab. When you select a
script name and click the Show Resource button, the script opens in a new Script Editor tab.
Note: You can also show a resource by Alt-clicking (Option-clicking on Mac OS X) a script or image name.
5. Comment: Use this button to insert a comment into a script. The button inserts an empty comment into your script at
the current cursor location. Comment text is not compiled as part of the script, and will look like the code shown below:
(*Comment*)
You can also comment out a portion of existing code by using the Comment button while a portion of text in a script is
selected.
Tip: Because comments are not compiled with the rest of the script, you can use the Comment button to temporarily
disable parts of a script.
When you select comment text, this button changes to Uncomment. You can un-comment a previously commented
portion of your script by selecting it and clicking the button. The selected text is then treated as a regular part of the
script.
6. Insert: This drop-down list contains common commands and functions that you can insert into your script. When you
choose an image-based item from this menu, an Open File dialog box lets you select previously captured images as
parameters to the chosen command or function. Choosing Add Image lets you insert the image into the script with no
new command or function.
The Find Text menu item opens the Find Text panel so that you can create an image based on text attributes.
Tip: On Mac OS X, Shift-clicking the Insert drop-down list lets you use any of the commands there with an OCR Find
Text search.
24
7. Handler: This drop-down list contains all of the handlers defined in the current script, including the script itself. You
can choose a handler from the list to jump to its definition in the script.
8. Line Jump: In this field, you can enter a line number and press Return to jump to that line in the script.
Note: If you have a handler selected in the Handler drop-down list, line number entered in the Line Jump field apply
only to that handler.
9. Save: The Save button saves the current script. When a script has unsaved changes, a yellow dot appears in the close
button in the top left corner of the Script Editor tab; the dot disappears when the script is saved.
10. Info: This button toggles a portion of the toolbar known as the Info pane. The Info pane contains supplemental
information about the current script, and the Table Action pane, enables you to define any of your scripts as possible
actions for tables. For more information, see Info pane [109] below.
11. SenseTalk Browser: This button is a toggle that shows or hides the SenseTalk Browser. It is displayed by default
when the Script Editor opens. For more information about it, see The SenseTalk Browser [110].
Note: By default, eggPlant Functional automatically saves scripts when you run them. You can change this behavior in
Script Editor preferences.
For more detailed information about creating scripts and running tests, see Creating Tests with eggPlant Functional [111] in
the Using eggPlant Functional manual.
The Info Pane
The Info button on the right side of the toolbar opens and closes a portion of the toolbar known as the Info pane. The Info
pane contains supplemental information about the current script, and the Table Action pane.
The Info Pane on the Script Editor's Toolbar
The information in the Info pane includes:
Length: This field tells you the number of characters in your script.
Modified: This field tells you the date the script was last modified.
Created: This field tells you the date the script was originally created.
Description: This text field lets you add information about the the purpose of the script or other pertinent notes.
Table Action Pane
The Info pane is also where you find the Table Action pane. The Table Action pane enables you to define any of your scripts
as possible actions for tables. (You can find out more about tables on the Tables Pane and Keyword-Driven Testing [18] page.)
25
The Table Action Pane under Info on the Script Editor toolbar
The fields you can set in the Table Action pane are as follows:
Table Action Type: This drop-down list provides the following options:
Not a Table Action: is for scripts that cannot be used in tables. This option disables the other options in the
Table Action pane. It is the default setting.
Execute: is for executing scripts that do not return a value to the table.
Verify: is for executing scripts that you want to verify a value against an expected result after execution.
Note: Selecting either the Execute or Verify option enables the Default Arguments field. Selecting Verify also enables
the Default Expected Value field.
Default Arguments: is an optional field that provides you with ways to enter default arguments for your script. For
more information see, Specifying Table Arguments on the Tables Pane and Keyword-Driven Testing [18] page.
Actual values: You can enter specific values you want as arguments in this field.
Tokens: You can enter tokens in this field. Tokens provide a list of the text or images in your suite. If your
argument is an image, use [@MyImageToken] in this field. If your argument is text, type [MyToken], where
MyImageToken and MyToken are the names you want to assign your tokens.
Default Expected Value: You can optionally enter a value or values in this field that you expect the script results to
match. When you run the script from a table, it compares the expected value to the actual result it returns to
determine if the run was successful. Note that you can also use the tokens described above in this field instead of an
actual value.
The SenseTalk Browser
The SenseTalk Browser provides you with a quick-reference for the SenseTalk programming language while you are working
in the Script Editor. Not only can you use it for a reference, but also to paste sample syntax from the SenseTalk Browser
directly into your script. You can also add your own topics and SenseTalk code to the SenseTalk Browser.
The SenseTalk Browser, when it is enabled, consists of the panes on the right side of the Script Editor. For more information,
see The SenseTalk Browser [112].
26
The SenseTalk Browser in the Script Editor
The SenseTalk Browser
The SenseTalk Browser
The SenseTalk Browser is a quick-reference tool for the SenseTalk programming language. It is built into the eggPlant
Functional Script Editor, where you can easily use it while you are working on your scripts. The SenseTalk Browser not only
provides information about the language, but also sample code syntax and templates you can insert directly into your script
and use. You can also add your own topics with SenseTalk code that you write, and then use them in the SenseTalk Browser
the same way you use the provided topics.
Below you will find the following information about the SenseTalk Browser and how to use it:
The SenseTalk Browser Panes [113]
Using the SenseTalk Browser [114]
Opening the SenseTalk Browser [115]
Finding information [116]
Editing sample code [113]
Tokens [117]
Working with custom snippets [118]
The CustomSnippets.rtf file [119]
The SenseTalk Browser Panes
The SenseTalk Browser, when it is enabled, consists of the panes on the right side of the Script Editor window. The
screen below shows the SenseTalk interface. The numbers on the screen correspond to the descriptions below it. For more
information about the Script Editor, see The Script Editor [16].
27
The SenseTalk Browser with the TypeText topic selected
1. SenseTalk sample code: This code shows how sample code you insert from the SenseTalk Browser looks in a script.
2. Search bar: This window at the top of the SenseTalk Browser enables you to search for topics.
3. The SenseTalk Browser button: This button, which is on the Script Editor toolbar, is a toggle that shows or hides the
SenseTalk Browser.
4. Topic pane: This top pane of the SenseTalk Browser lists the SenseTalk topics.
5. More on this topic: This button opens a web browser and displays the page for the selected topic in the eggPlant
Functional product documentation.
6. Plus (+)/Minus (-): These buttons add or remove a custom topic in the SenseTalk Browser.
7. Insert template/snippet into script: This left-facing arrow button inserts the sample code for the selected topic into
your open script.
8. Syntax bar: This bar shows the sample SenseTalk code syntax or template for the selected topic.
9. Description pane: This bottom pane of the SenseTalk Browser shows a description of the selected topic.
Using the SenseTalk Browser
You can use the SenseTalk Browser to search for or display topics related to the SenseTalk programming language,
including commands, control structures and more. Information about how to use the SenseTalk Browser and its features
follows.
Opening the SenseTalk Browser
The SenseTalk Browser displays by default when you open the Script Editor. You can hide the SenseTalk Browser by
clicking the SenseTalk Browser button in the Script Editor toolbar. This button is a toggle that shows or hides the
SenseTalk Browser.
Finding Information
The top pane you see in the SenseTalk Browser is called the Topic pane. The top-level list you see in the Topic pane consists
of the topic categories: SUT interaction, value assignment, control structures, connections, reporting and so on. To find the
information you want, you can browse the provided topics or use the search feature. When you select a category or topic, a
description of it opens in the Description pane. If the topic includes sample SenseTalk code syntax or a template that
sample displays in the Syntax bar.
Browsing Topics
Use the Topic pane to see the provided topics.
28
1. Scroll through list of categories in the Topic pane.
2. Expand a category to see the related topics below.
3. To display a topic, simply select it in the Topic pane.
Using Search
The SenseTalk Browser also provides a Search bar above the Topic pane that you can use to search for information in the
SenseTalk Browser. Any topics that match your search criteria display in the Topic pane.
Inserting sample code and templates
For some topics, the SenseTalk Browser provides sample SenseTalk code syntax or templates that you can insert directly
into your script and modify for use there.
To insert sample code or a template, follow these steps:
1. Place your cursor at the point in your script where you want the sample code inserted.
2. Insert sample using one of the following methods:
Double-click the topic that discusses the sample code or template you want, or
Select the topic that provides the sample you want and click the Insert template/snippet into script button.
Editing Sample Code
After you insert the sample SenseTalk code or a template into your script, you need to edit it as appropriate for your script.
Some of the SenseTalk Browser samples include placeholders, enclosed in square brackets. When you insert these
placeholders into your script, they are inserted as tokens as shown below.
Sample Click commands with tokens inserted into a script from the SenseTalk Browser
Tokens
Descriptions of the different types of tokens and how to use them follows:
Text tokens: Text tokens are enclosed in square brackets. For example, the sample code for the Mouse Event Click [text]
command is as follows: Click (Text:"[textToFind]"). After you insert a text token in your script, simply replace the token
"textToFind" with the text you want your script to find. Some of the code samples contain coordinates in a similar format.
For example, Click ([xCoordinate],[yCoordinate]). These coordinates are also text tokens. You replace them with x and y
coordinates to specify a location.
Image tokens: Image tokens are enclosed in square brackets and preceded with an "@" sign. For example, the sample
code for the Mouse Event Click [image] command is as follows: Click "[@imageName]" . After you insert an image token
into your script, move your cursor over it to display a list of all the images in your current suite. Then select the one you
want. The name of the image you select appears in the token.
Statement tokens: Statement tokens are enclosed in square brackets and preceded with a dollar ($) sign. For example,
the sample code for Reporting Test Case is shown below. After you insert a statement token, replace the
[$statementsToTest] with the statements you want your script to test. You can also select existing statements in your
script and then insert a sample with a statement token. In this case, the selected text is automatically inserted instead of
the token.
BeginTestCase [testCaseName]
[$statementsToTest]
EndTestCase [testCaseName]
Paired tokens: If a snippet contains more than one occurrence of a token, eggPlant Functional populates all occurrences of
that token at the same time when you provide the value for one occurrence. For example, the previous example contains
two occurrences of the text token "[testCaseName]." When you replace one occurrence with text, eggPlant Functional
automatically replaces the second occurrence with the same text.
Working with Custom Snippets
The SenseTalk Browser enables you to add your own topics and sample SenseTalk code, which are called custom snippets.
Once you add them, you can use them like any of the provided topics. Any snippets you add display under the Custom
Snippets category in the Topic pane.
29
The SenseTalk Browser with a new custom snippet
To add a custom snippet to the SenseTalk Browser, follow these steps:
1. Click the + button below the Topic pane. This inserts a topic, shown as Snippet 1 in the screen above, under Custom
Snippets in the Topic pane. It also enables the Syntax bar and Description pane for editing. If you have existing
custom snippets and you want to create sub-topics underneath them, select the custom snippet under which you want
to create the sub-topic and then click +.
2. In the Topic pane, rename the inserted snippet with the topic name you want.
3. In the Syntax bar, if you want to provide sample code, replace the text (enter snippet template here) with the syntax
for your SenseTalk code or template. You can also use tokens in your code using the syntax described above. If your
topic does not have sample code, leave it as is.
4. In the Description pane, replace the text (enter snippet description here) with the description you want for your
snippet.
5. Save your new custom snippet by simply navigating away from its input fields. The SenseTalk Browser saves the
snippet automatically. Once you save it, you can use your custom snippet and reuse its sample code like the other
provided topics in the SenseTalk Browser.
The CustomSnippets.rtf file
The SenseTalk Browser saves the custom snippets you create in a file named CustomSnippets.rtf. You can also edit this file
directly. Information about the location of the CustomSnippets.rtf file, how to edit it, and the syntax you need to use follows.
File Location
The CustomSnippets.rtf file is specific to your user account, or the user account you used to log into the machine and run
eggPlant Functional. The file location varies with different operating systems:
Mac and Linux: ~Library/EggPlant/
Windows: C:\Users\user_name\AppData\EggPlant\
File Format
The entry for each custom snippet in the CustomSnippets.rtf file consists of the topic name, a description, and optionally
sample SenseTalk code syntax or a template. If you do not create any custom snippets using the SenseTalk Browser before
you open the file, the file is empty when you open it. If you did create a custom snippet, you can see the format and syntax
the file uses as shown below.
Note: Because this is rich text file (.rtf), you may see formatting characters in some text editors, like Notepad++.
The CustomSnippets.rtf file stores the custom snippets created in the SenseTalk Browser
A description of the syntax you need to use for a custom snippet entry in the CustomSnippets.rtf file follows:
Custom Snippets->nameVariable: The Custom Snippet is the category under which the SenseTalk Browser lists the
custom snippets, and nameVariable is the name of the snippet. Enter the name of your topic where nameValue is shown in
30
this example.
@Template: This precedes the sample SenseTalk code or template. Leave it blank if your snippet does not have sample
code. If your snippet does has a sample, enter it on the line(s) below this one as follows:
In-line template: If you want your sample code to be inserted in-line, that is within an existing line. Enter the sample
without a blank line after it.
Multi-line template: If your sample has multiple-lines, separate each one with a newline character.
blank line: After your last line of sample code, press Enter to insert a blank line. This blank line ensures the SenseTalk
sample code is inserted on a new line within a script. Omit this blank line for in-line templates as described above.
@Description: This precedes the description. Enter your custom snippet description on the line below it.
@Documentation: This precedes a portion of the URL for a topic in the TestPlant documentation. Providing a URL is
optional. If you want to include a link to a topic in the SenseTalk documentation that is related to your custom snippet, you
include the end of the URL here. Important! The SenseTalk Browser automatically supplies the domain of the TestPlant
documentation website: http://docs.testplant.com [120]. Thus, you only provide the part of the URL that follows the provided
domain, and you can only provide links to pages in the TestPlant documentation. For example, suppose you want to include
a link to a discussion of variables in the SenseTalk Reference . The full URL for that page is as follows:
http://docs.testplant.com?q=content/variables [121]. Thus, you only provide the "?q=content/variables" part of the URL here in
the CustomSnippets.rtf file.
If you do not want to provide a URL, leave the "@Documentation" text in the file. The SenseTalk Browser requires it to parse
the file correctly.
@@@: This designates the end of an entry. Important! Although you do not see it in the file, you must also include a
newline character (i.e., press Enter) after the @@@ signs. To parse the file properly, eggPlant Functional requires this
newline character.
Editing the File
You can use any text editor to edit the CustomSnippets.rtf file.
To edit the file, follow these steps:
1. Open your text editor.
2. Open the CustomSnippets.rtf file in the text editor. Note: You may need to change the default file type in your text
editor's Open/Browse window to *.* or .rtf to see the file.
3. Locate and select the file, and then click Open.
4. Make the edits you want in the file. Refer to File Format [122] above for information about formatting the custom snippet
entries. Important! Any time you end a snippet entry with the @@@ signs, be sure to press Enter at the end of the
line, especially if it is the last line in the file. To parse the file properly, eggPlant Functional requires a newline character
at the end of line after the @@@ signs.
5. Save the file.
6. Close and re-open the eggPlant Functional application. The SenseTalk Browser lists the new or updated snippets under
Custom Snippets in the SenseTalk Browser.
The Image Viewer
The Image Viewer
This section describes the Suite window's Image Viewer and related panes used to create images and insert existing images
into your eggPlant Functional scripts.
The Images Pane
The Images pane on the left sidebar of the Suite window contains a list of all the images and image folders that are saved in
the suite. Folders are identified by a triangle to the left of the name in the list; you can click the folder name to expand the
list to show the images within.
31
eggPlant Functional's Images pane in the Suite Window.
If you hover the mouse over an image, a pop-up window displays the image itself. If you hover the mouse over a folder, a
pop-up window opens, displaying the first image within the folder; a number in the upper right corner of the pop-up
indicates the number of images in the folder.
By default, folders are displayed first in the Images list, followed by images that aren't collected in folders. However, you can
right-click in the Images list and clear the selection for Show Folders First if you want folders and individual images
alphabetized together.
Adding and Deleting Images
There are two ways to add outside images to an eggPlant Functional suite:
Drag one or more images or image folders from another location into the Images list in the Suite window.
Right-click in the Images list, select Add Images, then locate and add images or image folders through the file browser.
Note: eggPlant Functional accepts the following image file formats: TIFF, ICNS, ICO, PICT, GIF, BMP, PNG, PDF, and JPG/JPEG.
To create a new image folder, right-click in the Images list, select New Folder, then enter a folder name.
To delete an image or image folder, select one or more items in the image list, right-click, and select Delete .
Searching Your Existing Images
To search for images in your suite, type an image name or part of an image description in the Search field above the Scripts
list. (Note: This search function searches all the panes in the left sidebar simultaneously.) To set a search filter, click the
magnifying glass icon in the Search field and choose Search All, Search Names, or Search Contents from the drop-down list.
Tip: The search works as you type, so you might find your results before you finish entering your search term. However, if
you have searches that you frequently repeat, you can save your search as an item in the Search History by pressing Return
after you type the term. Your search is saved on the drop-down list under the magnifying glass.
The Image Viewer
32
When you select an image in the Images list, the main body of the Suite window displays the Image Viewer, which provides
options for working with images.
Image Preview
When you click an image once in the Images list, it opens in preview mode. This mode lets you browse images in a
temporary tab in the Image Viewer. Double-clicking an image or clicking in the preview display opens the image in a
permanent tab.
The Image Viewer's preview mode can be recognized by the gray background.
Note: This preview feature is also available when browsing scripts, tables, results, and schedules.
Image Viewer Components
The Image Viewer consists of several distinct areas that let you browse and manipulate images in your suite.
33
1. Image Well
When you select an image in the Images list, the Image Well shows you the captured image as it is currently saved.
The image's hot spot is marked by red crosshairs. You can change the location of the hot spot by Ctrl-clicking (Cmdclicking in Mac OS X) and dragging it to a new location. You can also nudge the hot spot one pixel at a time with
Ctrl+Arrow key (Cmd+Arrow on Mac OS X). Adding the Shift key moves the hot spot in ten-pixel increments.
Note: You can use these methods to move the image's hot spot outside the bounds of the image itself; however,
because you aren't viewing the image in place on the SUT, you should be careful about doing so to avoid unpredictable
results.
2. Image Name Field
You can use this field to edit the name of the image.
3. Searching & Properties
With an image selected in the Images list, the Searching & Properties section of the Suite window contains
supplemental information about the selected image and lets you change certain properties:
SearchType: Describes the level of precision eggPlant Functional requires to consider a part of the Viewer
window a match for your target image. The drop-down list lets you to select from the following settings related to
the image search:
Precise: The Precise search type requires a very high degree of precision to consider an image matched in
the Viewer window. This setting is useful for images with subtle color differences or little contrast.
Tolerant: The Tolerant search type accepts matches that have slightly different pixel colors caused by
background and transparency changes. Tolerant searches are more forgiving than precise searches, so they
reduce the chance of a script failing because of a minor variation in rendering.
Text: The Text search type allows for dynamic font smoothing (text anti-aliasing) in images that contain text.
If eggPlant Functional sometimes fails to locate an image that contains text, try changing the search type to
Text.
Pulsing: The Pulsing search type allows for pixel colors that can change, such as the pulsing buttons in Mac
OS X.
Text & Pulsing: The Text & Pulsing search type allows for both changing pixel colors and text anti-aliasing.
34
Tolerance: Lets you change the tolerance to color variation used in searching for the image.
Discrepancy: Lets you adjust the percent or number of pixels that can be ignored when finding a match to the
image.
Image Size: Displays the dimensions of the original image in pixels.
Hot Spot: Lets you change the image hot spot by entering new coordinates; click the Center button to return the
hot spot to the center of the image.
Scale: Lets you scale the original image.
Rotate: Lets you rotate the original image.
Capture Screen Size: Displays the screen size of the SUT on which the original image was captured, and lets you
change the values.
Description: Lets you add a description of the image. Optional.
4. Image Doctor
The Image Doctor is a utility that lets you adjust the search criteria for images that are not being found in the SUT
Viewer window. Using the Image Doctor requires an active remote connection. To use the Image Doctor, select an
image in the Image pane, and click the Search button. As the searches complete, the results for each type of diagnostic
appear in this area.
The searches include:
Standard Search: Searches for the image in its normal state with no adjustments.
Dynamic Tolerance: Searches by adjusting the image's tolerance setting. It starts at the image's normal
tolerance setting and gradually raises the tolerance until the image is found in the Viewer window.
Alternate Types: Searches by applying increasingly lenient search types until a match is found.
Scaling Search: Searches by looking for the image at a variety of different scales, ranging from 0.5 to 2.0, until a
match is found.
Discrepancy Search: Searches by gradually increasing the image's discrepancy setting until a match is found.
OCR Search: Searches for text in your image and attempts to find instances of that text on the screen.
Prior Location: Searches the location where your image was last found in a successfully completed test.
Note: You can choose a test run other than the most recently completed run by using the Mark As Prior Run
button on the Results pane for the script.
Original Location: Searches the location of the selected image at the time of original capture.
The Status column displays the found status of each diagnostic. If the particular diagnostic search found the image in
the Viewer window, the screen coordinates of the image are displayed in the Status column.
The Info column displays information about how much each successful diagnostic changed the search criteria to
produce a match.
Working with the Image Doctor
The Image Doctor provides several ways to use a selected diagnostic. The buttons below the diagnostic results become
available when you select a particular diagnostic from the list. Note that options are available only for diagnostic
searches that produced successful results, and not all options are available for all diagnostics.
Show Original Image: This shows the diagnostic image with your original image overlaid to help you discern the
difference between the two.
Fix: The Fix option replaces your image's original search criteria with the search criteria that produced the
diagnostic image match.
Recapture: This recaptures your image at the location where the diagnostic image is found.
Add Rep: The Add Rep option (for "Add Representation") turns your original image into an Image Collection and
saves the diagnostic image as part of it. (For more information, see Creating an Image Collection [106].)
5. Image Browser
This browser lets you navigate your images, seeing many or all of them at once. To open an image from here, simply
click it.
Tip: In this section, you can select multiple images at once by using Ctrl+click on Windows or Cmd+click on Mac, and
then change settings such as the Search Type in bulk.
Tables Pane and Keyword-Driven Testing
Tables Pane and Keyword-Driven Testing
eggPlant Functional's Suite window includes the Tables pane, which is where you can set up and manage keyword-driven
testing. You'll find the Tables pane on the left sidebar of eggPlant Functional's Suite window.
The Tables Pane
The Tables pane of the Suite window lists all the tables defined in the current suite. When you select a table in the list, the
table tab opens in the main suite window in preview mode (in a temporary tab). To open the table, right-click the table in
the list and select Open, or click in the main pane when the table is displayed in preview mode.
To create a new table, right-click in the Tables pane and select New Table. On Mac OS X, you can also click the gear icon on
the Tables pane title bar and select New Table. When you create a new table, a new tab opens in the Suite window with a
blank table, ready to be developed:
35
[123]
eggPlant Functional's Tables pane in the Suite window showing a newly created table. (Click image for larger view.)
Setting Up a Table
A new table consists of one blank row. Each time you define a row in the table, a new blank row is added to the bottom. You
can also add a new row either above or below a row by choosing the appropriate option from the Action drop-down list on
the toolbar or by right-clicking a row and selecting Insert 1 Above or Insert 1 Below.
The table includes several columns; some of these are pre-defined, others you need to assign:
Step: The first column includes the step number; this number is generated automatically and is not editable. Note that
you can also click and drag on this column to re-order your table, and if you do so, the step numbers update
automatically to reflect the new positioning.
Action: This column includes a drop-down list where you pick the action you want to perform on this step. In addition
to SenseTalk commands that are included here automatically, you can mark your own scripts to be accessible on the
Action drop-down list; you do so on the Info pane of the Script Editor tab [124] for each script.
Arguments: This column is where you enter arguments required by the command or script selected in the Action
column. For more information on arguments, see the section below on Specifying Table Arguments [125].
Expected Value: This column lets you insert the value you expect from the chosen action; for instance, for a boolean
expression, the expected value would be either True or False.
Note: When you declare scripts as table actions, you can include placeholder text for the expected value or include a
specific value.
Actual Value: After the step runs, this column displays the actual value for the action or command. (This value is not
editable by the user.)
Pass/Fail: After a run, this field displays Pass and a green background if the Expected Value matches the Actual Value
or Fail with a red background if they don't match. If the step encounters an exception, this column displays Error. If the
line completes successfully but there are no values to compare, the table cell turns gray.
Comment: The comment field lets you enter your own notes about this step. This field is optional and doesn't affect
the running of the step in the table.
Specifying Table Arguments
The Arguments column in the table lets you pass arguments, if required, to the commands selected in the Action column.
You can also pass arguments to scripts that you select as table actions. If you're passing multiple arguments for a single
action, separate them with commas.
When you use the drop-down list in the Action column to insert a SenseTalk command, a token for any required argument is
inserted in the Arguments column, and the token includes text that describes what the expected argument should be:
If the expected argument is an image, such as with the click command, the inserted token acts as a drop-down list,
which includes all the images in the current suite.
If the argument is text, such as with TypeText, the token acts as placeholder text; select the token and replace it with
the text you want to use.
Note: When you declare scripts as table actions on the Script Editor tab, you can define tokens and placeholder argument
text or pass actual arguments that show up here when the script is selected as an action; for information about this process,
see The Script Editor [126] page. You can highlight table action scripts by right-clicking in the Scripts list and selecting Show >
Table Actions. Any scripts you've enabled for use in tables turn blue in the list.
Passing Results as Table Arguments
A table step can reference the results from previous steps as arguments. That is, if a step returns a result, that result can be
used as an argument in a later step of the table. This ability effectively lets you pass table results to other table actions.
To use a step result as an argument, you reference the line or step number by using the number sign (#) and the specific
step number: #<step>. For example, to reference the result of step 3, you would use #3 as the argument. You can use
#prev to reference the previous line.
Table arguments let you pass results to later steps in the table.
36
You can also insert step references from the table toolbar or by selecting a row and right-clicking. Select Insert Reference
from the drop-down list, then choose the step number or #prev. Note that if you insert multiple arguments with this method,
the arguments are listed without commas, which is also valid syntax (the number sign serves as a separator).
Step references in arguments are relative to the line they initially reference. If you later re-order the lines of the table, step
references in arguments will update automatically so that they continue to point to the same action at its new step number.
Note: You can't reference a result that occurs in a later step in the table. For instance, in step 2, you can't reference the
result of step 5. If you re-order a table, be careful to ensure your references are still valid. You will get an error message if
you attempt to run a table that has invalid references.
Using Tables for Data-Driven Testing
You can build a table that pulls information from an external .csv file for data-driven testing. For information about datadriven testing, see the "Data-Driven Testing" section of Gathering and Using Data [127] and Data Driven Testing with eggPlant
Functional [128].
To attach a .csv file, click the folder icon on the tables toolbar. In the file browser, locate the .csv file that you want to use,
then click Open (Windows) or Choose (Mac). The file is referenced with a relative path. Best practice is to store your .csv
files inside the suite folder that will be accessing the file, which will allow you to access the file without needing to qualify or
re-establish the path if you connect to eggPlant Functional remotely or if you move the suite itself.
Note: Your .csv file must include a header row as its first row. Headers must be single words (i.e., no spaces); they can
include underscores but no other special characters.
You can reference values from an attached data file in the Arguments column and the Expected Value column. To reference
a value, you call the name of the column in the .csv file, preceded with the dollar sign ($). For example, if the first column in
your data file is called Location, you would insert $Location to call values from that column.
[129]
You can use eggPlant Functional Tables for data-driven testing. (Click image for larger view.)
A typical run of a table performs each table action one time; however, when you attach a data file for data-driven testing,
the table runs through fully once for each line of data in the file (excluding the header row, of course). Each iteration
accesses one row of data; within that iteration, all the rules of tables apply, including the ability to pass results to later
steps. However, no values are passed between iterations; each pass of the table begins with a new row of data from the .csv
file.
Responsiveness Testing with Tables
You might want to test or validate how long a table run takes to execute, or even how long specific steps take. You can
perform responsiveness testing with the BeginTimer and EndTimer commands on the Actions drop-down list.
When you insert a BeginTimer command, you can include an argument, which would be a name for the timer. The name
argument is optional; however, naming the timer lets you use nested timers. For instance, you could have a timer named
Main as the first and last lines of your table so that it provides a timing for the whole table; within the table, you could
enclose a subset of steps in a timer called Test1, which would allow you to validate a specific procedure within the table.
There is no Expected Value or Actual Value for BeginTimer.
The argument for EndTimer is the name of the timer you want to "stop." If the timer doesn't have a name, leave the
argument blank. Note, however, that the timer doesn't actually stop. Instead, it outputs the current timer value to the Actual
Value column, and the timer continues running. Therefore, you can start a single timer, then use EndTimer to check time
values at multiple points in your table run.
In the Expected Value column for EndTimer, you can insert a value that might be your timing goal for reaching that step of
the table. Remember that the Actual Value will be the value of the timer at that point, in seconds. The Expected Value you
use should be expressed as a simple comparison; for example:
< 1 minute
> 2 seconds
<= 42
Note that if you don't specify the units, seconds is assumed. Your Expected Value is compared against the Actual Value to
provide a Pass/Fail value for the step.
The Table Toolbar
Above the table, you'll find the toolbar, which contains several controls:
37
The Tables toolbar lets you manipulate tables for keyword-driven testing.
1. Run Table Script: This button begins a run of the table. In a typical run, all the steps in the table are performed once,
in sequence. However, if you have attached an external file (.csv) for data-driven testing, the run performs each line of
the table once for every row of data in the .csv (excluding the header). Even if an individual step fails, the run
continues to the next step. During a run, the Run button changes to Abort Table Script so that you can stop the run.
2. Run selection: This button lets you run selected rows from the table. Click to highlight the step or steps you want to
run. You can use Shift+click or Cmd+click (Mac)/Ctrl+click (Windows) to select multiple rows. Note that the rows you
choose for Run selection don't have to be contiguous, but they will always run in order.
3. Pause Table Script: You can use this button to pause a running table script. Click the button again (Continue Table
Script) to resume running the table.
4. Show results for this table: This button takes you to the Results pane and opens the tab for the the current table.
5. Action: The Action drop-down list includes options for working with the table. Most of these options are available only
when you have a line (or lines) selected in the table. The options are:
Insert 1 Above / Insert 1 Below: Inserts a new line in the table either above or below the currently selected
line; these options are available only when a single line is selected in the table.
Delete Row(s): Permanently deletes the selected row or rows from the table.
Disable Row(s): Disables the currently selected row or rows. Disable rows are preventing from running; you can
re-enable a disabled row by clicking it and selecting Enable Row(s) from the Action drop-down list.
Clear results: Clears the results from the last execution of the table from the Pass/Fail column and the Actual
Value column (for any row that receives an Actual Value).
Reset Arguments: Resets the argument for the selected row or rows to the default value for the currently
selected action; if there is no default value for an action, any value is cleared.
Reset Expected Value: Resets the expected value for the selected row or rows to the default value for the
currently selected action; if there is no default value for an action, any value is cleared.
Insert Reference: This option lets you insert a reference to a specific line to use the result of that line as an
argument. You can also insert the shortcut #prev to refer to the result of the previous line.
6. Data driven test file: If you have attached a .csv file for data-driven testing, the file name shows in this field, along
with the relative path.
Use the X (delete) button to the right of the field to remove a .csv file.
Use the folder icon button to open the file browser to attach a .csv file for data-driven testing.
7. Info: The Info button toggles a pane of additional information: table Length (in number of rows, i.e., steps), Modified
date, and Created date, as well as a Description field you can use to include notes about the current table.
8. Save: This button saves the current table. Typically, updates are saved automatically. However, whenever the table
contains unsaved changes, the close icon of the tab changes to a yellow circle; if you attempt to close the tab or the
Suite window, you'll get an Unsaved Changes warning.
Note: Tables can't be added to schedules
.
[20]
To learn more about using the tables feature to implement keyword-driven testing, see Using eggPlant Functional for
Keyword-Driven Testing [130].
Results Pane
Results Pane
The Results pane of the Suite window contains records of the tests you have run in the current suite. You'll see statistics for
each test you've run for each script and table by date and time; the complete log for each test; and images for any imagebased step in the log, including full-screen images captured in cases of failure.
38
eggPlant Functional's Results Pane
1. The Results List and Run Date List
Every script and table that you test is recorded in the Results list in the Suite window's left sidebar. When you click an item
in the Results list, the dates and times when that script or table was tested show in the Run Date list in the main pane of the
window.
The Run Date list is color-coded to denote test results:
Green: Success
Red: Failure (for tables, if any row fails, the result will show as Failure)
Black: Aborted or Interrupted
For each run date, the list displays the number of errors, warnings, and exceptions that occurred in the run. (For more
information, see The ScriptLogging [131] in Global Properties.)
Resource Links
Each run date listing includes an arrow that links to a results resource. Click the arrow to open a LogFile.txt file, which
contains a line-by-line record of the run.
Note: You might need to scroll this window or expand it to the right to see the clickable arrows.
Delete Log(s)
The Delete Log(s) button deletes the selected script or table logs. This action requires confirmation.
Mark As Prior Run
The Mark As Prior Run button lets you choose any of the run dates to serve as the "prior run" when using the Prior Location
diagnostic in the Image Doctor. Only one run date at a time can be chosen as the prior run. If no prior run is selected, the
Prior Location diagnostic uses the most recently completed successful run.
2. Statistics Area and Image Well
39
The Statistics area shows statistics related to the script or table selected in the Results list. In addition to the date and time
the test was first run and last modified, you can see the total number of times it has been run, including number and
percents of successes and failures.
You can click the Reset Stats button if you want to clear all the run statistics for the current script or table.
Below the Statistics is an image well. When you select a script step in the Log Area (described below) that includes an
image, that image appears in the image well. If the image is part of an image collection, the number of images in the
collection appears in the top right corner of the image well.
3. The Log Area
When you select an item in the Run Date list, the Log Area at the bottom of the Suite window shows the detailed log for that
run. The log shows each step that executed an eggPlant Functional command or function.
Note: The eggPlant Functional commands are an extension of the SenseTalk scripting language; for more information about
using the core SenseTalk language for advanced scripting, see the SenseTalk Reference Manual [60].
When you view log results for table runs, you'll still see a line for each step, but note that when you call a script as a table
action, that script can perform many steps; each step in the script appears as a line in the log of the table run.
You can double-click any step to open the Script Editor tab with that step highlighted. For each numbered line, the Log Area
provides the following information:
Time: The Time column shows the local system time when each step occurred. Times are recorded to the nearest
thousandth of a second. (You might have to widen the column to see fractional seconds.)
Message: The Message column displays the name of the function or command that was executed. (In SenseTalk,
command and function calls are referred to as messages.)
If an error occurred in the line, Exception is displayed. If the exception wasn't caught, the following lines display
EndTestCase and Failure.
Image: The Image column displays the name of any image used by the command or function in that step.
Resource Link: When the Image column displays the name of an image, the Resource Link column (which is the
narrow, unlabeled column to the right of the Image column) contains a link that opens the image's tab in the Image
Viewer.
Note: If the image is the result of a CaptureScreen command, the image opens in your default image viewing
application.
Text: The Text column displays additional information, such as the coordinates where images were found and
descriptions of errors encountered.
Action Drop-Down List
The Action drop-down list above the Log Area contains several actions that you can perform on the selected log entry in the
Log Area:
Show Script Line: Opens the Script Editor and highlights the line of the script associated with the selected log entry.
Show Image: Switches to the Image Viewer tab for the image associated with the selected log entry.
Apply Fix: For log entries that were generated by the Auto Doctor, this action permanently applies an Auto Doctor fix
to the selected image.
Searching for Log Entries
To search for log entries, type a search term (such as a command or image name) in the Search field above the Log Area.
To set a search filter, click the magnifying glass beside the Search field, and choose All Entries, Interesting Entries, or Errors
& Warnings from the drop-down list. (Interesting Entries include: warnings, errors, exceptions, log commands, start, and
end.)
Tip: To save your search term as an item in the Search drop-down list, press Return after you type the term.
Schedules Pane
Schedules Pane
Schedules let you collect scripts together that you want to run in a sequence. You can have multiple schedules that appear
in the Suite window's Schedule's pane in the left sidebar. When you select a schedule, it opens a Schedules tab in the main
Suite window.
40
The Suite Window's Schedules Pane
The Schedules Pane
The Suite window's Schedule pane on the left sidebar contains a list of all your defined schedules. To create a new schedule,
right-click in the Schedule list and select New. On Mac OS X, you can also click the gear icon at the top of this pane to find
the New option. The new schedule appears in the list with a default name; you should pick a meaningful and recognizable
name for your schedules.
When you select a schedule in the Schedules list, the Suite window shows the schedule in preview mode (in a temporary
tab). To open the schedule in a permanent tab, right-click the schedule in the Schedules list and select Open, or simply click
in the main pane while it's selected.
To learn about using schedules to run tests, see Running Scripts using eggPlant Functional Schedules [132].
Sessions Tab
Sessions Tab
The Sessions tab is for use with Turbo Capture>, one of the test creation workflows available as a part of eggPlant
Functional. To learn how to use the Turbo Capture through this tab and through the Viewer window [3], please see Creating
Tests with eggPlant Functional [89].
41
In the bottom left corner of the Suite window, there is a Sessions button. This opens the Sessions tab, which contains
information about all previously recorded Turbo Image Capture sessions. This tab is used to manage these sessions, as well
as use them to generate scripts.
This tab provides options to record new Turbo Capture Sessions, edit existing sessions, or delete sessions.
Creating a New Session
To create a new session, click Start Turbo Capture Session. Then, follow the instructions available under Creating Tests with
eggPlant Functional [111] to record and edit the session, and generate a script.
Editing an Existing Session
To edit an existing Turbo Capture Session, click Open Session. More information on editing sessions is available on the
Creating Tests with eggPlant Functional [89] page.
Deleting Turbo Capture Sessions
To delete a Turbo Capture Session, select the session to be deleted, and click the Delete button.
Turbo Capture Sessions should be deleted periodically, as they take up a fair amount of space on your computer. Each
action is recorded alongside a full-resolution screenshot of the SUT at the time the action took place.
Multiple sessions can be deleted at once by selecting multiple sessions and then clicking the Delete button.
Tip: You can tell whether or not a script has been generated from the session by looking under the "Status" column in the
table on this tab. Three statuses are possible:
New. The session has been recorded, but no editing has been completed yet.
In Progress. Some editing has taken place, but no script has been generated from this session.
Script Generated. The session has been edited and a script has been generated from this session.
42
If a script has already been generated from the session, it is a good idea to delete that session, so that unnecessary space is
not being taken up on your computer.
Settings Tab
Settings Tab
The Suite window's Settings tab contains general information about the current eggPlant Functional suite. You can access
the Settings tab by clicking the Settings button at the bottom left of the Suite window.
The Settings Tab of the Suite Window
Settings Tab Components
The Settings tab consists of four sections that provide information and let you set defaults for your suite. These four sections
are described below.
1. The Helper Suites Pane
The Helper Suites section on the Setting tab contains a list of the suites whose scripts, images, and helpers are available to
the current suite; such attached suites are known as helper suites. Helper suites are useful as core suites, with scripts and
images that you use across several other suites.
The table shows the following information about each helper suite:
Relationship: Shows how the helper suite is related to the current suite; either Includes if the current suite can
access resources from the helper suite, or Included by if another suite accesses the current suite as a helper suite.
Helper Suite: Displays the name of the attached helper suite.
Path: Shows the file path of the helper suite; red text indicates a file path that is no longer valid.
Double-clicking a helper suite in the list opens that suite (or brings it to the front).
Adding or Removing a Helper Suite
43
To add a helper to your suite, click the Add button and browse to select the suite you want to add.
To remove a helper suite, select it and click the Remove button. When you remove a helper suite, scripts in the current suite
can no longer access that helper suite’s scripts, images, and other helper suites.
Using a Relative Path for a Helper Suite
You can change the path of a helper suite to make it relative to your Home directory or your Default Suite Directory. To edit
the path of the helper suite, select the helper suite in your Helper Suites pane and click in the path.
Paths that start with a tilde (~/) are relative to your Home directory. Paths that start with a dot (./) are relative to your
Default Suite Directory [133].
For more information about using helpers, see Helpers
[134]
in the SenseTalk Reference manual.
2. Utility Scripts
The Utility Scripts section lets you declare pre-run and post-run scripts; you can also choose a script from the current suite
to act as a template for all new scripts.
Setting Pre-Run and Post-Run Scripts
If you set a pre-run script, this script executes before every script run in the current suite. A post-run script executes at the
conclusion of every script run.
You select pre-run and post-run scripts in the Utility Scripts section of the Settings tab. All the scripts in the suite are
available to select from the drop-down list for both pre-run and post-run. Note that only scripts from the current suite are
able to serve these functions.
The pre-run and post-run scripts have check boxes next to them. If you've defined these scripts for your suite but want to
run a script without the pre-run or post-run script, you can deselect the check box for that run.
Using Pre-Run and Post-Run Scripts
A pre-run script is called with three parameters:
The full path of the script that is about to be run.
A list of all of the parameters (if any) that will be passed to the script about to be run.
The full path to the log file that will be created during the script run.
You can use the pre-run script to change the parameters that are passed to the script. To do this, the pre-run script should
return a property list with a "parameters" property whose value is a list of the parameters.
A post-run script is called with two parameters:
The full path of the script that was run.
The scriptResult property list for the run, which is similar to the result returned by the RunWithNewResults command.
In addition to the parameters and return values described above, pre-run and post-run scripts can interact with the script
being run through a shared environment. For instance:
Connections: If you open a connection in the pre-script, it will be the active connection when the script being run
starts.
Global and Universal Variables: These types of variables are common across all three scripts.
Global Properties: These properties are common across all three scripts, including the InitialSuites and the
FinalSuites properties.
New Script Template
You can also specify a template script for new scripts in the Utility Scripts section of the Settings tab. If a template script is
chosen, each new script that is created in that suite begins as a copy of that script.
All the scripts in the suite are available to select from the drop-down list as the template script for the suite. Note that only
scripts from the current suite are able to serve as a template.
3. Results Directory
This Results Directory area shows the file path of the current suite's results. You can click the Browse button if you want to
select a new directory in the file browser.
4. Suite Description
This text field is a place for you to record your own notes about the current suite.
The Run Window
The Run Window
The Run window displays information about the currently running script. In the Run window you can manually control script
execution, view script output as it is generated, see and modify variables, and follow the progress of the script with
animation or tracing.
44
The eggPlant Functional Run window
1.
2.
3.
4.
5.
6.
7.
8.
The Run Window Toolbar [135]
The Script Frame Pop-Up Menu [136]
The Script Display Pane [137]
Dynamic Breakpoints [138]
The Log Pane [139]
The Ad Hoc Do Box and Do Button [140]
The Variable Watcher Pane [141]
Add/Remove List and Property List Items Buttons [142]
1. The Run Window Toolbar
The Run window toolbar contains buttons and menus for the tasks you can perform while your script is running. When you
change the width of your Run window, the buttons and menus available on the toolbar change. If you see the >> button, it
indicates there are more options. When you click >>, a menu displays showing the buttons and menus that do not fit in the
Run window at its current size. You can also customize your toolbar. For information about customizing your toolbar, see
Customize Toolbar on The Window Menu [13] page.
The Run window toolbar
1. Run Script/Abort Script:
The Run Script button reruns the last script that was run, or the entire script from which a selection was run. While a script
is running, the Run Script button becomes Abort Script.
While a script is running (and not paused), you cannot perform any manual actions in the Viewer window, or open and close
VNC connections.
Note: You can run the script in debug mode by Alt-clicking (Option-clicking on Mac OS X) the Run Script button. This loads
the script for execution and immediately pauses it, allowing you to step through line by line. (This is the same as choosing
Run menu>Debug Script.)
2. Run Selection
The Run Selection button executes only the selected part of a script. The selection does not have to include an entire line
of code, but it must be syntactically complete and executable. (For example, if you select the beginning of an if block, you
must select all the way through the end if statement.)
You can run the selection in debug mode by Alt-clicking (Option-clicking on Mac OS X) the Run Selection button. This loads
the selection for execution, but immediately pauses it, allowing you to step through it line-by-line to closely follow its
execution.
Note: When you run a selection, results are not generated in the Results pane of the Suite Editor.
3. Pause / Continue
The Pause/Continue buttons allow you to pause and continue execution whenever a script is running.
When the script execution is paused, you can perform additional operations:
Type commands in the Ad Hoc Do Box. (See The Ad Hoc Do Box and Do Button [140] section below.)
Use the debug mode tools: Step Into, Step Over, and Step Out. (See below.)
Interact with the Viewer window in Live Mode.
4. Step Into
45
The Step Into button executes the next line of a script, then pauses. If this line calls another script or handler, the script
“steps into” the first line of the called script or handler before pausing again.
Note: The Step Over button performs a similar function, with one exception: If the line calls another script or handler, Step
Over executes the called script or handler entirely before pausing.
5. Step Over
Like Step Into, Step Over executes the next line of the script, then pauses. However, if this line calls another script or
handler, that script or handler runs in its entirety, “stepping over” it to the next line of original script before pausing again.
During the execution of the script or handler that is stepped over, you can click Pause to regain control of the execution
before the Step Over command has finished.
6. Step Out
Step Out executes all the remaining lines in the current script or handler, then pauses. (Using Step Out on your initial
handler is the same as clicking Continue.)
During the execution of the code being stepped out of, you can click Pause to regain control before the Step Out command
has finished.
7. Edit Script
The Edit Script button opens the Script Editor for the script that is currently in the Run window. If you have text selected
when you click this button, eggPlant Functional attempts to automatically select the same text in the Script Editor. (If the
selected text has been edited since the last run, eggPlant Functional may not be able to find it in the Script Editor.)
8. Show Results
The Show Results button opens the last recorded results for the current script, in the Results pane of the Suite window.
9. Show Suite
The Show Suite button opens the current script’s suite in the Suite windo.
10. Animation
The Animation selection box highlights the current line of code in the Script Display area of the Run window while the script
is running. You can change animation settings at any time with immediate effect, including while a script is running.
Animations cause scripts to execute more slowly, because eggPlant Functional is doing more work at the display level. You
can improve script execution speed by turning off all animations when you are not debugging.
The Animation options are available as a selection box or pop-up menu, depending on how wide your window is. If it is wide,
you see the selection box. If it is narrower, you see it as a pop-up menu on the >> menu.
Animation Off: The Display area of the Run window does not update as the script runs; only the initial handler for the
script is shown, unless the execution is paused.
Animate Calls: The Run window shows each script or handler as it is called, but it does not highlight each line of the script.
Animate All: The Run window highlights each line of each script or handler while it runs.
Note: Animation settings can also be modified temporarily by scripts. (For more information, see the ScriptAnimation in
Global Properties [42].)
The >> button
The >> button indicates more options are available on the Run window tooblar. When you click it, a menu displays showing
the buttons and menus that do not fit on the Run window toolbar at its current size. When you change the size of your Run
window, the buttons and menus on this menu change. When your Run window is wider, more of the buttons and menus
show on the toolbar. When your Run window is narrow, more of the buttons and menus show on the menu.
Tracing
The Tracing menu is available as a selection box or pop-up menu, depending on the width of your window.
The Tracing menu on the Run window toolbar
Tracing causes eggPlant Functional to "echo" information about what the script is about to execute to the Log Area in the
Run window. This is similar to animation, but it allows you to review all of the code that is executed during the script run,
interspersed with logged output. This can provide more context when debugging a script.
You can change trace settings at any time with immediate effect, even while a script is running.
Note: Trace settings can also be modified temporarily by scripts. (For more information, see the ScriptTracing in eggPlant
Functional Global Properties [77].)
46
Tracing Off: Only standard log messages are displayed in the Log Area of the Run window.
Trace Calls: The Log Area of the Run window displays a message as it enters and leaves each script or handler.
Trace All: The Log Area of the Run window displays every line of each script or handler prior to executing it.
Note: Tracing causes scripts to execute more slowly, because eggPlant Functional is doing more work at the display level.
You can improve script execution speed by turning off tracing when you are not debugging.
The Doctor
The Doctor menu allows you to specify whether or not you want to use the Image Doctor and, if so, how you want to use it:
manually or automatically. For information about the Image Doctor, see Image Update Tools [78].
The Doctor menu is available as a selection box or pop-up menu, depending on the width of the Run window.
The Doctor menu on the Run window toolbar
Doctor off: The Image Doctor is not used during script execution.
Manual Doctor: The Image Update panel opens when an image fails. You can choose to proceed with a corrected image,
or allow the script to fail.
Auto Doctor: the Image Doctor automatically attempts to correct image failures and continues the script execution. In this
case, eggPlant Functional does not open the Image Update panel and the initial image failure is logged as a warning.
Multiple Found
The Multiple Found menu provides options for you to specify what you want to do when a script finds multiple occurrences
of the same image or text during a search that were not anticipated by the script.
The Multiple Found menu is available as a selection box or pop-up menu, depending on the width of your Run window.
The Multiple Found menu on the Run window toolbar
Use First Instance: eggPlant Functional uses the first occurrence of the image or text that it finds. It does not search for
other occurrences and the script continues to run. This is the default setting.
Show Panel: eggPlant Functional displays the Image Update panel when it finds multiple occurrences of an image or text,
like it does when it cannot find an image. When eggPlant Functional finds multiple occurrences, this panel opens with the
Start tab in focus, alerting you to the problem. You can choose to Diagnose and Fix the Problem or Capture a New
Image. This panel has a count-down. If you do not select an option, at the end of the count-down, eggPlant Functional uses
the first occurrence and the script continues to run. For more information about options and the panel, see The Image
Update Panel [78].
Important! The Image Update panel only opens when the Doctor menu is set to Manual Doctor on the Run window. See
The Doctor Menu above for information about using this setting.
Log Warning: eggPlant Functional writes a warning indicating it found multiple occurrences of an image or text to the log.
In this case, it uses the first occurrence and the script continues running. You can see this warning in the Run window Log
pane, with the rest of the logged script events.
Throw Exception: eggPlant Functional raises an exception. If your SenseTalk script contains exception handling code for
multiple occurrences of an image or text, it proceeds as specified in the exception handling code. If it does not, the script
fails.
Show Variables
The Show Variables menu provides options for the Variable Watcher feature. The Variable Watcher feature (7. Variable
Watcher Pane [141]) described below allows you to see and modify the effective SenseTalk variables while your script is
paused or running.
Note: The Variable Watcher does not continue to display variables after a script finishes running.
The Show Variables menu is available as a selection box or pop-up menu, depending on the width of your Run window.
47
The Show Variables menu on the Run window toolbar
The Show Variable menu options are as follows:
Never: This option disables the Variable Watcher and hides the Variable Watcher pane on the Run window.
When Paused: This option enables the Variable Watcher and shows the pane in the Run window. With this setting, you can
only see and modify the variables when a script is paused.
Always: This option enables the Variable Watcher and shows the pane in the Run window. With this setting, you can see
and edit the variables both while a script is running and while it is paused.
Note: Even when you use the Always setting, the variables only display while your script is running or paused. You will not
see them after your script finishes running.
2. Script Frame Pop-up Menu
The Script Frame pop-up menu displays the handlers that are being executed, listed in the reverse order in which they are
called.
When script execution is paused, you can select a different frame from this pop-up menu to view it in the Script Display area
and see which line it is currently executing. This also sets the context for commands typed into the Ad-hoc Do Box. For
example, if you want to output the value of a variable that is present only in the script handler that started your execution,
you must make sure to select the very bottom frame, numbered “1.”
3. Script Display Pane
The Script Display pane is the top half of the Run window. When script animation is turned on, the currently executed
handler is displayed here. (When script animation is turned off, the initial handler is displayed, but it is only updated when
the script is paused.)
Note: A handler is a unit of execution in SenseTalk. If a script does not explicitly declare a handler, the entire script is
treated as a handler. (For more information on handlers, see the SenseTalk Reference Manual .)
4. Dynamic Breakpoints
Dynamic breakpoints are markers that cause a script to pause for debugging at designated points. They can be added or
changed at any time, even while the script is running.
You can set a dynamic breakpoint in the Run window by clicking in the column to the left of the Script Display area. A black
triangle appears next to the line, denoting the breakpoint. (You can also set a breakpoint at your insertion point in the script
by choosing Run menu>Set Breakpoint.)
You can move a breakpoint by dragging the triangle to another line in the script, or remove it by dragging it out of the
column.
5. The Log Pane
The Log pane is the lower half of the Run window. As the script runs, the Log pane displays the following information:
1. The same information that is recorded in the script’s permanent log. (See the Results pane, in The Suite Editor.)
2. The output of Put commands that have no specific destination.
3. Script tracing information, when Script Tracing is turned on. (See the ScriptTracing, in eggPlant Functional Global
Properties [77].)
4. Output from commands entered in the Ad-hoc Do-Box. (See the Ad-hoc Do-Box, below.)
6. The Ad Hoc Do Box
The Ad Hoc Do Box (AHDB) allows you to modify a script while it is running. You can enter SenseTalk code in it to assign new
variable values, execute commands, or call other scripts. It also keeps a history of everything you enter, so you can rerun
previous entries. AHDB is located at the bottom of the Run window and is always shown.
Note: The AHDB executes the SenseTalk Do command to run your code. However, you will not see this command in the log
when you use it.
Using the Ad Hoc Do Box
48
Entering SenseTalk Code
To use AHDB, simply enter the SenseTalk code you want in the box as follows:
1. Type your first line of code in the box. For each additional line, press the alt + keys on Windows and Linux or Option +
keys on Mac. You can enter up to 10 lines and the box will automatically expand to accommodate them. Use the arrow
keys to move between lines when you have multiple lines.
Important! Pressing Enter in AHDB has the same effect as clicking the Do button—it executes the code. It does not
function like a carriage return for you to enter a new line.
2. Click Do or press Enter to execute the code. Note that if you click Do while your script is paused, your code executes
and then pauses again. You need to click Continue to continue running your script. If you click Do while your script is
running, eggPlant Functional finishes the line of code it is currently processing, and then executes the code you entered
and continues running the script.
Working with the History
AHDB also provides a history option. This enables you to return to code that you previously ran and run it again. The history
is saved for the duration of the eggPlant Functional session. It will be cleared when you restart.
To scroll through the History, use Alt + the up and down arrow keys on Windows and Linux, or Option + the up and
down arrow keys on Mac.
7. The Variable Watcher Pane
The Variable Watcher, when it is enabled, is the pane on the right-side of the Run window. The Variable Watcher enables
you to display the effective variables and edit their values while your script is paused or running. You can also configure the
types variables you see: local, global, universal or any combination of them. For more about using it, see the Variable
Watcher [143].
Note: The Variable Watcher does not continue to display variables after a script finishes running.
8. The Add/Remove List and Property List Items Buttons
The plus (+) and minus (-) buttons below the Variable Watcher pane enable you to add or remove an item from a list or
property list in the Variable Watcher while your script is running or paused. For more information about using lists and
property lists, see Lists [144] and Property Lists. [145] For more information about using the Variable Watcher, see Variable
Watcher [143].
The Variable Watcher
The Variable Watcher
The Variable Watcher, when it is enabled, is the pane on the right-side of the Run window [5]. The Variable Watcher enables
you to display the effective SenseTalk variables and edit their values while your script is paused or running. It also provides
you the option to configure the types of variables you show or hide: local, global, universal or any combination of them. For
more information about SenseTalk variables, see Variables [146].
Note: The Variable Watcher does not continue to display variables after a script finishes running.
Below you will find the following information about the Variable Watcher:
Using the Variable Watcher [147]
Enabling/Disabling the Variable Watcher [148]
Specifying the types of variables to show or hide [149]
Changing variable values [150]
Adding/removing items from lists or property lists [142]
49
The Variable Watcher pane in the eggPlant Functional Run window
Using the Variable Watcher
Information about using the Variable Watcher is provided below, including how to enable it, how to specify what variables
you want to show, and how to change variable values.
Note: The Variable Watcher truncates variable values to 40 characters. To see and edit longer values, see Displaying the
Expanded Edit Pan [151]e below.
Enabling/Disabling the Variable Watcher
To enable or disable the Variable Watcher, from the eggPlant Functional application Run menu, you can choose Show
Variables and select an option there. You can also use the Show Variables selection box or menu on the Run window
toolbar [5].
The options for using the Variable Watcher follow:
Never: Disables the Variable Watcher and hides the pane from the Run window.
When Paused: Enables the Variable Watcher pane and displays the variables only when your script is paused.
Always: Enables the Variable Watcher pane and displays the variables both while your script is running, and when it is
paused.
Note: Even when you use the Always setting, the variables only display while your script is running or paused. You will not
see them after your script finishes running.
Specifying the Types of Variables to Show
The Variable Watcher provides the Show Variable Types menu for you to specify the types of SenseTalk variables you
want to show or hide. SenseTalk uses local, global and universal variable types. Check marks on the menu indicate the types
of variables currently selected to show. For more information about SenseTalk variables, see Variables [146].
The Variable Watcher Show Variable Types menu
To display the Show Variable Types menu, follow these steps:
50
1. Click the drop-down button, highlighted in the screen above, to display the Show Variable Types menu. The menu
opens, showing the variable types available. These menu items are toggles that show and hide the variable types. The
variables selected to show have check marks; the variables that do not have a check mark are hidden. The menu
provides the following variable types:
Show Local Variables and Show Unassigned Locals: shows the effective assigned and unassigned local variables.
Show Global Variables: shows the effective global variables.
Show Universal Variables: shows the effective universal variables.
2. Select the type of variable you want to show, or ded. You can only select one option at a time. The menu closes after
you make your selection. The selections are listed in the bar at the top of Variable Watcher pane. For example, Locals
and Globals are the currently selected values in the screen above.
3. If you want to select additional variable types, repeat step 2.
If you change the variable type selections while your script is paused, you will see variables based on your new selections in
the Variable Watcher when you continue running your script. If you change selections while your script is running, eggPlant
Functional finishes the line of SenseTalk code it is currently processing and then implements the new selections. The
Variable Watcher shows the variables based on the new selections when they take effect.
Changing Variables Values
You can change a variable value in the Variable Watcher either when your script is paused or while it is running.
Editing a variable value in the Variable Watcher
To change a variable value, follow these steps:
1. Select the variable value you want to change in Value column.
2. Replace the existing value with the new value you want and press Return.
If you change a variable value while your script is paused, the new value takes effect when you continue running your script.
If you change a value while your script is running, eggPlant Functional finishes the line of code it is currently processing and
then the new value takes effect. Thus, you may not know exactly when the change takes effect.
Displaying the Expanded Edit Pane
The Variable Watcher truncates values in the Value column. To see a long variable value, you can display it in an expanded
edit pane as follows:
1. Double-click the variable value you want to change in the Value column to begin editing it. You edit the shorter values
right in the column. For longer values, which don't fully display in the column, the expanded edit pane opens as shown
below.
2. View the full variable value.
You can also edit variable values in this expanded pane as follows:
Select the variable value you want to see and double-click it.
1. Display the variable you want in the expanded edit window as described above.
2. Replace the value in the pane with the one you want.
3. Click Save. The new value displays in the pane and at least partially in the Value column above.
The Expanded Edit pane in the Variable Watcher
51
Adding or Removing an Item from a List or Property List
If your script includes a list or property list, you can add or remove an item from it using the plus (+) or minus (-) buttons
below the Variable Watcher pane. The buttons remain disabled until you click within a list or property list. For more
information about using lists, see Lists [144]. For more information about using property lists, see Property Lists [145]. Both of
these topics are discussed in the SenseTalk Reference [60].
Adding a List Item or Property
To add a new item to your list or property to your property list, follow these steps:
1. If you see only the name of the list or property list (like suitePath shown in the screen below), click the disclosure
triangle to display its list items or properties. The + button is disabled when the selected list or property list is closed,
or it applies to the parent list or property list if any.
2. Select the appropriate row in the Variable Watcher for where you want to add the new item. The following describes
what to select depending on where you want the row inserted:
Lists: If you select the row containing the name of the list, the new item is inserted as (item 1) at the top of the list as
shown in the screen below. If you select any other item in the list, the new item is inserted underneath the selected
item with the name (item x), where x is the number of the item in the list. This also applies to nested lists.
Property list: Regardless of what row you select in a property list, the new item is inserted into the list where it fits
alphabetically.
Click the plus (+) button.
If you are adding a new list item, the item is inserted into the Variable Watcher pane. Note that the new item has a
name (item x) but not a value.
Variable Watcher with a new list item inserted in a list
If you are adding a new item (property) to a property list, the Add Property to dialog box, shown below, opens for you
to add your new property name. Note that suitePath shown in the screen below will be the name of the property list you
selected and to which this new property will be added.
Enter the name you want for your new property and click OK.
The Variable Watcher Add Property to property list dialog box
Add a value for your new list item or property by placing your cursor in the Value column to the right of your new item,
entering the value you want, and pressing Enter. The value is now saved for your new list or property list item.
Removing an Item from a List or Property List
To remove an item from a list or property list, select the item and click the minus (-) button.
eggPlant Functional Preferences
52
eggPlant Functional Preferences
This section talks about all of the different preferences available in the eggPlant Functional Preferences. These options are
available under the eggPlant menu [7] in the application.
General Preferences
eggPlant Functional General Preferences
You access eggPlant Functional's Preferences by going to eggPlant > Preferences. The General tab or section of
Preferences controls several basic “housekeeping” behaviors, as described below.
On Startup
1. Reopen suites and scripts from last session. Selected by default. Select this checkbox to automatically reopen your last
open suites and scripts when you launch eggPlant Functional.
2. Reopen connections from last session. Selected by default. Select this checkbox to automatically reopen your last open
connections when you launch eggPlant Functional. (If eggPlant Functional cannot connect to a previously open SUT,
there is no alert or error message.)
3. Check for updates. Selected by default. Select this checkbox to automatically check for eggPlant Functional software
updates when you launch eggPlant Functional.
Connection List
4. Update connection availability. This drop-down list contains choices for how often SUT status in the Connection List is
updated. The default choice is Once at startup. (Regardless of your choice, SUT status is always updated when you first
53
open or close a connection.)
5. Maximum open connections. This drop-down list allows you to limit concurrent SUT connections to the chosen number.
The default is No Limit .
6. Close Connection List after opening a connection. When this checkbox is selected, eggPlant Functional closes the
Connection List window when you open a connection.
7. Show alert when a connection fails. Selected by default. When this checkbox is selected, eggPlant Functional prompts
you to retry or cancel when a connection fails.
8. Show table headers in the connection list. Selected by default. When this checkbox is selected, eggPlant Functional
displays table headers in the Connection List. For more information on table headings in this window, please see The
Connection List [2].
9. Enable Bonjour discovery of VNC servers. Selected by default. When this checkbox is selected, local computers that
have Bonjour networking technology enabled automatically appear in your Connection List.
Note: SUTs that are detected through Bonjour are not automatically saved to the Connection List. To save a Bonjourdetected SUT, open the add/edit screen for the connection, select Remember This Connection , then click Save;
otherwise, the SUT is removed from the Connection List when it is no longer detected on the network.
Note: On Windows operating systems, you have to install Bonjour to enable this feature; Bonjour is included with
installation of eggPlant Functional 15.1 and later for Windows.
Other Options
10. Automatically upgrade suites to the current version. Selected by default. When this checkbox is selected, eggPlant
Functional automatically changes any of your scripts that are effected by changes in SenseTalk commands and
functions.
11. Bring the Run window forward when a script is run. Selected by default. Select this checkbox to automatically open the
Run window (or bring it to the front) whenever a script is run.
12. Alert user when script execution fails. Selected by default. Select this checkbox to see an alert dialog box when a script
fails. (This option does not apply to scripts that are run as part of a schedule [132].)
13. Generate result log in JUnit-compatible XML format. Selected by default. Select this checkbox to generate script results
in JUnit-compatible XML format. These files are saved alongside the standard text log files generated by eggPlant
Functional.
14. Text file line endings. This drop-down list allows you to set the type of line ending eggPlant Functional should expect on
the host machine. Options are Mac / Linux (LF) or Windows (CRLF).
15. Show Image Popovers. These checkboxes, In Images List and In Scripts, allow you to choose whether you want to see
image pop-overs appear in the Images list [152] and in the Script Editor [102] of the Suite window, respectively. Both
options are selected by default.
Default Suite Directory
16. Default Suite Directory. This field contains the default location eggPlant Functional presents when you open a New
Suite, Save As, or Open dialog. Type a file path in the text field, or click the Browse button and navigate to the
directory. This location is also used as the initial setting of the Folder global property at the beginning of each script
run.
Viewer Window Preferences
Viewer Preferences
The Viewer Preferences control the ways you can interact with the SUT through the Viewer window
[3]
.
54
1. Live Mode Toggle Key. Choose the key used for quick toggling between Capture Mode and Live Mode in the associated
drop-down list.
Live Mode
2. Live Mode Cursor. This setting determines the appearance of your cursor in the Viewer window. Choose one of the
following in the drop-down list:
Local Cursor. This option displays the local eggPlant Functional cursor in addition to any visible SUT cursor.
Guide Box. This option displays the local cursor as a small guide box, in addition to any visible SUT cursor.
None. This option displays only the cursor that is native to the SUT, and displayed by its VNC server.
3. Mouse Scroll Wheel. This option determines whether mouse scrolling in a Viewer window is interpreted by the local
Viewer window, or by the active window in the Viewer window. Choose one of the following items in the associated
drop-down list:
Remote System. This option sends mouse scrolling through to the Viewer window.
Local Window. This option applies mouse scrolling to the Viewer window. (When the Viewer window does not have
scroll bars, mouse scrolling is sent through to the SUT.)
4. Mouse Right Click Key. This preference sets the modifier key you can hold to change a left click to a right click in the
Viewer window. (If you are using a standard mouse, you can just press your right mouse button; this setting is only
important if you don't have a right mouse button available.)
5. Mouse Middle Click Key. This preference sets the modifier key you can hold to change a left or right click to a middle
click in the Viewer window. (If you are using a standard mouse, you can just press your middle mouse button; this
setting is only important if you don't have a middle mouse button available.)
6. Auto-scroll window in Live Mode. When this checkbox is selected, the Viewer window scrolls in the appropriate direction
when the cursor is moved outside the Viewer window.
7. Track mouse outside of window in Live Mode. Select this checkbox to make the Viewer window cursor follow your
mouse movement outside the Viewer window.
Capture Mode
8. Remember image folder for next capture. Select this checkbox to have eggPlant Functional use the folder in which the
last image was saved when saving a new image.
9. Display Capture Area border. Select this checkbox to display a gray border around the Capture Area in Capture Mode.
The border can make it easier to see the Capture Area on dark backgrounds.
10. Name images with text when capturing. Select this checkbox to have eggPlant Functional use OCR when capturing
images to set the name of the current image to any text detected in the image.
11. Detect pulsing images when capturing. Select this checkbox to allow eggPlant Functional to attempt to recognize
pulsing images during image capture. In general, this is a useful feature; however, if you are working over a slow
network connection, pulsing detection can make your image captures impractically slow.
55
12. Default Search Type. Set the default search type for images. Tolerant by default.
Precise
TolerantM
Text
To read more about the different Search Type settings, please see "Searching" here [153].
Connections Preferences
Connections Preferences
These eggPlant Functional preferences pertain to VNC connections and communication.
Reverse Connections
1. Listen for reverse connections: Select this checkbox to allow SUTs to initiate VNC connections with the local
computer running eggPlant Functional.
VNC Encodings
2. This is a list of the common encodings in which data is transferred over VNC connections. The encodings appear in
order from most compressed to least compressed, and eggPlant Functional always starts at the top of the list and
attempts to use the most compressed encoding available.
Most computers experience the best VNC performance by using the fastest (most compressed) encoding available;
however, if you feel that your processor’s ability to decompress and draw data is more of a limiting factor than your
connection speed, you can disable the more compressed encodings.
Additional VNC Features
3. Copy Rect: Allows faster updates in the Viewer window by redrawing only the portions of the SUT that have changed.
4. Rich Cursors: Allows faster updates in the Viewer window by receiving cursor updates as screen locations, rather than
re-drawn cursors.
5. Detailed Connection Logging: Logs some additional information during connections for troubleshooting purposes.
On Mac this information is recorded in Console. On Windows this information will be in the Windows Event Viewer.
Mobile
6. ADB Version: Select the ADB version that eggPlant Functional will use. Only one version of ADB can run at a time.
Note that newer Android devices typically require 1.0.32 to take advantage of eggPlant Functional's built-in VNC server.
Script Preferences
56
Script Preferences
The eggPlant Functional Script preferences contain the controls for features that can make it easier for you to read and write
scripts. Script preferences can be found by going to eggPlant > Preferences, then selecting the Script tab.
General Pane
The General pane of the Script preferences tab provides basic controls for working with scripts in your eggPlant Functional
suites.
Script Saving Section
When a script is run: This preference determines how eggPlant Functional deals with unsaved script changes when
you run a script. You have the following options:
Don't save: Select this option to run scripts without saving changes.
Save that script: Select this option to auto-save script changes before running scripts.
Save all scripts: Select this option to auto-save all open scripts before running the current script.
Ask to save: Select this option to be alerted to unsaved script changes when you run a script.
Note: When a running script calls another script, the called script is read from the currently saved copy. If you have
unsaved changes in the called script, they are not executed.
When a script is modified: This preference determines what eggPlant Functional does if another user saves changes
to a script while you are using it. You have the following options:
Ignore: Select this option to keep the script as it currently appears on your desktop without loading the newly
saved version.
Reload the script: Select this option to reload your script when eggPlant Functional detects that the saved version
has changed.
Ask to reload: Select this option to have eggPlant Functional ask you whether to keep the current version or load
the saved version of your script.
Reload breakpoints from last save: Select this checkbox to automatically reset saved breakpoints when you open
scripts.
Text Section
Default Script Font: This field displays the default font of your text in the Script Editor. (New text and plain text
loaded from other scripts are both displayed in this font.) Click Set to select a font on your system. This font choice is
also used in the initial setting of the folder global property at the beginning of each script run.
Script Log Font: This setting determines the font used to display script results and output in the Log Area of the Run
window. Click Set to select a font on your system.
Allow Text Drag and Drop: Drag-and-drop text is enabled in the Script Editor by default. Deselect this checkbox if
you do not want to be able to move text by dragging it.
Completion Pane
The Completion pane of the Script preferences tab provides options for how the code auto-completion feature works when
57
you're scripting in the eggPlant Functional Script Editor.
Punctuation Assistance: Use this section to choose which punctuation marks you want eggPlant Functional to autocomplete, or close, as you type in the Script Editor.
Auto-Complete Statements: Use this section to determine which statement types you can auto-complete. For
example, with If Statements selected, when you begin typing an If statement, a pop-up window provides suggestions
for completion; you can select the variant you want to use from the list, and eggPlant Functional inserts the appropriate
code, ready for you to customize.
Suggested Completions: This section provides options to control how script suggestions and insertions operate.
To learn more about any individual option, hover the cursor over it to see explanatory text. By default, all options are
selected on the Completion pane. You can clear the checkbox for any option you don't want to use.
Indentation Pane
The Indentation pane of the Script preferences tab includes settings to control the automatic indentation of text in the Script
Editor.
58
Script Indentation Section
Indent scripts automatically: Select this checkbox to apply indentation when you insert a comment, paste text, or
press Return.
Indent control structures by / Indent continuation lines by: These preferences determine the size of your
automatic indentations. Select Tab(s) or Space(s), then enter the number of tabs or spaces to indent. Continuation
line refers to a long statement displayed across multiple lines. To force a line break in a statement, insert a backslash
(/).
The Tab Key. Choose an item in this drop-down list to determine the function of Tab in the Script Editor. The Tab key
can trigger indentation, insert a tab space, or both.
Example Script Section
This pane shows a script with the current indentation settings. As you make changes in the Script Indentation section, the
example script updates automatically to reflect the new settings.
Colorization Pane
The settings on the Colorization pane of the Script preferences tab control the automatic color-coding of text in the Script
Editor.
Enable syntax coloring: Select this checkbox to turn on automatic script colorization.
Update colors continuously while typing: Select this checkbox to automatically update colors in the current script
line as you type. If this feature is turned off, script colors are updated when you insert a comment, paste, save, or press
Return.
Colorization Settings: These settings let you customize the colorization of different script elements.
For each script element, select the first checkbox to auto-colorize it in the Script Editor.
To edit a script element’s color, click its color well, then select a new color in the standard Colors panel.
Select the Bold checkbox to display the script element in bold text.
Restore Colors: Click this button to restore colorization to the default settings.
Example Script
This pane displays a preview of the way scripts appears in the Script Editor with your current colorization settings. As you
make changes above, the example script updates automatically to reflect the new settings.
Run Options Preferences
Run Option Preferences
Run Option preferences are the default values of frequently-used run options.
To change these values for an individual script, use the SetOption command or set the global property within the script. (For
more information, see Run Options Global Properties [44].)
59
To restore all run options (from all four tabs) to their default value, click the Restore Defaults button at the bottom of the
preferences panel.
The Mouse Pane
The Mouse settings determine specific mouse behavior in the Viewer window during script execution.
1. Mouse Click Delay. This value represents the time between the press and release of a mouse click on the SUT.
2. Double-Click Delay. This value represents the time between the release of the first click and the press of the second
click of a DoubleClick command.
3. Mouse Move Speed. This value represents the maximum distance the mouse cursor can move per segment.
4. Mouse Drag Speed. This value represents the maximum distance the mouse cursor can drag per segment.
5. Mouse Move Delay. This value represents the delay between segments of mouse movement.
6. Movement Mode. This pop-up menu determines the path a mouse cursor takes when it moves from one place to
another. Choose Direct, Horizontal Then Vertical, or Vertical Then Horizontal.
7. Should reposition mouse during image search. Select this checkbox to have eggPlant Functional move the mouse to the
bottom right corner after an initial image search that did not reveal a match.
8. Restore Default Run Options. Restores all run options (from all four tabs) to their default value.
The Keyboard Pane
The Keyboard preferences determine specific keyboard behavior in the Viewer window during script execution. (For more
information, see Global Properties.)
60
1. Key-Down Delay. This value represents the length of time between a key press and release.
2. NextKeyDelay. This value represents the delay between typed keystrokes.
3. Send shift key down for capitals. This pop-up menu determines the whether or not eggPlant Functional will hold the
SUT's Shift key while typing capital letters. Choose from Always, Never, or When modifiers aren't down. If Never is
selected, eggPlant Functional sends capital-letter key codes to the SUT, without using the Shift key.
4. Enable Backslash Escape Codes. Select this checkbox to allow eggPlant Functional to recognize backslash escape codes
in scripts.
5. Restore Default Run Options. Restores all run options (from all four tabs) to their default value.
The Screen Pane
The Screen preferences determine search time and image tolerance in the Viewer window.
Search Timing
1. Image Search Time. The number in this field represents the approximate maximum time that you want to allow
eggPlant Functional to find an image match in the Viewer window. The actual time can be longer than the time
61
specified here, depending on other factors related to the search. Click the disclosure triangle to reveal or hide the
following preferences:
Search Delay: The value in this field is time between one image search and the next.
Search Count: The value in this field represents the number of times eggPlant Functional searches for a single
image match. (When the search count value is 1, eggPlant Functional does not perform a full-screen refresh and
reposition the mouse before failing. This can reduce delay when searching for images that are not present in the
Remote screen, but it can also cause unnecessary failures due to screen artifacts and timing errors.)
Note: The Image Search Time is equal to the Image Search Delay multiplied by one less than the Image Search Count.
Changing the Image Search Time affects the other two values, and vice versa.
Precise Image Tolerance
2. The position of this slider determines the level of precision eggPlant Functional requires to match an image with a
tolerant search. The number represents the maximum difference between an original pixel’s RGB value and the RGB
value of a presumed match in the Viewer window.
Standard Image Tolerance
3. The position of this slider determines the level of precision eggPlant Functional requires to match an image with a
standard search. The number represents the maximum difference between an original pixel’s RGB value and the RGB
value of a presumed match in the Viewer window.
Note: These image tolerance values affect your searches throughout every script you run in eggPlant Functional. If you
need to change these values, it is usually best to do it on a script-by-script basis.
4. Restore Default Run Options. Restores all run options (from all four tabs) to their default value.
The System Pane
The settings under the System pane allow you to configure how eggPlant Functional interacts directly with the remote
system.
Minimum Time Between SUT Actions
1. Remote Work Interval. The value in this fields represents the minimum delay between two commands that interact with
the SUT. (For more information, see the RemoteWorkInterval [154], in the Run Options Global Properties [44].)
Countdown on Manual Doctor
2. Doctor Delay. Doctor Delay is the time you have to act on a manual Image Docter event. When the Doctor Delay time is
62
up, the script proceeds normally. To turn off the Image Doctor timer, set the Doctor Delay to 0.
Refreshing Remote Screen Between Events
3. Force Screen Refresh. Select this checkbox to force the Viewer window to redraw the SUT after every line of script
executed. (For more information, see The ForceScreenRefresh [155], in the Run Options Global Properties [44].)
4. Restore Default Run Options. Restores all run options (from all four tabs) to their default value.
Text Preferences
Text Preferences
These settings define the text platforms that are available for use in text property lists. Each platform includes a Text
Engine, and any number of predefined text styles.
1. The Platform Pop-Up Menu: The Platform pop-up menu contains the names of all of the operating systems for which
you can currently create text property lists. To display and edit the properties of a platform, choose it in the Platform
pop-up menu.
2. Adding a Platform: To define a new platform, click the Add button. The new platform is created with the same initial
settings as the platform that was displayed when you clicked the Add button.
3. Removing a Platform:To remove a platform from Text preferences, choose it in the Platform pop-up menu and click
the Remove button. (You cannot remove the default platform unless you name a different default first.) Platform
removal requires confirmation, and it cannot by undone.
4. Set As Default: The default platform is the initial value of the CurrentTextPlatform global property [156] in your scripts.
To set a platform as the default, choose it in the Platform pop-up menu and click the Set as Default button. The default
platform name is displayed in bold text.
Text Engine
5. In the Text Engine pop-up menu, you can choose whether you want to search for your text with OCR (optical character
recognition) or a text-image generator specific to your SUT. The choices are listed in the table below:
Text Engines
Name
Operating
System
External
Windows
TIG
Native
TIG
Mac OS X
Additional Details
Host: The host name or IP address of the computer that is hosting your TIG. (To use a TIG on
the current SUT, type Current SUT .)
Port: The port on which the TIG host communicates. (The default port is 5899.)
Currently included in eggPlant Functional on Mac OS X only.
63
Text Engines
Name
Operating
System
OCR
Search
Any operating
system
Pango
TIG
Linux
Scripted
Custom
TIG
Additional Details
See note, below.
Command: The name of the TIG script.
Note: Installing the Pango TIG
The Pango TIG is not bundled with eggPlant Functional. To install the Pango TIG, download the bundle from TestPlant
downloads [157] , and save the download in the /Library/Frameworks directory, or in the ~/Library/Frameworks directory
of your user account.
Text Styles
6. This pop-up menu contains all of the defined text styles for the current platform. Each style includes a defined font,
size, text color, and background color; it may also include bold, italic, or underlined text. (For information on using
styles, see The Find Text Panel [158].) To display and edit a text style, choose it in the Text Styles pop-up menu
(discussed as part of The Find Text Panel [158]).
Note: Typically, a text style corresponds to a particular type of graphical interface element, such as menu item or title
bar .
7. Add: To define a new text style, click the Add button. The new text style is created with the same initial settings as the
text style that was displayed when you clicked the Add button; you can save time by choosing a text style that has
some attributes in common with the new text style.
8. Remove: To remove a text style from the current platform, choose the text style in the Text Style pop-up menu and
click the Remove button. This action requires confirmation, and it cannot be undone.
9. Font and Size Fields : In the Font and Size fields, type or choose a font and size for the current text style.
Note: The fonts in the pop-up menu are native to the computer that is running eggPlant Functional. You can always
type the names of fonts native to your SUTs.
10. Text and Background Color : To edit a text or background color, click the respective color well and select a new color
in the Colors panel.
Tip: The color picker in the Colors panel is especially useful for eggPlant Functional; it allows you to copy a color from
any place in your display, including the Viewer window. To use the color picker, click the magnifying glass in the Colors
panel, then click again wherever you see the color you would like to copy.
11. Text Attributes:Select the Bold, Italic, and Underline checkboxes to define a text style with those attributes.
12. Restore Defaults: Click this button to restore the Text Preferences to their default settings.
Sharing Text Platforms with Other Users
All of the text platform information you define in Text preferences is stored in a property list within your user account. Mac
OS X and Linux: ~/Library/Eggplant/TextPlatform.plist .
Windows: \Library\Eggplant\TextPlatform.plist .
To share platform definitions with another user account, copy this file into that account’s Library\Eggplant folder. (This
folder is not created until the user changes a text preference.)
Mail Preferences
Mail preferences
These settings determine the default mail server eggPlant Functional uses for the SendMail command
.
[159]
64
Mail Server for SendMail Command
1. SMTP Server. In the SMTP Server field, enter the host name or IP address of the server you use for sending e-mail.
2. Transport and Port. The Transport drop-down list lets you choose between Unencrypted, SSL, and TLS as the encryption
method for transport. In the Port field, enter the port used to connect to the mail server, or leave the field blank to use
the default value of 25, the standard mail port.
3. Authentication. From the Authentication drop-down list, choose None, Plain, Login, or CRAM-MD5 as appropriate for
your mail server.
4. User Name and Password. In these fields, enter the user name and password of the account you use for authentication.
If None is chosen in the Authentication drop-down list, these fields are not available.
eggCloud Preferences
eggCloud Preferences
These preferences are for use when connecting to devices in eggCloud. To read about how to connect to devices through
eggCloud from eggMan, please see Connecting to Devices from eggPlant Functional or eggMan [160].
Connection Information
1. Hostname. The IP address of the eggCloud machine on the local network (not the eggCloud subnet), and the port where
eggCloud is running on that machine.
2. Username. The email address associated with your eggCloud login credentials.
3. Password. The password associated with your eggCloud login credentials.
eggPlant Functional Commands and Functions
eggPlant Functional Commands and Functions
65
The commands and functions defined in this section are an eggPlant Functional extension of the SenseTalk scripting
language.
To incorporate the general SenseTalk commands and functions into your scripting, see the SenseTalk Reference Manual.
[60]
For reference tables of eggPlant Functional commands and functions, see Appendix A [49] and Appendix B [50] respectively.
Command and Function basics
Commands and functions are used very similarly. The significant differences between them are:
Functions always have return values; commands may have return values.
Functions are typically used as parameters to commands.
Commands must be written alone, not part of a statement; functions must be part of a statement.
Syntax Guidelines
1. Separate command and function parameters with commas:
Example: Click "SomeImage", "SomeOtherImage"
2. Enclose function parameters in parentheses:
Example: ImageLocation("ThisImage", "ThatImage")
Data types used in eggPlant Functional Commands and Functions
This section defines the following data types used with eggPlant Functional commands and functions: numbers, coordinates,
strings, and property lists.
Numbers
Single numbers passed as parameters are not enclosed in quotation marks or parentheses.
Example: ScrollWheelUp 10
Time
Time parameters are measured in seconds, unless you indicate otherwise. SenseTalk understands the terms weeks, days,
hours, minutes, seconds, and milliseconds.
Examples: Wait 75
Wait 1 minute 15 seconds
Coordinates
When numbers are given as coordinates, they are enclosed in parentheses.
Example: Click (40,65)
Adjusted Coordinates
eggPlant Functional also allows vector arithmetic to generate a location relative to a known position.
Examples: Click ((30,35) + (100,5))
Click (ImageLocation("SomeButton")+ (100,5))
Strings
Strings, such as file names and text literals, are enclosed in quotation marks.
Example: Click "CancelButton"
TypeText "Here is some text."
Note: Double angle-brackets << >> can enclose text that contains quotation marks and large blocks of text with return
characters.
Property Lists
Property lists define or identify objects by listing certain properties. Each property comprises a key, which identifies what the
property represents, and a value, which defines the property for the object.
Example: (ImageName: "MenuButton", HotSpot: (10, 23))
The example above describes an image that is the same as the saved image called “MenuButton”, but with a different Hot
Spot location: (10,23). The key ImageName represents the saved image that this property list is based on. The value of
ImageName is “MenuButton”, the actual name of the image.
Property lists are always enclosed in parentheses, with a colon between each key and its value.
Appendix E [53] contains tables of the types of property lists used in eggPlant Functional.
For more information, see Property Lists [161] in the SenseTalk Reference Manual
.
[60]
66
Image References
Image References
There are several ways to refer to images as command and function parameters: image name, image collection, image
property list, and text property list.
Image Name
Image names are text strings, and must be enclosed in quotation marks. File extensions are optional.
Example: Click "ImageOne"
Click "ImageOne.jpg"
Image Collection
An Image Collection is a folder of related images that are all acceptable versions of a basic image. For example, an Image
Collection might contain a "normal" image of a button, a selected version, and a disabled version.
Any image folder in your suite can be used as an Image Collection; just keep in mind that eggPlant Functional looks for
every image in the Image Collection, so a very large folder could slow down your script execution and cause eggPlant
Functional to find matches you are not interested in.
Image Collections are text strings, just like image names.
To learn how to create an image collection see Creating an Image Collection [106].
Example: Click "SaveButton"
Note: The functions ImageSize() and ImageHotSpot() cannot have Image Collections as parameters.
Collection Filters
You can use the global property the CollectionFilter
script, by name, image description, or both.
[162]
to narrow down the images eggPlant Functional looks for within a
Example: Set the CollectionFilter to (Name: "German")
Set the CollectionFilter to (Name: "German", Description: "New version")
In the first example, eggPlant Functional would limit searches to images with the string "German" in the image name. In the
second example, it would limit searches to images with "German" in the name, and "New version" in the image description
(as recorded in the Images pane of the Suite Editor).
Note: For filtering purposes, an image's subpath within an Image Collection is considered part of its name.
Image Property List
An image property list refers to a pre-existing image or Image Collection with the ability to override its default properties.
Every image property list must contain the ImageName property, and may contain any additional properties from the
following list.
ImageName: file name. The name of the image file. (Required.)
HotSpot: coordinate pair. The image's Hot Spot, coordinates relative to the top-left corner of the image.
WaitFor: number. The maximum time eggPlant Functional waits for the given image to appear on the SUT. (The
default unit of time is seconds; you can also specify minutes.)
SearchType: Precise, Tolerant, or Text. A general measure of how closely colors on the SUT must match the colors of
your images.
Tolerance: integer. A number that represents the acceptable color difference between pixels in an image and a match
in the Viewer window. (You can set a single value that is used for red, green, and blue, or three separate values
separated by commas.)
Discrepancy: integer. The percentage of pixels (with a percent sign) or number of pixels (with no percent sign) by
which the image and a match in the Viewer window can differ.
Pulsing: boolean. Whether or not the search type allows for a pulsing image.
CollectionFilter: text string. For Image Collections only, CollectionFilter limits the images that are searched for within
an Image Collection. (For more information, see Collection Filters [163], above.)
ClipRectangle: rectangle. With (0,0) being the top-left corner of the image, the cliprectangle is a pair of coordinates
that define a rectangle within the captured image. Only the pixels inside this rectangle are considered for image
matches.
SearchRectangle: rectangle. With (0,0) being the top-left corner of the screen, the SearchRectangle is a pair of
coordinates that define a rectangle in the Viewer window. eggPlant Functional only looks for this image within the
defined rectangle.
Example: Click (ImageName: "CloseButton", HotSpot: (10, 23), SearchType: "Tolerant")
Text Property List
67
A text property list (formerly text-image property list) is a description of text on the SUT. Every text property list must
contain the Text property, which defines the actual text string you are looking for, and any number of the additional
properties described below. Any property that is not included in the property list defaults to your Text preferences settings.
Common Text Properties
The following text properties can be used with any text property list:
Text: text string. The text string that you want to find on the SUT. (Required.)
TextPlatform: text-platform name. The name of the text platform that generates the Text Image. (For more
information, see the TextPlatforms Global Property [164].)
TextStyle: text-style name. A group of predefined text properties. (For more information, see The Find Text [165]Panel
[166].)
Generic (OCR) Text Properties
The following text properties can be used with the generic text platform (or any text platform that uses the OCR text
engine):
CaseSensitive: boolean. Whether or not eggPlant Functional considers case in text searches.
Contrast: boolean. Whether or not the SUT display is internally converted to a high contrast, two-color image. If
contrast is on, the contrast color is considered the primary color of the SUT display, and all other colors are treated as
the secondary color. (Text can be found in either color.)
ContrastColor: color name or value. When contrast is on, contrastColor is the color that is considered the primary
color of the SUT display.
ContrastTolerance: boolean. When contrast is on, contrastTolerance is the maximum per-channel color difference
that is allowed for a pixel to be seen as the contrast color. The default contrast tolerance is 45.
DPI: Integer. The DPI property refers to the DPI (dots per inch) of the SUT display. The default DPI is 72; if you are
having problems finding your text on the SUT, check the SUT's DPI setting, and adjust the DPI property of your text
property list accordingly.
IgnoreSpaces: Boolean. The ignoreSpaces property causes OCR text searches to disregard spaces in your text string.
For example, the string "My Computer" would match MyComputer or M y C o m p u t e r. The ignoreSpaces property is
on by default, because the OCR sometimes read spaces that are not intended, especially in strings that are not discrete
words, and in text with unusual letter-spacing.
IgnoreUnderscores: Boolean. The ignoreUnderscores property causes OCR text searches to treat underscores as
spaces during searches. For example, the string "My_Computer" would match My_Computer or My Computer. The
ignoreUnderscores property is on by default, because the OCR sometimes fails to recognize underscores.
Language: language name.The natural language of the text you are searching for.
ValidCharacters: Text string. The ValidCharacters property limits the characters that may be found by the OCR text
engine. ValidCharacters can be limited to the characters in the string you are searching for by setting the string to "*".
This can be useful if you are trying to "force" a text match from characters that are not being recognized. If the OCR
determines that characters are present in the defined area but they do not match characters provided in the
ValidCharacters string, it will return "^".
Platform-Specific (TIG) Text Properties
The following text properties can be used with text platforms whose text engine is a text-image generator (TIG):
TextFont: The name of the font used in the Text Image.
TextSize: The size of the text in points.
TextColor: The color of the text.
TextBackgroundColor: The background color of the Text Image.
Bold: Whether the font is displayed as bold; true or false.
Italic: Whether the font is displayed in italics; true or false.
Underline: Whether the text is underlined; true or false.
Anti-aliasing (Pango TIG on Mac OS X only): Whether or not text is anti-aliased; on or off.
UseMarkup: Whether or not supported markup tags are recognized as text attributes (on), or treated as string literals
(off).
Example: Click (Text: "Cancel", TextStyle: Win2K, TextBackgroundColor: white)
For more information, see The Find Text
Panel and Text preferences
[165]
.
[167]
Mouse Commands and Functions
Mouse Commands and Functions
This section describes the eggPlant Functional commands and functions that control the SUT’s mouse in the Viewer window.
Click Command
Example: Click "ImageOne", "ImageTwo", "ImageThree"
Click (2,4)
Parameters: One or more image references; or a single coordinate location.
Behavior: Clicks the SUT mouse in the Hot Spot of the first location found. (eggPlant Functional searches for images in the
68
order in which they are listed.)
DoubleClick Command
Example: DoubleClick "SomeImage", (Text:"SomeWords",Italic: No)
DoubleClick (25,358)
Parameters: One or more image references; or a single coordinate location.
Behavior: Double-clicks the SUT mouse in the Hot Spot of the first location found. (eggPlant Functional searches for images
in the order in which they are listed.)
RightClick Command
Example: RightClick (imageName: "SomeImage", searchType: Text)
RightClick (12,355)
Parameters: One or more image references; or a single coordinate location.
Behavior: Right-clicks the SUT mouse in the Hot Spot of the first location found. (eggPlant Functional searches for images in
the order in which they are listed.)
MouseButtonDown, MouseButtonUp Commands
Example: MouseButtonDown 2
MouseButtonUp 4
Parameter: A single mouse button number, 1-8.
Behavior: Presses (MouseButtonDown) or releases (MouseButtonUp) the mouse button indicated by the parameter. These
commands are the only way to send mouse button events other than left and right clicks, such as clicks on the middle
button or pressing and holding the mouse button for a period of time.
Note: For standard 3-button mice, button 1 is the left button, button 2 is the middle button, and button 3 is the right button.
Buttons 4 and 5 control scroll-wheel behavior.
ScrollWheelDown, ScrollWheelUp Commands
Example: ScrollWheelDown 5
ScrollWheelUp 10
Parameter: A single integer representing mouse wheel increments (audible clicks on some mice.).
Behavior: Scrolls the mouse wheel up or down. The actual amount of scrolling per increment varies by mouse driver,
platform, and application.
Tip: An easy way to experiment with the mouse wheel of a SUT is to run a ScrollWheelUp or ScrollWheelDown command
with a parameter of 1.
MoveTo Command
Example: MoveTo "ImageOne" "ImageTwo"
MoveTo (190,87)
Parameters: One or more image references; or a single coordinate location.
Behavior: Moves the SUT’s mouse cursor to the Hot Spot of the first image found, or in the location indicated by a
coordinate pair.
MoveToEach Command
Example: MoveToEach "ImageOne", (780, 91), "ImageThree"
Parameters: One or more image references or coordinate locations.
Behavior: Moves the SUT’s mouse to the locations indicated by the parameters, in the order they are listed.
Drag Command
Example: Drag "ImageOne", "ImageTwo"
Drag (231, 100)
Parameters: One or more image references; or a single coordinate location.
Behavior: Presses and holds the SUT’s mouse button in the Hot Spot of the first image found, or in the location indicated by
a coordinate pair.
69
Drop Command
Example: Drop "ImageOne",
Drop (231, 100)
Parameters: One image reference; or a single coordinate location.
Behavior: Moves to the given location and releases the mouse button.
DragAndDrop Command
Example: DragAndDrop "ImageOne", "ImageTwo", (980, 322)
Parameters: Two or more locations, identified by image references or coordinate pairs.
Behavior: Presses and holds the SUT’s mouse button in the first location, moves the mouse to subsequent locations, and
releases the mouse button in the final location.
MouseLocation() Function
Example: put MouseLocation() intoStartingPoint
Returns: Coordinates of the current mouse location.
Behavior: Returns the coordinates of the current mouse location.
Text Commands and Functions
Text Commands and Functions
This section describes the eggPlant Functional commands and functions that act upon the SUT’s keyboard and clipboard.
CaptureTextImage Command
Example: CaptureTextImage (text: "some words", rectangle: (0,0)(50,20))
Parameters: One property list that must include a text property and a rectangle property, and may include any other text
properties.
Behavior: The CaptureTextImage command is only used in scripted text-image generators. Creates a text image of
generated text. The text image includes all of the properties you specify in the property list, and fills in remaining properties
with default values from Text preferences. (For more information, see TextStyle Properties under The TextPlatforms [168].)
KeyDown Command
Example: KeyDown ControlKey, CommandKey, "d"
Parameters: Keyboard characters (in quotation marks); TypeText keywords (with no quotation marks).
Behavior: Presses and holds the given keys until they are released by a KeyUp command.
KeyUp Command
Examples: KeyUp ControlKey, CommandKey, "d"
KeyUp AllKeys
Parameters: Keyboard characters (in quotation marks); TypeText keywords (with no quotation marks).
Behavior: Releases keys that have been held by the KeyDown command.
Note: You can use the keywords AllKeys, AllModifierKeys, and AllNonModifierKeys to release all keys of those respective
groups.
ReadTable() Function
Example: Log ReadTable ((36,442,229,830))
Parameters: One rectangle in which you want to read text; and an optional property list that includes any number of the
properties listed under the ReadText() function.
Behavior: Returns the text of a table as a list. The returned list contains one sublist per row of values, with each sublist
containing one value per cell detected within that row. The sublists for the rows may or may not contain the same number
of values.
70
Note: The ReadTable function performs best when the bounds of the table are included in the rectangle. If no table is found
within the given rectangle, an error is thrown.
ReadText() Function
Examples: Log ReadText (("SomeImage")) // Logs the text near the hot spot location of the image specified.
Log ReadText((14,130,140,149)) // Logs the text in a rectangle specified using coordinates. The first set of coordinates identifies the
top left corner of the rectangle, and the second set identifies the bottom right corner.
Log ReadText(("TLImage","BRImage")) // Logs the text in a rectangle specified using the images "TLImage" for the top left corner,
and "BRImage" for the bottom right corner.
Log ReadText((14,130,140,149),multiLine: true) // Logs text in the given rectangle, specifying that there are multiple lines to read.
Log ReadText (("TLImage","BRImage"), language:"Korean,English")// Logs text in the given rectangle, where text might be in
multiple languages, as specified.
Parameters: A required point or rectangle indicating the region of the screen to read; an optional property list that may
contain any number of the following properties:
DPI: integer. Dots per inch (DPI) of the SUT screen. Default value: 72 DPI.
Contrast: boolean. When Contrast is on, the OCR engine treats the ReadText rectangle as a flat, two-color image. The
primary color is taken from the top left pixel of the rectangle, or the ContrastColor property. Pixels that fall within the
ContrastTolerance value of that color are considered to have that color. All other pixels are assigned the secondary
color. Text can be read in either color. Default value: Off.
ContrastColor: color. When Contrast is on, ContrastColor is the color that is treated as the primary color of the
ReadText rectangle. If you do not set the ContrastColor property, contrast color is taken from the top left pixel of the
rectangle.
ContrastTolerance: boolean. When Contrast is on, ContrastTolerance is a measure of how much a pixel can differ
from the RGB value of the ContrastColor and still be considered the primary color. Default value: 45.
Language: language. This property determines which character sets are valid for your ReadText return value.
Language can include multiple languages, separated by commas, such as "English, French, German." Default value:
English. For a list of all languages supported for use with eggPlant Functional, please see Appendix G: OCR Language
Support [55].
MultiLine: boolean. This property only applies when reading text near a point, as opposed to reading text within a
rectangle. When MultiLine is on, the readText function returns the line of text associated with your point, and any
subsequent lines that appear to belong to the same text block. When MultiLine is off, the ReadText function only
returns the line of text associated with your point. Default value: Off.
PreferredWords: string or list. This property determines the words that may be returned by the ReadText function,
but will also return words that do not match those specified.
Note: The ValidWords property defined below can be used to filter out all words that do not match those specified.
SingleColumnMode: boolean. When SingleColumnMode is on, the OCR engine presumes that there is only one
column of text on the screen. When SingleColumnMode is off, the OCR engine may detect multiple columns and order
lines of text accordingly in the return value.
TextRotation: One of four values:
clockwise. Rotated 90 degrees to the right
counter-clockwise. Rotated 90 degrees to the Left
upside-down. Rotated 180 degrees
none. Not rotated
When this property is set, ReadText will identify words at the degree of rotation specified.
Trim: boolean. When Trim is on, the OCR engine trims each edge of the ReadText rectangle until a non-background
pixel is encountered. The background color is taken from the top left pixel of the rectangle, or the TrimColor property.
Default value: Off.
TrimBorder: integer. When Trim is on, TrimBorder is the pixel-width of background that is not trimmed from the
ReadText rectangle. The TrimBorder can be set to a negative number, to trim non-background edges from the
rectangle. Default value: 0.
TrimColor: color. When Trim is on, TrimColor is the color that is considered the background of the ReadText rectangle.
If you do not set the TrimColor property, the background color is taken from the top left pixel of the rectangle.
TrimTolerance: integer. When Trim is on, TrimTolerance is a measure of how much a pixel can differ from the RGB
value of the TrimColor and still be considered background. Default value: 0.
TrimWhitespace: boolean. When TrimWhitespace is on, all whitespace characters are removed from the beginning
and end of returned text. When TrimWhitespace is off, ReadText may return text that starts or ends with whitespace
characters. Default value: On.
ValidCharacters: string. The set of characters that may be returned by the ReadText function. The ValidCharacters
property overrides the Language property; characters that are not part of ValidCharacters are not returned by the
ReadText function. If the OCR determines that characters are present in the defined area but they do not match
characters provided in the ValidCharacters string, it will return "^".
71
ValidPattern: string. This property takes a regular expression value as outlined in the table below and returns only
characters or words that match the pattern specified.
The table below outlines the regular expression characters available for use with the OCR:
Item Name
Any Character
Conventional Regular
Expression Sign
Usage Example/ Explanation
.
c.t - denotes words like “cat” and “cot”
Character from a
character range
[]
[b-d]ell - denotes words like “bell”, “cell”, “dell”
[ty]ell - denotes words “tell” and “yell”
[A-Z] - denotes any uppercase alpha character
[a-z] - denotes any lowercase alpha character
[A-Я] - denotes any uppercase cyrillic character
[а-я] - denotes any lowercase cyrillic character
[0-9] - denotes any numeric character
[0-9a-zA-Z] - denotes any single character, including alpha
and numeric characters
Character out of a
character range
[^]
[^y]ell - denotes words like “dell”, “cell”, or “tell”, but not
“yell”
Or
|
c(a|u)t - denotes words “cat” and “cut”
0 or more occurrences in
*
a row
10* - denotes numbers 1, 10, 100, 1000, etc.
1 or more occurrences in
+
a row
10+ - allows numbers 10, 100, 1000, etc. but not 1
[0-9a-zA-Z]+ - allows any word
Notes:Some characters used in regular expressions are used for system purposes. As seen in the table above, these
characters include square brackets, periods, etc. If you wish to enter an auxiliary character as a normal one, put a
backslash (\) before it. Example: [t-v]x+ denotes words like "tx", "txx", "txxx", etc., and "ux", "uxx", etc., but \[t-v\]x+
denotes words like "[t- v]x", "[t-v]xx", "[t-v]xxx" etc.
If you need to group certain regular expression elements, use parentheses. For example, (a|b)+|c denotes "c" and any
combinations like "abbbaaabbb", "ababab", etc. (a word of any non-zero length in which there may be any number of
a's and b's in any order), while a|b+|c denotes "a", "c", and "b", "bb", "bbb", etc.
ValidWords: string or list. This property determines the words that may be returned by the ReadText function. The
validWords property overrides the Language property; words that are not part of validWords are not returned by the
ReadText function.
Behavior: Returns the text in a given screen rectangle.
RemoteClipboard() Function
Examples: Put RemoteClipboard (5)
Put RemoteClipboard ()
Parameters: Optional maximum wait time
Returns: Text contents of the SUT clipboard.
Behavior: Returns the current text contents of the SUT’s clipboard. (The return is valid only if the clipboard has been used
during the current VNC connection.)
Returning content that was recently placed on the clipboard: If you include a maximum wait time for the RemoteClipboard()
function, the function returns clipboard content that was added as a result of the last action on the SUT. If no new clipboard
content is detected within the given time parameter, an error is raised.
Returning any content that is on the clipboard: If you do not specify a maximum wait time, the RemoteClipboard() function
returns the last known contents of the SUT's clipboard.
Note: To use the clipboard on a Macintosh SUT, be sure to connect to a Vine desktop server on the active user account. (A
Vine system server, which runs as a “root” VNC server across all user accounts, does not have access to the clipboard of any
single account.)
SetRemoteClipboard Command
Example: SetRemoteClipboard "new clipboard contents"
Parameters: One text string.
Behavior: Puts given text into the SUT’s clipboard. From here, you can paste it like any other text that is cut or copied in
the SUT.
Note: To use the clipboard on a Macintosh SUT, be sure to connect to a Vine desktop server on the active user account. (A
Vine system server, which runs as a “root” VNC server across all user accounts, does not have access to the clipboard of any
single account.)
TypeText Command
Example: TypeText "Some Words"
TypeText <<Some Words
with a Return.>>
72
TypeText AltKey,"x"
Parameters: Text strings enclosed in quotation marks, keywords for non-character keys, and text literals (blocks of text) in
double angle brackets (<< >>).
Behavior: Sends keystrokes to the to SUT. If modifier keys are sent, they are released when the entire command has been
executed. (To send a modifier that is not released automatically, use the "up" and "down" modifier keywords, such as
"ShiftUp" and "ShiftDown". To send any key that is not released automatically, use the KeyDown [169] and KeyUp [170]
commands.)
TypeText Keywords
To generate modifier keys and other non-character keys in a script, refer to them by keyword. (See examples below.)
Examples: Generating modifiers and special keys on the SUT
TypeText return
// Sends a Return keystroke to the SUT.
TypeText ControlKey, AltKey,
Escape
// "Holds" the SUT's Control and Alt keys, sends an Escape keystroke, then releases the Control
and Alt keys.
TypeText ControlKey, "q"
// "Holds" the SUT's Control key, sends a "q" keystroke, and releases the Control key.
For a complete list of these keywords, see Appendix C: TypeText Keywords
.
[51]
Note: When you are using the TypeText panel to create a command, clicking the Insert button automatically encloses your
text parameters in quotation marks.
Image-Searching Commands and Functions
Image-Searching Commands and Functions
These commands and functions search for images in the Viewer window, without performing any actions on the SUT.
EveryImageLocation() Function
Example: put EveryImageLocation ("SomeImage", "SomeOtherImage","Image3")
Parameters: One or more image references.
Returns: The coordinates of every instance of the given image or images
Behavior: Searches the SUT for all occurrences of the given images; returns a list of the hot spot coordinates for every
occurrence of the images. If no image is found, EveryImageLocation returns an empty list.
Tip: When you call the EveryImageLocation() function, you can immediately call the result to return ImageInfo() for every
image represented in EveryImageLocation().
EveryImageRectangle() Function
Example: put EveryImageRectangle ("SomeImage", "SomeOtherImage","Image3")
Parameters: One or more image references.
Returns: The rectangle coordinates of every instance of the given image or images.
Behavior: Searches the SUT for all occurrences of the given images; returns a list of the rectangle coordinates for every
occurrence of the images. If no image is found, EveryImageRectangle returns an empty list.
Tip: When you call the EveryImageRectangle() function, you can immediately call the result to return ImageInfo()
every image represented in EveryImageRectangle().
[171]
for
Example: put EveryImageRectangle("dog", "cat") //Returns a list of rectangle coordinates for every instance of these images.
put the result //Returns imageInfo() for every image represented in EveryImageRectangle.
ImageFound() Function
Example: Put ImageFound (10, "SomeImage")
Put ImageFound ("SomeImage")
Parameters: One or more image references; can also take a maximum wait time as the first parameter.
Returns: True or False.
Behavior: Searches for the given images in the Viewer window; returns true if an image is found, and false if an image is
not found. (A maximum wait time parameter allows time for an image to be found before false is returned.)
73
Note: A maximum time of 0 causes eggPlant Functional to perform an immediate search, without refreshing the Viewer
window or repositioning the mouse in a further attempt to find the image. This is the fastest way to search for an image that
may not be present.
ImageLocation() Function
Example: Put ImageLocation ("ImageName")
Parameters: One or more image references.
Returns: Coordinates.
Behavior: Searches for given images on the SUT; returns the coordinates of the first image found. (If no image is found, an
exception is thrown.)
ImageRectangle() Function
Example: Put ImageRectangle ("ImageName")
Parameters: One or more image references.
Returns: The rectangle coordinates of the found image.
Behavior: Searches for given images on the SUT; returns the rectangle coordinates of the first image found. (If no image is
found, an exception is thrown.)
RefreshScreen Command
Example: RefreshScreen
Parameters: None.
Behavior: Forces the Viewer window to update and redraw the SUT. This is not usually necessary; however, if you find that
a particular operation produces screen artifacts, you can use this command to eliminate the artifacts.
Note: The ForceScreenRefresh global property causes the Viewer window to refresh after every script command. (For more
information, see the ForceScreenRefresh , in Global Properties [42].)
Wait Command
Examples: Wait 6 // Waits for 6 seconds
Wait 10 minutes //Waits for 10 minutes
Parameters: A period of time. (The default unit is seconds.)
Behavior: Halts the next line of script execution for the given period of time.
WaitFor Command
Example: WaitFor 6.5, "ImageOne", "ImageTwo"
WaitFor 2 minutes, "SomeImage"
Parameters: A maximum wait time and one or more image references. (The default unit of maximum wait time is seconds.
You can also specify minutes.)
Behavior: Halts the next line of script execution until any one of the image parameters is found in the Viewer window. If no
image is found in the maximum wait time, an exception is thrown.
Note: WaitFor can also be used as a property of any image-searching command. Like the WaitFor command, the WaitFor
property is the maximum time eggPlant Functional waits for the given image to appear on the SUT. Example:
Click (image: "Done_button", waitFor: 2 minutes)
WaitForAll Command
Example: WaitForAll 6.5, "SomeImage", "SomeImageFolder"
WaitForAll 2 minutes, "SomeImage", "SomeImageFolder", "SomeImage2"
Parameters: A maximum wait time and one or more image references. (The default unit of maximum wait time is seconds.
You can also specify minutes.)
Behavior: Halts the next line of script execution until all of the image parameters are found in the Viewer window. If all
images are not found in the maximum wait time, an exception is thrown.
Note: If an enclosed list of images is passed as a WaitForAll parameter, eggPlant Functional considers that parameter
"found" when any one of the items on the list is found. For example:
WaitForAll "crust", "sauce", ("peppers", "olives")
This command has three parameters: "crust", "sauce", and a list of two other items (enclosed in parentheses.) It can be
74
thought to mean:
WaitFor "crust"
// and at the same time...
WaitFor "sauce"
// and at the same time...
WaitFor "peppers", "olives" // WaitFor either of these items.
Image Information Functions
Image Information Functions
The functions in this section return various properties associated with images.
ImageInfo() Function
Example: Put ImageInfo("BrowserIcon") into ListVariable
Parameters: One or more image references;
Returns: An image property list, or list of image property lists.
Behavior: Returns an image property list for a single image, or a list of image property lists for multiple image references.
Depending on the data that is available, the list can contain the following properties:
CaptureDate: The date of the image capture, including time, in the format (yyyy-mm-dd hh:mm:ss +0000); the final
four digits represent the GMT offset.
CaptureHost: The name of the SUT on which the image was captured.
CaptureLocation: Coordinates that indicate the position of the top-left corner of the image when it was captured in
the Viewer window.
CaptureScreenSize: The dimensions of the SUT screen on which the image was captured, given in pixels as (width,
height).
Description: The image description in the Suite Editor Info panel.
HotSpot: The coordinates of the image's hot spot, given as (x, y).
ImageLocation: The coordinates of the image found using the ImageLocation() [172] function.
ImageName: The name of the image file.
ImagePath: The full pathname of the image file.
ImageRectangle: The rectangle coordinates of the image found using the ImageRectangle() [173] function.
ImageSize: The image’s size in pixels, given as (width, height).
ImageTolerance: The tolerance setting used when capturing the image on the SUT.
Pulsing: Whether the image was captured with the pulsing setting (true/false).
Scale: The scale used to capture the image.
SearchType: The Search Type selected when saving the image.
ImageHotSpot() Function
Example: Click >ImageHotSpot ("SomeImage") + (20, 32)
Parameters: A single image, excluding Image Collections.
Returns: Coordinates.
Behavior: Returns the coordinates (x,y) of the image’s Hot Spot, relative to the top-left corner of the image.
ImageSize() Function
Example: put ImageSize ("image") into ImageSizeVariable
Parameters: A single image, excluding Image Collections.
Returns: Size in pixels (width, height).
Behavior: This function returns the size in pixels—given as (width, height)—of the given image. If the image is not found, an
exception is raised.
ImageColorAtLocation() Function
Examples: put ImageColorAtLocation("myIcon",(23,1)) // Returns the color at location (23,1) of the given image.
put ImageColorAtLocation ("myIcon",imageHotSpot("myIcon"))// Returns the color at the hotspot of the named image.
Parameters: One image name and one coordinate location.
75
Returns: A color value. (For more information, see "Working with Color", in the SenseTalk Reference Manual .)
Behavior: Returns the color value of a single pixel in the given image. The coordinates of the pixel are relative to the topleft corner of the image.
Found-Image Information Functions
Found-Image Information Functions
The functions in this section return additional information about the last image that was found in the Viewer window. They
are particularly helpful with the any variants of commands and other functions, when you do not necessarily know which
image was found.
FoundImageInfo() Function
Examples: Put FoundImageInfo() //Displays imageInfo for the last image found
Put FoundImageInfo()'s imageName into clickedImage //Puts the name of the last image found into the variable "ClickedImage".
Parameters: None; refers to the last image found.
Returns: An image property list.
Behavior: Returns an image property list for a single image, or a list of image property lists for multiple image references.
Depending on the data that is available, the list can contain the properties listed in Image Properties [174], as well as the
following properties:
For Image Searches:
CaptureLocation: Coordinates that indicate the position of the top-left corner of the image when it was captured in
the Viewer window.
Description: The image description in the Suite Editor Info panel.
ImageLocation: The coordinates of the image found using the ImageLocation() [172] function.
ImagePath: The full pathname of the image file.
ImageRectangle: The rectangle coordinates of the image found using the ImageRectangle() [173] function.
ImageSize: The image’s size in pixels, given as (width, height)).
For OCR Searches:
CaseSensitive: Whether or not the search is set to be case sensitive.
Contrast: Whether or not the search is set to use contrast. If no contrast color is specified, this color is defined by the
top left pixel of the search rectangle.
ContrastColor: The color used to create contrast in the search area. All pixels this color (within a 45 tolerance range)
will be turned white, and all other pixels will be black.
Language: The language that the search is set to use. For available languages please see Appendix G: OCR Language
Support [55]
SearchRectangle: The area defined for the text search. Defined by two coordinates: an upper left corner and lower
right corner.
Text: The text string that the search is looking for.
TextPlatform: The TextPlatform specified for the text search (for OCR this is "GenericOCR").
ValidCharacters: The list of characters specified as valid for this search.
FoundImageLocation() Function
Example: Click FoundImageLocation()
Parameters: None; refers to the last image found.
Returns: Coordinates
Behavior: Returns screen coordinates for the Hot Spot of the last image that was found in the Viewer window.
FoundImageName() Function (Deprecated)
Examples: Put FoundImageName() into variable
Click FoundImageName()
Parameters: None; refers to the last image found.
Returns: Image name.
Behavior: Returns the name of the last image found.
Note: FoundImageName is deprecated. Instead, use FoundImageInfo()'s imageName or FoundImageInfo()'s imagePath
76
FoundImageNumber() Function
Example: If FoundImageNumber() is 2 >then ...
Parameters: None; refers to the last image found.
Returns: One number, representing the image’s ordinal position in the parameter list of a command or function.
Script Commands and Functions
Script Commands and Functions
These commands and functions allow you to modify Run Options and control the execution of scripts.
PauseScript Command
Example: PauseScript
Parameters: None.
Behavior: Pauses script execution before the next command. The script remains paused until you manually continue, step
ahead, or abort. (For more information, see The Run Window. [5])
Note: This command has no effect when eggPlant Functional is run from the command line.
Run Command
Example: Run "OtherScript", "parameter1", "parameter2"
Parameters: One script name.
Behavior: Calls another script.
Tip: If the other script is located in the same suite as the current script (or an associated helper suite), and its name begins
with a letter and contains only letters, digits, and underscores, you can call it as a command in the current script. (You do
not have to use the Run command; just the name of the script you are calling, followed by any parameters.)
RunWithNewResults Command
Example: RunWithNewResults "SomeScript", "parameter", "parameter2"
Parameters: One script name, and any parameters it requires to run.
Returns: A results property list. (For more information, see ScriptResults
.)
[175]
Behavior: Runs another script that generates its own results log, (as opposed to scripts called with the Run command,
which are logged as part of the calling script.) The RunWithNewResults command returns a results property list similar to the
ScriptResults() function. (For more information, see ScriptResults [175].)
If the called script fails, the calling script does not automatically fail or raise an exception. (You can script this behavior
based on the returned Status property.)
Tip: You can use this command to write sophisticated master control scripts, with actions based on the Status and
ReturnValue properties. For example, you can call one script if the previous script succeeds, and call a different script if it
fails.
OpenSuites() Function
Example: put OpenSuites() into SuitesInUse
Parameters: None
Returns: A list of all of the suites that are available to the current script.
Behavior: Returns a list of all of the suites that are available to the current script. The list includes the script’s own suite,
and suites that opened by the OpenSuite command.
SetOption and SetOptions Commands
Example: SetOption scriptlogging, yes
SetOptions (>searchrectangle: (2,4,100,4), scriptlogging: yes)
SetOptions JoesOptions
Parameters: One or more global properties and the values you are changing them to. (For more information, see Global
Properties [42].)
Behavior: Changes the value of run options for the current script.
GetOption(), GetOptions() Functions
Examples: put GetOption (scriptLogging)
put GetOptions(runOptions)
put GetOptions()
77
Parameters: One or more global properties or global property groups.
The global property groups are:
RunOptions: the properties described in RunOption Global Properties [44].
TextOptions: CurrentTextPlatform [156] and TextPlatforms [176].
OtherOptions: CommandLineOutput [177], ImageDoctor [178], ScriptAnimation
, and ScriptTracing
[179]
.
[77]
Returns: A global property list.
Behavior: Returns the current value of the given global properties.
Tip: If you do not request specific global properties, GetOption returns a list of all Run Option global properties and their
current values. (For more information, see Global Properties [42].)
Hide RunWindow, Show RunWindow Commands
Example: Hide RunWindow
ShowRunWindow
Parameters: None.
Behavior: Hides or shows the Run window.
Tip: You can use the Hide command to close the Run window when you do not need to watch a script run, and insert a Show
command to reveal the Run window for the parts of the Run that you want to see.
Hide RemoteWindow, Show RemoteWindow Commands
Example: Hide RemoteWindow
ShowRemoteWindow
Parameters: None.
Behavior: Hides and shows the Viewer window. (The Viewer window does not need to be visible while a script is running.)
RunningFromCommandLine () Function
Example: If RunningFromCommandLine () then
Log "Script was run from command line"
end if
Parameters: None.
Behavior: Returns yes if the script run was started by a command line call; returns no if the script is being run through the
GUI interface.
SetSearchRectangle Command
Example: SetSearchRectangle ((0,0),(100,100))
Example: SetSearchRectangle ("TLImage","BRImage")
Parameters: Takes two sets of coordinates or two images, defining the top left corner and bottom right corner of an area of
the screen.
Behavior: Takes two pairs of screen coordinates as parameters; these points define two diagonal corners of the search
area. Note: The top-left corner of the screen is 0,0.
Tip: Setting the SearchRectangle [180] global property is the recommended way to do this. SetSearchRectangle is provided as
an alternative in certain situations.
SuiteInfo() Function
Example: Put SuiteInfo("C:\Users\Pamela\Documents\mySuite")
Example: Put SuiteInfo() // Puts the SuiteInfo for the current suite
Parameters: None.
Behavior: Returns the following information about a suite:
Name: The name of the suite.
Path: The full path of the suite.
ScriptsFolder: The path of the Scripts folder.
ImagesFolder: The path of the Images folder.
ResultsFolder: The path of the Results folder.
Version: The eggPlant Functional version number of the suite (usually the version of eggPlant Functional that created
the suite).
Description: The description of the suite as entered on the Settings tab of the suite.
Note: If you call SuiteInfo() from a script within a suite that has a helper suite, eggPlant Functional returns the paths of both
the main or calling suite and the helper suite. If you call SuiteInfo() from a script within the helper suite, eggPlant Functional
returns the path of the main or calling suite only. It does not return the helper suite path.
TraceScreen On/Off Command
78
Example: TraceScreen On
TraceScreen Off
Parameters: On or off.
Behavior: Turns TraceScreen mode on and off. When TraceScreen mode is on, a full image of the Viewer window is
captured into the execution log immediately before the execution of each command that acts on the SUT. These screen
captures are available in the Log Area of the Suite Editor’s Results pane.
Tip: Each image file can be quite large, so use the TraceScreen On/Off commands within a script to capture only the images
that are useful to you.
Note: Because TraceScreen is intended as a diagnostic tool, it creates a final screen capture when you issue the
TraceScreen Off command. Even if TraceScreen is already off, issuing the TraceScreen Off command creates a screen capture.
OpenSuite and CloseSuite Commands (Deprecated)
Example: OpenSuite "Suites/SuiteName"
CloseSuite "Suites/SuiteName"
Parameters: One suite name, and optional pathname. (If you do not specify an absolute path, eggPlant Functional
searches for the suite in all of the currently open suites, the folder containing the current suite, and the default document
directory (designated in General preferences.)
Behavior: OpenSuite makes another suite available for use during the current run; this availability automatically ends when
the script run ends, or when CloseSuite is called.
Note: These commands are deprecated. Please use InitialSuites and FinalSuites for new script development. Changing the
InitialSuites global property to access a suite is almost always preferable to using the OpenSuite command. Suites that you
open with the InitialSuites are always the first suites checked for image and script resources, and they are checked in the
order in which they are passed. Suites that you open with the OpenSuite command are checked after the active suite, and
the order in which OpenSuites are checked is unpredictable.
Reporting Commands
Reporting Commands
These commands insert entries into a script’s Log file. (Also see The ScriptLogging in Global Properties
.)
[131]
Assert Command
Example: assert x > 10 or assert that x > 10
Parameters: A statement you want eggPlant Functional to evaluate. To improve readability, you can insert the word that
into an assert command as shown in the second example above.
Behavior: When you run an assert command, eggPlant Functional evaluates the specified statement as true or false, and
logs a success, failure, or warning message, or an exception depending on the settings of the following related properties:
The assertionBehavior property currently defaults to Exception. You can also set to it to Error, Warning, or Pause to
establish the default behavior for any assert commands that don't specify a behavior. When you set the behavior to
Pause, a logWarning occurs and the script pauses in the debugger on the line following the assert command.
The assertionPassCount, the assertionFailCount, the assertionErrorCount, the assertionWarningCount, and
the assertionExceptionCount are global counters that increment as appropriate each time an assert command runs.
Each failure increments both the assertionFailCount and also one of the assertionErrorCount, assertionWarningCount, or
assertionExceptionCount counters.
The assertionsEnabled property defaults to True. If you set it to False, eggPlant Functional ignores assert
commands, and does not run them.
The BeginTestCase and EndTestCase Commands
A Test Case is used to block out any section of code within a script (or across scripts during a run) for purposes of gathering
information about that portion of the test. A script run may include multiple test cases, which may be sequential portions of
a script or may overlap with one another as desired.
The information gathered for each test case includes:
The
The
The
The
The
duration of that test case (in seconds)
number of Errors logged while the Test Case is open
number of Successes logged while the Test Case is open
number of Warnings logged while the Test Case is open
number of Exceptions logged while the Test Case is open
The BeginTestCase command is used to open a test case, and the EndTestCase command is used to close one. Each test
case is given a name, put in quotes after the command as shown in the below example.
Information about open test cases for the current script run can be obtained at any time using the OpenTestCases global
property.
Notes:
79
One test case is created automatically at the beginning of each run, with the name of the script being run.
At the end of the run, any test cases that are still open are ended and reported automatically.
The initial handler (the script itself) is considered a test case and will be reported as one If no declared test cases are
open or no test cases are declared at all, the script will be reported as the only open test case.
Example:
BeginTestCase "A" -- this marks the start of the reporting period for case A
// other commands here
EndTestCase "A" -- this ends the reporting period for case A and logs the information that was gathered
BeginTestCase "B" -- start recording statistics for case B
// other commands here
BeginTestCase "C" -- start recording statistics for case C
// other commands here
EndTestCase "B" -- close case B and report statistics gathered since case B was opened
// other commands here
// if the run ends with TestCase C still open, it will be ended and reported automatically
Log Command
Example: Log "Message to be recorded in log file"
Parameters: One or more Log messages.
Behavior: Creates an entry in the script’s Log file. If you set multiple message parameters, each message is inserted as a
separate entry. (If the ScriptLogging global property value is Minimal or Silent, this command does nothing.)
Tip: Log entries can make it easier to determine where particular log events are occurring in the run.
LogWarning Command
Example: LogWarning "Message to be recorded in log file"
Parameters: One or more Log messages.
Behavior: Behaves just like the Log command described above, but displays the log entries in orange text.
Tip: The Results pane of the Suite Editor displays the number of warnings associated with each script run. Warnings are
counted even when ScriptLogging is set to Minimal or Silent.
LogError Command
Example: LogError "messageToBeRecordedInLogFile"
Parameters: One or more Log messages.
Behavior: Behaves just like the Log and LogWarning commands described above, but displays the log entries in red text,
and logs the script as a failure.
Note: If the ScriptLogging global property is set to Silent, no error messages are inserted into the log file, but the error count
for the run is still be incremented, and the ultimate status of the run is Failure.
LogSuccess Command
Example: LogSuccess "The page loaded properly!"
Parameters: One or more Log messages.
Behavior: Behaves just like the Log commands described above, but adds one to the success count for the script.
ScriptResults() Function
Example: put ScriptResults ("someScript") into currentStatus
Parameters: One script name. (If no script is named, the function defaults to the current script.)
Returns: A results property list from every run of the given script.
Behavior: Returns a results property list from every run of the given script, in chronological order. Each list contains the
following properties:
LogFile: The name and absolute path of the Log file.
80
Errors: A count of errors logged for that run.
Warnings: A count of the warnings logged for that run.
Exceptions: A count of the eggPlant Functional caught and uncaught exceptions raised.
Duration: The length of time the script ran (or has been running) given in seconds.
RunDate: The date and time the run was started.
Status: The status of the run – Success, Failure, or Running
ReturnValue: The returned value of any return statements.
SendMail Command
Example: sendmail (to: "[email protected], [email protected]", subject: "Test failed", body: "The very
important test script generated an error. The log file is attached.", attachment: logfile)
Parameters: One property list, described below.
Behavior: Sends e-mail from within a script. The parameters are contained in a property list, described below:
smtp_host: The host name or IP Address of the mail server.
smtp_type: The authentication scheme used by the mail server: None, Plain, Login, or CRAM-MD5.
smtp_user: The user account on the mail server; used if an smtp_ type is specified.
smtp_password: The password for login to the mail server; used if an smtp_type is specified.
smtp_port: The port used to connect to the mail server. (The default value is 25, the standard mail port.)
To: One or more addresses, separated by commas. (Required.)
From: The user account sending the message. (Required by some mail servers.)
Subject: The subject line for the message.
Body (or Message): The text of the message.
Attachment: A filename or list of filenames to attach to the e-mail.
ReplyTo: The default address to which a reply is sent.
CC: One or more addresses to which a copy of the message is sent, separated by commas.
"Content-Type": The mime type for the body of the e-mail. To send html e-mail, set the "Content-Type" to
"text/html". The default mime type is "text/plain". (Please note that you need quotation marks for both the key and the
value of this property.)
EggPlantVersion Function
Example: log EggPlantVersion()
Parameters: None.
Returns: The number of your version of eggPlant Functional.
Behavior: Returns the number of your version of eggPlant Functional.
CaptureScreen Command
Example: CaptureScreen (Name: "ImageFileName", Rectangle: ((67,33), imagelocation: "OtherCorner"))
Parameters: An optional property list.
Behavior: Captures a snapshot of the entire Viewer window, or a rectangle indicated in the property list. You can customize
this command with a list of any number of the following properties:
Name: An image file name and optional path information. (The default file name is Screen_Capture, saved in the
Results directory.)
Rectangle (or Rect): A pair of diagonal locations indicating a rectangle to capture. (The locations can be screen
coordinates, and/or image locations.)
Increment: A value of yes or true appends an automatically incremented number to the image. (The default value is
no.)
ImageInfo: A property list of additional information. (For more information, see the ImageInfo() Function section of
Image Information Functions [171].)
Tip: Incrementing is helpful if you are capturing several snapshots within a script (as in a loop or frequently called handler.)
The images can all have the same image name, with the incremented number distinguishing them; otherwise, each image
would overwrite the previous image with the same name.
ColorAtLocation() Function
Examples: put ColorAtLocation (2,3) into theColor
if ColorAtLocation (foundImageLocation()) is ColorAtLocation (32,7)then
Parameters: One coordinate location.
Returns: The color value of the pixel in the given location. (For more information, see “Working with Color”, in the
SenseTalk Reference Manual .)
Behavior: Returns the color value of the pixel in the given location. Coordinates are relative to the top-left corner of the
Viewer window. (The top-left corner is (0,0), with the x value increasing toward the right, and the y value increasing toward
the bottom.)
81
StartMovie Command (currently Mac OS X only): Deprecated
Note: This functionality is now deprecated.
Example: StartMovie "/User/Documents/>MovieFile"
Parameters: A file name for the movie you are capturing, and optional file path.
Behavior: Starts recording a movie of the Viewer window. If you do not designate a file path, the movie is saved in the
suite’s Results directory.
To end the recording, insert a StopMovie command into the script.
Tip: Movies are recorded with no compression; be sure to allow ample disk space when you are recording movies.
StopMovie Command (currently Mac OS X only): Deprecated
Note: This functionality is now deprecated.
Example: StopMovie
Parameters: None.
Behavior: Stops a movie recording that was started by the script.
The
The
The
The
The
duration of that test case (in seconds)
number of Errors logged while the Test Case is open
number of Successes logged while the Test Case is open
number of Warnings logged while the Test Case is open
number of Exceptions logged while the Test Case is open
The BeginTestCase command is used to open a test case, and the EndTestCase command is used to close one. Each test
case is given a name, put in quotes after the command as shown in the below example.
Information about open test cases for the current script run can be obtained at any time using the OpenTestCases global
property.
Notes:
One test case is created automatically at the beginning of each run, with the name of the script being run.
At the end of the run, any test cases that are still open are ended and reported automatically.
The initial handler (the script itself) is considered a test case and will be reported as one If no declared test cases are
open or no test cases are declared at all, the script will be reported as the only open test case.
SUT Commands and Functions
SUT Commands and Functions
The commands and functions defined in this section are an eggPlant Functional extension of the SenseTalk scripting
language. They are for use within the eggPlant Functional application and scripts. For information about commands to use to
run scripts or launch eggPlant Functional from a command line, see Running from the Command Line. [181]
AllConnectionInfo() Function
Example: put AllConnectionInfo() into HostList
Parameters: None.
Returns: A list of connection property lists for all of the SUTs in the Connection List.
Behavior: Returns all connection property lists.
Connect Command
Examples:
Connect “192.168.1.110”
Connect (serverID: "10.211.55.4", portNum: "5900", username: "harris", password: "slayerfan", Visible: "Yes")
Connect (ServerID: "Samsung_S5", AdditionalArgs: ("--scale-screen 2")) --For Android SUT connections
Parameters: A hostname, IP address, or display name from the Connection List.
Alternative Parameter: One connection property list.
Behavior: Opens a connection with a SUT, or makes a connected SUT the active SUT.
Note: If the SUT is not in your Connection List, or you need to override information in the Connection List, you can pass in a
82
connection property list instead of just a hostname, IP address, or display name. The connection properties are described
below:
ServerID: The hostname, IP address, or Connection List Display Name. Note: This is the only required property.
PortNum: The port number used by the server on the SUT. (Default value: 5900.)
Username: The Windows username when connecting via RDP. (Default value: none.)
Password: The password for the VNC server if you're making a VNC connection, or the Windows user password if
you're making an RDP connection. (Default value: None. Note, however, that RDP connections require a password.)
sshHost: The hostname or IP address of a computer hosting an SSH connection. (Default value: none.)
sshUser: The user account on the SSH host (Default value: none.)
sshPassword: The password to the user account on the SSH server. (Default value: none.)
Type: RDP or VNC: The connection method to use to connect to the SUT. RDP, for Windows SUTs only, specifies to
connect using Remote Desktop Protocol (RDP). It connects on port 3389 by default. VNC, for all supported operating
systems, specifies to to connect using Virtual Network Computing (VNC). (Default value: VNC.)
Visible: Specifies whether the Viewer window automatically opens upon connection. (Valid Values: Yes or No.)
ColorDepth: The color depth of the SUT in the Viewer window: 8, 16, 32. (Default value: The native color depth of the
SUT.)
Height: For RDP connection types only, specifies the height of the Viewer window in pixels. (Default value: 768.)
Width: For RDP connection types only, specifies the width of the Viewer window in pixels. (Default value: 1024.)
AdditionalArguments: For Android VNC connections only, provides the scale-screen NN option that allows you to
specify a screen scaling ratio where NN is an integer for the scale factor. For example, scale-screen 2 scales down the
screen size to 50% of its actual size.
Tip: If you have already connected to this SUT, you can generate this property list with the ConnectionInfo() function.
Connecting to eggCloud Devices: In order to connect to devices hosted in eggCloud using the Connect command, see the
eggCloud documentation here [182].
ConnectionInfo() Function
Example: Connect ConnectionInfo ("SomeSUT")
Parameters: A hostname, IP address, or display name of a SUT; a connection property list that contains at least one of the
above; or no parameter.
Returns: A connection property list for the given connection. (If there is no parameter, ConnectionInfo returns a connection
property list for the active connection.)
Behavior: Returns a connection property list for the given SUT.
The property list returned can include any number of the following properties:
AndroidDevice: (Boolean). Set to True if an Android device is connected over USB.
Availability: (Boolean). The last-known availability status of the SUT.
Bonjour: (Boolean). Whether or not the SUT was found via Bonjour or zeroconf.
ColorDepth: (Integer: 8,16, or 32). The color depth with which the SUT is shown in the Viewer window.
Connected: (Boolean). Whether or not eggPlant Functional is currently connected to the SUT.
DeviceManufacturer: (String). The manufacturer of a mobile device you are connected to. (This property is only
included if the VNC server sends the information.)
DeviceModel: (String). The model name of a mobile device you are connected to. (This property is only included if the
VNC server sends the information.)
DeviceSerialNumber: (String). Set to the serial number of the device when an Android device is connected over USB.
DeviceSupportsPointerEvents: (Boolean). Whether or not a mobile device supports pointer events such as MoveTo.
DeviceVersion: (String). The version of the mobile device you are connected to. (This property is only included if the
VNC server sends the information.)
Name: (String). The display name of the SUT.
Pass_code: (String). The password for the VNC server, encrypted.
PortNum: (Integer).The port number used by the VNC server on the SUT.
Reverse: (Boolean). Whether or not the VNC connection is a reverse connection (i.e. initiated by the SUT).
ScreenSize: (Size). The width and height of the SUT screen.
ServerID: (String). The hostname, IP address, or display name of the SUT.
sshHost: (String).The hostname or IP of a computer hosting an SSH connection.
sshPass_code: (String). The password to the user account on the SSH server, encrypted.
sshUser: (String). The user account on the SSH host.
Status: (String: Connected or Not Connected). Whether or not eggPlant Functional is connected to the SUT.
Type: (String). The method of connection, VNC or RDP.
Visible: (Boolean). Whether or not the Viewer window automatically opens upon connection; Yes or No.
Disconnect Command
Examples: Disconnect (serverID:"192.168.1.20", port:"5900")
Disconnect "Nightly Regression"
Disconnect
Parameters: An optional VNC connection, identified by the SUT's name or connection property list.
Behavior: Closes the VNC connection with the given SUT. If no SUT is specified, closes the active connection.
83
HighlightRectangle command
Example: HighlightRectangle ((FoundImageLocation(), FoundImageLocation() + (50,10))
HighlightRectangle ((FoundImageLocation(), FoundImageLocation() + (50,10), white)
HighlightRectangle (10,10,50,50), (Duration: 1 minute)
Parameters: One rectangle value. Additionally, an optional Duration value.
Behavior: Highlights the given rectangle in the Viewer window. If a duration is specified, the highlights will disappear after
the specified amount of time.
RemoteScreenRectangle() function
Example: put RemoteScreenRectangle()
Parameters: None.
Returns: Coordinates.
Behavior: Returns coordinates for a rectangle that shows the full size of the Viewer window.
RemoteScreenSize() function
Example: put RemoteScreenSize()
Parameters: None.
Returns: The width and height of the Viewer window, measured in pixels.
Behavior: Returns the size of the Viewer window as a list of two numbers indicating the screen width and height.
Mobile Commands and Functions
Mobile Commands and Functions
eggPlant Functional provides many commands and functions specifically for when you use mobile devices as systems under
test (SUTs).
Note: These features are available with eggPlant Functional 14.0 and later.
ADBCall() Function
Note: This function is for Android devices only.
Example: put ADBCall("devices") --Returns a list of the available Android devices
Parameters: Any call to the Android Debug Bridge (ADB) command line tool, such as push, pull, shell, and logcat, which you
can use with or without associated parameters.
Behavior: This function executes ADB calls to available Android devices and returns any output received from the ADB
command.
Copy File Command
Example: copy file "/local/path/to/file" to "SUT:/remote/path/to/file" -- send file to the SUT
copy file "sut:/remote/requested/file" to "/local/path/to/receive/file" -- get a file from the SUT
Parameters: A source file path and a destination file path.
Behavior: This command lets you copy a file either from the local machine to the SUT or from the SUT to the local machine.
Use the prefix SUT: before the path to indicate the SUT. Note that you can't use this command to copy a file from one
location on the SUT to a different location on the SUT or to a different SUT. Copy File works only with single files, not with
folders.
Note: The ability to copy a file to or from a SUT is available only through the iOS Gateway [183]. However, this command has
other uses; for more information about Copy File, see "Copy File, Copy Folder" in File System Commands and Functions [184].
DoubleTap Command
Example: DoubleTap (320,504)
Parameters: Optional set of coordinates or an image.
Behavior: This command executes a double tap at either the current location or the location specified by the parameter.
This command is equivalent to a DoubleClick command [96], catered to mobile devices.
ExecuteRemoteCommand() Command
84
Example:
ExecuteRemoteCommand("mkdir /data/local/tmp/TestDir") -- on Android, this command creates a directory on the device using shell
command syntax
ExecuteRemoteCommand("UIATarget.localTarget().systemName()") -- on iOS, this command gets the system name of the device
with the active connection.
put ExecuteRemoteCommand("ls /data/local/tmp/; echo hello", waitFor:20) --You can pass multiple commands by separating them
with semi-colons as shown in this example
Parameters: A command you want to run on a mobile device SUT.
Behavior: The ExecuteRemoteCommand() command is for running commands on SUTs that are mobile devices. You can
use it to return data or not. The command is either synchronous (waits for a response) or asynchronous (does not wait). The
way in which it runs commands differs with the mobile operating systems as follows:
On Android, ExecuteRemoteCommand runs as a shell command on the actual phone.
On iOS, ExecuteRemoteCommand runs the command as JavaScript, making calls to the Apple UIAutomation API.
Note: Using the ExecuteRemoteCommand() command requires iOS Gateway 2.6 or the embedded Android VNC server in
eggPlant Functional 15.21.
GetDeviceOrientation Function
Note: This function is for use with the iOS Gateway
[183]
only.
Example: put "Rotated to " & GetDeviceOrientation()
Parameters: None.
Behavior: This function returns the current rotation of the device screen. The possible values are the same as the
parameters for the SetDeviceOrientation [185] command: LandscapeLeft, LandscapeRight, Portrait, PortraitUpsideDown.
InstallApp Command
Note: This command is for use with the iOS Gateway
[183]
only.
Example: installApp "/Path/to/App/AppName.ipa"
installApp (applicationPath:"/Path/to/App/AppName.ipa")
installApp (applicationPath:"/Path/to/App/AppName.ipa", provisionPath:"sut:/Path/to/Provisioning/Profile/YourProvisioningProfile
.mobileprovision", certificateName:"your iPhone Developer certificate name")
Parameters: The applicationPath, which is always required; optionally, the provisionPath and certificateName if you want to
developer sign the app.
Behavior: This command installs an app to the mobile device. You specify the app to install with the applicationPath
parameter. Optionally, the command instruct iOS Gateway to developer sign the app before installing it if you include the
provisionPath and certificateName properties. Applications to be installed can be specified with local paths if they are on the
machine on which you are running eggPlant Functional; you can also install apps that are already on the machine where
you're running iOS Gateway by using the SUT: prefix on the path. This command waits until it receives a completed message
from the server before proceeding.
Note: Your signing certificate for the certificateName property must be installed on the iOS Gateway machine before using
it with InstallApp.
KillApp() Command
Example:
KillApp("sampleApp") -- Kills a developer-signed app named "sampleApp."
KillApp("com.google.android.apps.maps") -- Kills the Maps app on Android.
Parameters: The name of the app you want to terminate:
On iOS, the app name is the name of a developer-signed app.
On Android, the app name is the package name.
Behavior: The KillApp command terminates the specified app.
Note: Using the KillApp command requires iOS Gateway 2.6 or the embedded Android VNC server in eggPlant Functional
15.21.
To find the app package name on an Android device, you can use the Package Manager pm list packages command with the
ExecuteRemoteCommand command as follows:
put ExecuteRemoteCommand("pm list packages", WaitFor:10)
For more information about working with developer-signed apps on iOS, see Testing Approaches on the iOS Gateway
page.
[183]
LaunchApp Command
Note: This command is for use with the iOS Gateway
[183]
only.
85
Example: LaunchApp "MyApp"
LaunchApp "Springboard"
LaunchApp "MyiPad : MyApp"
Parameters: To connect to an already connected iOS device: You specify the name of the developer-signed app you want
on your iOS device. To connect to a specific device and app on that device: The name of the iOS device, followed by a
space, a colon, a space, and the name of the developer-signed app on the device.
Behavior: This command launches a developer-signed app (or Springboard) on an iOS device that you are connected to
through the iOS Gateway.
PinchIn Command
Note: This command is not available with the eggOn mobile VNC server.
Example: PinchIn
PinchIn (At:(500, 500), Duration:5.0)
Parameters: Optional At point, expressed as a set of coordinates or with an image; optional From point, expressed as a set
of coordinates or with an image; optional Duration to express the time the zoom takes to execute (default is 2 seconds);
optional Distance, expressed in pixels, which would be used instead of a From parameter (if neither Distance nor From is
specified, the default distance is 4.5% of the shortest screen dimension).
Behavior: The PinchIn command acts like a two-point pinch on a screen; the effect of pinching in is to zoom out (i.e., the
screen image effectively gets smaller). For the PinchIn command, the At point is static or "fixed"; the From point moves
toward the At point.
Note: Not all screen views or apps support zoom in or out behavior. For instance, using a pinch command while a device is
on the Home screen has no effect.
PinchOut Command
Note: This command is not available with the eggOn mobile VNC server.
Example: PinchOut
PinchOut (Distance:300)
Parameters: Optional At point, expressed as a set of coordinates or with an image (default is the screen center); optional
To point, expressed as a set of coordinates or with an image; optional Duration to express the time the zoom takes to
execute (default is 2 seconds); optional Distance, expressed in pixels, which would be used instead of a To parameter (if
neither Distance nor To is specified, the default distance is 25% of the shortest screen dimension).
Behavior: The PinchIn command acts like a two-point pinch on a screen; the effect of pinching out is to zoom in (i.e., the
screen image effectively gets bigger). For the PinchOut command, the At point is static or "fixed"; the To point moves away
from At point.
Note: Not all screen views or apps support zoom in or out behavior. For instance, using a pinch command while a device is
on the Home screen has no effect.
Press Command
Example: Press "AppIcon"
Parameters: Optional set of coordinates or an image.
Behavior: This command executes a tap and hold at either the current location or the point specified by the parameter.
This command is equivalent to a MouseButtonDown command [186], catered to mobile devices.
PressBackButton Command
Example: PressBackButton
Parameters: None.
Behavior: Pushes the Back button on Android devices running Android 4.0.4+. For older Android devices, please see the
"TypeText Keywords for Mobile Control" section of Appendix C: TypeText Keywords [187].
PressHomeButton Command
Example: PressHomeButton
Parameters: None.
Behavior: Pushes the Home button on iOS devices, as well as Android devices running Android 4.0.4+. For older Android
devices, please see the "TypeText Keywords for Mobile Control" section of Appendix C: TypeText Keywords [187].
Reboot Command
Example: Reboot
Parameters: None.
Behavior: The Reboot command is for mobile devices. This command restarts the mobile device with the active
connection.
86
Note: Using the reboot command requires iOS Gateway 2.6 or the embedded Android VNC server in eggPlant Functional
15.21.
When you use the Reboot command in your script, we recommend sending a disconnect command immediately after it, and
then reconnecting. When you reconnect, allow time for the device to come up. For example, you can include the connect
command in a repeat command that tries the connection until it succeeds as shown in the example below:
Connect "<sut_name>", port:5900
Reboot
Disconnect
Repeat until the connectioninfo.connected is true
try to connect "<sut_name>", port:5900
Log the counter
End repeat
Release Command
Example: Release "AppIcon"
Parameters: Optional set of coordinates or an image.
Behavior: This command releases a Press action at either the current location or the point specified. It is the equivalent of a
MouseButtonUp command [188], catered to mobile devices.
RotateLeft Command
Note: This command is for use with the iOS Gateway
[183]
only.
Example: RotateLeft (WaitFor:10.0)
Parameters: Optional WaitFor time to allow the rotation to occur.
Behavior: The RotateLeft command rotates the mobile device screen one quarter turn (90 degrees) clockwise from
whatever its current device orientation is.
RotateRight Command
Note: This command is for use with the iOS Gateway
[183]
only.
Example: RotateRight
Parameters: Optional WaitFor time to allow the rotation to occur.
Behavior: The RotateLeft command rotates the mobile device screen one quarter turn (90 degrees) counter-clockwise from
whatever its current device orientation is.
SetDeviceOrientation Command
Note: This command is for use with the iOS Gateway
[183]
only.
Example: SetDeviceOrientation LandscapeRight
Parameters: The device orientation that you want to set (LandscapeLeft, LandscapeRight, Portrait, PortraitUpsideDown)
and an optional WaitFor time.
Behavior: This command changes the device orientation to what you specify with the parameter. It waits until the new
orientation is achieved before proceeding; however, you can include a WaitFor delay as well to control timing issues.
SUTInfo() Function
Note: This function is for Android devices only.
Example: put SUTInfo()
Parameters: None.
Behavior: The SUTInfo() function is for Android devices only. This function returns the following list of properties for the
Android device with the active connection: type, device operating system, and device.
Note: Using the SUTInfo() function requires the embedded Android VNC server in eggPlant Functional 15.21.
SwipeDown Command
Example: SwipeDown (320,840)
Parameters: Optional set of coordinates or an image indicating the start point for the swipe.
Behavior: This command executes a vertical swipe motion, starting from either a central location at the top of the screen or
from the point indicated by the parameter, and moving downward. This motion imitates a hand-executed swipe on a mobile
device by moving in an arced fashion.
SwipeLeft Command
87
Example: SwipeLeft (600,400)
Parameters: Optional set of coordinates or an image indicating the start point for the swipe.
Behavior: This command executes a horizontal swipe motion, starting from either a central location on the right side of the
screen or the point indicated by the parameter, and moving to the left. This motion imitates a hand-executed swipe on a
mobile device by moving in an arced fashion.
SwipeRight Command
Example: SwipeRight "LeftImage"
Parameters: Optional set of coordinates or an image indicating the start point for the swipe.
Behavior: This command executes a horizontal swipe motion, starting from either a central location on the left side of the
screen or the point indicated by the parameter, and moving to the right. This motion imitates a hand-executed swipe on a
mobile device by moving in an arced fashion.
SwipeUp Command
Example: SwipeUp "StartImage"
Parameters: Optional set of coordinates or an image indicating the start point for the swipe.
Behavior: This command executes a vertical swipe motion, starting from either a central location at the bottom of the
screen or from the point indicated by the parameter, and moving upward. This motion imitates a hand-executed swipe on a
mobile device by moving in an arced fashion.
Tap Command
Example: Tap "Safari_Icon"
Parameters: Optional set of coordinates or an image.
Behavior: This command executes a tap at either the current location or the location specified by the parameter. This
command is equivalent to a Click command [95], catered to mobile devices.
Global Properties
Global Properties
In SenseTalk, global properties are system-wide values that determine behaviors of the run environment.
This section describes the two kinds of global properties that are specially defined for eggPlant Functional: eggPlant
Functional global properties, and Run Option global properties.
eggPlant Functional global properties pertain to the eggPlant Functional application in general, and Run Option global
properties pertain to interactions with a SUT in the course of a test run.
Many of these global properties appear in the Text and Run Option preferences; using them as global properties allows you
to change them on a script-by-script basis, or even multiple times within a single script.
The SenseTalk Reference Manual provides more in-depth information about global properties, including a number of global
properties that are not eggPlant Functional-specific, but still useful in eggPlant Functional scripting. (For example, the
colorFormat global property [189].)
Using Global Properties with SenseTalk Commands
When you set a global property value with a SenseTalk command, such as Set or Put, use the word the before it the global
property to distinguish it from an ordinary variable. (For more information, see the SenseTalk Reference Manual .)
Example: set the searchrectangle to (1,2,2,3)
Using Global Properties with SetOption and SetOptions
When you call the setOption command to set a global property value, do not insert the word the before the name of the
global property. (SetOption is an eggPlant Functional command that takes only global properties, so there is no need to
distinguish a global property with the.)
To set multiple global properties with the setOptions command, pass a global property list in parentheses, as you would
always pass a list.
Examples: setoption searchrectangle, (1,2,2,3)
setoptions (searchrectangle: (1,2,2,3), scriptlogging: yes)
Tip: To restore all settings to their default value, call SetOptions with the parameter OriginalSettings.
GetOption() and GetOptions() Functions
88
These functions return the value of a global property (getOption), or list of global properties (getOptions). Enclose single
global properties and global property lists in parentheses, as you would for any function.
Example: put getOptions (searchrectangle)
put getOptions (searchrectangle, scriptlogging)
eggPlant Functional Global Properties
eggPlant Functional Global Properties
These properties pertain to the eggPlant Functional application in general.
The CollectionFilter
Example: Set the CollectionFilter to (Description: "2007")
Set the CollectionFilter to (Name: "English", Description: "release 5.0")
Values: A property list that contains one or both of the properties Name and Description.
Default: No filter.
Description: Limits image searches to those images whose names or descriptions contain the specified string.
Tip: To reset the CollectionFilter, set the value to empty.
Example: Set the CollectionFilter to empty
The CommandLineOutput
Examples: Set the CommandLineOutput to On
SetOption CommandLineOutput, Off
Value: On (or true), Off (or false)
Default: Off.
Description: The CommandLineOutput controls the output of messages to the standard output stream when a script is run
from the Unix or Windows command line:
Off (or False). No output is sent to standard output (stdout).
On (or True). All of the script output that would appear in the eggPlant Functional graphical interface is sent to the
standard output stream.
The CurrentTextPlatform
Examples: setoption currenttextplatform, "WinXP"
set currenttextplatform.generator to "native"
Value: The name of a text platform defined in Text preferences.
Default: Set in Text preferences.
Description: The CurrentTextPlatform determines the text platform that is used by a script.
Note: This global property displays only the name of the current platform by default, but it is still a property list. You can
assign values to CurrentTextPlatform keys just as you can with the TextPlatforms global property.
Tip: To display the property list of the CurrentTextPlatform, call the SenseTalk function StandardFormat().
The DefaultCaptureScreenSize
Example: set the DefaultCaptureScreenSize to (1024,768)
Value: A list of values representing the width and height of the SUT at time of image capture. Given as (width,height).
Default: Empty
Description: The DefaultCaptureScreenSize sets the default screen size of the SUT at time of image capture for any images
captured prior to eggPlant Functional v12.20. This is for use with Dynamic Scaling in image searches. For more information
please see Dynamic Scaling [190].
The DefaultScale
Examples:
Set the defaultScale to .5 // Scales all images to half of their original size
Set the defaultScale to (.5, 1.0, 1.5) // Scales images by every number in the list
Set the defaultScale to (.5 to 1.5 by .25) // Scales images by every number within that range incrementing by .25 (.5, .75, 1.0,
1.25,1.5)
89
Value: A positive number or a list of positive numbers.
Default: 1.0
Description: The DefaultScale global property sets the scale at which eggPlant Functional searches for an image, relative
to its original capture size. This global property is overridden by in-line scale settings. To read about in-line scale setting,
please see Scaling Single Images Within a Script in the Using eggPlant Functional [58] manual.
The DefaultTextStyle
Examples: setoption DefaultTextStyle, "StyleOne"
set the defaultTextStyle.TextFont to "Helvetica"
Value: A text-style property list
Default: The default text style of the current platform.
Description: The DefaultTextStyle is a shortcut to the default text style for the current text platform. Changes you make
here are reflected in the CurrentTextPlatform global property, and vice versa.
The DefaultUseMarkup
Examples: setoption DefaultUseMarkup, Yes
set the defaultUseMarkup to No
Value: yes or no
Default: No
Description: The DefaultUseMarkup determines whether or not supported text markups are recognized in the Text property
of a text property list. When the DefaultUseMarkup is set to yes, supported markups are used to format generated text
images. When the DefaultUseMarkup is set to no, markups are treated as literal text. (Markups are always treated as literal
text for text platforms that use the OCR text engine.)
For more information, see "Using Marked-Up Text", in Using eggPlant Functional.
The FinalSuites
Examples: Set the FinalSuites to ("FallBack")
SetOption ImageDoctor, Off
Value: One or more suite names.
Default: None.
Description: The FinalSuites global property determines the suite or suites that are searched for script or image resources
after the script's own suite is searched. (Suites named in the InitialSuites are searched first, followed by the script's own
suite, and then the FinalSuites.)
The ForceScreenRefresh
Example: SetOption ForceScreenRefresh, true
Default: False.
Description: The ForceScreenRefresh determines whether or not eggPlant Functional refreshes the Viewer window after
each command.
Note: The ForceScreenRefresh is rarely necessary, and dramatically slows down script execution; however, it might be
helpful with a SUT that is generating a lot of screen artifacts or running software that does not display well through the VNC
server.
The HotSpotScaling
Example: Set HotSpotScaling to All
Value: Inner, All, None
Default: Inner
Description: HotSpotScaling determines whether image hot spots are scaled when you search for a scaled image. The
values are as follows:
Inner: If a hot spot is within the searchable pixels of an image, it is scaled with the image. If the hot spot is offset from
the image, it is not scaled.
All: Hot spots are always scaled proportionally when you search for a scaled image.
None: Hot spots are not scaled when you search for a scaled image.
The ImageDoctor
Examples: Set the ImageDoctor to Manual
SetOption ImageDoctor, Off
Value: Auto, Manual, or Off
Default: Manual
Description: The ImageDoctor global property determines how the Image Doctor works during script execution.
90
Auto. The Image Doctor automatically attempts to correct image failures and continue the script execution. (The initial
image failure is logged as a warning.)
Manual. The Image Doctor panel opens when an image fails; you can choose to proceed with a corrected image, or
allow the script to fail.
Off. The Image Doctor is not used during script execution.
The InitialSuites
Example: Set the InitialSuites to ("WindowsXP", "WindowsVista")
Value: One or more suite names.
Default: None.
Description: The InitialSuites global property determines the first suite or suites that are searched for script or image
resources called by the current script. (Suites named in the InitialSuites take precedence over the calling script's own suite.)
The OpenTestCases
The OpenTestCases global property is used to access information gathered up until that point by all open Test Cases (see
the BeginTestCase and EndTestCase commands for information on what a Test Case is).
The initial handler (the script itself) is considered a test case and will be report as one by the OpenTestCases global
property. If no declared test cases are open, the script (initial handler) will be reported as the only open test case.
Information gathered by a test case can be accessed after it has been closed using "the Result". This must be done
immediately following the "EndTestCase" command that closes the case as shown in the below example.
Example:
BeginTestCase "1"
// execute some actions
log the OpenTestCases -- access information about the current testcase: "1"
//execute further actions if desired
EndTestCase "1"
log the result -- log information about the test case after it has run
The ReadTextSettings
Example: Set the readTextSettings to (dpi:96, multiLine: off)
Value: a property list
Default: (dpi: 72)
Description: The ReadTextSettings is a property list of the default settings used for the ReadText and ReadTable functions.
The RemoteClipboard
Examples: set the RemoteClipboard to "Hello"
setOption RemoteClipboard, "Hello"
Value: Contents of the remote clipboard.
Default: None.
Description: The RemoteClipboard provides access to the clipboard of the SUT. By modifying this global property, you
change the contents of the SUT’s clipboard.
Tip: You can also view and modify the SUT’s clipboard with the Remote Clipboard() function and the SetRemoteClipboard
command.
The RepositionPoint
Example: SetOption RepositionPoint, (1280, 1024)
Value: One pair of screen coordinates.
Default: A dynamic point near the lower-right corner of the Viewer window.
Description: The RepositionPoint determines where the mouse is repositioned during image searches.
Positive coordinate values are relative to the top left corner of the screen; negative coordinate values are relative to the
bottom right corner of the screen. (See also the ShouldRepositionMouse [191].)
The ScriptAnimation
Examples: SetOption ScriptAnimation, All
Set the ScriptAnimation to Off
Value: All (or true), Off (or false), or Calls
Default: Off.
Description: The ScriptAnimation determines whether or not a script is animated (highlighted line-by-line in the Run
91
window) as it runs, as follows:
All or true. Each line of the script is highlighted as it is executed.
Off (or false). The script is not animated.
Calls. Each script or handler is highlighted, but not each line.
The ScriptLogging
Examples: Set the ScriptLogging to Silent
SetOption Scriptlogging, On
Values: On (or true), off (or false), minimal, or silent
Default: On.
Description: The ScriptLogging controls which events are recorded in the Log file as a script runs, as follows:
On: All logging commands and all interactions with the SUT are recorded.
Off: Only Log, LogWarning, LogError, LogSuccess, BeginTestCase, and EndTestCase commands are recorded.
Minimal: Only LogWarning and LogError commands are recorded.
Silent: Nothing is recorded in the Log file. (Warnings and errors are still counted.)
(For more information, see The Results pane [19].)
The ScriptTracing
Examples: SetOption ScriptTracing, Calls
Set the ScriptTracing to Off
Value: All (or true), Off (or false), or Calls
Default: Off.
Description: The ScriptTracing determines whether or not a script is traced (displayed line-by-line in the Run window, one
step ahead of actual execution.) as it runs. The values are described below:
All or true. Each line of the script is displayed before it is executed.
Off (or false). The script is not traced.
Calls. Each script or handler is traced, but not each line.
The ScriptTracing reverts to its default value upon completion of the script execution.
The SearchRectangle
Example: setoption SearchRectangle, ((10, 12, 100, 4))
Values: Two image locations or two pairs of coordinates indicating diagonal corners of the searchrectangle. (Regardless of
the form you pass in, the return value is displayed as (x,y,x,y).
Default: The full Viewer window
Description: Limits the area that eggPlant Functional searches for images in the Viewer window.
Tip: To reset the searchRectangle to the full Viewer window, set the value to empty() or fullscreen.
The TextPlatforms
Example: Put GetOption (TextPlatforms)
Value: A text platform property list.
Default: Set in Text preferences.
Description: The TextPlatforms global property contains the following properties for all of your text platforms:
Name: Name of the text platform.
Engine: The text engine used by the platform.
Generator: The text-image generator (TIG) used by the platform. (The Generator property is deprecated. Instead, use
Engine.)
Styles: The properties of each of the platform’s defined text styles.
Run Options
Run Option Global Properties
These global properties determine interactions with the SUT. The default values are appropriate for most situations.
The ForceScreenRefresh
Example: SetOption ForceScreenRefresh, true
92
Default: False.
Description: The ForceScreenRefresh determines whether or not eggPlant Functional refreshes the Viewer window after
each command.
Note: The ForceScreenRefresh is rarely necessary, and dramatically slows down script execution; however, it might be
helpful with a SUT that is generating a lot of screen artifacts or running software that does not display well through the VNC
server.
The ImageSearchCount
Example: SetOption ImageSearchCount, 3
Value: A positive integer.
Default: 7
Description: The ImageSearchCount determines the number of times eggPlant Functional scans the Viewer window
searching for an image.
Note: Setting the ImageSearchCount to 1 causes image searches to look at only the current Viewer window, bypassing any
ImageSearchDelay, screen refreshes, and mouse repositioning. This is the fastest way to perform a search, but it can be
prone to failure.
The ImageSearchDelay
Example: Set the ImageSearchDelay to .6
Value: Time (in seconds.)
Default: 0.3
Description: The ImageSearchDelay determines the wait time between searches for an image.
The ImageSearchTime
Example: Set the ImageSearchTime to 5
Value: Time (in seconds.)
Default: 1.8
Description: The ImageSearchTime determines the maximum time eggPlant Functional can search for an image before
reporting a failure.
The KeyDownDelay
Example: SetOption KeyDownDelay, .05
Value: Time (in seconds.)
Default: 0.001
Description: The KeyDownDelay determines the wait time between keyDown and KeyUp events sent to the SUT.
The MouseClickDelay
Example: SetOption MouseClickDelay, .5
Value: Time (in seconds.)
Default: 0.02
Description: The MouseClickDelay determines the wait time between mouseDown and mouseUp events sent to the SUT.
The MouseDoubleClickDelay
Example: Set the MouseDoubleClickDelay to .004
Value: Time (in seconds.)
Default: 0.01
Description: The MouseDoubleClickDelay determines the wait time between the end of the first click (mouseUp event) and
the beginning of the second click (mouseDown event) of double-clicks sent to the SUT.
The MouseDragSpeed
93
Example: Set the MouseDragSpeed to 12
Value: A number, 0 or greater.
Default: 10
Description: The MouseDragSpeed determines how fast the SUT’s mouse is moved during a drag command. The value
represents the number of pixels eggPlant Functional drags the SUT’s mouse in each step. (Between steps, there is a pause
the length of The MouseMoveDelay value.)
The MouseMoveDelay
Example: Set the MouseMoveDelay to .06
Value: Time (in seconds.)
Default: 0.01
Description: The MouseMoveDelay determines the wait time between each step of a SUT’s mouse move.
The MouseMoveMode
Example: SetOption MouseMoveMode, 1
Value: 0, 1, or 2
Default: 0
Description: The MouseMoveMode determines the path a mouse takes to move from one location to the next, as follows.
0. The mouse moves in a straight line.
1. The mouse moves horizontally, then vertically.
2. The mouse moves vertically, then horizontally.
Note: If The MouseMoveSpeed value is 0, the mouse jumps to the next location instantly, and The MouseMoveMode value is
irrelevant.
The MouseMoveSpeed
Example: SetOption MouseMoveSpeed, 10
Value: A number, 0 or greater.
Default: 0
Description: The MouseMoveSpeed determines how fast the SUT’s mouse is moved in the Viewer window. The value
represents the number of pixels eggPlant Functional moves the SUT’s mouse in each step. (Between steps, there is a pause
the length of The MouseMoveDelay value.)
With the default value of 0, the mouse jumps from its current position to the next point in one step.
Note: Some systems (particularly certain Linux systems) have trouble tracking the mouse under the default value. For these
systems, start with a value of 10, then reduce the value as necessary until you find one that works. (Conversely, if 10 is slow
enough, you can try increasing the value to see how fast the mouse can move before the SUT can no longer track it.)
The NextKeyDelay
Example: SetOption NextKeyDelay, .08
Value: Time (in seconds.)
Default: 0.01
Description: The NextKeyDelay determines the wait time between keystrokes sent to the SUT.
The RemoteWorkInterval
Example: SetOption RemoteWorkInterval, 1
Value: Time (in seconds.)
Default: 0.7
Description: The RemoteWorkInterval determines the minimum time eggPlant Functional allows for the SUT to perform a
task before sending the next event from a script. This is an important timing parameter for regulating the overall speed of
interactions with the SUT.
The SendShiftForCaps
94
Example: Set the SendShiftForCaps to yes
Value: Yes, Always, and Never.
Default: Yes.
Description: The SendShiftForCaps determines whether or not ShiftKeyDown is used for capital letters sent to the SUT.
Yes. Sends the shift key to type capital letters in commands that do not include a modifier-key parameter. For
example, TypeText AltKey & "S" would not send a shift to generate a capital S, because doing so would change the
result from Alt+s to Shift+Alt+s. However, TypeText "Seattle" would send a shift to type a capital S.
Always. Sends the shift key to the SUT whenever a capital letter appears in a TypeText parameter.
Never. Never sends shift to type a capital letter. (You can still send the shift key by specifically passing the ShiftKey
parameter.)
The ShouldRepositionMouse
Example: Set the ShouldRepositionMouse to True
Values: True or false.
Default: True.
Description: The ShouldRepositionMouse determines whether or not the SUT mouse moves to the lower-right corner of the
Viewer window (or the coordinates of the RepositionPoint [192]) during image searches. (Repositioning the mouse prevents it
from obscuring images elsewhere.)
The StandardImageTolerance/ PreciseImageTolerance
Example: Set the StandardImageTolerance to 50
SetOption PreciseImageTolerance, 4
Value: An integer, 0-255.
StandardImageTolerance Default: 45
PreciseImageTolerance Default: 1
Description: These global properties determine how close an image’s color must be to a color in the Viewer window for
eggPlant Functional to consider it a match by tolerant or precise search type standards. (The value represents the difference
between an RGB value in the image, and the value of its corresponding location in the Viewer window.)
Note: The default values are appropriate for most situations. Practical values can range from 0 to 100, but 80 is often the
point that starts to generate a lot of false matches.
Text Style Properties
For each text style, the following properties are available:
TextFont. The text’s font, such as Helvetica
TextSize. The text’s size, in points.
TextColor. By default, this is an RGB value. For more information, see “Working with Color” in the SenseTalk
Reference Manual.)
TextBackgroundColor. By default, an RGB value indicating the text's background.
Italic. A yes or no value.
Bold. A yes or no value.
Underline. A yes or no value.
Trim. Whether or not extra space is trimmed away from the text. (The default value is yes.)
Cache. Whether a cached image is used, if one is available. (A value of no forces eggPlant Functional to generate the
image over again every time it is called. The default value is no.)
The SwipeSpeed
Example: Set the SwipeSpeed to 3
Value: A number, 0 or greater.
Default: 40.
Description: This global property controls the speed at which the swipe events occur. The value represents the number of
pixels eggPlant Functional drags the SUT’s mouse in each step.
Appendix A: eggPlant Commands
Appendix A: eggPlant Functional Commands
95
Command
Behavior
CaptureScreen [104]
Takes a snapshot of the Viewer window
CaptureTextImage [193]
Creates a text image. This command is only used in scripted text-image generators.
Click
Clicks the SUT mouse in a coordinate location, or in the first image parameter found
[95]
Connect
Disconnect
Double-clicks the SUT mouse in a coordinate location, or in the first image parameter found.
[96]
Clicks and holds the SUT mouse in the Hot Spot of the first location found
[196]
DragAndDrop
Drop
Closes a connection with a SUT
[195]
DoubleClick
Drag
Opens a VNC or RDP connection with a SUT; makes it the active connection
[194]
Clicks and holds the SUT mouse in the first location, moves to subsequent locations, releasing
the mouse button on the last location
[197]
Moves the mouse to the given location and releases the mouse button
[198]
Hide RemoteWindow [199]
Hides the Viewer window
HighlightRectangle
Draws a border around the given rectangle in the Viewer window
KeyDown
KeyUp
Presses and holds keys on the SUT keyboard.
[201]
Releases keys that are held down on the SUT keyboard.
[202]
LaunchApp
Log
[200]
Launches a signed app (or Springboard) on an iOS device that you are connected to through the
iOS Gateway.
[203]
Inserts a comment into a script’s Log file
[204]
LogError [205]
LogSuccess
LogWarning
Inserts a comment into a script’s Log file in red text
Inserts a comment into a script's log file and adds one to the success count for the script.
[206]
Inserts a comment into a script’s Log file in orange text
[207]
MouseButtonDown
[186]
Presses the SUT mouse button
MouseButtonUp [188]
Releases the SUT mouse button
MoveTo [98]
Moves the SUT mouse to a coordinate location, or to the first image parameter found
MoveToEach [208]
Moves the SUT mouse to each of the given coordinate locations and image parameters
PauseScript
Pauses script execution; enters debug mode
[209]
RefreshScreen
[105]
Redraws the image of the SUT in the Viewer window
96
Command
RightClick
Behavior
Right-clicks the SUT mouse in a coordinate location, or in the first image parameter found
[97]
Run [210]
Runs a given script
RunWithNewResults [211]
Runs a given script, generating a separate Log file for it
ScrollWheelDown
Scrolls the SUT mouse wheel down a given number of increments
ScrollWheelUp
SendMail
[212]
Scrolls the SUT mouse wheel up a given number of increments
[213]
Sends an e-mail from within a script
[159]
SetOption
Modifies a global property value
[214]
SetOptions
Modifies multiple global property values
[215]
SetRemoteClipboard [216]
Places text in the SUT clipboard
ShowRemoteWindow
Shows the Viewer window
[217]
TraceScreenOn /
TraceScreenOff [218]
Turns screen captures before every command on and off.
TypeText
Sends keystrokes to the SUT keyboard
[219]
Wait [220]
WaitFor
Delays the next line of execution for the given length of time
Delays execution of the next line until any one of the given images is found
[221]
WaitForAll
Delays execution of the next line until all given images are found.
[222]
Deprecated Commands
Commands in the following table are deprecated and no longer supported; if an updated command or method is available, it
is noted in the description.
Command
Behavior
CloseSuite [223] Ends the temporary suite availability of OpenSuite
OpenSuite
[224]
Makes a suite available to the running script; use The InitialSuites
[225]
global property instead
StartMovie [226] Starts recording a movie in the Viewer window
StopMovie
[227]
Ends a movie that is recorded from within a script
Appendix B: eggPlant Functions
Appendix B: eggPlant Functional Functions
97
Function
Returns
ColorAtLocation() [228]
The color of the pixel at a given location (Default: RGB value)
ConnectionInfo()
A connection property list
[229]
EggPlantVersion()
The version number of your copy of eggPlant Functional
[230]
EveryImageLocation()
[231]
The hot spot location of every occurrence of the given image or images.
EveryImageRectangle() [232]
Rectangle coordinates of every occurrence of the given image or images..
FoundImageInfo() [233]
An image property list for the last image found
FoundImageLocation()
FoundImageName()
[234]
[235]
The location of the last image found
(Deprecated. See foundImageInfo()
.) Name of the last image found.
[233]
FoundImageNumber() [236]
The position of the last image found, within a series of given images
GetOption() [237]
The value of a given global property
GetOptions()
The values of all Run Option global properties or given global properties
[238]
ImageColorAtLocation() [239]
The color of the pixel at a given location within an image (Default: RGB value)
ImageFound()
Whether a given image is found; True or false
[240]
ImageHotSpot()
ImageInfo()
The location of the Hot Spot in the given image
[241]
An image property list for the given image
[171]
ImageLocation() [172]
The hot spot location of the first occurrence of the given image or images.
ImageRectangle()
The rectangle coordinates of the first occurrence of the given image or images..
[173]
ImageSize() [242]
AllConnectionInfo()
An image width and height in pixels
[243]
A list of connection property lists for every SUT in the Connection List
MouseLocation() [244]
Coordinates of the current mouse cursor location
OpenSuites() [245]
A list of all suites available to the current script
ReadTable() [246]
The table data found within a given rectangle on the SUT
ReadText()
Uses OCR to read the text content found within a given rectangle on the SUT
[247]
RemoteClipboard()
[248]
Contents of the SUT clipboard
98
Function
Returns
RemoteScreenRectangle()
RemoteScreenSize()
[250]
[249]
The coordinates of a rectangle the size of the entire Viewer window
The width and height of the Viewer window in pixels
RunningFromCommandLine() [251] Whether or not the current script run was called in a command line
ScriptResults() [175]
A results property list for every run of the given (or current) script
SuiteInfo()
A property list of information about the given suite (or current suite)
[252]
Appendix C: TypeText Keywords
Appendix C: TypeText Keywords
General TypeText Keywords
To press this key...
Type this keyword (without quotation marks)
0, 1…9 (on Keypad)
keypad0 , keypad1 ...keypad9
Alt (Windows; For Mac, use Option)
AltKey
Application key (Windows)
applicationKey
Arrow down
downArrow
Arrow left
leftArrow
Arrow right
rightArrow
Arrow up
upArrow
Backslash (\)
backslash
Backspace/Delete
backspace
Begin
beginKey
Command
CommandKey
Command down
CommandDown
Command up
CommandUp
Control
ControlKey
Control down
ControlDown
Control up
ControlUp
99
To press this key...
Type this keyword (without quotation marks)
Decimal (. on Keypad)
keypadDecimal
Delete forward
deleteKey
Divide (/ on Keypad)
keypadDivide
End
endKey
Enter
enter
Escape
escape
Function keys
f1, f2, …f35
Home
homeKey
Insert
insertKey
Minus (- on Keypad)
keypadMinus
Numlock
numLock
Option
OptionKey
Page Down
pageDown
Page Up
pageUp
Pause/Break
pauseBreak
Plus (+ on Keypad)
keypadPlus
Printscreen
printScreen
Return
return
Scroll Lock
scrollLock
Shift
ShiftKey
Shift down
ShiftDown
Shift up
ShiftUp
Tab
tab
Times (* on Keypad)
keypadTimes
Windows
WindowsKey
Windows Alt
WindowsAltKey
100
To press this key...
Type this keyword (without quotation marks)
Windows Alt down
WindowsAltDown
Windows Alt up
WindowsAltUp
All keys (KeyUp command only)
AllKeys
All modifier keys (KeyUp command only)
AllModifierKeys
All non-modifier keys (KeyUp command only) AllNonModifierKeys
TypeText Keywords for Mobile Control
iOS Control Mapping
iOS control
TypeText
keywords
Home Key
HomeButton
Power Button
mousebuttondown 2
Rotate the screen of the device (Note: This command works with eggOn for iOS 5 and 6 and
through iOS Gateway with iOS 7 and 8.)
RotateMobile
Volume up
VolumeUpButton ,
KeypadPlus
Volume down
VolumeDownButton ,
KeypadMinus
Android Control Mapping
Note: This is currently available with the VMLite VNC Server, available through the Play store.
Android control
TypeText keywords
Back
EscapeKey
Hard Home Key
HomeKey, HomeButton, ApplicationKey
Menu Button
MenuButton
Navigation down
DownArrow
Navigation left
LeftArrow
Navigation right
RightArrow
Navigation up
UpArrow
Rotate Mobile Device RotateMobile
Scroll through apps
Tab
Tap selected app
Return
Volume up
KeypadPlus
Volume down
KeypadMinus
Keywords available on Android devices that support these keys:
Android control
TypeText
keywords
Back Button
BackButton
Dismiss Button
DismissButton
Edit Button
EditButton
Hard Menu Key
EndKey
Power Button
PowerButton
Unlock Button
PowerButton, UnlockButton
101
Appendix D: Global Properties
Appendix D: Global Properties
eggPlant Functional Global Properties
Key
Description
the CommandLineOutput
[177]
the CurrentTextPlatform
[156]
the DefaultTextStyle
[253]
Whether or not Log files are output when you run scripts from the command line
The current text platform
The default text style of the current text platform
the DefaultUseMarkup [254] Whether or not supported text markups are used to format text images.
the FinalSuites [255]
The suite or suites that are searched for image or script resources after the script's own suite is
searched.
the HotSpotScaling [256]
Behavior of the hot spot when image scaling is used.
the ImageDoctor
Behavior of the Image Doctor during script execution; Auto, Manual, or Off
[178]
the InitialSuites [225]
The first suite or suites that are searched for image or script resources during script execution.
the ReadTextSettings
[257]
Default settings used by the ReadText and ReadTable functions
the RemoteClipboard [258]
The contents of the SUT clipboard
the RepositionPoint
The location where the mouse cursor is moved during searches
the ScriptAnimation
[259]
Whether script animation is turned on or off
[179]
the ScriptLogging [131]
How much is written in the Log file
the ScriptTracing [77]
Whether script tracing is turned on or off
the SearchRectangle
[180]
the TextPlatforms [176]
The area that is searched in the Viewer window
Property lists for all text platforms
Run-Option Global Properties
Key
Description
the ForceScreenRefresh [155]
Whether there is a screen refresh after every line
the ImageSearchCount
Number of times eggPlant Functional searches for an image in the Viewer
window
[260]
102
Key
Description
the ImageSearchDelay [261]
Time between image searches
the ImageSearchTime [262]
Time spent searching for an image
the KeyDownDelay [263]
Time between key press and release
the MouseClickDelay
Time between mouse-button press and release
[264]
the MouseDoubleClickDelay
the MouseMoveDelay
[265]
Time between clicks of a double-click
Time between increments of mouse movement
[266]
the MouseMoveMode [267]
Mouse path to the next given location
the MouseMoveSpeed
Space the mouse moves in each increment between locations
[268]
the NextKeyDelay [269]
the PreciseImageTolerance
Time between keystrokes
[270]
Maximum color difference allowed by precise image searches
the RemoteWorkInterval [154]
Minimum time between executed commands in the SUT
the SendShiftForCaps [271]
Whether or not Shift is held down for capital letters on the SUT
the ShouldRepositionMouse [191]
Whether the mouse is repositioned during searches
the StandardImageTolerance [270] Maximum color difference allowed by tolerant image searches
the SwipeSpeed
The speed at which swipe events occur
[272]
Appendix E: Property Lists
Appendix E: Property Lists
Assert Command Properties
Key
Description
assertionBehavior
The default behavior for assert commands. Options are Error, Warning, or Pause.
assertionsEnabled
Specifies if eggPlant Functional runs assert commands.
assertionPassCount
Global counters that increment each time an assert command runs. The counters are
assertionFailCount, assertionErrorCount, assertionWarningCount, and assertionExceptionCount. Each
failure increments both the assertionFailCount and also one of the assertionErrorCount,
assertionWarningCount, or assertionExceptionCount counters.
For information about using the Assert command, see Assert Command [273] in Reporting Commands.
CaptureScreen Properties
103
Key
Description
ImageInfo
An image property list
Increment
Whether to append an automatically incremented number to the image; true or
false
Name
An image file name and optional path information, in quotation marks
Rectangle (or Rect) A pair of diagonal locations indicating a rectangle to capture
For information about using CaptureScreen, see the CaptureScreen Command section of Reporting Commands
.
[104]
Connection Properties
Key
Description
Bonjour
Whether or not the SUT was found via Bonjour or zerconf.
ColorDepth
The color depth of the SUT in the Viewer window: 8, 16, 32
Connected
Whether or not eggPlant Functional is currently connected to the SUT.
Name
The display name of the SUT.
Password
Password of the SUT's VNC server.
PortNum
Port number used by the SUT VNC server.
Reverse
Whether or not the connection is a reverse connection (i.e. initiated by the
SUT.)
ScreenSize
The width and height of the SUT screen.
ServerID (required) SUT host name, IP address, or display name.
sshHost
Host name or IP address of an SSH host.
sshPassword
Password of the user account on the SSH host computer.
sshUser
User account on the SSH host computer.
Visible
Whether or not the Viewer window opens upon connection.
For information about using the Connect command, see the Connect Command section of SUT Commands and Functions
For general information about connections, see Creating a Connection from eggPlant Functional [83].
.
[194]
Image Properties
Key
Description
CaptureDate
The date of image capture, including the time.
CaptureHost
The SUT from which the image was captured.
104
Key
Description
CaptureLocation
Screen coordinates of the image when it was captured. (This value cannot be changed.)
CaptureScreenSize Screen size of the SUT in pixels at time of image capture, given as (width,height).
Cliprectangle
Coordinates that define a rectangle within the image; any pixels outside the cliprectangle are
disregarded for image matching.
Discrepancy
The percentage or absolute number of pixels that may differ between an image and a match in the
Viewer window.
HotSpot
Coordinates of the Hot Spot within the image, relative to the top-left corner of the image.
ImageDescription
The images description in the Suite Editor Images pane. (This value cannot be changed.)
ImageName
Name of the image file; (File extension is not used)
ImagePath
File path of the image file. (This value cannot be changed.)
ImageSize
Width and height in pixels. (This value cannot be changed.)
ImageTolerance
The acceptable difference between color values in an image and a match in the Viewer window
Pulsing
Whether the search type allows for pulsing; true or false
Rotate
A degree of rotation (or list or range of degrees) that the image should be found at, if you expect an
image to appear at a different angle than was originally captured. Rotation is clockwise.
Scale
The scale factor at which the image was found. For more information, see Scaling Images [274]
Searchrectangle
Coordinates that define a rectangle in the Viewer window. eggPlant Functional only looks for this image
within the defined rectangle.
SearchType
Precise, Tolerant, or Text
WaitFor
The maximum time eggPlant Functional waits for the given image to appear on the SUT.
For information about using image properties, see:
Image-Searching Commands and Functions
Image Information Functions [36]
Found-Image Information Functions [37]
[35]
Results Properties
Key
Description
Duration
The length of time the script ran (or has been running) given in seconds
Errors
A count of errors logged for that run
Exceptions
A count of the eggPlant Functional caught and uncaught exceptions
raised
LogFile
The name and absolute path of the Log file
105
Key
Description
ReturnValue The returned value of any return statements
RunDate
The date and time the run was started
Status
The status of the run: Success, Failure, or Running
Warnings
A count of the warnings logged for that run
For information about script results, see the ScriptResults() Function section of Reporting Commands
[175]
SendMail Properties
Key
Description
Attachment
A filename or list of filenames to attach to the email.
Body (or Message)
The text of the message.
CC
One or more addresses to which a copy of the message is sent, separated by commas.
"Content-Type"
A mime type. For HTML email, use the value text/html. (The default is text/plain.)
From (required by some mail
servers)
The user account sending the message.
ReplyTo
The default address to which a reply is sent.
smtp_host (required)
The hostname or IP Address of the mail server.
smtp_password
The password for log in to the mail server; used if an smtp_type is specified.
smtp_port
The port used to connect to the mail server. Port 25, the default mail port, is used if
nothing is specified.
smtp_transport
The encryption method used for mail transport, either Unencrypted, SSL, or TLS.
smtp_type
The authentication scheme used by the mail server.
On Mac OS X: None, Plain, Login, or CRAM-MD5.
On Linux and Windows: None or Plain.
smtp_user
The user account on the mail server; used if an smtp_type is specified.
Subject
The subject line for the message.
To (required)
One or more addresses, separated by commas.
For information about using SendMail, see the SendMail Command section of Reporting Commands
explanation of setting up SendMail, see Sending Test Results via Email [275].
. For a fuller
[159]
TextPlatform Properties
Key
Engine
Description
The text engine used by the platform
106
Key
Description
Generator
The text-image generator (TIG) used by the platform. (The Generator property is deprecated. Instead, use
Engine.)
Name
Name of the text platform
Styles
A property list for each of the platform’s text styles
For information about TextPlatform , see The TextPlatforms section of eggPlant Functional Global Properties [176].
Text Properties
Common Text Properties (used for both OCR and TIG)
Key
Text
Description
The text string that you want to find on the SUT. (Required.)
TextPlatform The name of the platform on which your text will be found.
TextStyle
Either the name of a text style, or a list of text properties defined in a
script
Generic (OCR) text properties
Key
Description
CaseSensitive
Whether text searches consider case
Contrast
Whether the SUT display is internally seen as a two-color image
ContrastColor
The color that is considered the primary color when contrast is on
ContrastTolerance The maximum per-channel difference allowed or a pixel to be seen as the contrast color
Language
The language of text OCR will read
SearchRectangle
A specific area of the screen to be searched by the OCR function
TextRotation
Reads rotated and upside-down text, specified a with the values of Clockwise, CounterClockwise,
UpsideDown
ValidCharacters
The set of characters that an OCR search can return
ValidPatterns
Allows the use of regular expressions for matching words; for more information, see ValidPatterns
ValidWords
The words (or character strings) that can be returned by the OCR search
[276]
Generated (TIG) text properties
Key
Anti-aliasing
Description
(Pango TIG only.) Whether text anti-aliasing is on or off.
107
Key
Description
Bold
Whether the font is displayed as bold; true or false
Cache
Whether a cached Text Image is used, if available
CaptureLocation
Coordinates of the Text Image the last time it was found
HotSpot
Coordinates of the Hot Spot within the image
ImageName
Name of the Text Image file; (File extension is not used)
ImagePath
File path of the Text Image file
ImageSize
Width and height in pixels
Italic
Whether the font is displayed in italics; true or false
Pulsing
Whether the search type allows for pulsing; true or false
SearchType
Precise, Tolerant, or Text
TextBackgroundColor The background color of the Text Image
TextColor
The color of the text
TextFont
The name of the font used
TextSize
The size of the text in points
Trim
Whether or not extra space is trimmed away from around the text
Underline
Whether the text is underlined; true or false
UseMarkup
Whether supported markup tags are recognized as text attributes (on) or treated as string literals (off).
For information about using text properties, see Text Commands and Functions [34]. For a fuller explanation of working with
text, see Finding Text [277].
TextStyle Properties
Key
Description
Generated (TIG) textStyle properties
Bold
Whether the font is displayed as bold; true or false
Italic
Whether the font is displayed in italics; true or false
TextBackgroundColor The background color of the Text Image
TextColor
The color of the text
TextFont
The name of the font used, in quotation marks
108
Key
Description
TextSize
The size of the text in points
Underline
Whether the text is underlined; true or false
For information about text styles and TIGs, see Working with Text-Image Generators (TIGs)
.
[278]
Appendix F: OCR Language Support
OCR Language Support
The Optical Character Recognition Engine is a versatile tool within eggPlant Functional. Below is a list of languages
supported by OCR. These tags can be added as Language parameters to any OCR search in eggPlant Functional scripts. The
OCR Engine provides its own system dictionaries for the languages that have full built-in dictionary support.
Examples:
log ReadText(("TLImage","BRImage"),Language:"French") -- where "TLImage" and "BRImage" are captured images that define a
search rectangle by indicating the top left and bottom right corners of that rectangle.
Click (Text:"Aubergine",Language:"French")
Note: These pre-defined language tags are case-sensitive.
Predefined languages supported by the OCR Engine
Internal Name
Comment
Abkhaz
Adyghe
Afrikaans
Agul
Albanian
Altaic
ArmenianEastern
Full dictionary support available.
ArmenianGrabar
Full dictionary support available.
ArmenianWestern
Full dictionary support available.
Awar
Aymara
AzeriCyrillic
AzeriLatin
Bashkir
Full dictionary support available.
Basque
Belarusian
Bemba
Blackfoot
Breton
Bugotu
Bulgarian
Full dictionary support available.
Buryat
Catalan
Full dictionary support available.
Chamorro
Chechen
ChinesePRC
ChineseTaiwan
Chukcha
Chuvash
109
Internal Name
Comment
Corsican
CrimeanTatar
Croatian
Full dictionary support available.
Crow
Czech
Full dictionary support available.
Danish
Full dictionary support available.
Dargwa
Dungan
Dutch
Full dictionary support available.
DutchBelgian
Full dictionary support available.
English
Full dictionary support available.
EskimoCyrillic
EskimoLatin
Esperanto
Estonian
Full dictionary support available.
Even
Evenki
Faeroese
Fijian
Finnish
Full dictionary support available.
French
Full dictionary support available.
Frisian
Friulian
GaelicScottish
Gagauz
Galician
Ganda
German
Full dictionary support available.
GermanNewSpelling Full dictionary support available.
GermanLuxembourg
Greek
Full dictionary support available.
Guarani
Hani
Hausa
Hawaiian
Hungarian
Full dictionary support available.
Icelandic
Ido
Indonesian
Full dictionary support available.
Ingush
Interlingua
Irish
Italian
Full dictionary support available.
Japanese
Kabardian
Kalmyk
KarachayBalkar
Karakalpak
Kasub
Kawa
Kazakh
Khakas
Khanty
Kikuyu
Kirgiz
Kongo
110
Internal Name
Comment
Korean
Koryak
Kpelle
Kumyk
Kurdish
Lak
Lappish
Latin
Latvian
Full dictionary support available.
Lezgin
Lithuanian
Full dictionary support available.
Luba
Macedonian
Malagasy
Malay
Malinke
Maltese
Mansi
Maori
Mari
Maya
Miao
Minankabaw
Mohawk
Moldavian
Mongol
Mordvin
Nahuatl
Nenets
Nivkh
Nogay
NorwegianBokmal
Full dictionary support available.
NorwegianNynorsk
Full dictionary support available.
Nyanja
Occidental
Ojibway
OldEnglish
Full dictionary support available.
OldFrench
Full dictionary support available.
OldGerman
Full dictionary support available.
OldItalian
Full dictionary support available.
OldSpanish
Full dictionary support available.
Ossetic
Papiamento
PidginEnglish
Tok Pisin language.
Polish
Full dictionary support available.
PortugueseBrazilian Full dictionary support available.
PortugueseStandard Full dictionary support available.
Provencal
Quechua
RhaetoRomanic
Romanian
Full dictionary support available.
RomanianMoldavia
Romany
Ruanda
Rundi
RussianOldSpelling
111
Internal Name
Russian
Comment
Full dictionary support available.
Samoan
Selkup
SerbianCyrillic
SerbianLatin
Shona
Sioux
Slovak
Full dictionary support available.
Slovenian
Full dictionary support available.
Somali
Sorbian
Sotho
Spanish
Full dictionary support available.
Sunda
Swahili
Swazi
Swedish
Full dictionary support available.
Tabassaran
Tagalog
Tahitian
Tajik
Tatar
Full dictionary support available.
Tinpo
Tongan
Tswana
Tun
Turkish
Full dictionary support available.
Turkmen
Tuvin
Udmurt
UighurCyrillic
UighurLatin
Ukrainian
Full dictionary support available.
UzbekCyrillic
UzbekLatin
Visayan
Welsh
Wolof
Xhosa
Yakut
Zapotec
Zulu
Basic
C++
Cobol
Fortran
Java
Pascal
Chemistry
E13B
Recognition language for MICR text type.
Norwegian
Group language (NorvegianNynorsk+NorvegianBokmal). Full dictionary support
available.
Digits
eggPlant Functional Release Notes
112
eggPlant Functional Release Notes
We will publish all release notes in this section. With each release of eggPlant, we make note of all changes made including
features added, bug fixes, and any other changes.
About the Release Notes
These are good reference for bug fixes and feature updates. If you have requested a feature or submitted a bug report and
want to see if it has been implemented/fixed, or you are just curious about the latest changes to the program, this is where
you will find that information.
If you have any questions on the information provided, please write in to support.
Thank you for using eggPlant!
Help and Additional Information
Manuals
The following manuals are also available through the eggPlant Help viewer.
Getting Started [57] provides instructions for a basic eggPlant set up to get you started using this testing tool and
familiarize you with its functionality.
Using eggPlant [58] is a collection of articles that cover a wide range of eggPlant topics.
eggDrive [279] is a portion of the Using eggPlant [58] manual, which gives a step-by-step guide to using eggPlant in Drive
mode, and includes an example script in Java.
The eggPlant: Reference Manual [59] describes the eggPlant interface and scripting processes, and the SenseTalk
commands, functions, and global properties that are unique to eggPlant.
The SenseTalk Reference Manual [60] is a comprehensive guide to the SenseTalk scripting language used with eggPlant.
This is a comprehensive manual that discusses all aspects of the SenseTalk language which are used for general
scripting purposes. Commands and functions which are unique to eggPlant are described in the eggPlant reference [59]
manual.
eggOn [67] is a handy reference for everything you need to know about how to connect to and test against a mobile
device with eggPlant using eggOn.
The eggPlant Manager [62] manual provides instructions for a basic set up with eggPlant Manager to kickstart your test
management system. Schedule and execute tests and obtain results with ease.
The eggPlant Knowledge Base [68] is a collection of articles from different contributors describing a variety of techniques
and approaches to using eggPlant, as well as best practices and use-case scenarios.
Further resources
Online eggPlant Tutorials [71]: This is a series of five interactive tutorials that introduce the scripting environment and
often-used commands and functions.
eggPlant User Forum [280]: This is a forum where you can ask questions of other eggPlant users, help your peers, and
share ideas and approaches.
eggPlant Examples Forum [73]: This forum is a collection of eggPlant scripts written in SenseTalk, addressing different
scripting problems.
v15+ Release Notes
eggPlant Functional v15 Release Notes
The notes below provide descriptions of the new features and changes introduced with each release of eggPlant. You are
strongly encouraged to read about the relevant changes whenever you upgrade from an earlier version.
Potential compatibility issues are highlighted in RED.
Compatibility
Mac OS X 10.7, 10.8, 10.9, 10.10
Windows 7, 8, Server 2008, Server 2012
Linux 32-bit Debian and RedHat based on glib 2.11 and above
64-bit distributions must have supported versions of all dependent 32-bit libraries.
Notes For Cross Platform Users:
eggPlant for Linux and Windows contains almost all of the functionality available in eggPlant for Mac. Excluded features are
listed at the bottom of the release notes.
Release v15.20 (18-August-2015)
113
Highlights
New SenseTalk Browser that includes descriptions, templates, and documentation links for common scripting terms.
Auto-completion of punctuation, control structures, and SenseTalk language elements in the script editor.
Capability to create custom code Snippets as part of the SenseTalk Browser.
Variable Watcher allows you to view and edit variable values during script execution.
Table tests now support Data Driven execution to iterate over values stored in a CSV table.
Ability to refactor scripts by extracting sections of code into a new script.
Connection Improvements
Windows RDP now uses significantly less CPU on Windows.
Values specified in Connect commands or by using command-line arguments now take precedence over existing
values in the Connection List.
Built-in Android Server 2.6 is included in eggPlant Functional 15.20. iOS Gateway 2.6 is forthcoming.
Added options for Mobile VNC connections to scale the remote screen size down. Optionally allows scaled screens to be
blended (for compatibility with older VNC servers). Note: Requires iOS Gateway 2.6 or Android Server 2.6.
Added Reboot command for mobile connections. Note: Requires iOS Gateway 2.6 or Android Server 2.6.
Added KillApp command to terminate mobile apps. Note: Requires iOS Gateway 2.6 or Android Server 2.6.
Added SUTinfo() function for Android devices. SUTinfo returns a property list of information about a connected
Android device. Properties include: type, device_os_version, and device. Note: Requires Android Server 2.6.
User Interface Improvements
The Run window now has a Variable Watcher in which you can watch variable values while a script is running. Options
include the scope of variables shown and the frequency of variable updates (continuously or only when the script is
paused).
You can now click script and image names to edit them inline on Windows, rather than having to use the Rename menu
item.
The Ad Hoc Do Box (AHDB) in the Run window will now expand when multiple lines of text are entered into it.
In the Scripts list, you can enable a color indicator to show which scripts are enabled for Table Actions.
Scripting Improvements
Tables can now specify an optional CSV Data File. When specified, the table actions will be repeated for each row in
the file. The first row must contain column headers. Values for each column can be used in the Arguments or
Expected Value field by using $HEADER_NAME.
Tables can now specify the return value from previous lines for use in Arguments or Expected Value fields. You can
refer to the results of particular lines with #LINE_NUMBER, or use #prev for the immediately preceding line.
Auto-completion of punctuation, control structures, and SenseTalk language elements in the script editor. Options
include parentheses, quotes, commas, curly braces, square brackets, if statements, repeat statements, handlers, script
names, local variables, image names, and SenseTalk keywords.
The answer command has been extended with from list, multiple, and default answer options. Example:
answer "What would you like to drink?" from list ("Coffee", "Tea", "Cocoa", "Water”) allow multiple default “Coffee”
Capability to refactor script by extracting sections of code into a new script. To extract code to a new script, select the
code, right click, and select Extract New Script in the drow-down list.
Added an assert command. When an assert command is executed, eggPlant logs success, failure, warning, or an
exception. To improve readability, you can insert the word “that” into an assert command. Example:
assert that x > 10
Several properties govern the behavior of the assert command:
The assertionBehavior property currently defaults to Exception. It can also be set to Error, Warning, or Pause
to establish the default behavior for any assert commands that don't specify a behavior. When the behavior is
"Pause", a logWarning occurs and the script will pause in the debugger on the line following the assert command.
The assertionPassCount, the assertionFailCount, the assertionErrorCount, the assertionWarningCount,
and the assertionExceptionCount are global counters that are incremented as appropriate each time an assert
command is executed. Each failure will increment both the assertionFailCount and also one of the error, warning,
or exception counters.
The assertionsEnabled property defaults to True. If set to False, assert commands are ignored and never
executed.
For Linux: Image names are now treated as case-insensitive when used in standard eggPlant image commands. Local
file operations will still defer to the case behavior of the local file system.
Bug Fixes/Tweaks
Connections
Fixed some issues where a screen size change would not be properly detected at the script level.
Fixed some problems where the connection list did not update with connections made from scripts.
Fixed some problems getting a range exception when working in the connection list.
Fixed a problem with the Bonjour discovery preference not being honored.
Fixed a problem where RDP connections couldn’t be re-established after the connection was closed externally.
Fixed a problem making some RDP connections from the command line.
Added support for WindowsAltKey to RDP connections.
Fix mapping of F11 for RDP connections.
Corrected an issue where local Android device names and serial numbers could fail to display correctly.
114
Properly display names of eggCloud devices.
Fixed a problem with reservations from eggCloud reporting the wrong time.
Resolved an issue with very slow start-ups when the configured eggCloud server couldn’t be reached.
Fixed a problem where connecting to an eggCloud SUT using a rule would sometimes connect to the wrong SUT.
Scripting
Fixed a crash that could occur when closing a suite while a Table Test was running.
Fixed several formatting issues in the Tables with values overflowing their cells.
Fixed a problem where Tables could become disassociated with the scripts they were calling.
Fixed a problem with TypeText HomeButton.
The RemoteWorkInterval will now be checked before Pinches take place.
Attempting to copy files to/from a SUT will now throw an error if there is no connection.
Dramatically improved memory usage with OCR commands.
Fixed an occasional timing issue when specifying ValidWords for an OCR search.
Better error messages when attempting to perform an invalid OCR operation.
Fixed a problem where very long return values (e.g. from a URL read) would not be displayed properly on Windows.
User Interface
Deleting all logs for a script will now remove the script in the Results list.
Much better recording of Drag and Drop events in Turbo Capture mode on Windows and Linux.
Fixed a problem opening results in other Suites from Schedules.
Fixed a problem where aborted Schedules would show scripts with a success status.
Fixed a problem where tolerant images would display as if they had the Pulsing search type selected.
Fixed a problem where the hot spot would be re-set to the middle when an image was recaptured using the Update
Image Panel.
Images fixed using the Discrepancy Search in the Update Image Panel will now use absolute pixel values rather than a
percentage.
Fixed a problem saving recaptured images to a helper suite from the Update Image Panel.
Fixed a problem where the last line of a script was ignored by the Trace feature.
Cleaned up many formatting issues in the Preference Panes.
Miscellaneous
Added a Copy To Clipboard button for the Host ID in the license panels.
Fixed a problem on some Linux distributions where external files and URL resources wouldn’t open properly.
Fixed an issue where special CLI licenses were sometimes prioritized ahead of GUI licenses.
Release v15.14 (9–June-2015)
Bug Fixes/Tweaks
Fixed a problem with reconnecting to remotely terminated RDP sessions.
Fixed a problem with random numbers in scripts on Windows.
Added support for ZLIB compression to the built-in Android VNC server.
Added scaling support to the built-in Android VNC server. Users can specify scaling in their Connect command by
passing "--scale-screen RATIO" in the AdditionalArgs argument.
Fixed a problem in the built-in Android VNC server that occurred when connecting and disconnecting repeatedly.
Release v15.13 (27–April-2015)
Bug Fixes/Tweaks
Added a GUI control in preferences to select the version of ADB.
Improvements to automatically deployed VNC server for Android.
Fixed a condition in the Connection List that could result in connecting to the wrong SUT.
Fixed a problem connecting to Android devices where the connection was prematurely closed by the host.
Dramatically improved the Suite Search field on Windows when many images are present in the Suite.
Fixed a problem with ad hoc eggCloud reservations not extending automatically.
Changed Windows to not stop the ADB server to facilitate testing multiple simultaneous devices. (Not recommended
with ADB 1.0.31.)
ADBStopServerOnQuit
Release v15.12 (6–April-2015)
Bug Fixes/Tweaks
Added logic to work with a wider selection of Android devices across multiple versions of ADB. By default, ADB version
1.0.31 is used.
You can switch to the newer version of ADB (not compatible with some older devices) by issuing this command:
115
defaults write Eggplant ADBVersion "1.0.32" (Mac/Linux)
defaults.bat write Eggplant ADBVersion "1.0.32" (Windows)
Release v15.11 (26-March-2015)
Highlights
eggPlant Functional now includes a built in VNC server for Android devices. It will be installed when connecting to
devices if a VNC server is not already present.
Improved integration with eggCloud servers.
User Interface Improvements
Improvements to the Table GUI and placeholder tokens.
Dramatically improved performance of Find and Replace on Windows.
Connection Improvements
Added the ability to use domain\username with RDP.
Fixed a crash when RDP connections fail unexpectedly.
Corrected a problem launching eggOn app for Android via USB.
Addressed an issue connecting to multiple Android servers that were using the same port.
Scripting Improvements
Made ranges evaluate correctly when different units were used for the endpoints.
Fixed a problem where predefined variables would not act as empty when they were modified.
Normalized the line ending when reading text at a point and at a rectangle.
Fixed a problem archiving property keys with non-identifier characters.
Bug Fixes/Tweaks
Corrected an issue where licenses were not released when eggPlant Functional was run from the command line or
terminated abruptly.
Fixed problems where the RunHistory.xml file could become corrupted.
Fixed problems with eggPlant Functional responding sluggishly/not responding.
Fixed a problem reading non-ASCII characters from databases.
Provide feedback if Bonjour/Zeroconf is not enabled.
Fixed a hang when a connection drops during a CaptureScreen.
Cleared an exception that could occur with Show Image Usage.
Fixed a condition that could occur when using the ValidWords property on a text image search.
No longer update the SuiteInfo file if we haven’t modified script metadata.
Release v15.10 (03-March-2015)
Highlights
New commands to copy files and upload applications to mobile servers.
Support for Pinch gestures in iOS Gateway.
New commands to set iOS Device Orientation.
Added VNC Server Discovery for servers that advertise via Bonjour/
zeroconf. (Previously Mac only)
User Interface Improvements
Added the ability to specify the resolution of an RDP session in the connect interface.
Added a checkbox to "Save Password" when making a connection.
Tables now allow you to define ACTIONS from scripts with spaces in their name.
Prevent saving scripts and images with invalid characters in the name (like Colon or Quote).
Added the ability to specify an eggCloud port number in the preferences.
Vertical and horizontal Toolbar settings are now saved between sessions.
Scripting Improvements
Added the commands for PinchOut/PinchIn to invoke zooming on a multitouch
device. You can specify just a point, a point and a distance, or two points. Please see the documentation for a full
116
description.
//Zoom in on an image with default duration (2 seconds):
PinchOut (At:"MyPhoto")
// Zoom out from a point for 300 pixels:
PinchIn (At:(500, 500), Distance:300)
// Zoom in using two image points
PinchOut (At:"LEFT_SIDE", To:"RIGHT_SIDE")
Added commands to RotateLeft, RotateRight, SetDeviceOrientation and GetDeviceOrientation(). These
commands give you full control over mobile device orientation. Please see the documentation for a full description.
SetDeviceOrientation "Landscape"
put GetDeviceOrientation()
Added the ability to copy files to/from the iOS Gateway. Use the copy file … to … syntax with sut: before the
filename to indicate a remote file.
copy file "/Users/jonathan/MyFile.txt" to "sut:/tmp/MyFile.txt"
Added the ability to install and sign applications to iOS Gateway controlled SUTs. Use the InstallApp command, which
takes the ApplicationPath key as a reference for the file to install. It can begin with sut: to specify a file on the iOS
Gateway machine. Optionally you can also specify a mobile provision file with ProvisionPath to use to resign the
application. Again you can use sut: to specify a file on the iOS Gateway machine. Finally, CertificateName must be a
valid Certificate Name that has been stored in the keychain on the iOS Gateway machine.
installApp (applicationPath:"/Users/paul/Desktop/YetAnotherSampleApp.ipa",
provisionPath:"sut:/Users/paul/Library/MobileDevice/Provisioning Profiles/0c7acd92-b4fc-4295-993858b759287d3f.mobileprovision", certificateName:"iPhone Developer: Paul Landers(7JZCTVR53Z)")
Added new archive() and unarchive() functions which can be used to produce an archival text representation of any
SenseTalk value and to efficiently restore the equivalent value from such an archive. The archive format spreads list
values and property-list properties across multiple lines, making it more human-readable than the format produced by
the
standardFormat function (which is always on a single line), and the unarchive function is more efficient than the value
function at reading it again (although value() can also be used to restore a value from the archive format).
put archive of complexData into file “/tmp/archive.txt”
put unarchive of file “/tmp/archive.txt” into restoredData
Improved performance of the put … after command when used to append text or data to a file.
The units property of a value may now be set to a complex unit. Previously, only a simple unit was supported:
put 8 into bar
set bar’s units to “ft” -- this worked previously
set bar’s units to “cubic ft / second” -- this works now
Added a new ‘units(expr)’ syntax for units. This allows a variable or expression to supply the units for a value.
set measure to “ft”
set length to 5 units(measure) -- sets length to 5 ft
Fixed a problem with setting and retrieving built-in properties (such as
format or units) of a property in a property list.
set invoice to (number:1, date:the date)
put the format of invoice.date -- to show value, not format
set the format of invoice.date to “%Y %A %d”
Improved the formattedTime() function to be able to interpret its second parameter correctly as a date/time if it is
given in the format shown by the format string, even though it is not one of the usual formats included in the
timeInputFormat global property.
set displayDate to formattedTime(“%A %B %d”, “Friday April 3”)
Bug Fixes/Tweaks
Fixed several memory problems related to the Update Image Panel that could lead to crashes and unexpected
behavior.
Fixed crashes on Windows when using RDP from CLI without the user having a proper %HOMEPATH% (i.e. Jenkins)
Fixed several inconsistencies with the Team License Server reporting of
which licenses are in use.
Fixed a problem with how renamed scripts were handled by the Tables and Results system of the Suite.
117
Fixed a problem with Clipboard sharing in Live mode using eggMan.
Fixed errors caused when passing whitespace or empty values as ValidWords of an OCR search.
Fixed a problem where negative values for the repositionPoint were not properly honored.
Updated ADB to use the newest version.
Fixed a problem with incorrect content-length specifications from eggDrive with non-ASCII characters.
Fixed a problem where you could start a recording while a script was running.
Fixed a crash when inserting text before and after a string at the same time.
Added some improvements for Text-Image-Generation to handle the the Error: No Error exception.
Fixed some problems Removing All Breakpints.
Fixed a problem with any predefined variable whose value is a list or a property list not being correctly treated as a list
or as a property list in some contexts.
Fixed a problem calling ScriptResults when the script was called from a Table.
Fixed the standardFormat for data, color, and date/time values.
Fixed the join command and joined by operator to correctly treat a range as a list and join its values.
Release v15.02 (19-January-2015)
User Interface Improvements
Added the ability to reorder actions in Tables for keyword-driven testing.
Added the ability to drag-and-drop images into Tables.
You can type the name of a script to select it within a suite.
Scripting Improvements
Fixed a problem where the last line of a script was not traced.
The in option of the read command can now also be specified as timeout, timeout in, or time out after.
Fixed the sin(), cos(), and tan() functions to properly handle parameter values in rotational units other than radians.
Updated the atan() function to return a value with units of radians (which can easily be converted to degrees or other
units of rotation).
put sin(90 degrees) — 1
put atan(1) as deg — 45 degrees
Fixed the diskSpace() function, the size property of a file or folder, and the memorySize and physicalMemory
properties returned by the systemInfo() function to return values with units of bytes (which can easily be converted to
gigabytes or other units of dataSize).
Fixed a bug with the URLDecode() function that would hang or throw an exception if called with a string containing a
percent sign (%) not followed by two hexadecimal digits.
Fixed a bug that would throw an exception for some forms of the delete command that resulted in an empty string. For
example,
put "a" into foo
delete "a" in foo
— this worked fine.
put "a" into foo
delete the first "a" in foo
— this would throw an exception.
Added boxListFormat, jsonListFormat, and standardListFormat predefined variables, which can be used to conveniently set
the listFormat.
Bug Fixes/Tweaks
Fixed a problem with RedHat 6 package.
Fixed a problem that would cause eggPlant Functional to run out of memory with
large Turbo Capture sessions.
Fixed a crashing issue that could occur when interacting with scripts
or schedules in a suite.
Fixed a number of problems where Undo could cause a crash.
Fixed a problem where quitting cleanly after reading text using
OCR.
Fixed a persistent memory leak when eggPlant Functional was running in drive
118
mode.
Fixed a problem calling a script as the first action in a Table from the
CLI.
Fixed an occasional hang on Linux when running scripts.
Fixed an exception editing script info.
Cleaned up some fatal exceptions when the Global Results Directory
did not exist.
The UI no longer prompts for a password when a script fails to
connect.
Dragging a script into a Table will no longer open it in the GUI.
Fixed a hang in specific circumstances using URLDecode.
Fixed several cases of "NSCharacterConversion" exceptions.
Fixed forms of the delete command that threw exceptions.
Fixed several issues with Chinese UI screens.
Release v15.01 (19-December-2014)
RDP Improvements
Added Type property to ConnectionInfo() to be able to identify RDP connections in scripts.
Fixed hangs in some situations when making RDP connections on a Windows machine.
Fixed crashes when reconnecting to the same RDP connection repeatedly.
Improved Clipboard support for RDP sessions on Windows and Linux.
User Interface Improvements
Improved argument handling when hitting Tab while working in Tables.
Improved the formatting of the Actual Value when receiving multiline
values.
Fixed some focus issues with the Turbo Capture image rectangle.
Fixed a problem picking Table Actions from helper suites on
Windows.
Automatic Image Naming preferences is now also honored in Turbo
Capture mode.
Fixed performance problem with Table image selector for suites with
thousands of images.
Improved behavior when updating the final image in a Turbo Capture session.
Fixed some issues changing script and table names.
Added the ability to delete a table from the UI.
Scripting Improvements
Improved the OCR ValidPattern to automatically include other marks in the pattern (like percent symbol: %).
Dramatically improved execution time on scripts that had thousands of posted results.
Fixed a problem where minutes were treated as seconds.
Fixed a problem where username and password in a property list
were not always honored for RDP connections.
Bug Fixes/Tweaks
Added canceling an OCR search on Windows and Linux.
Fixed a problem where eggPlant Functional could hang when terminating a
connection.
Added ChinesePRC and ChineseTaiwan to the Language List.
Fixed occasional hang running scripts on Linux with Run Window up
on screen.
Fixed a problem where CaptureScreen could return an image from a prior connection immediately after making a new
connection.
Fixed a problem where the Capture Screen UI would offer to save images as .suite files.
Fixed a related problem where moving UP to the suite level in the
Capture Screen UI would select the local suite folder and close the window.
Release v15.00 (2-December-2014)
Highlights:
New Tables feature for keyword-driven testing
Turbo Capture mode for script recording
Added support for Microsoft RDP connections
Upgraded OCR Engine
eggPlant Functional 15 for Linux requires RedHat Version 6+
Keyword-Driven Testing
119
Using the new Tables section of the Suite, you can now create a straightforward workflow by selecting commands and
functions from a list.
The most common eggPlant Functional primitives are already included.
You can add your own scripts to the list by specifying the calling arguments and return value (for verify actions) in the
Script Info section (Use the "i" button in the Script Editor).
In the Table, select an action and then use Tab to move between arguments and expected values.
For verify actions (functions), you can specify an expected value to be compared to the returned value.
The expected value can be any SenseTalk expression.
See the latest results for each line as you run the test; for past runs, you'll find results in the Results tab.
Read Full Documentation Online
[120]
Turbo Capture
You can now generate scripts using the new Turbo Capture feature, interacting with the SUT in live mode and then naming
your images afterwards.
Get started by hitting the Start Session button on your toolbar or by selecting Start a Turbo Capture Session on
the Control menu.
Interact with your SUT in live mode to perform a sequence of steps, and then End Session when you are finished.
Note: If you want to record a mouse move (without a click) tap the Shift key.
Name your session, if you want, and then use the Open Session button to review your workflow and begin naming and
adjusting your images.
You can stop at any time and return later; your progress is saved automatically.
When you are finished, hit the Generate Script button to record all the images and create your script.
Read Full Documentation Online
[120]
RDP Connection Support
Now you can make connections to computers using Microsoft’s Remote Desktop Protocol (RDP).
When adding a connection, select RDP as your connection type, add your Windows username and password.
Upgraded OCR Engine
We’ve upgraded to the very latest ABBYY version 11 on ALL platforms. This means that OCR will now behave the same
between eggPlant platforms.
The new engine is much more accurate when reading text, but this may result in it reading things slightly differently
than it did in version 14.
A new ValidWords property has been added, which can be set to either a list of words or a string containing words
separated by whitespace. When ValidWords is used, the OCR engine will attempt to read everything as one of the
specified words.
During an OCR search, setting the new ValidWords property with a value of * (asterisk) will only recognize words that
are part of the target phrase.
We have added the ability to read rotated and upside-down text by specifying a TextRotation property with the value
of Clockwise, CounterClockwise, or UpsideDown.
You can now specify a regular expression to be used when doing a ReadText command by adding a ValidPattern
property. The ValidPattern property should be set to a regular expression to be used for matching each word.
You can now customize what languages are shown in the OCR panels from the Text Preferences.
Scripting
When using a list or range as an iterator, in addition to using NextValue to retrieve the next sequential value, the new
CurrentValue property gives access to the current value without advancing the CurrentIndex. The CurrentValue
property is also a container, acting similar to a reference to that value, allowing you to replace or modify that value in
the list.
A repeat with each can now assign multiple loop variables on each iteration, from a source iterator that supplies a list
of values.
repeat with each (x,y,z) in ((12,22,14),(6,9,18),(15,3,44))
The same rules used for multiple assignment are applied, so variables can be omitted for values that you don't care
about, and excess values are ignored unless the final variable name is followed by an ellipsis (...) to collect them as a
list.
A property list can now be used as an iterator. When iterating in a repeat loop, it supplies each key and its value as a
list of two items. (Note: To preserve compatibility with previous behavior, the repeat must specify a list of loop
variables for this process to work.) An object that defines its own iteration (i.e., an object with an objectType of
"iterator") will use its own iteration as before; other objects will now iterate over the (key,value) pairs for their
properties.
set people to (Marty:12, June:16, Aaron:6, Grace:11)
repeat with each (name,age) in people
put name && "is" && age && "years old"
end repeat
When iterating over the properties of a property list outside of a repeat loop, nextKey can be used to retrieve the next
key, nextValue to retrieve the next value, or nextKeyValue to retrieve the next (key,value) pair. CurrentKey,
currentValue, and currentKeyValue can be used to obtain the corresponding value for the current property without
advancing the iteration.
A start iteration command has been added to start or restart the iteration of any iterator. This is the only way to begin
iteration again for a property list. It can also be used to start iteration for lists, ranges, and chunks, or you can achieve
the same result for those types by setting their currentIndex to 0.
120
Mixed fractions like "6 5/8" are now supported provided there is a single space character between the whole number
and the fraction and no spaces around the '/' character. Simple fractions with units, of the form "3/4 ft", are now
processed by the compiler as a single number (rather than 2 numbers and a division operator) provided the fraction is
directly written with numbers (not variables or other expressions) and is followed by a unit name.
Added support for special symbols ≤, ≥, +, +, , −, ×, ÷, √, and ≠ as operators in expressions. Also, the letter X can
now be used as a multiplication operator.
Added support for using ! before a quoted string as a shorthand for calling the merge function.
put !"The month is now [[the monthName]]" -- "The month is now September"
Added the ability to include some additional characters in identifiers (variable names and handler names) in addition to
the alphanumeric characters and underscores that were previously allowed.
Added as words, as a word, as hex, as hexadecimal as equivalents for the corresponding format operators (format
"words" or format "hex"). For as words, capitalization follows that of the word "words".
Added highestValue(), largestValue(), and lowestValue(), smallestValue() as synonyms for the maximum() and
minimum() functions, respectively, and added natural language syntax for them.
Added but at least, but no less than, but at most, and but no more than operators to simplify the task of limiting
a number to a minimum or maximum value. (Internally, these operators call the largestValue or smallestValue
functions).
Added from now as a synonym for the hence operator.
Added a repeated operator to create a string of text repeated a given number of times, up to a specified length, or to
create a repeated list:
put "$" repeated 12 times -- "$$$$$$$$$$$$"
put "Hello" repeated to length 12 -- "HelloHelloHe"
For a list of repeated items, use as (a) list or (a) list of with repeated:
put "$" repeated 6 times as a list -- ("$","$","$","$","$","$")
Added a number of operator for multiplication or repetition. (Note: This syntax requires a literal number before the
word of, not a variable.) This is particularly useful for fractions of numbers and units. If the value is a number or a list, it
is multiplied by the number. Otherwise, the number of operator will cause it to be repeated like the repeated
operator.
Changed the standardFormat function. It now records numbers without quotation marks, and uses scientific notation
when appropriate to accurately represent the value, without using the numberFormat. Numbers with units will include
the unit name. Strings are now quoted using the "@" quoting style, with embedded backslash escape sequences as
needed.
Added LightSpeed and googol as predefined variables.
Added predefined variables heavyCheckMark, xMark, and heavyXMark in the Common symbols category.
Allow before or after in addition to from in the seek command.
An em dash character (—) can now be used to start a comment, since some text editors automatically replace two
dashes (--) with an em dash.
Added support for considering case / ignoring case in the intersection, union, excludeItems and uniqueItems functions.
These functions now follow the current setting of the caseSensitive property by default (previously they were always
case-sensitive).
A range expression can now be written using "down to" in addition to "to" and "..".
Strings containing numbers in scientific/exponential notation are now recognized as numbers.
The word by can now be used before the step value in a repeat loop (in addition to step or step by).
The maximum and minimum functions now return empty, not zero, when called with an empty parameter (or with any
list containing no numbers).
Fixed a tiny bug that would allow two @ signs before a string literal. Only one is allowed.
Fixed an error that would allow "database" to mean "new database" -- the word "new" is now required.
Fixed a bug with « » quotation marks, which were omitting the first character inside the quotes.
Fixed addition/subtraction of a number and a single-item list containing a number to always result in a simple number,
not a list.
Fixed multiplication of a number and a single-number list to always result in a single-number list (scalar multiplication
of a number and a list).
Fixed an obscure bug with setting a property of a list item of a non-existent property of an empty variable.
Fixed an issue with predefined variables not being recognized as having a value in certain contexts.
Improved error message for some cases where a command is called with a range.
Scripting Units Support
Added units support. Numeric values may now include a unit name to identify the type of value. SenseTalk is aware of
the relationships between different units and automatically converts to compatible units as needed during calculations
or when requested.
Many unit types are recognized, and more will be added in the future. The unitTypes() function gives a list of all of the
different categories, including synonyms in some cases:
put the unitTypes
Many unit names are recognized for each type, including singular, plural, and abbreviated names for many units. The
complete list of unit names is given by the unitNames() function (there are thousands of unit names).
To use units, simply include a unit name after a number or variable name within an expression:
put 3 feet into counterHeight
add z grams to totalWeight
Derived units like area and volume can be expressed in several ways:
set
set
set
set
surface to 9 cm^2 -- 9 square centimeters
area to 2 yds*ft -- 6 square feet
base to 5 sq in -- 5 square inches
vol to 3 cu yds -- 3 cubic yards
A value can be converted from one unit to another (compatible) unit by specifying as followed by the other unit name:
put 1 gallon as liters -- 3.785412 liters
The mathematical operators and functions all maintain and/or convert units as appropriate, to the extent possible. For
example, the following addition first converts 8 inches into centimeters before adding:
put 8 inches + 3 cm — 23.32 centimeters
121
A value may be tested to see if it is of a particular unit type using the is a operator:
put 4 cm is a distance — True
put 9 ounces is a duration — False
Two global properties control the behavior of the units system. The unitsEnabled is now set to True by default to enable
the use and display of units. Setting it to false will cause unit names to be ignored and treat all numeric values as plain
numbers.
The strictUnits property is also set to True by default. This setting preserves the integrity of calculations, throwing an
exception for any calculation involving incompatible units, including addition, subtraction or comparisons between plain
numbers and those with unit values. Set it to false to provide more lenient behavior, which will not throw exceptions
but may cause values to lose their unit association in some situations.
Bug Fixes/Tweaks
We now back record helper suites so you can see which other suites are "helping."
Opening logs that are in a helper suite will no longer raise an exception.
Nonexistent suites will no longer show up in the Open Recents menu.
Fixed an occasional hang when running a script from Command Line.
Fixed a number of license messages that were unclear when no GUI license is found.
Added a LogWarning when an Ask/Answer panel is called while running from in command line mode.
Added the ability to duplicate a Schedule.
When pasting "fancy" quotes from external sources into a script we will now convert them to standard ASCII quotes to
prevent parsing and compiling problems.
Fixed an occasional crash when connecting to a SUT.
Added a feature to temporarily freeze the remote screen to simplify capturing images of transient UI elements.
Fixed an occasional hang when running a script from Command Line.
Added keyboard shortcuts to switch between open tabs in a suite:
Command+Shift+[ and Command+Shift+] on Mac
Control+Shift+[ and Control+Shift+] on Windows/Linux
Fixed a problem where Function key shortcuts didn’t show in the menus.
Now includes CaptureScreen among the list of "interesting" log lines when filtering.
On Mac 10.9 and 10.10, we have modified eggPlant Functional to not AppNap. This power-saving feature caused
disruptions to eggPlant Functional’s background running scripts when it was hidden/off-screen.
Fixed a rare crash when launching a VNC server on Android over USB.
Applying an image "Fix" from the results will reflect that change on any open copies of the image.
When selecting an image from the screen during Update Image, the replacement image will no longer grow by 2 pixels
in both dimensions.
Fixed a problem with mousing over strings that corresponded to Windows named ports (like PRN or COM1).
Fixed some problems with Copy/Paste throwing NSRange exceptions.
Fixed some exceptions that could happen when customizing the Remote Window Toolbar.
v14+ Release Notes
eggPlant v14
Release Notes
The notes below provide descriptions of the new features and changes introduced with each release of eggPlant. You are strongly encouraged to read about the
relevant changes whenever you upgrade from an earlier version.
Potential compatibility issues are highlighted in RED.
Notes For Cross Platform Users:
eggPlant for Linux and Windows contains almost all of the functionality available in eggPlant for Mac.
Excluded features are listed at the bottom of the release notes.
––––––––––––––––––––––––––––––––––––––––––––––––
Release v14.21 (14-August-2014)
Viewer Window:
Zoom To Actual Size menu item . Added a command to return the Viewer window to it’s standard size.
––––––––––––––––––––––––––––––––––––––––
Bug Fixes / Tweaks:
• Fixed a problem with detecting Android USB devices on Windows.
• Fixed a problem where capturing to a new image collection that preventing saving an image.
• Made the window zoom-in towards the capture area instead of the corner.
• Improved UI of eggMan welcome screen for clarity.
• Fix a problem with toggling back to Live mode when the Capture mode Guide was present, also added the ability to close the
Capture Guide.
• No longer present an Update Available panel when running eggPlant with the -RunOnLaunch option to start a script immediately.
122
• More consistent display of the product name when running eggMan vs eggPlant Functional.
• Fixed a problem hitting an Internal error when starting an image search while the Image Doctor was already searching.
• Fixed a problem trying to call Omega13 before a suite had been set, particularly when using eggDrive.
––––––––––––––––––––––––––––––––––––––––––––––––
Release v14.20 (4-August-2014)
Highlights:
Zoom In/Out in the Viewer window
New script commands/functions for use with mobile devices
Introductory Help for new users
Numerous bug fixes
––––––––––––––––––––––––––––––––––––––––
Viewer Window:
Zoom In/ Zoom Out menu items. Added these zoom commands to the Control menu, enabling you to zoom in and
out in the Viewer window.
––––––––––––––––––––––––––––––––––––––––
Enhanced Mobile-Device Control
• PressHomeButton and PressBackButton commands, which press the respective button on mobile devices. (Note: In older versions of Android, the
PressBackButton command presses the menu key.)
• ADBCall function for Android. This function enables you to make Android Debugger (ADB) calls from eggPlant Functional, and returns the output of
those calls.
• LaunchApp command for iOS Gateway. This command launches a given app on a device connected through iOS Gateway.
––––––––––––––––––––––––––––––––––––––––
Scripting Enhancements
• Mixed fractions like "6 5/8" are now supported provided there is a single space character between the whole number and the
fraction and no spaces around the '/' character.
put 1 3/4 is 1.75 -- true
• Added the ability to include underscores ('_') in numeric literals to separate groups of digits for greater readability.
put 1_000_000 is a million -- true
• Numbers can now be expressed in scientific notation without a '+' or '-' before the exponent. If no sign is given, a positive
exponent is assumed (this also applies to the JSONValue() function for evaluating JSON expressions):
put 1e6 is a million -- true
put 1.23e6 equals 1.23e+6 -- true
––––––––––––––––––––––––––––––––––––––––
Bug Fixes / Tweaks:
•
•
•
•
•
•
•
•
•
•
•
•
Fixed a problem where eggPlant Functional could hang on the Update Image panel.
Fixed a SenseTalk crash related to internal caching of named objects (most commonly script files on disk).
Fixed a problem that could cause eggPlant Functional to crash when running a script with a large block quotation.
Fixed a problem that could cause the OCR to fail when reading text at a point.
Fixed a problem that caused aborted scripts to be recorded as failures when the Update Image panel was triggered.
Fixed a problem that caused eggPlant Functional to incorrectly report that an image contained no searchable pixels.
Fixed a problem that caused aborted scripts to be recorded as failures when the Update Image panel was triggered.
Fixed a problem that caused breakpoints in the Run window to be ignored.
Fixed a situation in which users could not use their maximum number of eggPlant Functional licenses.
Enabled the JSONValue function to handle numbers in scientific notation without a sign on the exponent.
Enabled mobile commands such as Tap to trigger Omega13 script recovery.
Made several improvements to the way eggCloud SUTs are shown in the Connection List.
––––––––––––––––––––––––––––––––––––––––––––––––
Release v14.12 (12-May-2014)
Scripting:
• Setting the ScriptLogging to Off now continues to show TestCase logs, it can be disabled by setting the logging to Silent or Minimal.
• Added support for using the Alt-GR key (Right Alt Key) for auxiliary keyboard functions. If you prefer having a right hand Alt modifier key please set the following
preference
defaults write Eggplant USE_ALTGR_FIX 0
123
Bug Fixes / Tweaks:
•
•
•
•
•
•
•
Fixed a problem where License Expiration warnings could not be dismissed.
Fix a situation where eggPlant could hang when capturing an image.
Fix a problem where Chinese licenses would not properly load the Chinese UI.
Fixed a problem calling runscript on Linux where quoted values might not be properly passed resulting in argument confusion.
Improved eggCloud automatic reservations to reserve for an extra block if the current block was just about to expire (less than 1 minute).
Fixed a problem where very deeply nested scripts would display incorrectly in the Schedules Panel.
Several fixes to icons and colors on Linux systems.
––––––––––––––––––––––––––––––––––––––––––––––––
Release v14.11 (27-April-2014)
Highlights:
Toolbar buttons for the HomeButton and RotateMobile commands
Additional image preview in script results
Several bug fixes
––––––––––––––––––––––––––––––––––––––––
Viewer Window:
RotateMobile and HomeButton Toolbar Items . Added toolbar buttons that insert TypeText RotateMobile and
TypeText HomeButton commands into your script.
––––––––––––––––––––––––––––––––––––––––
Script Results:
Image Previews for Images that Were Not Found . It has been the case that when you click on a line that
references a found image in your script results, a preview of that image is shown. Now that same behavior also applies
to lines that reference an image that was not found.
––––––––––––––––––––––––––––––––––––––––
Bug Fixes / Tweaks:
Fixed an issue that could cause eggPlant on Mac to not properly report a Tolerant image search type.
Fixed an issue where an expiring license warning could show up BEHIND the splash panel, which made it appear that
the launch had hung.
Fixed an issue on Windows and Linux where a Suite would store it’s default Results directory as a Results OVERRIDE
(which would then persist if the suite was moved or copied).
Fixed an issue that could cause eggPlant to crash when you were saving a new image.
Fixed an issue that could cause eggPlant to hang when the Update Image panel opened.
Fixed an issue that would cause eggPlant to falsely report that it had previously crashed.
Changed the behavior of full-screen VNC refreshes. Previously, eggPlant could close and re-open your VNC connection
on a full-screen refresh; this is no longer the case.
Fixed an issue that was causing the Connection List filter to not work on Windows and Linux systems.
––––––––––––––––––––––––––––––––––––––––––––––––
Release v14.10 (10-March-2014)
Highlights:
Update Image Tools for Retraining Scripts.
Automatic Detection of WaitFor times.
Deeper integration with eggCloud (v1.1.5).
Enhanced Remote Screen Window for Mobile Devices.
––––––––––––––––––––––––––––––––––––––––
Interface:
124
Update Image Menu. Added several new features to make it easier to update the images in your scripts. Use the Run
> Update Image menu to control Image Doctor settings (now expanded) and new options for updating images:
What to do when multiple occurrences of an image are found
What to do when an imageFound function returns false
Whether or not to validate every image search, successful or not
Update Image Panel. Expanded the former Image Doctor panel with the following features:
An OCR search heuristic, which reads text in your image and attempts to find instances of that text on the screen
A Prior Location heuristic, which shows where your image was last found in a completed test.
The New Representation field, in which you can set a suffix with which to auto-name new images added to
collections
The Properties feature, which shows the properties that are being used for your current image search, including
the default properties of your image, and properties that are overridden at the script level.
Diagnostic Menu. This new menu allows you to choose the image-searching heuristics that are used in the Update
Image Panel.
Mark Prior Result. From within a Scripts Results panel, you can mark which run you want to use as your “Prior Result”
for use by the Prior Location Heuristic on the Update Image Panel.
Vertical Remote Toolbar. We have replace the obsolete “Mobile Drawer” with a vertically formatted toolbar that
allows much better access on portrait-layout Mobile devices (iPhone and Android). Additionally we
Insert Repeat Loops. From the Script Insert tool you can highlight a block of your test script and create a repeat loop
around the section.
insert test cases. Also from the Script Insert tool you can highlight a block of your test script and turn it into a
TestCase.
Image Backgrounds. Added background colors for image previews in the suite editor and Save panel, click to cycle
through backgrounds.
––––––––––––––––––––––––––––––––––––––––
eggCloud Integration:
eggPlant 14.10 REQUIRES eggCloud 1.1.5 or higher for proper integration
• Ad-Hoc Reservations. You can now double-click on any available (not reserved) SUT to create an ad-hoc reservation.
Automatically Extend Reservations . You will now automatically extend an connected SUT reservation if the device
is still available when your reservation ends.
Scripted Connections. Connect to a SUT by defining a set of properties. If a device is available (or you have a
matching reservation) that device will be used. EG:
Connect (
––––––––––––––––––––––––––––––––––––––––
Scripting:
• WaitFor property. WaitFor can now be a property of any image-searching command. Like the WaitFor command, the WaitFor
property is the maximum time eggPlant will wait for the given image to appear on the SUT. Example:
Click (image: “Done_button”, waitFor: 2 minutes).
Automatic WaitFor time calculation. When you capture an image and generate a script command, eggPlant now
automatically inserts a WaitFor property in the command if there was a significant delay detected before the image
appeared on the SUT.
Support for Additional Image Formats . We now support the following image formats on all platforms: .tiff, .tif, .png,
.icns, .ico, .gif, .bmp, .jpg, .jpeg.
Default Data Format. Added the DefaultDataFormat global property, which determines the format of BLOB data in
125
scripts. Valid settings are auto, text, hex, base64, and size. The auto setting uses hex for shorter values and size for
longer values. The text setting maintains backward compatibility.
• The predefined variables yes, no, on, and off are now treated as native boolean values. This allows the equal operator to compare them as
equal to true or false (when Normal boolean comparison is in effect, see below).
• Added the booleanComparison global property. When set to Normal (the default), this now allows the values Yes and On to compare as
equal to True (or each other) and Off and No to compare as equal to False. Although Empty is treated as a valid boolean value (equivalent to
False) it will not compare as equal to False. If the booleanComparison is set to "Strict", the values Yes, No, On, and Off will compare as
strings, and thus will not be equal to True or False. If the booleanComparison is set to "Lenient", any value that evaluates to the strings
"Yes", "No", "On", or "Off" will be treated as booleans for purposes of equality testing with other booleans.
put Yes is true -- true
set the booleanComparison to Lenient
put "off" = false -- true
• Updated the StandardFormat function to properly support the new boolean values.
• Enhanced the JSONFormat and XMLRPCFormat functions to work with the new boolean values, and also to correctly handle <missing
value> (null). In XML-RPC missing values are rendered as <nil /> which is not part of the XML-RPC spec but is a semi-common extension
used by Python and some other systems. SenseTalk now recognizes <nil /> and <ex:nil /> when reading XML-RPC values and will convert
them to <missing value>.
• Changed the add properties command and adding properties operator to treat a property of the destination property list whose value is
<missing value> the same as though the property were not there, and replace it with the corresponding source property value.
• Enhanced the charToNum and numToChar functions to be able to work with Unicode values greater than 0xFFFF.
• Fixed the move file and copy file commands to work correctly when the source file is specified with a path beginning with "~".
• Fixed a problem when a recordPrototype property for a database table included properties corresponding to columns in the table, those
values would be automatically propagated to the database in some cases.
––––––––––––––––––––––––––––––––––––––––
Bug Fixes / Tweaks:
Added FAILURE tag support to JUNIT logging for better compatibility with JIRA and Jenkins.
Failure to license is no longer considered a crash.
Improved the ability to submit support requests through proxy servers.
Fixed a problem that caused an ADB delay when not connecting to an Android server.
Resolved a problem where eggPlant would not terminate when an Android connection was left open to an Android SUT.
Fixed a problem that could lead to a “Tried to add nil to array” when an Android device was plugged in via USB.
Cleaned up some inconsistencies with the preview text when using the Script Insert tool.
Fixed a variety of problems with running multiple simultaneous Searches using the Image Doctor.
Fixed a problem where eggPlant would pause when mousing over a network resource declaration beginning with a
double-slash (//).
Cleaned up several cosmetic artifacts in the preference panes on Windows.
Solved a lock-up problem when closing the suite while generating a command using an existing image.
Cleaned up some display artifacts with the auto-completion tool on Windows.
Resolved a situation when schedule runs completed.
Improved handling of the ClipRectangle property for images.
Resolved a hang when using the Find feature in the Run Window.
Fixed a crash on Mac when trying to SSH to an unavailable port.
Improved behavior of Context Menu in the Connection List.
––––––––––––––––––––––––––––––––––––––––––––––––
Release v14.01 (13-November-2013)
Highlights:
Support for improved eggOn for Android.
Ability to enter a license from the command-line.
Numerous Bug Fixes.
––––––––––––––––––––––––––––––––––––––––
Licensing:
• eggPlant now supports the ability to enter a license key from the command line by passing the -LicenseKey and -LicenseUser . After applying the license
eggPlant will immediately terminate with success condition (0) if the license was accepted.
Mac/Linux:
Eggplant.app/runscript -LicenseKey "xxx-xxxx-xxx" -LicenseUser "zzzzz"
Windows:
eggPlant/runscript.bat -LicenseKey "xxx-xxxx-xxx" -LicenseUser "zzzzz"
126
––––––––––––––––––––––––––––––––––––––––
Connection List:
• The Connection List now groups eggCloud and Standard connections separately.
––––––––––––––––––––––––––––––––––––––––
Bug Fixes / Tweaks:
Fixed a problem on Windows where the URLTimeout property was never honored. If URLs are timing out now, you
might need to increase this value from it's default of 30 seconds.
Fixed a bug where negative image hot spots were off by a pixel.
Fixed a bug where Precise image search type was not honored when an image was reloaded.
Fixed a problem on Mac OS X 10.9 where Gatekeeper would not recognize eggPlant's signature.
Fixed a problem restarting Android VNC servers connected through USB.
Fixed a bug with autocomplete would sometimes insert a stray <CR> character into the script.
Corrected an NSInternalInconsistencyException on Windows during socket communications (including Drive mode).
Fixed a bug where the screen capture buffer doesn't refresh properly after an exception is thrown.
––––––––––––––––––––––––––––––––––––––––––––––––
Release v14.00 (24-October-2013)
Highlights:
Added Database Integration via ODBC
Automatic Image-Naming for images with Text.
New Rotated Image Searching
Introduced new Mobile Commands
Connect List Filtering and Other Improvements
––––––––––––––––––––––––––––––––––––––––
Compatibility
• Mac OS X 10.7, 10.8, 10.9
This release is compatible with Mac OS X 10.7 and higher, Mac OS X 10.6 and below are no longer supported.
• Windows XP, 7, 8
This release is compatible with Windows XP, 7 and 8. Please be aware that releases AFTER April 8th, 2014 will drop Windows XP compatibility.
• Linux Debian, RedHat
This release is compatible with 32-bit versions of Debian and RedHat based on glibc 2.5 and higher. 64-bit distributions must have supported versions of
all dependent 32-bit libraries.
––––––––––––––––––––––––––––––––––––––––
ODBC Database Integration
• Added the capability to read to and write from available ODBC databases. See theeggPlant documentation [60] for complete usage and instructions.
––––––––––––––––––––––––––––––––––––––––
Interface
• Auto Image-Naming. Now, when you capture an image, text that is detected in the image becomes the default image name.You can disable this behavior in the the eggPlant>Preferences->Viewer.
• Image Capture. Has now been improved with capture handles, dynamic cursors to indicate resizing and the following modifier keys can be use:
⁃ Arrow Keys Move The Capture Area
⁃ +Ctrl/Command Move The Hot Spot
⁃ +Alt/Option Enlarge/Shrink the Capture Area
⁃ +Shift Move In Increments of 10
• Image Scaling and Rotation. The Image interface now allows you to specify the default scale and rotation values to use when an image is searched for.
This value can be
overridden in a script.
Auto completion in scripts has been added for Windows and Linux versions of eggPlant. You can trigger completion
by hitting the Escape key or selecting "Edit->Complete" from the Menu. The editor will attempt to complete your
statement with a valid eggPlant Command, constant image name, script name, or variable from your current script.
127
• Image-Popover preferences. Added preferences to all users to turn enable and disable image popovers, both in the image list and in scripts.
• eggCloud preferences. Added a preference panel to connect to an eggCloud installation.
––––––––––––––––––––––––––––––––––––––––
Connection List:
• The Connection List now has a filter field to narrow down the connections shown by display name. If you are using the eggCloud device-reservation system, you can also filter the
Connection List by SUT operating system, version, and meta tags.
• The Connection List now will now show devices available from an authenticatedeggCloud system. You are able to create reservations and connect to reserved devices directly
from the connection list.
• The Add/Edit Connection panel now has aConnect button. When you click the Connect button, a connection is immediately established.
The Add/Edit Connection panel now has a Remember This Connection checkbox, which is selected by default. When
this checkbox is selected, your current connection is permanently saved in the Connection List; otherwise, the
connection is removed at the end of your eggPlant session. Temporary connections are shown in italicized text in the
connection list.
Connections made from a script and reverse connections are no longer automatically saved in your Connection List.
You can now choose the columns that you want to view and hide in the Connection List. From the Connection menu,
use the Customize Columns submenu to select the items you want to see.
––––––––––––––––––––––––––––––––––––––––
Scripting:
The current RecordMovie command on Mac OS X is now deprecated. The command can still be called but it will not be
supported on future versions of Mac OS X. A replacement movie technology will be available in a future release of
eggPlant.
For scaled image searching we now provide TWO modes of scaling relative to the current SUT size. The mode
previously named scale: "Auto" is now called scale: "Proportional" to clarify that it will scale proportional to the smaller
change in SUT height or width. To scale an image to the SUT height and width independently use scale: "Stretch".
Added swipe commands (SwipeUp , SwipeDown , SwipeLeft, and SwipeRight) that mimic touch-screen swipe
actions better than DragAndDrop. The global property the SwipeSpeed corresponds to the conventional
MouseDragSpeed.
Added other mobile commands that behave the same way as their conventional counterparts:
Tap = Click
DoubleTap = DoubleClick
Press = MouseDown
Release = MouseUp
• You can now add a Rotate property to an image search, to indicate a degree of rotation (or list or range of degrees) if you expect an image to appear at a different angle than was
originally captured. Rotation is clockwise.
Click (name: "appIcon", rotate: 180) // Searches for appIcon at 180 degrees from its original angle
Click (name: "appIcon", scale: 45 to 90 by 5) // Searches for appIcon tilted 45 to 90 degrees, in 5 degree increments
We now have a function SuiteInfo() that returns the following formation about a Suite:
Name: the name of the suite
Path: the full path of the suite
ScriptsFolder: the path of the Scripts folder
ImagesFolder: the path of the Images folder
ResultsFolder: the path of the Results folder
Version: the eggPlant version number of the suite (usually the version of eggPlant that created the suite)
Description: the description of the suite as entered on the Settings tab of the suite
• Added a format, with format, or using format operator to allow specifying a particular format for an individual numeric, date, or data value.
128
put (13 / 2) with format "00.000" -- displays "06.500"
• Added the ability to access the format property of a variable containing a number or a data value (previously only date/time values could have a format).
put 13 into foo
set the format of foo to "hex"
put foo -- 0xD
set foo's format to "words"
put foo -- thirteen
put "000.000" into foo.format
put foo -- 013.000
put foo's format -- 000.000
• The numberFormat or the defaultNumberFormat property (or the format property of a numeric variable) can now be set to "Hexadecimal" or "Hex" to display
numbers in hexadecimal format:
set the numberFormat to "hex"
• Added the defaultDataFormat global property to control the way binary data values are displayed. The defaultDataFormat can be set to any of "auto", "text",
"hex", "base64", or "size". In addition, the auto and text formats can include a parameter: "auto: maxHexSize", "text: stringEncoding ".
• Added trimAll() function (similar to trim, trimStart, and trimEnd) to remove all whitespace (or other characters) from a text value. This function takes one or two
parameters. The first parameter is the source text value to be trimmed. The second (optional) parameter is a text string defining the set of characters that will be
removed from the source text. If the second parameter is not given, whitespace and newline characters will be trimmed by default.
• Added keepCharacters() function which removes all characters from text except for alphanumeric characters (letters and digits) or another set of characters that
you specify. This function takes one or two parameters. The first parameter is the source text value to be filtered. The second (optional) parameter is a text string
defining the set of characters that will be kept in the source text. If the second parameter is not given, letters and digits will be kept by default.
• Fixed expressions of the form a.func(b) or a's func(b) to work when a is a variable. Previously, expressions of this form worked when a was a number or a literal,
but not a variable. Either syntax is equivalent to calling func(a,b).
• Added a new syntax for comparing two values for equality: val1 and val2 are equal.
put 5 * 3 and 15 are equal
put "CAT" and "cat" aren't equal considering case
• Added the same as as a synonym for equal or equal to. The following all report 'true':
put 5 * 3 is the same as 15
put 4 + 6 isn't the same as 2 * 12
put "cat" and "dog" are not the same
• Changed the standardFormat() function to use square brackets rather than curly braces for lists.
HotSpotScaling. Added the HotSpotScaling global property, which determines whether image hot spots are scaled
when you search for a scaled image. The values are as follows:
Inner. Inner works the way hot spot scaling has worked in the past: if a hot spot is within the searchable pixels of
an image, it is scaled with the image. If the hot spot is offset from the image, it is not scaled. Inner is the default
value of the HotSpotScaling.
All. Hot spots are always scaled proportionally when you search for a scaled image.
None. Hot spots are never scaled when you search for a scaled image.
Ask/Answer behavior. When Ask or Answer commands are called in a script run from the command line, they will
now act as though they had been called with a timeout parameter that timed out immediately. When Ask File or
Answer File commands are called, they will act as though their Cancel button had been clicked. The previous
implementation was undefined (it would behave differently in different environments), but it can be restored by using:
default write Eggplant oldCommandLineAskAnswerBehavior YES
BooleanComparison. Added the booleanComparison global property, which offers choices of how boolean values are
compared:
Normal. When set to Normal (the default), this now allows the values Yes and On to compare as equal to True (or
each other) and Off and No to compare as equal to False. Although Empty is treated as a valid boolean value
(equivalent to False) it will not compare as equal to False.
Strict. If the booleanComparison is set to Strict, the values Yes, No, On, and Off will compare as strings, and thus
will not be equal to True or False.
Lenient. If the booleanComparison is set to Lenient, any value that evaluates to the strings "Yes", "No", "On", or
"Off" will be treated as booleans for purposes of equality testing with other booleans.
––––––––––––––––––––––––––––––––––––––––
Bug Fixes / Tweaks:
Fixed an editor bug that could raise a glyphRangeForCharacterRange: exception.
Fixed a bug where sometimes the Run Selection did not properly correspond to the actual selection in the Script Editor.
Fixed a long-standing issue on Windows that limited how many times you could make a new connection. You should
now be able to make thousands of calls to the Connect command.
Fixed several crashing bugs that could occur when the image was near the edge of the screen.
Fixed a problem where the Run Date column would display bad characters when Korean was the active language.
Fixed a bug that caused bug submission to fail sometimes.
Fixed a bug that sometimes caused times to be offset several hours in script logs.
Fixed an exception that could occur when viewing logs on Linux.
Fixed a bug that caused the Viewer window capture buttons to be disabled in capture mode.
Fixed a bug that caused the Run Window buttons to be disabled.
Fixed a bug that caused in-script text platform changes to be overlooked.
129
Fixed a problem where Text Commands created using the Generation Tools did not properly reference the Text Style
from the Text Platform.
Fixed a problem where Scaling "Fixes" applied by the Image Doctor would not persist. Using the Image Doctor
now sets the Image's default scale as shown in the Image Editor.
Fixed a problem where Adding a Representation using the Original Location would throw an exception.
Fixed a problem where Adding a Representation would not properly switch to the new folder if "Remember Save Image
Folder" was disabled.
Fixed a problem with some toolbar icons on Retina display Mac OS X machines.
Fixed a problem displaying the "Add…" button on the Connection List on CentOS.
Fixed a problem when trying to connect to a RealVNC device from the command-line. This could happen before the
RealVNC initialization had been completed.
v12.x Release Notes
eggPlant v12
Release Notes
The notes below provide descriptions of the new features and changes introduced with each release of eggPlant. You are strongly encouraged to read about the
relevant changes whenever you upgrade from an earlier version.
Potential compatibility issues are highlighted in RED.
Notes For Cross Platform Users:
eggPlant for Linux and Windows contains almost all of the functionality available in eggPlant for Mac.
Excluded features are listed at the bottom of the release notes.
––––––––––––––––––––––––––––––––––––––––––––––––
Release v12.30 (15-July-2013)
Highlights:
New in-line menus for Linux.
Several improvements for International support
Fixed several stability and usability issues.
––––––––––––––––––––––––––––––––––––––––
Interface:
Added the ability to sort Scripts Results by each of the columns.
Added a Preference to disable having the Capture Image panel remember your last location.
The menus on Linux are now displayed within the application windows by default. You can revert to the old behavior by
issuing this command:
defaults write Eggplant NSMenuInterfaceStyle NSNextStepInterfaceStyle
––––––––––––––––––––––––––––––––––––––––
Scripting:
ReadText() will now throw an error when no text is found at an image location or at a specified coordinate. This
matches the behavior when a rectangle is specified.
ReadText() will now log it's results for an image location or at a specified coordinate. This matches the behavior when
a rectangle is specified.
All script and image references should now properly normalize their Unicode values. This should allow for scripts and
images to be found regardless of how the title is entered.
Improved the behavior of the Write command to be more intuitive after an earlier Read command.
Fixed a problem where the Scale attribute was always returned as 1.0 for FoundImageInfo().
ScrollWheelDown() with no parameter will now scroll down by one (instead of up by one)
ScrollWheelDown() and ScrollWheelUp() will now only allow scrolling by limited values to prevent locking up
eggPlant and the VNC server.
––––––––––––––––––––––––––––––––––––––––
Mobile:
Added the following attributes for the ConnectionInfo() for USB connected Android devices:
AndroidDevice will be TRUE
DeviceSerialNumber will be set to the Serial Number of the device.
Fixed a problem with License Errors when connecting to RealVNC Mobile servers.
130
Improved the Viewer window to not shrink when mobile devices are rotated.
Fixed a problem where eggPlant would terminate the VMLite server on Android devices.
Fixed a problem launching on Mac with RealVNC Mobile keys.
––––––––––––––––––––––––––––––––––––––––
Bug Fixes / Tweaks:
Fixed a crashing problem when using Image Doctor/Image Search on some images that became entirely transparent.
Fixed a problem with eggPlant hanging on Ubuntu 12 during startup.
Fixed an occasional problem launching multiple simultaneous copies of eggPlant on Windows.
Fixed a problem launching on Windows with some international date settings.
Fixed a bug when creating a new suite with the same name as an old suite.
Fixed a problem with AutoDoctor not engaging for Execution/Command-Line Only licenses
Fixed a problem where opening an Image would re-open previously closed tabs in a Suite.
Fixed a problem in SendMail when "Content-Type" was set.
Fixed a problem where the Image Doctor would scale images to an unreasonably small size resulting in false image
matches.
Fixed a problem with some images not scaling properly.
Fixed an occasional crashing problem when closing script tabs.
Fixed a problem when executing selections of code that hadn't been reformatted. This could lead to various Range
exceptions or crashes.
Improved memory usage to prevent numerous out of memory conditions.
Fixed a problem with the Auto-Doctor hanging during certain scaling searches.
Fixed a problem displaying context menus after certain screen resizes.
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Release v12.21 (19-May-2013)
Highlights:
• Added the ability to connect directly to Android devices over USB.
• Improved the stability of VNC connections to VMlite Servers on Android.
• Fixed several bugs.
––––––––––––––––––––––––––––––––––––––––
Android Support:
• Android devices with a USB connection to the eggPlant machine will now automatically be available in the drop down when adding
a VNC connection.
• When a USB connected VMlite Server stops unexpectedly on Android it will automatically be restarted by eggPlant.
• Android devices can be specified in a Connect command by specifying their Device ID.
• Android devices can be specified from the Command-Line by specifying their Device ID for the -host argument.
––––––––––––––––––––––––––––––––––––––––
Scripting:
• Added the LicenseInfo() function, which returns information about the license your eggPlant was started with.
• Added the -MaxWaitForLicense argument. When you run eggPlant from command line, this argument specifies the number of
seconds eggPlant should wait for a license to become available, if necessary.
––––––––––––––––––––––––––––––––––––––––
Bug Fixes / Tweaks:
Fixed numerous of out of resource problems on Windows that could manifest during long runs or when many windows
where open.
Fine-tuned the behavior of image "popovers" to be less intrusive.
Fixed a bug that could cause scripts to scroll upon formatting changes
Fixed a bug that caused image-property overrides to be disregarded in scripts
Fixed a bug that could cause the eggPlant splash screen to obscure the license panel on Windows
Fixed inordinate memory growth when resizing the capture area on Windows
Fixed a schedule bug whereby running a selection of a script and then adding that script to a schedule would cause the
selection (not the whole script) to run as part of the schedule.
Fixed a bug that could cause windows to open in unexpected positions upon launch.
Fixed a bug that prevented Asian image names from being displayed properly in the image list.
Fixed an unexpected change in the SenseTalk date format. (Dates that appeared in month/day/year format were being
returned as year-month-day time. The former format has been restored.)
Improved the appearance of tabs showing long resource names on Windows.
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
131
Release v12.20 (25-April-2013)
Highlights:
• Added a new Scaling Image Search to search for images at different sizes.
• Scaled images can be automatically found based on changes in SUT screen size.
• The new Image Browser allows viewing different images within the image tab.
• Added Image Popovers, which show images as you hover over image names in your suite and scripts.
• Added the ability to show which images are/are not used in your suite via theImage Usage
• Suites now provide a Resource Preview, so you can briefly view resources without opening additional tabs.
––––––––––––––––––––––––––––––––––––––––
Image Scaling:
• You can now add a Scale property to an image search, to indicate a scale multiplier (or list or range of scale multipliers) if you expect an image to appear at a
different size than was originally captured.
Click (name: "appIcon", scale: 2.0) // Searches for appIcon at 2 times its original size
Click (name: "appIcon", scale: .5 to 1 by .1) // Searches for appIcon at half size up to full size, in .1 increments
• You can use the DefaultScale property in a script, to set the scale value for all of your images. (Setting the scale value on an individual image overrides the
DefaultScale.)
Set the DefaultScale to (.5, .75, .1) // Every image will be searched for in those three sizes
• You can use the Scale: Auto property in a script, to set the scale value based on the size of the current SUT relative to the size of the original SUT.
Click (name: "appIcon", scale: "Auto") // Searches for appIcon based on changes in SUT resolution
––––––––––––––––––––––––––––––––––––––––
User Interface:
Image Usage
In the contextual menu in the Image list in your suite, you can choose Show Image Usage to find out which images are
used in scripts. Images that are used in scripts are shown in green. Unused images are shown in red.
Images considered "used": An image is considered used if it's name appears as an uncommented string in a saved
script in the same suite.
Images not considered "used": An image is not recognized as used if it is only used by scripts in other suites, it only
appears in comments, it is only mentioned as a variable or constructed string, or the mention of it is not saved.
Refreshing Used Images. Used images are not updated dynamically. As your image usage changes, choose Show
Image Usage again to update the image list.
Image Browser
In the new image browser at the bottom of the image tab, you can now see the siblings of your selected image. If you
select one of these images, it is shown on the same image tab. If you select another image in the image list, a new
image tab opens.
Image folders/collections: You can navigate in and out of folders in the image browser by double-clicking folders to
enter, and clicking the "Up" button to exit the current folder.
Run Window
––––––––––––––––––––––––––––––––––––––––
Scripting:
JSONformat(): This function takes a SenseTalk property list and returns it in proper JSON format.
put contentValue's JSONFormat into file outfile
JSONvalue(): This function takes a JSON string and returns a SenseTalk property list.
put JSONValue(file "/tmp/myJSON.txt") into fileContents
• Added a XMLRPCValue() function to parse text in XMLRPC format (as generated by the XMLRPCFormat function) and return an equivalent SenseTalk value.
• Added a monthName() function to give the name of the month of any date, or of the current date if no parameter is given. An adjective may be used to request
long, abbreviated, and short forms of the name.
put the monthName
put the abbreviated monthName of "7/4/1776"
• Added a weekDayName() function to give the name of the month of any date, or of the current date if no parameter is given. An adjective may be used to
request long, abbreviated, and short forms of the name.
put weekDayName("7/4/1776")
put the short weekDayName
• Added a keyForValue() function to return the key corresponding to a particular value in a property list, or empty if the property list does not contain that value. If
132
more than one property is equal to the specified value, the key to one of these values is returned
set myPets to (cat:"Yellow", dog:"Black")
put keyForValue(myPets, "Black") -- dog
put myPets.keyForValue("Yellow") -- cat
• Added an allKeysForValue() function to return a list of all keys in a propertyList that have a particular value, in no particular order. If the property list does not
contain that value an empty list is returned.
• Fixed a small parsing issue that prevented calling a function on a number by using the '.' syntax. This can now be done, provided the function name comes directly
after the ".":
put 65.numToChar -- A
put -42.numberWords -- negative forty-two
• String literals prefixed by the '@' sign may now include backslash escape sequences.
• Added a cube root function.
• Added is contained by as a synonym for the is in operator.
• Added multiplied by as a synonym for the times operator.
• Added counter as a synonym for the repeatIndex function.
• Added is past as a synonym for the greater than operator.
• Allow the word given to be used between a handler name and its formal parameters.
to calculateArea given length, width
• Allow the word position or location to be used after before or after in a range or offset expression.
the range of "money" in accounts before position lastFoundPos
• Fixed a bug with the duplicatePropertyKeyMode -- when set to "list" mode it generated incorrect values whenever a key appeared more than two times in a
property list expression. It now correctly generates a list of all of the supplied values.
• Updated the STTreeNode XModule to version 3.1. Tree nodes can now be deleted using a node expression (previously only item expressions worked with the delete
command for deleting tree nodes):
delete node "product/description" of order
––––––––––––––––––––––––––––––––––––––––
Bug Fixes / Tweaks:
Improved start-up performance on Windows operating systems.
Improved performance of reading large data files during script execution.
Improved Japanese text input on Windows operating systems.
Fixed a problem using the "File->Open Script" that could lead to a crash on Windows.
Fixed a significant memory leak caused by executing scripts that were not open in the interface. This leak would
eventually lead to a crash.
Fixed a problem opening suites that had unwritable scripts or folders.
Initial suite display performance improved to create a smoother loading experience.
Fixed a problem where using "Save All" could cause other scripts to appear empty.
Fixed a problem where the panel alerting of external changes to a script would come up in an awkward screen location.
These alerts now show up within the script editor.
Fixed an error with "Duplicate TestCase" when running selections or running commands from EP:Drive.
Fixed a problem where the Save Image Sheet wouldn't update to reflect that a new script or suite was selected.
Fixed problems bringing up the proper line after an error when running a selection.
Fixed a number of problems setting or removing breakpoints that were in handlers.
Fixed problems with breakpoint display with different font settings.
Fixed a problem with right clicking on breakpoints on Mac.
Fixed a problem with the script insertion point not always moving when generating commands.
Bold formatting is now properly applied when scripts first opened.
The run window will now remember it's placement between launches.
Added a warning when setting the finalSuites or the InitialSuites to an invalid location.
Added a warning instead of an error when trying to use an invalid language for an OCR operation.
The default color will now work with Android VNC servers.
Fixed a problem where calling a non-existent script from the command line would generate bogus results files.
Fixed a problem where using "Reveal In Explorer" on a script would take you to the default suite directory.
Fixed an exception when pressing the Windows/Logo Key on the TypeText panel.
Fixed an occasional problem where new scripts didn't allow renaming.
OCR text once again highlights in green when it is found during a script run.
Removed second Quit menu item on Windows and Linux.
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
133
Release v12.02
(12-December-2012)
Highlights:
•
•
When a tab is selected in a suite window, the corresponding item is now highlighted in the list on the left.
Fixed a number of bugs .
––––––––––––––––––––––––––––––––––––––––
Bug Fixes / Tweaks:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Removed the "Quit After Next Script Run" option when closing the last window on Windows, which would cause eggPlant to hang.
Fixed a problem that could prevent another suite from being opened while a script is running, paused, or previously run in some situations.
Eliminated some error messages while installing on Ubuntu 11.04+.
When submitting a bug, question, or feature request, the pre-supplied description text now matches the type of request.
Fields in the bug report / question / feature request window are now cleared only when the panel is closed or submitted.
After creating and naming a new script, the focus is now set to the script editor, ready for user input.
Fixed a problem in which a modified script that had been previously changed and closed, could be closed without the user being prompted to save their
changes.
Fixed a problem with the state and arrangement of windows not always being remembered and restored properly.
Fixed a problem with running a script from the command line that would require at least a partial path including the script's suite.
Fixed a problem that would sometimes report an exception when quitting with unsaved changes and choosing to save all scripts.
Changed the title of the "Settings" button to "Settings…" to make it clear that it is a button that opens a tab.
Fixed a crash when an image tab was closed while performing an Image Doctor search.
The Run Selection button is now disabled when a script is running.
Fixed a problem with the F8 - F12 items on the TypeText pulldown menu generating digits rather than the correct code.
Improved the behavior when attempting to use the CaptureScreen or TraceScreen command to save an image to an invalid location (with insufficient privileges
or unreachable path). An appropriate message will now be reported.
Fixed a problem with some exception logs that would display incorrect information in the results tab.
Fixed an issue that would sometimes fail to select the name of a newly-created script for ease of naming it.
Fixed a crash that could occur when running a script from another using RunWithNewResults.
Fixed a crash that could occur on Windows or Linux when searching in a suite containing many images.
Fixed a crash that could occur on Mac OS 10.6 when closing a suite window.
Fixed a problem that could throw an exception when clicking the Image Doctor button.
Fixed a crash that could occur when changing platform types or styles on the Text Preferences pane.
Fixed an issue with the suite window interface occasionally appearing to "freeze" on Windows.
Fixed a problem in which the detailed result log displayed on a result tab could be for a different (previously selected) run date than the run date currently
selected in the upper list in some situations.
Fixed a crash that could occur sometimes on Windows and Linux when typing in a panel after closing a suite.
Fixed an exception that could occur when dragging an image into a script in a different suite.
Fixed an issue in which the same script could be open in multiple tabs in the same window, sometimes leading to a crash or hang.
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Release v12.01
(11-November-2012)
Highlights:
•
•
•
•
The Copy command can now be used in a Remote Screen window in Capture mode to copy the rectangle coordinates to the clipboard.
The Open Recent menu now works on Windows and Linux.
All open windows are now listed on the Window menu.
Added a Save As… item on the File menu to create a copy of the current script within the suite.
––––––––––––––––––––––––––––––––––––––––
Bug Fixes / Tweaks:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Fixed a problem accessing the GUI for the Floating License Servers.
Fixed a problem that would erroneously display a panel warning of unsaved changes when closing a suite window (Windows).
Fixed a problem that would throw an exception when accessing the Run Options preferences (Windows) if you had installed over a previous version of
eggPlant.
Fixed a problem with suite windows which were open on a second monitor being moved to the main screen when eggPlant is relaunched.
Fixed a problem in which using Command-w (or Control-w) to close a script tab would not warn of unsaved changes.
Fixed a problem with screen colors being displayed incorrectly (blue) when connecting to certain RealVNC mobile servers (Mac).
Added the Documentation item to the Help menu (Mac).
Fixed a problem that would give the message "Command string selected a bearer that could not be loaded" when connecting to some mobile devices
(Windows).
Fixed the Cancel button when searching with the Image Doctor.
Fixed an NSInvalidArgumentException that could occur when using the Image Doctor.
Fixed the Show Resource item on the Edit menu.
Fixed the Comment/Uncomment item on the Edit menu.
Fixed the Current Script item on the Window menu.
Fixed the Open Recent submenu on the File menu to show a list of recently opened suites (Windows and Linux).
Fixed a problem with the Show Script button on the alert panel for a script failure, that would open the documentation in a browser.
Fixed an issue that a script name did not stay selected after renaming it.
Fixed an issue with a collapsed left-side navigation area popping open again when the window is resized.
Fixed an issue with long script names being truncated in the script list (Windows and Linux).
Fixed a display issue with editing of long script names in the script list (Windows and Linux).
Fixed a problem accessing the Context Menu in the Navigation Area (Mac 10.6).
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Release v12.00
(30-October-2012)
Highlights:
•
•
Redesigned Suite Window with all Scripts, Images, Results, and Schedules shown in tabs within the window.
Multiple Schedules can now be created in each Suite.
134
•
•
•
•
•
•
•
New LogSuccess and BeginTestCase / EndTestCase commands for enhanced tracking of validation points.
Script results and statistics are now available in XML/JUnit format.
Added Pre- and Post-run scripts for each suite, that are run before and after every script run that would generate results.
Added a Template script for each suite, that is copied for newly created scripts in that suite.
Documentation is now in HTML format online, for rapid updates and ongoing enhancement (http://docs.testplant.com [120]).
eggPlant's OCR capabilities, ReadText() and text search, now include support for Asian languages on Windows.
New graphics engine on Windows with full compatibility with Remote Desktop and Window's accessibility display options.
––––––––––––––––––––––––––––––––––––––––
Compatibility
•
TypeText with backslash codes. (e.g.: \n. \t, \\)
The ability to use backslash codes in a TypeText command is now disabled by default. If you were using the codes or the double-backslash then we
recommend modifying your scripts to use the predefined constants, Example:
TypeText "This is a backslash:" & TAB & BACKSLASH & RETURN
produces
This is a backslash:
\
If needed, the prior behavior can be enabled through any of the following mechanisms:
Within the preferences: "Enable Backslash Escape Codes" checkbox in the Preferences->Run Option->Keyboard.
Within a script: using "set the enableBackslashEscapeCodes to yes"
From the command line: using "-enableBackslashEscapeCodes YES"
•
Command Line Return Value
The default behavior is now for eggPlant to report the number of failures, so 0 indicates all scripts succeeded. Attempting to run a non-existent
script is now counted as a failure. If eggPlant is unable to run (such as for no license) a value of 127 is returned. To request the prior default behavior
(reporting the number of successful script runs) pass -ReportFailures NO on the command line.
––––––––––––––––––––––––––––––––––––––––
Consolidated Suite Interface:
Each Suite now has just one window which displays any scripts being edited in that suite as well as the images, results, schedules and other
information for that suite in a tabbed interface.
•
Left-Side Lists:
On the left side, each Suite window displays lists of all of the scripts, images, results, and schedules in the suite. Double-clicking any item in these
lists will open a tab displaying that script, image, result history, or schedule. In addition, a Settings button will open a tab displaying settings and
helpers for the suite.
The relative sizes of the lists on the left side of the suite window can be changed by dragging the section titles up or down.
Each section has an action context menu for selecting appropriate actions in that section. On Mac, the action menu for a section is also available as
a pull-down menu (click the gear icon in the section title).
Single-clicking an already-selected item in the Scripts, Images, or Schedules lists will edit the name of that item (Mac only -- on other platforms, use
the Rename item from the action menu).
•
Unified Search:
The search field above the lists filters all of the lists by name and/or (where appropriate) by contents. For a script, the content is the script itself. For
an image the content is its description, and for a schedule the content is the names of the scripts in the schedule. The magnifying glass icon presents
a menu to select the type of search to use, as well as a history of recent search terms (press return after entering a search term to add it to the
history list).
•
Tabbed Interface:
Tabs can be opened by double-clicking an item in one of the lists, by selecting the "Open" item from one of the action menus, or by various other
shortcuts or actions that will open a tab automatically.
Tabs can be dragged to change their order and may be closed by clicking the "x" icon in each tab.
Drag any tab out of a suite to create a new window, or drag a tab into the tab bar of another window for the same suite (you can't drag a tab to a
different suite).
All open tabs in the suite window are remembered when the suite is closed and will be restored when the suite is next opened.
•
Scripts:
Each script tab allows editing of a script and also (optionally) of a description for the script. To access the description field, drag the top edge of the
script edit area down to reveal the description field. Attempting to close a script tab for a script with unsaved changes will display a warning message
above the script (unless the script is also open in another window). The warning message provides options to cancel the message and continue
editing, or to save or discard the changes and close the tab.
•
Images:
The action menu for Images includes a Create Collection option which will immediately create a new image collection containing all of the selected
images.
•
Results:
The Results list shows the names of all scripts for which results are present in the suite. Opening a tab for a given script's results shows a list of
every individual execution of that script, identified by the run date and time.
135
•
Schedules:
A suite may now include multiple schedules (lists of scripts that can be run as a batch). Each schedule is given a name when it is created. If the
runscript command is used to run a suite from the command line, it runs the first schedule for that suite. Or a specific schedule can be run by
including a slash and the schedule name at the end of the suite path. For example, this command would run the first schedule in MySuite.suite:
/Applications/Eggplant.app/runscript /path/to/MySuite.suite
This command would run the schedule named "SmokeTest" in the same suite:
/Applications/Eggplant.app/runscript /path/to/MySuite.suite/SmokeTest
•
Settings:
The Settings tab incorporates the contents of both the previous Helpers tab and Settings tab, plus some new settings. Helper suites for the script
can now be disabled or enabled by clicking a checkbox for each suite.
•
Also:
A status field at the bottom of the suite window displays the name of the currently running script.
The Info drawer has been eliminated, and the associated information incorporated into the appropriate tabs.
––––––––––––––––––––––––––––––––––––––––
Pre-run and Post-run Scripts:
•
A new option allows specifying a pre-run script that will be executed before each script run, and a post-run script that will be executed after each
script run. Select which scripts to use on the Settings tab for a suite, which also has checkboxes for turning the execution of these scripts on and off.
The pre-run script will be called with three parameters. The first is the full path of the script that is about to be run. The second is a list of all of the
parameters (if any) that will be passed to the script. The third is the full path to the log file that will be created during the script run.
The pre-run script has the ability to change the parameters that will be passed to the script. To do this, the pre-run script should return a property
list with a "parameters" property whose value is a list of the parameters.
The post-run script is called after the script run has finished. It is called with two parameters. The first is the full path of the script that was run. The
second is the scriptResult property list for the run, similar to the result returned by the RunWithNewResults command.
In addition to the parameters and return values described above, the pre- and post- scripts can interact with the script being run through a shared
environment, including:
- connections -- open a connection in the pre- script and it will be the active connection when the script being run starts
- global and universal variables are common across all three scripts
- global properties are common across all three scripts, including the InitialSuites and the FinalSuites
New Script Template:
•
A template script for new scripts may also be specified on the Settings tab for a suite. If a template script is chosen, each new script that is created
in that suite will begin as a copy of that script.
––––––––––––––––––––––––––––––––––––––––
Result File Format Changes:
•
An XML file (LogFile.xml) containing summary information gathered from the TestCases in a script run is produced alongside the full text log
(LogFile.txt) in the result folder for each script run. The LogFile.xml file follows the reporting format used by JUnit and similar unit testing tools, to make
it easy to integrate with other tools that can accept this format. A checkbox option is available on the General Preferences pane to disable production
of this file.
•
The information in the SuiteStatistics.csv file is now mirrored in XML format in a SuiteName_Statistics.xml file. This XML file is now the primary
format used by eggPlant, with the CSV file still supplied for compatibility. Both are located in the Results directory.
•
The information in the RunHistory.csv file is now mirrored in XML format in a RunHistory.xml file. The XML file is now the primary format used by
eggPlant, with the CSV file still supplied for compatibility. Both files are found in the folders created for each script within the Results directory.
•
The RunHistory.csv file and corresponding .success or .failure file in each run directory now have an additional column at the end containing the
success count (number of LogSuccess commands executed) for each run.
––––––––––––––––––––––––––––––––––––––––
Scripting:
•
Added a LogSuccess command to create log entries for successes in the script. Successes are shown in green in the detailed log view in a Results tab, and a
new column shows the Success count for each script run. In addition, the Successes count is also included in the various ScriptResults property lists, and as one of
the statistics gathered by the BeginTestCase/EndTestCase commands. A script run that completes successfully but that doesn't explicitly call LogSuccess will be
treated as having a success count of 1.
•
Added BeginTestCase and EndTestCase commands to mark the beginning and end of any section of code within a script (or across scripts during a run) as a
Test Case for purposes of gathering information. Each test case is given a name. A script run may include multiple test cases which may be sequential portions of
a script or may overlap with one another in any way you choose. The information gathered for each test case includes the duration of that test case (in seconds)
and the number of Errors, Successes, Warnings, and Exceptions that occur or are logged while that test case is open. Information about open test cases can be
obtained (or modified) at any time through the OpenTestCases global property. One test case is created automatically at the beginning of each run, with the
name of the script that is being run. At the end of a run, any test cases that are still open are ended and reported automatically.
Example code:
BeginTestCase "A" -- this marks the start of the reporting period for case A
-- other commands here
EndTestCase "A" -- this ends the reporting period for case A and logs the information that was gathered
BeginTestCase "B" -- start recording statistics for case B
-- other commands here
BeginTestCase "C" -- start recording statistics for case C
-- other commands here
EndTestCase "B" -- close case B and report statistics gathered since case B was opened
136
-- other commands here
-- if the run ends with TestCase C still open, it will be ended and reported automatically
•
Added support for buttons used by VMLite VNC server on Android:
Home button: HomeKey
Menu button: F2
Back button: Escape
Search button: F5
Call/dial: F3
Lock phone: F4
Rotate Viewer Window: F6
Navigate between apps Up/down/left/right: UpArrow, DownArrow, LeftArrow, RightArrow
––––––––––––––––––––––––––––––––––––––––
Other Changes:
•
•
•
The eggPlant documentation is now in HTML format, stored and updated regularly on the TestPlant web site at:http://docs.testplant.com [120].
The eggPlant OCR functionality now includes support for Asian languages Chinese, Korean, and Japanese.
When a script run fails, the alert panel that is displayed now offers a choice of whether to display the script (previously, the script was always
displayed).
•
Added a mechanism to detect when eggPlant fails to launch. On the next launch attempt it will now offer to move aside the user preferences,
which may eliminate the problem that is preventing it from launching successfully.
•
Connection information can now be copied from the Connection List and pasted as text in a script or other text document.
––––––––––––––––––––––––––––––––––––––––
Bug Fixes / Tweaks:
•
When a WaitForAll command fails, it now reports exactly which image was not found (for both the ImageDoctor and in the log). Previously it always reported
the first image as the one that was not found.
•
Fixed a problem where ColorAtPoint() did not allow getting the colors at the far extremes of the screen. Note: The actual screen goes from (0,0)
to (Server Width -1, Server Height - 1) but for simplicity/compatibility we allow (Server Width, Server Height) to mean the right edge and bottom edge
of the screen respectively.
Connections can now be dragged from the Connection List with the Alt key held down (on Windows) and dropped into a script to generate a
Connect command with the full connection property list (previously this capability was available on Mac and Linux, but not on Windows).
Fixed an occasional crash following a RunWithNewResults.
Fixed an occasional random crash when double-clicking on Windows systems.
Fixed an issue that menus would sometimes not appear in a window when it was first opened on Windows systems.
Fixed a bug that would fail to transmit large quantities of data (such as a 50K file) over a socket connection on Windows.
Improved behavior when attempting connection to a SUT fails and times out.
Fixed an issue in which the Email and Subject fields on the bug report / support panel would be marked in red even after the user entered
information in those fields.
Fields in the bug report / support panel are now cleared when the panel is brought up again.
The bug report / support panel now allows attaching of crash logs on Windows systems.
Eliminated some spurious GSLayoutManager warnings in the console log (Linux and Windows).
Fixed some issues with windows occasionally being "lost" (such as windows which were minimized on quitting being lost upon relaunching
eggPlant) (Windows and Linux).
•
•
•
•
•
•
•
•
•
•
•
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Known Exclusions from Eggplant for Mac:
•
Movie Recording from the GUI and startMovie command is not available.
•
Bonjour/zeroconfig VNC server detection is not present.
•
Use Image toolbar item on the Remote Window is not available on Windows.
•
Text Image Generation does not support the Mac OS X Native or Pango generators.
•
Color Panel Does not currently support the Color Picker (Magnifying Glass) or Named Colors.
•
Image Formats Suites do not currently support ICO, PICT, or PDF images.
•
ssh connections ARE supported on Windows, but require that you install an SSH client. Please see the Eggplant Reference manual for instructions.
•
ssh connections ARE supported on LINUX but some distributions restrict the ability to pass in an SSH password. We encourage you to set Public-Key
Encryption for your SSH connections.
–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––
Copyright (C) 2002-2012 TestPlant, Inc – All Rights Reserved
US Patent #7,870,504. Other patents pending.
The eggPlant Logo is a trademark of TestPlant, Inc.
Taxonomy:
eggPlant Release Notes [281]
Powered by Drupal
Source URL: http://127.0.0.1/?q=content/eggplant-reference
Links
[1] http://docs.testplant.com/PDFs/eggPlant%20Reference.pdf
[2] http://docs.testplant.com/?q=content/connection-list
[3] http://docs.testplant.com/?q=content/viewer-window
[4] http://docs.testplant.com/?q=content/suite-editor
[5] http://docs.testplant.com/?q=content/run-window
[6] http://docs.testplant.com/?q=content/eggplant-menus
[7] http://docs.testplant.com/?q=content/eggplant-menu
[8] http://docs.testplant.com/?q=content/file-menu
[9] http://docs.testplant.com/?q=content/edit-menu
[10] http://docs.testplant.com/?q=content/run-menu
[11] http://docs.testplant.com/?q=content/connection-menu
[12] http://docs.testplant.com/?q=content/control-menu
[13] http://docs.testplant.com/?q=content/window-menu
137
[14] http://docs.testplant.com/?q=content/help-menu
[15] http://docs.testplant.com/?q=content/guide-tab
[16] http://docs.testplant.com/?q=content/scripts-list-and-script-editor
[17] http://docs.testplant.com/?q=content/image-viewer
[18] http://docs.testplant.com/?q=content/tables-pane-and-keyword-driven-testing
[19] http://docs.testplant.com/?q=content/results-pane
[20] http://docs.testplant.com/?q=content/schedules-pane-and-working-schedules
[21] http://docs.testplant.com/?q=content/sessions-tab
[22] http://docs.testplant.com/?q=content/settings-tab
[23] http://docs.testplant.com/?q=content/eggplant-preferences
[24] http://docs.testplant.com/?q=content/general-preferences
[25] http://docs.testplant.com/?q=content/viewer-window-preferences
[26] http://docs.testplant.com/?q=content/vnc-preferences
[27] http://docs.testplant.com/?q=content/script-preferences
[28] http://docs.testplant.com/?q=content/run-options-preferences
[29] http://docs.testplant.com/?q=content/text-preferences
[30] http://docs.testplant.com/?q=content/mail-preferences
[31] http://docs.testplant.com/?q=content/eggplant-commands-and-functions
[32] http://docs.testplant.com/?q=content/image-references
[33] http://docs.testplant.com/?q=content/mouse-commands-and-functions
[34] http://docs.testplant.com/?q=content/text-commands-and-functions
[35] http://docs.testplant.com/?q=content/image-searching-commands-and-functions
[36] http://docs.testplant.com/?q=content/image-information-functions
[37] http://docs.testplant.com/?q=content/found-image-information-functions
[38] http://docs.testplant.com/?q=content/script-commands-and-functions
[39] http://docs.testplant.com/?q=content/reporting-commands
[40] http://docs.testplant.com/?q=content/sut-commands-and-functions
[41] http://docs.testplant.com/?q=content/mobile-commands-and-functions
[42] http://docs.testplant.com/?q=content/global-properties
[43] http://docs.testplant.com/?q=content/eggplant-global-properties
[44] http://docs.testplant.com/?q=content/run-options
[45] http://docs.testplant.com/?q=content/running-command-line
[46] http://docs.testplant.com/?q=content/mac-running-command-line
[47] http://docs.testplant.com/?q=content/windows-running-command-line
[48] http://docs.testplant.com/?q=content/linux-running-command-line
[49] http://docs.testplant.com/?q=content/appendix-eggplant-commands
[50] http://docs.testplant.com/?q=content/appendix-b-eggplant-functions
[51] http://docs.testplant.com/?q=content/appendix-c-typetext-keywords
[52] http://docs.testplant.com/?q=content/appendix-d-global-properties
[53] http://docs.testplant.com/?q=content/appendix-e-property-lists
[54] http://docs.testplant.com/?q=content/appendix-f-pango-markup-tags
[55] http://docs.testplant.com/?q=content/appendix-g-ocr-language-support
[56] http://docs.testplant.com/?q=Documentation-Home
[57] http://docs.testplant.com/?q=content/getting-started-1
[58] http://docs.testplant.com/?q=content/using-eggplant
[59] http://docs.testplant.com/?q=content/eggplant-reference
[60] http://docs.testplant.com/?q=content/sensetalk-reference
[61] http://docs.testplant.com/?q=eggPlant-Performance
[62] http://docs.testplant.com/?q=content/eggplant-manager
[63] http://docs.testplant.com/?q=eggCloud
[64] http://docs.testplant.com/?q=eggMan
[65] http://docs.testplant.com/?q=content/eggbox
[66] http://docs.testplant.com/?q=content/eggplant-network
[67] http://docs.testplant.com/?q=content/eggon
[68] http://docs.testplant.com/?q=content/knowledge-base
[69] http://docs.testplant.com/?q=content/Examples
[70] http://docs.testplant.com/?q=content/faq
[71] http://www.testplant.com/support/tutorials/
[72] http://forums.testplant.com/phpBB2/viewforum.php?f=2&amp;sid=ef4b0b399b15ceb7ebd0957abe126be3
[73] http://www.testplant.com/phpBB2/viewforum.php?f=5&amp;sid=3b0d1b7ca58256b3d760560ff1b95519
[74] http://docs.testplant.com/?q=content/licensing
[75] http://docs.testplant.com/?q=content/reusing-code#extract-code
[76] http://docs.testplant.com/?q=content/creating-tests-eggplant-functional#autocompletion
[77] http://docs.testplant.com/?q=content/eggplant-global-properties#the-scripttracing
[78] http://docs.testplant.com/?q=using-eggPlant-Functional/Finding-Images/Image-Update-Tools
[79] http://docs.testplant.com/?q=content/script-editor
[80] http://docs.testplant.com/?q=content/connection-list#status-icon
[81] http://docs.testplant.com/?q=content/eggplant-release-notes
[82] http://www.testplant.com/phpBB2/viewforum.php?f=5&amp;sid=7ae3a39dee53ade35706452f81eab385
[83] http://docs.testplant.com/?q=content/creating-connection-eggPlant-Functional
[84] http://127.0.0.1/?q=book/export/html/72#live-mode
[85] http://127.0.0.1/?q=book/export/html/72#capture-mode
[86] http://127.0.0.1/?q=book/export/html/72#viewer-window-toolbar
[87] http://127.0.0.1/?q=book/export/html/72#hot-spot
[88] http://docs.testplant.com/?q=content/best-image-capture-practices
[89] http://docs.testplant.com/?q=content/creating-tests-eggplant-functional#turbo-image-capture
[90] http://127.0.0.1/?q=book/export/html/72#capture-image-panel
[91] http://127.0.0.1/?q=book/export/html/72#use-image-panel
[92] http://docs.testplant.com/?q=content/finding-text#TIG
[93] http://docs.testplant.com/?q=content/finding-text#OCR
[94] http://127.0.0.1/?q=book/export/html/72#find-text-panel
[95] http://docs.testplant.com/?q=content/mouse-commands-and-functions#click-command
[96] http://docs.testplant.com/?q=content/mouse-commands-and-functions#doubleclick-command
[97] http://docs.testplant.com/?q=content/mouse-commands-and-functions#rightclick-command
[98] http://docs.testplant.com/?q=content/mouse-commands-and-functions#moveto
[99] http://docs.testplant.com/?q=content/mouse-commands-and-functions#drag
[100] http://docs.testplant.com/?q=content/mouse-commands-and-functions#drop
[101] http://docs.testplant.com/?q=content/suite-editor#results-pane
[102] http://docs.testplant.com/?q=content/scripts-pane-and-script-editor
[103] http://docs.testplant.com/?q=content/scripts-list-and-script-editor#comment-uncomment
[104] http://docs.testplant.com/?q=content/reporting-commands#capturescreen-command
[105] http://docs.testplant.com/?q=content/image-searching-commands-and-functions#refreshscreen-command
[106] http://docs.testplant.com/?q=content/creating-image-collection
[107] http://www.testplant.com/support/downloads/current/
[108] http://docs.testplant.com/?q=content/images-list-and-image-viewer#image-viewer
[109] http://127.0.0.1/?q=book/export/html/72#info-pane
[110] http://127.0.0.1/?q=book/export/html/72#sensetalk-browser
[111] http://docs.testplant.com/?q=content/creating-tests-eggplant-functional
[112] http://docs.testplant.com/?q=content/sensetalk-browser
[113] http://127.0.0.1/?q=book/export/html/72#sensetalk-browser-panes
[114] http://127.0.0.1/?q=book/export/html/72#using-sensetalk-browser
[115] http://127.0.0.1/?q=book/export/html/72#opening-sensetalk-browser
[116] http://127.0.0.1/?q=book/export/html/72#finding-information-in-sensetalk-browser
[117] http://127.0.0.1/?q=book/export/html/72#tokens
[118] http://127.0.0.1/?q=book/export/html/72#custom-snippets
[119] http://127.0.0.1/?q=book/export/html/72#editing-the-customsnippetsrtf-file
[120] http://docs.testplant.com
138
[121] http://docs.testplant.com?q=content/variables
[122] http://127.0.0.1/?q=book/export/html/72#format-customsnippets-rtf-file
[123] http://docs.testplant.com/sites/default/files/images/ePRef/TheSuiteEditor/TablesPane/epf-15.20-tables-pane-full.png
[124] http://docs.testplant.com/?q=content/scripts-list-and-script-editor#info-pane
[125] http://127.0.0.1/?q=book/export/html/72#specify-arguments
[126] http://docs.testplant.com/?q=content/scripts-list-and-script-editor#
[127] http://docs.testplant.com/?q=content/gathering-and-using-data#data-driven-testing
[128] http://docs.testplant.com/?q=content/data-driven-testing
[129] http://docs.testplant.com/sites/default/files/images/ePRef/TheSuiteEditor/TablesPane/epf-15.20-tables-data-driven-full.png
[130] http://docs.testplant.com/?q=content/using-eggplant-functional-keyword-driven-testing
[131] http://docs.testplant.com/?q=content/eggplant-global-properties#the-scriptlogging
[132] http://docs.testplant.com/?q=content/running-scripts#eggPlant-Functional-Schedules
[133] http://docs.testplant.com/?q=content/general-preferences/#default-suite-directory
[134] http://docs.testplant.com/?q=sensetalk-reference-helpers
[135] http://127.0.0.1/?q=book/export/html/72#the-run-window-toolbar
[136] http://127.0.0.1/?q=book/export/html/72#the-script-frame-pop-up-menu
[137] http://127.0.0.1/?q=book/export/html/72#the-script-display-area
[138] http://127.0.0.1/?q=book/export/html/72#dynamic-breakpoints
[139] http://127.0.0.1/?q=book/export/html/72#the-log-area
[140] http://127.0.0.1/?q=book/export/html/72#the-ad-hoc-do-box
[141] http://127.0.0.1/?q=book/export/html/72#variable-watcher
[142] http://127.0.0.1/?q=book/export/html/72#add-remove-property-from-property-list
[143] http://docs.testplant.com/?q=content/variable-watcher
[144] http://docs.testplant.com/?q=content/lists
[145] http://docs.testplant.com/?q=content/property-lists
[146] http://docs.testplant.com/?q=content/variables
[147] http://127.0.0.1/?q=book/export/html/72#using-variable-watcher
[148] http://127.0.0.1/?q=book/export/html/72#enabling-disablng-variable-watcher
[149] http://127.0.0.1/?q=book/export/html/72#specifying-types-variables
[150] http://127.0.0.1/?q=book/export/html/72#changing-variable-values
[151] http://127.0.0.1/?q=book/export/html/72#variable-watcher-displaying-the-expanded-edit-pane
[152] http://docs.testplant.com/?q=content/images-list-and-image-viewer
[153] http://docs.testplant.com/?q=content/viewing-images#search-types
[154] http://docs.testplant.com/?q=content/run-options#the-remoteworkinterval
[155] http://docs.testplant.com/?q=content/run-options#the-forcescreenrefresh
[156] http://docs.testplant.com/?q=content/eggplant-global-properties#the-currenttextplatform
[157] http://www.testplant.com/downloads
[158] http://docs.testplant.com/?q=content/viewing-images#find-text-panel
[159] http://docs.testplant.com/?q=content/reporting-commands#sendmail-command
[160] http://docs.testplant.com/?q=eggcloud-connection-through-eggplant
[161] http://docs.testplant.com/?q=content/lists-and-property-lists#st-ref-property-lists-anchor
[162] http://docs.testplant.com/?q=content/global-properties#the-collectionfilter-anchor
[163] http://127.0.0.1/?q=book/export/html/72#collection-filters-anchor
[164] http://127.0.0.1/?q=book/export/html/72#the-textplatforms-copy-copy-copy-anchor
[165] http://127.0.0.1/?q=book/export/html/72#the-text-image-panel-anchor
[166] http://docs.testplant.com/?q=content/viewer-window#find-text-panel
[167] http://127.0.0.1/?q=book/export/html/72#text-preferences-anchor
[168] http://127.0.0.1/?q=book/export/html/72#text-style-properties-copy-copy-copy-anchor
[169] http://127.0.0.1/?q=book/export/html/72#keydown-command-anchor
[170] http://127.0.0.1/?q=book/export/html/72#keyup-command-anchor
[171] http://docs.testplant.com/?q=content/image-information-functions#imageinfo
[172] http://docs.testplant.com/?q=content/image-searching-commands-and-functions#imagelocation
[173] http://docs.testplant.com/?q=content/image-searching-commands-and-functions#imagerectangle-function
[174] http://docs.testplant.com/?q=content/appendix-e-property-lists#image-properties
[175] http://docs.testplant.com/?q=content/reporting-commands#scriptresults
[176] http://docs.testplant.com/?q=content/eggplant-global-properties#the-textplatforms
[177] http://docs.testplant.com/?q=content/eggplant-global-properties#the-commandlineoutput
[178] http://docs.testplant.com/?q=content/eggplant-global-properties#the-imagedoctor
[179] http://docs.testplant.com/?q=content/eggplant-global-properties#the-scriptanimation
[180] http://docs.testplant.com/?q=content/eggplant-global-properties#the-searchrectangle
[181] http://docs.testplant.com/?q=content/running-command-line#overlay-context=content/running-command-line%3Fq%3Dcontent/runningcommand-line
[182] http://docs.testplant.com/?q=eggcloud-connection-through-eggplant#using-the-connect-command-with-eggCloud-devices
[183] http://docs.testplant.com/?q=iOS-Gateway
[184] http://docs.testplant.com/?q=content/file-system-commands-and-functions#copy-file
[185] http://127.0.0.1/?q=book/export/html/72#SetDeviceOrientation
[186] http://docs.testplant.com/?q=content/mouse-commands-and-functions#mousebuttondown
[187] http://docs.testplant.com/?q=content/appendix-c-typetext-keywords#mobile-control
[188] http://docs.testplant.com/?q=content/mouse-commands-and-functions#mousebuttonup
[189] http://docs.testplant.com/?q=content/working-color#colorformat
[190] http://docs.testplant.com/?q=content/finding-images#proportional-scaling
[191] http://docs.testplant.com/?q=content/run-options#the-shouldrepositionmouse
[192] http://docs.testplant.com/?q=content/eggplant-global-properties#the-reposition-point
[193] http://docs.testplant.com/?q=content/text-commands-and-functions#capturetextimage-command
[194] http://docs.testplant.com/?q=content/sut-commands-and-functions#connect-command
[195] http://docs.testplant.com/?q=content/sut-commands-and-functions#disconnect-command
[196] http://docs.testplant.com/?q=content/mouse-commands-and-functions#drag-command
[197] http://docs.testplant.com/?q=content/mouse-commands-and-functions#draganddrop-command
[198] http://docs.testplant.com/?q=content/mouse-commands-and-functions#drop-command
[199] http://docs.testplant.com/?q=content/script-commands-and-functions#hide-remotewindow
[200] http://docs.testplant.com/?q=content/sut-commands-and-functions#highlightrectangle-command
[201] http://docs.testplant.com/?q=content/text-commands-and-functions#keydown-command
[202] http://docs.testplant.com/?q=content/text-commands-and-functions#keyup-command
[203] http://docs.testplant.com/?q=content/mobile-commands-and-functions#launchapp
[204] http://docs.testplant.com/?q=content/reporting-commands#log-command
[205] http://docs.testplant.com/?q=content/reporting-commands#logerror-command
[206] http://docs.testplant.com/?q=content/reporting-commands#logsuccess-command
[207] http://docs.testplant.com/?q=content/reporting-commands#logwarning-command
[208] http://docs.testplant.com/?q=content/mouse-commands-and-functions#movetoeach-command
[209] http://docs.testplant.com/?q=content/script-commands-and-functions#pausescript-command
[210] http://docs.testplant.com/?q=content/script-commands-and-functions#run-command
[211] http://docs.testplant.com/?q=content/script-commands-and-functions#runwithnewresults-command
[212] http://docs.testplant.com/?q=content/mouse-commands-and-functions#scrollwheeldown
[213] http://docs.testplant.com/?q=content/mouse-commands-and-functions#scrollwheelup
[214] http://docs.testplant.com/?q=content/script-commands-and-functions#setoption
[215] http://docs.testplant.com/?q=content/script-commands-and-functions#setoptions
[216] http://docs.testplant.com/?q=content/text-commands-and-functions#setremoteclipboard-command
[217] http://docs.testplant.com/?q=content/script-commands-and-functions#show-remotewindow
[218] http://docs.testplant.com/?q=content/script-commands-and-functions#tracescreen-on-off-command
[219] http://docs.testplant.com/?q=content/text-commands-and-functions#typetext-command
[220] http://docs.testplant.com/?q=content/image-searching-commands-and-functions#wait-command
[221] http://docs.testplant.com/?q=content/image-searching-commands-and-functions#waitfor-command
[222] http://docs.testplant.com/?q=content/image-searching-commands-and-functions#waitforall-command
[223] http://docs.testplant.com/?q=content/script-commands-and-functions#closesuite
[224] http://docs.testplant.com/?q=content/script-commands-and-functions#opensuite-command
[225] http://docs.testplant.com/?q=content/eggplant-global-properties#the-initialsuites
[226] http://docs.testplant.com/?q=content/reporting-commands#startmovie-command
139
[227]
[228]
[229]
[230]
[231]
[232]
[233]
[234]
[235]
[236]
[237]
[238]
[239]
[240]
[241]
[242]
[243]
[244]
[245]
[246]
[247]
[248]
[249]
[250]
[251]
[252]
[253]
[254]
[255]
[256]
[257]
[258]
[259]
[260]
[261]
[262]
[263]
[264]
[265]
[266]
[267]
[268]
[269]
[270]
[271]
[272]
[273]
[274]
[275]
[276]
[277]
[278]
[279]
[280]
[281]
http://docs.testplant.com/?q=content/reporting-commands#stopmovie-command
http://docs.testplant.com/?q=content/reporting-commands#coloratlocation
http://docs.testplant.com/?q=content/sut-commands-and-functions#connectioninfo
http://docs.testplant.com/?q=content/reporting-commands#eggplantversion
http://docs.testplant.com/?q=content/image-searching-commands-and-functions#everyimagelocation
http://docs.testplant.com/?q=content/image-searching-commands-and-functions#everyimagerectangle-function
http://docs.testplant.com/?q=content/found-image-information-functions#foundimageinfo
http://docs.testplant.com/?q=content/found-image-information-functions#foundimagelocation-function
http://docs.testplant.com/?q=content/found-image-information-functions#foundimagename
http://docs.testplant.com/?q=content/found-image-information-functions#foundimagenumber
http://docs.testplant.com/?q=content/global-properties#getoption
http://docs.testplant.com/?q=content/global-properties#getoptions
http://docs.testplant.com/?q=content/image-information-functions#imagecoloratlocation
http://docs.testplant.com/?q=content/image-searching-commands-and-functions#imagefound
http://docs.testplant.com/?q=content/image-information-functions#imagehotspot
http://docs.testplant.com/?q=content/image-information-functions#imagesize
http://docs.testplant.com/?q=content/sut-commands-and-functions#allconnectioninfo
http://docs.testplant.com/?q=content/mouse-commands-and-functions#mouselocation
http://docs.testplant.com/?q=content/script-commands-and-functions#opensuites-function
http://docs.testplant.com/?q=content/text-commands-and-functions#readtable-function
http://docs.testplant.com/?q=content/text-commands-and-functions#readtext-function
http://docs.testplant.com/?q=content/text-commands-and-functions#remoteclipboard
http://docs.testplant.com/?q=content/sut-commands-and-functions#remotescreenrectangle
http://docs.testplant.com/?q=content/sut-commands-and-functions#remotescreensize
http://docs.testplant.com/?q=content/script-commands-and-functions#runningfromcommandline
http://docs.testplant.com/?q=content/reporting-commands#suiteinfo
http://docs.testplant.com/?q=content/eggplant-global-properties#the-defaulttextstyle
http://docs.testplant.com/?q=content/eggplant-global-properties#the-defaultusemarkup
http://docs.testplant.com/?q=content/eggplant-global-properties#the-finalsuites
http://docs.testplant.com/?q=content/eggplant-global-properties#the-hotspotscaling
http://docs.testplant.com/?q=content/eggplant-global-properties#the-readtextsettings
http://docs.testplant.com/?q=content/eggplant-global-properties#the-remoteclipboard
http://docs.testplant.com/?q=content/eggplant-global-properties#the-repositionpoint
http://docs.testplant.com/?q=content/run-options#the-imagesearchcount
http://docs.testplant.com/?q=content/run-options#the-imagesearchdelay
http://docs.testplant.com/?q=content/run-options#the-imagesearchtime
http://docs.testplant.com/?q=content/run-options#the-keydowndelay
http://docs.testplant.com/?q=content/run-options#the-mouseclickdelay
http://docs.testplant.com/?q=content/run-options#the-mousedoubleclickdelay
http://docs.testplant.com/?q=content/run-options#the-mousemovedelay
http://docs.testplant.com/?q=content/run-options#the-mousemovemode
http://docs.testplant.com/?q=content/run-options#the-mousemovespeed
http://docs.testplant.com/?q=content/run-options#the-nextkeydelay
http://docs.testplant.com/?q=content/run-options#the-standardimagetolerance-and-the-preciseimagetolerance
http://docs.testplant.com/?q=content/run-options#the-sendshiftforcaps
http://docs.testplant.com/?q=content/run-options#the-swipespeed
http://docs.testplant.com/?q=content/reporting-commands#assert-command
http://docs.testplant.com/?q=content/finding-images#image-scaling
http://docs.testplant.com/?q=content/sending-test-results-email
http://docs.testplant.com/?q=content/text-commands-and-functions#ValidPattern-property
http://docs.testplant.com/?q=content/finding-text
http://docs.testplant.com/?q=content/working-text-image-generators-tigs
http://docs.testplant.com/?q=content/eggdrive
http://www.testplant.com/phpBB2/index.php
http://127.0.0.1/?q=taxonomy/term/9
140