EggPlant UserGuide

March 29, 2018 | Author: Bidhi Samantray | Category: Optical Character Recognition, Window (Computing), Computer Keyboard, System Software, Software


Comments



Description

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