Eggplant Functional 21 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.15, macOS 10.14, macOS 10.13, macOS 10.12.

Windows: 64-bit distributions only. Windows 10, Windows 7, Windows Server 2016, Windows Server 2012, Windows Server 2008.

Linux: 64-bit distributions only. Ubuntu 16. Red Hat 7. CentOS 7.

Ports: TCP 5052-5054. For SUTs: RDP: 3389. VNC: 5900. WebDriver: 4444.


  • Eggplant Functional will no longer support Windows 7 starting in 2021.
  • Red Hat 6 and CentOS 6 are no longer supported.
  • A bug exists in the MySQL Connector for ODBC 8.0 on Windows 10 systems that causes Eggplant Functional to crash when connecting to an ODBC database. The crash typically occurs when connecting for the second time. See the MySQL forums here for any updates on the status of this issue from MySQL. The only known workaround is to use the older version 5.3 connector instead.
  • Scheduler functionality will be removed in a future release of Eggplant Functional, as this functionality will be available as part of Eggplant DAI.

21.1.0 (1 Feb 2021)


  • The StartMovie command now records in MP4 format by default.
  • You can now choose to have Eggplant Functional add a new representation of an image instead of healing the existing image when Automatic Asset Healing is enabled.
  • Automation can now be done in real-time on an iOS device to simulate reactive behavior, such as playing a game. This functionality requires iOS Gateway 5.8.
  • Adds and updates some SenseTalk commands:
    • Adds the reverse function to return a string or a list in reverse order. If reverse is called with a parameter that is a list or range, the value returned will be a list or range in the opposite order. Otherwise the parameter is treated as a string and the characters of the string are reversed:

      put reverse("abcd") —> "dcba"

      put the reverse of A to Z —> Z to A

      put reverse of ["dog","cat","toad"] —> ["toad","cat","dog"]

      The function also can be called using a reversed syntax:

      put [1,3,46,9,5] reversed —> [5,9,46,3,1]

      put "goldenrod" reversed —> "dornedlog"

    • Adds a shuffle function to return a string or a list in a random order. If shuffle is called with a parameter that is a list, the value returned will be a list of the same values in a random order. Otherwise the parameter is treated as a string and the characters of the string are shuffled randomly:

      put shuffle("ABCD") —> "DBAC"

      put the shuffle of [1,2,3,4,5,6] —> [5,1,3,6,4,2]

      put raffleTickets.shuffle into hopper

      The function can also be called using a shuffled or in shuffled order or in random order syntax:

      put [jack,queen,king,ace] shuffled —> ["ace","queen","king","jack"]

    • Adds reverse and shuffle commands to reverse or shuffle the elements of a container. If called with a variable or other container, its contents are reversed or shuffled directly. Otherwise the result of the reverse or shuffle operation is assigned to the variable it:

      reverse "ABCD" — (not a container, so result goes into 'it')

      put it —> "DCBA"

      set myList to [3,4,5,6,7,8]

      reverse myList

      put myList —> [8,7,6,5,4,3]

      shuffle myList

      put myList —> [4,6,5,8,3,7]

      shuffle [1,3,5,7,9] — (not a container, so result goes into 'it')

      put it —> [7,1,5,9,3]

      reverse the lines of fileContents

    • Adds the ability to iterate through the values of a repeat with each loop in reverse order, by specifying in reverse order:

      repeat with each item of [1,2,3,5,8] in reverse order

      repeat with each line of file "input.txt" in reverse order

    • Adds a rename properties command and renaming properties operator to rename properties of a property list:

      set simplePlist to {a:1, b:2, c:3}

      rename properties {a:"able", b:"bravo"} in simplePlist

      put simplePlist —> {able:1, bravo:2, c:3}


      put {firstName:"Rex", age:88} renaming {firstName:"name"} —> {age:88, name:Rex}

    • A variable can now be used in place of a number in certain pattern expressions.

      set minLength to 3

      set maxLength to 6

      put <from minLength to maxLength characters> matches "abcd" —> True

Bug Fixes

  • Model execution no longer fails with "Snippet error" in certain situations.
  • Model execution no longer crashes with "Invalid Image File" in certain situations.
  • Video recordings no longer contain glitches and jumps in certain situations.
  • Fixes a SenseTalk rounding logic error that could return –0.
  • Sending a GET request in an API call on Windows through a system proxy no longer returns a "400 Bad Request" error.
  • Certain combinations of the FramePerSecond property no longer prevent videos from playing back.
  • API tests now runs consistently on both Mac and Windows.
  • SenseTalk no longer misinterprets some operators based on the grammatical structure of the script.
  • SenseTalk now supports using variables in cases like "from x to y" and "z or more".
  • Studio no longer crashes when dragging suite tabs on Mac.
  • TextDifference once again is suggested when appropriate in the OCR Update panel.
  • The Run window now displays snippets and results during execution from Eggplant DAI design mode.
  • Removes an erroneous error message regarding duplicate unit definitions.
  • SenseTalk no longer adds extra empty items when replacing items in a tree.
  • Fixes an issue where a variable set to missing value (or null) would continue to report as equal to missing value (or null) even after the variable was set to some other value.
  • Corrects a bug that changed a character range to a numeric range (of the Unicode values of the characters) in some situations, such as when the range was stored as an item in a list.
  • Repairs a condition where the retain properties command and retaining operator would also change the capitalization of the retained property name if and only if the property name to retain was given as a single string (not a list or property list).
  • Mends the repeated operator (and quantity of operator) to honor repeating a value as data when "as data" is specified after the value.

21.0.0 (28 Oct 2020)


Bug Fixes

  • Fixes support for FIPS-compliant libraries on Linux.
  • Now correctly encodes tags in XML result output.
  • Fixes an issue where SenseTalk didn't properly handle division operations in certain cases involving fractional units.
  • Addresses a crash that sometimes happened when connecting to or disconnecting from WebDriver connections.
  • Numerous stability fixes and performance improvements.


This topic was last updated on March 12, 2021, at 03:11:03 PM.

Eggplant icon | Documentation Home | User Forums | Support | Copyright © 2021 Eggplant