Skip to main content

Eggplant Functional v17 Release Notes

The notes below provide descriptions of the new features and changes introduced with each release of Eggplant Functional. You are strongly encouraged to read about the relevant changes whenever you upgrade from an earlier version.

Potential compatibility issues are highlighted in RED.


Mac: macOS 10.13, macOS 10.12. OS X 10.11, OS X 10.10, OS X 10.9

Windows: Windows 10, Windows 8, Windows 7, Windows Server 2012, Windows Server 2008

Linux: 64-bit distributions only. Red Hat Enterprise Server 6 or later (and compatible distributions), Debian 5 or later, Ubuntu 12.04, 14.04

Release 17.2.1 (24 October 2017)

API Testing Improvements

  • Adds the following types of auto-correction to API tests:
    • Adds http:// to the URL.
    • Removes duplicate http from the URL.
    • Removes trailing ? character from the URL.
    • Validates JSON that is being submitted.
    • Verifies that a body is present on POST, PUT, and PATCH requests.
    • Validates XML body (Mac only).

Bug Fixes / Tweaks

  • Fixes a problem that could cause script execution to fail to end.
  • Improves behavior when running Eggplant Functional across multiple monitors.
  • Fixes a problem that caused the api() function to persist beyond interrupted script executions.
  • Fixes a problem that could cause API tests to fail to save.
  • Adds support for externally produced, grayscale images to be used in suites.
  • For command-line execution, now supports using the -param argument in any position, not just as the final argument.
  • Fixes a problem that could cause generated script commands to contain unused property placeholders.
  • Updates Eggplant Functional to support Zlib VNC encodings on macOS 10.13.
  • Fixes several performance and stability issues.

Release 17.2 (26 September 2017)


  • API Testing: Adds a new script type, API Tests, for testing REST and SOAP web APIs.
  • OCR Tuner: The OCR tuner enables you to preview OCR behavior during scripting.
  • Character Collections: Character collections are sets of character images that you can search for as strings. Character collections are useful for consistent but low-quality text that is not suitable for OCR use.

Scripting Improvements

  • Adds Suite Variables, which are set in the Settings tab and predefined to be usable by any script in the suite, include API scripts.

  • You can now create Screenshot connections using the connect command by passing the full file path to the screenshot for the name and adding type:"screenshot".

  • Adds the CSVFormat and CSVValue functions.

  • The TypeEncodedText command now logs that it was called.

  • Adds the textStyle global property. This new global property is shorthand for a given style of the current text platform, as in:

    set the textstyle.caseSensitive to yes

  • The textStyle can be used to refer to any of the styles defined in Preferences, as in:

    set the textstyle to "Android"

User Interface Improvements

  • OCR Tuner: This can be turned on from the Remote Window Toolbar or from the Capture Area context menu. When shown, the OCR Tuner displays what is read in the Capture Area with the shown settings. You can adjust the search area and change properties until you determine the best settings for your SUT. You can then save those properties as a Text Style.

  • Diagnostic Preferences: In eggPlant > Preferences > Run > Diagnostics, you can now choose the search heuristics you use for the Image Update feature, for both images and text, and for both manual and automatic updates.

  • Text Preferences: Infrequently used settings have been moved into the Advanced Platform Options section. Also, there is a new preference that enables logging of all text found with OCR.

  • Resource Files: You can now drag new resource files into the Resource list in your suite, or add a new resource by right-clicking the Resource list and choosing Add Resource.

  • Character Collections: Character Collections provide a way to identify hard-to-read text on the SUT, such as low-resolution text. Character Collections work best with consistent text that is not anti-aliased.

    To create a Character Collection:

    1. Choose Control > Start a Character Capture Session.

    2. In the Viewer window, click each character that you want to include in your collection. When finished, select End Session.

    3. In the Sessions panel, name and open your session.

    4. Select each character in the list to verify what it is, and adjust the Capture Area if necessary.

    5. When you are through, click Generate Images.

    6. You can then use the Character Collection in a script:

      Log readCharacters(myRect, characterCollection:"LowResText")

