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.

Compatibility

Mac: macOS 11, 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.

Notes

  • 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.2.0 (11 May 2021)

Features

  • Officially supports macOS 11 (Big Sur):
    • Eggplant Studio, iOS Gateway, and Android Gateway in concert with Eggplant DAI 5.2.
    • Note that Eggplant DAI requires macOS 11.2 and is not compatible with macOS 11.1.
  • Adds support for multiple monitors with RDP connection:
    • As many as 5 monitors can be now displayed in an RDP connection in the Fusion Engine. Additionally, new SenseTalk commands allow users to manage these monitors in the Studio Viewer window to assist in automation tasks.
  • Improves security of SUT credentials:
    • The Fusion Engine improves the encryption mechanism and tightens the security of credentials used to connect to a SUT by storing and retrieving them from the system keyring. This new capability makes secure objects a first-class citizen, prevents passwords from appearing in plain text, and stores SUT passwords in the system keyring.
  • Adds SenseTalk commands for zip and unzip of files and folders:
    • SenseTalk now offers commands to quickly compress and decompress files and folders to easily work with large data sets. Additionally, optional parameters are included, such as password, encryption, compression level, and override existing files.
  • Enables end-user license agreement (EULA) in-app acceptance on first launch:
    • Available from Help menu as well, with date of acceptance.
    • Does not appear for FEDrive (DAI) or CLI without GUI.

SenseTalk Improvements

  • Adds the ability to delete items by value, rather than only by their position. This is done using an each expression, which can be used to delete items in a list or any text chunk type (lines, words, items, or characters). A where, which, or whose clause selects the specific values to be deleted:
  • delete each item of scores which is equal to zero

    delete each line of file "entries" which is empty

    delete each item of subscriberList whose expirationDate is earlier than yesterday

  • Adds the ability to use each expressions with many commands to apply the command action across many items in a list or text chunks in a string (lines, words, items, or characters). A where, which, or whose clause can be used to select specific values to be affected. The commands that support this include: put, set, insert, push, pull, pop, replace, sort, split, join, add, subtract, multiply, divide, reverse, shuffle, add properties, replace properties, remove properties, retain properties, rename properties, and read.
  • set each item of grandTotals to zero — sets each item in a list

    add 5 to each item of scores which is less than 20

    put "*" after each word of text which ends with "ology"

    rename each item of recordList using internalRecordNames

    pull each item of readings which is more than 100 into highValues

  • Adds four new every expressions, which are similar to each expressions but are used to test a set of values at once to see if they meet a certain criterion. The four variations are:
    • every: to determine if a test is true for all values;
    • not every: to determine if a test is not true for all values;
    • at least one: to determine if a test is true for at list one value;
    • not one of (or none of): to determine if a test is false for all values.
  • These expressions can be applied to all, or a selection of, items in a list or text chunks in a string (lines, words, items, or characters). To apply the test to a selected set of values rather than all values, a where, which, or whose clause enclosed in { } can be used to specify which values to include.

    set numList to [1,3,7,12,43,99]

    put every item of numList is a number —> True

    put not every item of numList is divisible by 3 —> True

    put at least one item in numList is divisible by 3 —>True

    put at least one item in numList is 77 —> False

    put not one item in numList is less than 0 —> True

    put none of the items in numList is equal to 500 —>True

  • Added a zip file or zip folder command for creating a .zip file archive. These commands will create a compressed archive of the contents of a file or of the entire contents of a folder. You can optionally specify a name and/or location for the created .zip file.

    zip file "abc.d" — creates file "abc.d.zip" in the same folder

    zip folder "results" as "archive.zip"

    zip file "myData.txt" into folder "zippers"

    Additional options are available to encrypt the archive with a password, set the compression level, and to specify the files to be included and whether subfolders should be included when zipping the contents of a folder.

  • Added an unzip file command for extracting a .zip file archive. The unzip file command will uncompress and extract the contents of a .zip file. You can optionally specify a name for the unzipped file. You can also specify a folder to receive the unzipped contents.

    unzip file "datapak.zip" as "localData.txt"

    unzip file "archive.zip" into folder "oldResults"

    Additional options are available to decrypt a password-protected archive, and to control whether existing files should be overwritten, or only overwritten by newer versions.

Bug Fixes

  • StartMovie no longer crashes in some situations.
  • Searching for an image in a collection will no longer cause CPU spikes and Studio to become unresponsive.
  • Fusion Engine now preserves the current connection between snippets.
  • Fusion Engine now properly reports exceptions in all situations.
  • The OCR Engine is now available when running on an Azure environment.
  • Fusion Engine satisfactorily passes records containing numbers from Eggplant DAI.
  • Fusion Engine no longer adds additional characters when passing records from Eggplant DAI.
  • Studio now provides the correct path to "the result" when the script is in a folder.
  • GPSListParser errors no longer appear in the log and descriptions are retained in image files. Note that on Mac, description text has not been retained since Studio 19.2.
  • Studio no longer crashes in certain situations when opening a session.
  • An Image search now politely ends if DOM Match diagnostic preference is enabled and the image cannot be found.
  • The Image Selection tray is properly disabled in the image collection while performing a search.
  • Logging has been reduced when a SmartCard is not enabled for an RDP Connection.
  • SenseTalk correctly asserts when using the within operator.
  • SenseTalk accurately asserts when using the is not between operator.
  • SenseTalk consistently compares date/time values in certain situations.
  • SenseTalk immediately writes binary data to a file when the full path to the file was absent.
  • SenseTalk no longer accidentally returns a list when getting the minimum or maximum value of a single-value list.
  • SenseTalk unarchives date/time values precisely.
  • SenseTalk handles cases where a range of pattern matches would sometimes acting like a string, not a list.
  • The link destination is accessible from a symbolic link file on Linux systems.
  • The "parameters" property is once again populated by the extractURL function on newer versions of MacOS.
  • Restores the standardFormat representation of binary data, which had changed on newer versions of MacOS.

21.1.0 (1 Feb 2021)

Features

  • 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)

Features

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 May 19, 2021, at 04:16:28 PM.

Eggplant icon Eggplantsoftware.com | Documentation Home | User Forums | Support | Copyright © 2021 Eggplant