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&sid=ef4b0b399b15ceb7ebd0957abe126be3 [73] http://www.testplant.com/phpBB2/viewforum.php?f=5&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&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
© Copyright 2025 Paperzz