Command Line Improvements

  • When starting from the command line, you can use -password64 VALUE to pass in a Base64-encoded version of the password. Similarly, you can use -pass_code64 to pass in a Base64 encoded version of the passcode.
  • You can now create a session log when running in drive mode by passing -DriveOutputFile PATH.

Bug Fixes / Tweaks

  • Hot spots now show when Image Highlighting is enabled.
  • RDP connections will not attempt to reconnect when another user logs that session out.
  • With the latest RLM License Server, licenses are always released after an hour delay. This can be reduced to 10 minutes.
  • Fixes a stability problem when Eggplant suites have unresolved helper suite references.
  • Fixes a problem where auto-update fails to engage for some OCR searches.
  • Fixes an [NSConcreteTask terminationStatus] exception when running a shell() command.
  • Fixes a problem running the Testplant RLM License Server on Linux.
  • Fixes a rare problem closing suites with the (X) on Windows and Linux.
  • Fixes stability problems in the Variable Watcher when set to Always Display.
  • Fixes problems with invalid XML in the RunHistory file.
  • Fixes some stability issues parsing JSON.
  • Improves memory performance when running a schedule.
  • Fixes some stability issues using the suite-wide search field.
  • Post-run scripts will no longer be logged (as pre-Eggplant Functional 17.1.5).
  • Reverts behavior when script properties are accessed directly as an object.
  • Restores behavior where a call to ConnectionInfo() will return information on a failed connection.
  • Fixes an error when calling SuiteInfo().path in a post-execution script.
  • Fixes an exception when Adding a Representation on the Image Update panel.
  • Fixes several problems with find and replace looping through the entire suite.
  • Fixes a problem with helper suites that have a dot in the filename.
  • Fixes an NSSmallFloat exception when moving a suite window.
  • Adds support for the PrintScreen key over RDP connections.
  • Rapid Capture Sessions now minimize the number of screenshots that are stored on disk.
  • Improves the look of the Status icons in the Connection List.
  • Improves some visual issues on the Save Image panel.
  • Fixes a problem with toggling the captureMode in a script.

Release 17.1.5 (3 August 2017)


  • You can now use Gherkin Tags to run a subset of your scenarios.
  • You can now use Gherkin Hooks to call common behaviors before and after various Gherkin actions.
  • You can now run Gherkin Features from a master script using the RunFeature command.

