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.

Release v14.21 (14-August-2014)

Viewer Window:

Bug Fixes / Tweaks:

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:

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.

Viewer Window:

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

Insert Repeat Loops. From the Script Insert tool you can highlight a block of your test script and create a repeat loop around the section.

insert test cases. Also from the Script Insert tool you can highlight a block of your test script and turn it into a TestCase.

Image Backgrounds. Added background colors for image previews in the suite editor and Save panel, click to cycle through backgrounds.

eggCloud Integration

Ad-Hoc Reservations. You can now double-click on any available (not reserved) SUT to create an ad-hoc reservation.

Automatically Extend Reservations. You will now automatically extend an connected SUT reservation if the device is still available when your reservation ends.

Scripted Connections. Connect to a SUT by defining a set of properties.If a device is available (or you have a matching reservation) that device will be used. EG:

Connect (

Scripting

WaitFor property. WaitFor can now be a property of any image-searching command. Like the WaitFor command, the WaitFor property is the maximum time eggPlant will wait for the given image to appear on the SUT. Example:

Click (image: “Done_button”, waitFor: 2 minutes).

Automatic WaitFor time calculation. When you capture an image and generate a script command, eggPlant now automatically inserts a WaitFor property in the command if there was a significant delay detected before the image appeared on the SUT.

Support for Additional Image Formats. We now support the following image formats on all platforms: .tiff, .tif, .png, .icns, .ico, .gif, .bmp, .jpg, .jpeg.

The predefined variables yes, no, on, and off are now treated as native boolean values. This allows the equal operator to compare them as equal to true or false (when Normal boolean comparison is in effect, see below).

Added the booleanComparison global property. When set to Normal (the default), this now allows the values Yes and On to compare as equal to True (or each other) and Off and No to compare as equal to False. Although Empty is treated as a valid boolean value (equivalent to False) it will not compare as equal to False. If the booleanComparison is set to "Strict", the values Yes, No, On, and Off will compare as strings, and thus will not be equal to True or False. If the booleanComparison is set to "Lenient", any value that evaluates to the strings "Yes", "No", "On", or "Off" will be treated as booleans for purposes of equality testing with other booleans.

put Yes is true -- true

set the booleanComparison to Lenient

put "off" = false -- true

Updated the StandardFormat function to properly support the new boolean values.

Enhanced the JSONFormat and XMLRPCFormat functions to work with the new boolean values, and also to correctly handle <missing value> (null). In XML-RPC missing values are rendered as <nil /> which is not part of the XML-RPC spec but is a semi-common extension used by Python and some other systems. SenseTalk now recognizes <nil /> and <ex:nil /> when reading XML-RPC values and will convert them to <missing value>.

Changed the add properties command and adding properties operator to treat a property of the destination property list whose value is <missing value> the same as though the property were not there, and replace it with the corresponding source property value.

Enhanced the charToNum and numToChar functions to be able to work with Unicode values greater than 0xFFFF.

Fixed the move file and copy file commands to work correctly when the source file is specified with a path beginning with "~".

Fixed a problem when a recordPrototype property for a database table included properties corresponding to columns in the table, those values would be automatically propagated to the database in some cases.

Bug Fixes/Tweaks

Added FAILURE tag support to JUNIT logging for better compatibility with JIRA and Jenkins.

Failure to license is no longer considered a crash.

Improved the ability to submit support requests through proxy servers.

Fixed a problem that caused an ADB delay when not connecting to an Android server.

Resolved a problem where eggPlant would not terminate when an Android connection was left open to an Android SUT.

Fixed a problem that could lead to a “Tried to add nil to array” when an Android device was plugged in via USB.

Cleaned up some inconsistencies with the preview text when using the Script Insert tool.

Fixed a variety of problems with running multiple simultaneous Searches using the Image Doctor.

Fixed a problem where eggPlant would pause when mousing over a network resource declaration beginning with a double-slash (//).

Cleaned up several cosmetic artifacts in the preference panes on Windows.

Solved a lock-up problem when closing the suite while generating a command using an existing image.

Cleaned up some display artifacts with the auto-completion tool on Windows.

Resolved a situation when schedule runs completed.

Improved handling of the ClipRectangle property for images.

Resolved a hang when using the Find feature in the Run Window.

Fixed a crash on Mac when trying to SSH to an unavailable port.

Improved behavior of Context Menu in the Connection List.

Release v14.01 (13-November-2013)

Highlights

Support for improved eggOn for Android.

Ability to enter a license from the command-line.

Numerous Bug Fixes.

Licensing

•

eggPlant now supports the ability to enter a license key from the command line by passing the -LicenseKey and -LicenseUser.After applying the license eggPlant will immediately terminate with success condition (0) if the license was accepted.

Fixed a bug where the screen capture buffer doesn't refresh properly after an exception is thrown.

Release v14.00 (24-October-2013)

Added Database Integration via ODBC

Automatic Image-Naming for images with Text.

New Rotated Image Searching

Introduced new Mobile Commands

Connect List Filtering and Other Improvements

Compatibility

Mac OS X 10.7, 10.8, 10.9

This release is compatible with Mac OS X 10.7 and higher, Mac OS X 10.6 and below are no longer supported.

Windows XP, 7, 8

This release is compatible with Windows XP, 7 and 8.Please be aware that releases AFTER April 8th, 2014 will drop Windows XP compatibility.

Linux Debian, RedHat

This release is compatible with 32-bit versions of Debian and RedHat based on glibc 2.5 and higher.64-bit distributions must have supported versions of all dependent 32-bit libraries.

ODBC Database Integration

Added the capability to read to and write from available ODBC databases. See the eggPlant documentation for complete usage and instructions.

Interface

Auto Image-Naming. Now, when you capture an image, text that is detected in the image becomes the default image name.You can disable this behavior in the the eggPlant->Preferences->Viewer.

Image Capture. Has now been improved with capture handles, dynamic cursors to indicate resizing and the following modifier keys can be use:

Arrow KeysMove The Capture Area

+Ctrl/CommandMove The Hot Spot

+Alt/Option Enlarge/Shrink the Capture Area

+ShiftMove In Increments of 10

Image Scaling and Rotation. The Image interface now allows you to specify the default scale and rotation values to use when an image is searched for. This value can be overridden in a script.

Auto completion in scripts has been added for Windows and Linux versions of eggPlant.You can trigger completion by hitting the Escape key or selecting "Edit->Complete" from the Menu.The editor will attempt to complete your statement with a valid eggPlant Command, constant image name, script name, or variable from your current script.

Image-Popover preferences. Added preferences to all users to turn enable and disable image popovers, both in the image list and in scripts.

eggCloud preferences. Added a preference panel to connect to an eggCloud installation.

Connection List

The Connection List now has a filter field to narrow down the connections shown by display name. If you are using the eggCloud device-reservation system, you can also filter the Connection List by SUT operating system, version, and meta tags.

The Connection List now will now show devices available from an authenticated eggCloud system. You are able to create reservations and connect to reserved devices directly from the connection list.

The Add/Edit Connection panel now has a Connect button. When you click the Connect button, a connection is immediately established.

The Add/Edit Connection panel now has a Remember This Connection checkbox, which is selected by default. When this checkbox is selected, your current connection is permanently saved in the Connection List; otherwise, the connection is removed at the end of your eggPlant session. Temporary connections are shown in italicized text in the connection list.

Connections made from a script and reverse connections are no longer automatically saved in your Connection List.

You can now choose the columns that you want to view and hide in the Connection List. From the Connection menu, use the Customize Columns submenu to select the items you want to see.

Scripting

The current RecordMovie command on Mac OS X is now deprecated.The command can still be called but it will not be supported on future versions of Mac OS X.A replacement movie technology will be available in a future release of eggPlant.

For scaled image searching we now provide TWO modes of scaling relative to the current SUT size.The mode previously named scale: "Auto" is now called scale: "Proportional" to clarify that it will scale proportional to the smaller change in SUT height or width.To scale an image to the SUT height and width independently use scale: "Stretch".

Added other mobile commands that behave the same way as their conventional counterparts:

Tap = Click

DoubleTap = DoubleClick

Press = MouseDown

Release = MouseUp

•You can now add a Rotate property to an image search, to indicate a degree of rotation (or list or range of degrees) if you expect an image to appear at a different angle than was originally captured. Rotation is clockwise.

Click (name: "appIcon", rotate: 180) // Searches for appIcon at 180 degrees from its original angle

We now have a function SuiteInfo() that returns the following formation about a Suite:

Name: the name of the suite

Path: the full path of the suite

ScriptsFolder: the path of the Scripts folder

ImagesFolder: the path of the Images folder

ResultsFolder: the path of the Results folder

Version: the eggPlant version number of the suite (usually the version of eggPlant that created the suite)

Description: the description of the suite as entered on the Settings tab of the suite

•Added a format, with format, or using format operator to allow specifying a particular format for an individual numeric, date, or data value.

put (13 / 2) with format "00.000" -- displays "06.500"

•Added the ability to access the format property of a variable containing a number or a data value (previously only date/time values could have a format).

put 13 into foo

set the format of foo to "hex"

put foo -- 0xD

set foo's format to "words"

put foo -- thirteen

put "000.000" into foo.format

put foo -- 013.000

put foo's format -- 000.000

•The numberFormat or the defaultNumberFormat property (or the format property of a numeric variable) can now be set to "Hexadecimal" or "Hex" to display numbers in hexadecimal format:

set the numberFormat to "hex"

•Added the defaultDataFormat global property to control the way binary data values are displayed. The defaultDataFormat can be set to any of "auto", "text", "hex", "base64", or "size". In addition, the auto and text formats can include a parameter: "auto: maxHexSize", "text: stringEncoding".

•Added trimAll() function (similar to trim, trimStart, and trimEnd) to remove all whitespace (or other characters) from a text value. This function takes one or two parameters. The first parameter is the source text value to be trimmed. The second (optional) parameter is a text string defining the set of characters that will be removed from the source text. If the second parameter is not given, whitespace and newline characters will be trimmed by default.

•Added keepCharacters() function which removes all characters from text except for alphanumeric characters (letters and digits) or another set of characters that you specify. This function takes one or two parameters. The first parameter is the source text value to be filtered. The second (optional) parameter is a text string defining the set of characters that will be kept in the source text. If the second parameter is not given, letters and digits will be kept by default.

•Fixed expressions of the form a.func(b) or a's func(b) to work when a is a variable. Previously, expressions of this form worked when a was a number or a literal, but not a variable. Either syntax is equivalent to calling func(a,b).

•Added a new syntax for comparing two values for equality: val1andval2are equal.

put 5 * 3 and 15 are equal

put "CAT" and "cat" aren't equal considering case

•Added the same as as a synonym for equal or equal to. The following all report 'true':

put 5 * 3 is the same as 15

put 4 + 6 isn't the same as 2 * 12

put "cat" and "dog" are not the same

•Changed the standardFormat() function to use square brackets rather than curly braces for lists.

HotSpotScaling. Added the HotSpotScaling global property, which determines whether image hot spots are scaled when you search for a scaled image. The values are as follows:

Inner. Inner works the way hot spot scaling has worked in the past: if a hot spot is within the searchable pixels of an image, it is scaled with the image. If the hot spot is offset from the image, it is not scaled. Inner is the default value of the HotSpotScaling.

All. Hot spots are always scaled proportionally when you search for a scaled image.

None. Hot spots are never scaled when you search for a scaled image.

Ask/Answer behavior. When Ask or Answer commands are called in a script run from the command line, they will now act as though they had been called with a timeout parameter that timed out immediately. When Ask File or Answer File commands are called, they will act as though their Cancel button had been clicked. The previous implementation was undefined (it would behave differently in different environments), but it can be restored by using:

default write Eggplant oldCommandLineAskAnswerBehavior YES

BooleanComparison. Added the booleanComparison global property, which offers choices of how boolean values are compared:

Normal. When set to Normal (the default), this now allows the values Yes and On to compare as equal to True (or each other) and Off and No to compare as equal to False. Although Empty is treated as a valid boolean value (equivalent to False) it will not compare as equal to False.

Strict. If the booleanComparison is set to Strict, the values Yes, No, On, and Off will compare as strings, and thus will not be equal to True or False.

Lenient. If the booleanComparison is set to Lenient, any value that evaluates to the strings "Yes", "No", "On", or "Off" will be treated as booleans for purposes of equality testing with other booleans.

Bug Fixes / Tweaks

Fixed an editor bug that could raise a glyphRangeForCharacterRange: exception.

Fixed a bug where sometimes the Run Selection did not properly correspond to the actual selection in the Script Editor.

Fixed a long-standing issue on Windows that limited how many times you could make a new connection.You should now be able to make thousands of calls to the Connect command.

Fixed several crashing bugs that could occur when the image was near the edge of the screen.

Fixed a problem where the Run Date column would display bad characters when Korean was the active language.

Fixed a bug that caused bug submission to fail sometimes.

Fixed a bug that sometimes caused times to be offset several hours in script logs.

Fixed an exception that could occur when viewing logs on Linux.

Fixed a bug that caused the Viewer window capture buttons to be disabled in capture mode.

Fixed a bug that caused the Run Window buttons to be disabled.

Fixed a bug that caused in-script text platform changes to be overlooked.

Fixed a problem where Text Commands created using the Generation Tools did not properly reference the Text Style from the Text Platform.

Fixed a problem where Scaling"Fixes" applied by the Image Doctor would not persist.Using the Image Doctor now sets the Image's default scale as shown in the Image Editor.

Fixed a problem where Adding a Representation using the Original Location would throw an exception.

Fixed a problem where Adding a Representation would not properly switch to the new folder if "Remember Save Image Folder" was disabled.