Scripting Improvements

  • Gherkin Scenarios can have multiple tags, separated by spaces, before the Scenario keyword. When running a Feature, the tags to run can be specified:

    • If tags are separated by commas, it means ANY of the tags (OR behaviors).
    • If tags are separated by SPACES, then it must match ALL of the tags (AND behaviors).
    • If a tag is preceded by a tilde (~), that means NOT.
    • "@a,@b ~@c" means run scenario if (A or B) AND not C.
    • Tags can be specified in the UI using the Tags field, and also from the command line using -param "@tag".
  • The following Gherkin Hooks can be provided in the corresponding script (or one included with #script):

  • to handle hook_after_feature

  • to handle hook_before_feature

  • to handle hook_before_scenario

  • to handle hook_after_scenario

  • to handle hook_before_step

  • to handle hook_after_step

  • The new RunFeature command lets you specify a feature file to run in its own results context (similar to RunWithNewResults). You can optionally specify tags:

  • RunFeature "MyFeature", "@MyTag"

  • You can now control whether a Gherkin feature skips the other steps of a scenario when an error is encountered:

  • defaults write Eggplant AbortScenarioOnError YES

Bug Fixes/Tweaks

  • You can now double-click on the Gherkin status line in the results to jump to the corresponding step declaration in the feature file.
  • Fixes a problem when working with suite assets found using the suite-wide search.
  • Fixes problems where new collection folders weren't shown in the Save Image panel.
  • Using Copy in capture mode stores coordinates for the current capture area and no longer takes you out of capture mode.
  • Fixes a problem where the Windows Uninstaller wouldn't terminate an active runscript. This could cause errors when doing a fresh install.
  • You can now disable bounding box edge detection:
    • defaults write Eggplant DisableDefaultBoundingBox YES
  • Fixes a crash on Mac that could occur when the Connection window was resized.
  • Fixes a problem processing certain XML files.
  • Fixes a problem with the Mouse Location item on the Remote Window toolbar.
  • Fixes a problem that could occur sending InstallApp to a mobile gateway.
  • Fixes a crash that could occur when allocating a new window on Windows.
  • Fixes a stability problem when working with large Microsoft Excel files.
  • Fixes a problem where Excel files and databases did not close when a script ended.
  • Fixes a problem where edge detection engaged when users tried to click on a highlight rectangle from the Image Update panel.

Release 17.1.4 (30 June 2017)


  • LiveDrive allows you to bring up eggPlant Functional in Drive mode with the GUI available. This is particularly useful when debugging code sent from external agents. To enable this, use the argument -rungui YES

  • You can now retrieve the ResponseHeaders of a URL.

    put the responseHeaders of url ""

Bug Fixes/Tweaks

  • Fixes a problem using ODBC on Linux platforms.
  • Fixes a hang that could occur when a collection with many images was brought up in the Image Update panel.
  • Fixes crashes that could occur in the Image Update panel.
  • Adds the ability to reveal a Resource in the file system.
  • Calls to retrieve URL values with a common content-type header now convert the returned data to the defaultStringEncoding.
  • Prevents adding a full Suite under the Image folder.
  • Fixes a problem importing images with capitalized extensions.
  • Fixes a problem where simultaneously starting multiple instances of eggPlant Functional on Windows could fail.
  • Fixes a problem with the shell() command on Windows that redirected output to a file.
  • Fixes a problem using certain images for Screenshot Connections.
  • Fixes a problem where underscores '_' were not used with the ValidCharacters:"*" expression.
  • Fixes a problem sorting the Connection List.

Release 17.1.3 (20 May 2017)

Bug Fixes/Tweaks

  • Fixes a crash that could occur after the Image Update panel appears.
  • Fixes a problem where execution licenses could prevent finding GUI licenses on 64-bit versions of eggPlant Functional.
  • Adds the ability to reveal a resource in the file system.
  • Fixes a compatibility problem with node expressions used as a container.
  • Fixes a problem where disconnecting from the SUT during a Turbo Capture session could leave eggPlant Functional in a confused state.
  • Fixes problems sending actions that used the Live Mode toggle key.
  • Fixes problems setting Shift as the Live Mode toggle key.
  • Fixes a problem where making changes on the Settings page of a suite could cause a hang.

Release 17.1.2 (22 April 2017)

Bug Fixes/Tweaks

  • Fixes a problem with the Cursor Location toolbar item.
  • Removes stray logging when edge detection is triggered.

Release 17.1.1 (19 April 2017)

User Interface Improvements

  • Edge Detection is now the default behavior when capturing in the Viewer window. You can Shift-click (or drag) to move the existing capture area.

Connection Improvements

  • Adds support for TLS 1.2 in RDP connections.

Scripting Improvements

  • Extends Excel support up to 16,384 columns.
  • Adds the ability for Auto Update to trigger on ImageFound() calls.
    • set the VerifyImageFound to "Always"

Bug Fixes / Tweaks

  • Fixes a hang adding images when ADB is set to not launch on startup.
  • Fixes a problem where Image Update suggestions could appear blank on Windows.
  • Adds libcrypt library support for Fedora 21.
  • Fixes an exception ending a script that started but didn't stop a movie.
  • Fixes a problem with the first click in a Turbo Capture session.
  • Fixes an exception when using the color panel during OCR commands during a Turbo Capture session.
  • Fixes a problem triggering OCR updates during Auto Update.
  • Fixes a crash closing an image tab while search is still ongoing.
  • Adds extended tooltip information for Scripts in the side panel.
  • Adds support for ApplicationKey over RDP on 64-bit.
  • Fixes a problem with Image Tolerance sliders not updating the image as they moved.

Release 17.1.0 (31 March 2017)


  • Microsoft Excel support: eggPlant can now read and write values from Microsoft Excel (.xlsx) files as part of your script. See the Scripting Improvements section for more detail.
  • Image Update remedies: Quickly pick from eggPlant's suggested remedies with unique replacement images or attribute changes to make your scripts more robust.
  • Multi-Image Update panel: When searching using an image collection, all of the images are presented in the Image Update panel.
  • Rapid Capture: Quickly click on interface elements that you want to capture as images in rapid succession. The new edge detection mechanism will automatically home in on most images.

User Interface Improvements

  • Use edge detection in Capture Mode to automatically size your capture region by Shift-clicking on the remote viewer screen.
  • The Image Update panel now shows recommended remedies. You can select one of the suggested remedies to capture a new image or alter the image properties.
  • Rapid Image Capture sessions can be started from the Control menu or Viewer window toolbar. In this capture mode, you can click on each interface element that you want to capture. When you end the session, every screen location you clicked will have a suggested capture region. You can then adjust, name, and generate a new set of images.
  • Turbo Capture sessions now use edge detection to detect image borders. When text is found at or near the image, you can choose to insert an optical character recognition (OCR) command instead of capturing an image. You can also choose to use an existing matching image instead of capturing a new one.
  • The Image Update panel now searches all images in a collection or image search command. These images are listed at the top of the panel. You can select a particular image, then diagnose or adjust its properties.
  • The OCR Update panel now performs a standard search to catch timing errors. This panel will also shows recommended remedies to match text on the screen. You can use those settings temporarily or copy and apply them to your script.

Connection Improvements

  • Adds support for tight encoding in UltraVNC (VNC Preferences). This mode is a lossy compression that is helpful when using Live Mode over a low latency connection. Note: Tight encoding should not be used when capturing images or running tests.
  • Adds direct support for SSH connections on Windows. You will need to set your private key in your user's SSH directory.
  • Adds capability to use a screenshot as a non-interactive SUT. This is useful for capturing images after the fact or doing image comparisons.
  • Supports RDP connections that have no password set.

Scripting Improvements

  • Adds commands to support encrypted text in script windows. The EncodeText() function takes a string (and optional secret key) that will produce an encoded string. That string can then be used with the TypeEncodedText command (which takes an encoded string and optional key) to type a string on the SUT. If you don't provide a key, the suite will generate and store one for you automatically. You can also generate an encoded string using the Insert menu in the script editor.
  • Access to Microsoft Excel (.xlsx) files can be done via function access or via database commands. The function access approach uses three new SenseTalk functions:
    • The Workbook() function is the starting point for access to an Excel spreadsheet. It takes as its one parameter the pathname to an Excel file. The Workbook function returns a workbook reference which in turn can be used with the Worksheet() or Cell() functions to access the file’s contents, or obtain other information about the workbook.

      set caseBook to Workbook("TestCases.xlsx")

    • The Worksheet() function gives access to a particular worksheet within a workbook. It can be called in two different ways, either passing two parameters (a workbook reference and a sheet identifier), or calling it as a function of the workbook with one additional parameter (the sheet identifier). The sheet identifier may be either the name of the sheet, or its number (1 for the first sheet in the workbook, 2 for the second, etc.).

      set custSheet to Worksheet(caseBook, "Customers") set custSheet to caseBook.Worksheet("Customers") put caseBook's worksheet(2) into custSheet

    • The Cell() function is used to access an individual cell of a worksheet. It can be called by passing two parameters (a worksheet or workbook reference, and a cell identifier), or by calling it as a function of the worksheet or workbook with the cell identifier as its parameter. The cell identifier may be a traditional cell name, such as “C6”, or a pair of numbers identifying the row and column, such as (6,3). The value returned by the Cell function may be a string, number, boolean, or date, depending on what is stored in the spreadsheet cell.

      put cell(custSheet, "D2") into balanceDue put custSheet.cell(4,7) into workingBalance

      The Cell function can also be used to store a value into a cell of the worksheet, or if a reference to the Cell return value is assigned to a variable, that variable acts like a cell reference, so if you store another value in that variable, that value will be written to the cell in the file.

      put the date into cell(mySheet, 3,5) — stores the date into row 3, column 5 add 1 to custSheet's cell("E3") — this will update cell E3 of custSheet

The database approach uses SenseTalk’s database capabilities. The database identifier property list must have “type” and “file” properties, like this: (type:"excel", file:"myWorkbook.xlsx").

Each sheet in the workbook can be treated as a table, accessed by sheet name. The first row of each sheet will be used as the column names and each row after that will be considered a record. For more information, review our documentation on Tables.

Bug Fixes / Tweaks

  • Adds icons to Suite panes that correspond to the toggle buttons on the panes.
  • Adds capability to adjust hot spots when specifying images in a Capture session.
  • Searching a suite now highlights matches in Tables.
  • Fixes a crash that could occur when editing scripts while a schedule was running.
  • Fixes an undo exception that could occur when using backspace.
  • IgnoreSpaces OCR diagnostic now properly ignores spaces in the string to find, as well as in the text read on screen.
  • Adds additional support libraries to support newer versions of Linux.
  • Fixes an exception that could happen when doing certain search terms.
  • Scripts and breakpoints now resolve resources when running a script using its full path.
  • Fixes a problem where you couldn't open a script from the left side if it was already selected.
  • Fixes a problem where changes to the script name weren't shown.
  • Prevents changing a script name to be blank.
  • Fixes a problem in pollDirectories that would then prevent updates to suite resources.
  • Fixes a crash clicking List Branches in SCM checkout.
  • Prevents a situation where the UI was unable to expand table columns.
  • You can now create a new Image folder at the currently selected folder in the Image list.
  • Fixes a problem with Windows Installer that would start installation before the prior version finished uninstalling.
  • Fixes a hang when exporting Preferences.
  • Adds the ability to see tree values in the Variable Watcher.
  • Clicking Done on the License panel saves the license key.
  • Fixes a problem setting file attributes on Windows.

Release 17.0.3 (11 January 2017)

Bug Fixes / Tweaks

  • Assets in the left side menu now show properly for helper suites referred to using a relative path.
  • Fixed a crashing problem that could happen with find and replace and bringing up assets from the left side menu.
  • Fixed a looping problem that occurred during a find and replace.
  • Fixed a problem running scripts referenced using a user home path.
  • Fixed a problem renaming assets on Windows and Linux.
  • Fixed a problem where some new tabs were brought up on the right side, beyond the viewable edge of the window.

Release 17.0.2 (18 December 2016)

Bug Fixes / Tweaks

  • Fixed a problem where running from the command line on Windows would get progressively slower.
  • Fixed a problem where running from the command line on Windows could use incorrect user preferences.
  • Fixed a problem with AltKey when connecting via RDP.
  • Restored the ability to edit helper suite paths. You can no longer attempt to delete "Helped By" helper suites.
  • Helper suites referenced with relative paths should now be visible in the left-hand menus.

Release 17.0.1 (12 December 2016)

Bug Fixes / Tweaks

  • Fixed a problem with Windows key, keypad keys when connecting via RDP.
  • Fixed a problem where image file extensions were added to scripts.
  • Fixed a problem with Omega13 calling AttemptRecovery.
  • Fixed problems establishing RDP connections using Linux.
  • Fixed a problem on Linux reporting NSMallocException.
  • Fixed Next/Prev behavior from the suite-wide search field.
  • Fixed a problem locating helper suites and recording results with some Windows paths.
  • Fixed a problem running with old +Mobile keys.
  • The save image panel now reloads when adding a helper suite.
  • Normalized clipboard behavior with RDP to exclude null terminating character.
  • Fixed a problem uninstalling eggPlant Functional version 16.1.2 properly in some cases.

Release 17.0.0 (28 November 2016)


  • Movie Recording is now available from the Control Menu or Remote Window Toolbar. You can also start and stop movie recording during your script with StartMovie and StopMovie.
  • Integrated Helper Resources: You can view and use the scripts and images from your helper suites in any of the suites they are included in.
  • Suite Find and Replace: You can find, and optionally replace, all instances of a string throughout your suite.
  • ShouldRepositionMouse: The default for this setting has been changed from YES to NO. It is not necessary for most VNC servers because the cursor is sent separately from the screen image image. It is required when using an IP-KVM. It can be re-enabled in the Preferences > Run panel or from a script.
  • The Text search type is now called Smooth: To differentiate the Text search type from OCR, we have renamed it "smooth". This search type is also useful for things besides Text. Existing images will continue to use the same search type, and the label "text" as a search type will still be honored if used in a script. ImageInfo(), however, will now report SearchType:"Smooth" instead of SearchType:"Text".
  • 64-bit support: eggPlant is now a 64-bit application, which improves performance and memory capacity.

Connection Improvements

  • RDP enhancements: RDP should work across a wider variety of security settings and with increased performance in most situations.
  • PinchIn/PinchOut: We have added a toolbar to the remote screen window that lets you manually perform a PinchIn or PinchOut.
  • Settings for eggCloud connections: We have added the ability to control default settings for connections made through eggCloud to the eggCloud preference panel. You can set the value for ColorDepth, ScaleRemoteScreen, and BlendScaledScreen.

User Interface Improvements

  • Integrated Helper Resources: You can view and use the scripts and images from your helper suites in any of the suites they are included in. This can be enabled using the context menu on the suite’s Script and Image lists, respectively.
  • Suite Find and Replace: You can find, and optionally replace, all instances of a string throughout your suite.
  • Scripts can now be stored in subfolders inside a suite. Please be aware that the subfolder is part of the script’s “name”, and that subfolders are not automatically searched. So Script1 in Folder1 must be called using “run Folder1/Script1”
  • Result Images that come from InitialSuites/FinalSuites and Helper Suites will be shown visually in the Results pane when reviewing logs.
  • New Helper Suite menu item and button in the Settings tab allow you to create a new helper that is automatically included by the currently selected suite.
  • Reopening Open Suite tabs from a previous session can now be disabled on the General Preferences panel.
  • A new -open command-line argument. You can open a particular suites from the command line using -open filepath. If other files were left open the last time eggPlant was closed then the suite (or script) specified on the command line is opened instead of whatever was previously opened.

Scripting Improvements

  • Improved multi-line text finding: A new optional attribute, IgnoreNewlines, when set to YES, matches a string even if it’s broken over several lines.
  • SetDeviceLocation function added for Android SUTs. You can use the Android location simulation feature to tell the device it’s at a particular location. You can either specify two number parameters (latitude and longitude) or you can provide a dictionary with any subset of these attributes: latitude, longitude, altitude, bearing, speed, accuracy, time.
  • Allow Which and Whose in Each expressions. These simplify some Where clauses in Each expressions and make them read more nicely. Which is essentially “where each” and Whose is essentially “where each’s”.

Bug Fixes

  • Improved startup time on launching Windows version of eggPlant Functional.
  • Improved Git compatibility to work with more Git tools (GitLab, etc.).
  • Added the ability to indicate a suite to open when starting from the command line.
  • Fixed a bug that could cause remoteClipboard() to fail when using RDP on a command-line script execution.
  • Fixed a bug that could cause the Windows key to erase selected text.
  • Fixed a bug that could cause eggPlant Functional to crash when editing connection information during Connection Doctor use.
  • Fixed a problem where CaptureScreen was not honoring given rectangles.
  • Fixed a bug that could cause multiline text to be reported as being in the wrong location.
  • Increased the variety of white space characters ignored by the ignoreSpaces text (OCR) property.
  • Changed the SCM “Revert” button to “Discard changes” and fixed a bug that could cause the operation to fail on Windows operating systems.
  • Changed the Bonjour Discovery preference to be Off by default.
  • Fixed an uncommon crash associated with images that were not 32 bits per pixel.
  • Fixed a bug that caused RGB values provided for the ContrastColor text property to be ignored.
  • Fixed a bug where eggPlant Functional would not look in the /Library/Eggplant directory for shared RLM license files.