2.39. Version 4.1.0 Beta 1

Table of Contents

2.39.1. General
2.39.2. New IDE
2.39.3. Qt-specific
2.39.4. Java™-specific
2.39.5. Web-specific
2.39.6. Windows (native)-specific
2.39.7. Mac-specific (Cocoa/Carbon edition)
2.39.8. iPhone/iPad-specific
2.39.9. Tk-specific
2.39.10. Documentation
2.39.11. Source Builds
2.39.12. Classic IDE

2.39.1. General

  • There is now a single package that contains everything—the new IDE, the Squish tools, and the classic IDE, so there is only one package (a .zip file) to download each time you upgrade.

  • Added new functions, mouseMove, mousePress, and mouseRelease for all toolkits.

  • Added new visualization features that show differences between expected and actual images. In addition to strict pixel-by-pixel comparisons, it is also possible to configure them to do a couple of kinds of “fuzzy” matching.

  • Added a new squishrunner --resultdir option to set the output directory for test results. This was introduced to make it possible to set up a custom directory for test results such as failed images of screenshot verification point comparisons. The report file's default format has now been updated to squishrunner xml2.1 format.

  • In addition to the existing support for sharing scripts across all the test cases in a test suite, it is now possible to share scripts globally so that they are accessible by any test case in any test suite. This feature is also supported by the new IDE which can be used to create and manage global script directories and the scripts they contain.

  • Special characters in verification point property values are now handled correctly.

  • Fixed debugging callbacks in JavaScript.

  • Added a File.size function for JavaScript.

  • Made sure that all binary packages contain JavaScript SQL support and scripting languages support.

  • Added support for switching encodings on JavaScript File instances (e.g., to make it easier to work with Windows file encodings).

  • Show JavaScript's this object when debugging “owned” functions.

  • Made sure that application context objects returned by the applicationContextList function have their name property correctly updated for subprocesses.

  • AUT processes are no longer killed too early. Older versions of Squish waited for the AUT's GUI to shut down and then killed the process if it didn't terminate of its own accord. This could cause problems for AUTs that shut down their GUI but wanted to continue processing afterwards. Now Squish waits for the process to terminate—and only if it doesn't terminate after a reasonable amount of time does Squish kill it. (This new approach can be disabled using squishrunner --config option's eagerAUTShutdown action.)

  • Squish no longer crashes when the object.properties function encounters unreadable properties.

  • Fixed a squishrunner problem that could occur when an AUT suddenly exited.

  • Fixed the Perl constants passed to the sendEvent function if the AUT is started using the startApplication function rather than implicitly.

  • When recording using the --testsuite option, squishrunner now supports the --aut option.

  • Fixed some race conditions during the AUT's startup process that could make squishrunner crash.

  • If file squishserverrc cannot be found Squish will fallback to using squishserverrc.txt.

  • Added a new Library class to load C and C++ libraries. This features the Library.prototype.invoke function for calling functions in DLLs and a Library.initModule function. At the moment only functions with the primitive signature void funcName() are supported.

  • Added a new TSL function, list_select_item using GUIObjectProxy.

2.39.2. New IDE

  • Added a Pause/Resume button to the Control Bar so that it is possible to pause and resume test case execution.

  • Added completion support for Symbolic Names. For example, if you press Ctrl+Space after typing waitForObject or findObject, the IDE will look up Symbolic Names from the Object Map that you can choose from. Completion support has also been added to support some of Squish's built in objects such as squishinfo and testData.

  • Added Recent Test Results button to the Test Results view that when clicked provides a drop-down list of the ten most recent test execution results for each suite.

  • Added a GUI setting to change the output directory used for recent test results.

  • Added a new Mask Editor tool.

  • Improved support for Screenshot Verification Points by allowing edit masks and customizable comparison modes.

  • Added support for nested subdirectories in test suite and test case resources.

  • Added support for opening Test Suites by dragging and dropping their directory or suite.conf file onto the IDE. Similarly, support for adding test resources by dragging and dropping has been added.

  • Test cases can be reordered in the Test Suites view's Test Cases list using drag and drop. (When an entire test suite is executed the those test cases that are checked are executed in order from top to bottom in the list.)

  • Added support for checking or unchecking multiple Test Cases in one go.

  • The Squish menu now has a Close Test Suite menu option and a separate Delete Test Suite menu option that do exactly what they say.

  • Added a Run Test Suite menu option to the Squish menu.

  • Added a Copy Property Value menu option to the to Object Properties view's context menu.

  • Switched to a more capable third party editor (PyDev) for editing Python scripts. This provides better syntax highlighting, improved code completion, and many other useful features.

  • Added an Edit button for attachable AUTs shown in the Manage AUTs dialog. This makes it easy to change the host and port settings of Squish-registered applications.

  • The Launch AUT action now also supports selecting one of the registered “attachable” applications. Similary, it is now possible to record an attachable AUT in which case an attachToApplication statement will be recorded rather than a startApplication call.

  • Added an option for removing entries from Screenshot Verification Points.

  • Fixed a problem where the Object Map could accidentally lose entries.

  • Prevented QTP causing errors in the IDE.

  • Fixed a problem that could occur during the extraction of failed screenshot information when the test result message contained quotes.

  • Fixed a problem that could occur when viewing screenshots made due to failed verifications.

  • Fixed a bug which could make the JavaScript Script Console lock up.

  • Test suites can now only be deleted when their associated AUT is not being run.

  • Accidentally renaming the main test script file is now prevented.

  • Fixed a problem that could occur when handling Property Verification Points with multi-line text comparisons.

  • Prevented the appearance of multiple verification point editors that could occur in some situations when starting verification point creation.

  • Added a GUI option to switch on or off the logging of Squish's internal tool communications—froglogic support engineers may ask you to switch this on to help debug problems.

  • Fixed some cases where Null Pointer Exceptions occurred.

  • Ensured that the focus is given to newly opened editors.

  • Introduced a new Global Scripts view for the management and editing of globally shared scripts.

  • Improved the layout of the verification point editor.

  • Verification points can now be fully deleted (including all their properties).

  • Verification points are now correctly created even when using the deprecated hierarchical naming scheme.

  • The Add Mapped AUT dialog now behaves correctly when canceled.

  • Fixed spurious deadlocks that could occur when checking an object in the Application Objects view.

  • Fixed the displayed result text when a verification point is not verified (i.e., the when the test failed).

  • Set the default identation width to four spaces for Perl. (This can, of course, be changed through the IDE's Preferences dialog.)

  • Fixed rendering problems that could occur with the focus-cell highlighter.

  • Fixed a problem that could occur when reloading externally modified CSV data files.

  • Fixed a problem that could occur when fetching image screenshots to be used as the expected image in cases where the object wasn't previously selected in the Spy.

  • Fixed the usage of the Squish IDE plugins in a standard Eclipse installation. Ask froglogic Technical Support for installation instructions.

  • Fixed a problem that occurred when grabbing screenshots of an object whose name contains dots.

  • Fixed spurious startup hangs that could occur on Windows.

  • Fixed a problem that could occur when executing multiple suites immediately after each other.

  • Fixed a problem with Spy context handling in multi-AUT scenarios.

  • Fixed a problem that could occur when handling legacy object names such as "{foo='bar'}.a.b.c".

  • Limited the maximum length of the stored squishserver output.

  • Screenshots are now only grabbed after the IDE has been completely hidden.

2.39.3. Qt-specific

  • Added support for various QML components including the recording and playback of "flick" actions, the detection of HTML and GridView components, and synchronization on animations. Also added a new pressAndHold function and a JavaScript-based QML extension mechanism.

  • Added an extension for Qt Quick Components for Qt/Desktop

  • Introduced a new installSignalHandler function for eavesdropping on Qt signals.

  • Improved Squish's response to reloads in QWebViews.

  • Made name generation significantly faster.

  • Added support for using the QProcess class in test scripts.

  • Improved the error message when invalid row or column values are used when searching for a table or tree item.

  • Added support for properties of type QUrl for auto-wrapped classes.

  • Custom QObject classes' enums are now automatically wrapped.

  • Added support for getting the values of QPointF, QRectF, and QIcon properties with dynamic wrapping.

  • When wrapping QObject-based classes Squish now also wraps properties of type QVariant and properties of other Qt types.

  • Added support for properties of type QChar, char and unsigned char.

  • Improved graphics/view support so that the focus item can be the subject of a call to the type function.

  • Enhanced Squish's ability to spy and pick in QGraphicsWebView widgets so that Squish can now spy recursively into HTML elements.

  • Made the grabWidget function handle null objects gracefully.

  • Improved robustness by invalidating Squish's internal object cache when Squish detects that a QObject has been deleted.

  • Correctly record and replay interactions with empty combobox items.

  • Added mouseClick overloads for Q3TableItems and Q3ListViewItems.

  • Fixed crash which could occur when an embedded HTML component opened a popup window.

  • For QDeclarativeImages the source property is now recorded and matching has been fixed accordingly.

  • Binary packages build with MSVC 10 are now available.

  • MinGW packages for Qt >= 4.7 are now built with a newer compiler version. This fixes crashes that occurred during recording on Windows 7 with the standard style using animations.

  • MeeGo device RPM packages are now available upon request.

  • Avoid incorrectly recording multiple clickLink statements on embedded HTML viewers.

  • Added support for finer-grained movement in the dragItem function for more realistic replay.

  • Fixed the enabling and disabling of native file dialogs on X11 systems.

  • Fixed testing of Qt 4 tables and trees that have a non-default root item set.

  • Fixed a case where openContextMenu was not recorded when it should have been.

  • Added script conversions to and from QVariant objects.

  • Improved the lookup of QActions by taking account the QObject name and visible properties.

  • Fixed crashes for an NSWindow without a content view. (This occurs, for example, in Photoshop CS5.)

  • Added QWebView constructors.

  • Fixed the recording of type on QGraphicsProxyWidgets.

  • Fixed AUT crashes on exit on macOS.

  • Added a castToQObject overload that accepts a QObject and down-casts it to the most-derived type. Safer than using cast for this special purpose.

  • Improved the speed of subprocess handling.

  • Fixed the recording of relative coordinates for Qt 3 QListView items.

  • Added support for doing activateItem calls on QAction objects that were retrieved using Qt API calls (such as menuAction) rather than using findObject.

  • Fixed the finding of custom QGraphicsTextItems with Qt 4.5 and older.

  • Made hardcoded Qt library path names optional. Previously, it was necessary to specify the absolute path name of the Qt library used by the AUT. Now, the setup tool can be used to set Squish to use dynamic detection.

  • Unix only: standard paths like /usr/lib are no longer added to the library search paths to avoid library conflicts.

  • Dropped support for AUTs built with Qt 2.3 and 3.0. Later Qt 3 versions, e.g., 3.1 and later, are still supported.

  • Dropped support for the remaining wstring functions due to wchar_t problems.

  • Dropped special support for hooking into AUTs that are statically linked against Qt. This has not been supported by Qt itself since Qt 4.1. This change also allows using AUTs which are not themselves based on Qt but which start Qt-based subprocesses. The recording of such subprocesses is now possible.

2.39.4. Java™-specific

All Java AUTs.

  • When spying, the object picker no longer highlights widgets on hidden tabs.

  • Fixed a problem with Tree items and column picking when the Tree has been scrolled.

  • Fixed menu recording when the mouse is dragged.

  • Typing double-quotes is no longer recorded as a special key combination.

  • Provided a more robust launcher call for 32-bit applications on macOS with JDK version 1.6 or later.

  • The Java wrapper now honors the “Whitelisted Objects” of native Windows controls.

  • Squish now uses a more robust setting of the CLASSPATH environment variable.

  • Added support for the testing of Eclipse Helios AUTs on macOS—in general all applications that have both an executable and a .app directory with the same name.

  • Fixed the coordinate calculation when replaying clicks on scrolled views.

  • Fixed crashes that occurred when using the IBM JVM.

  • Prevent Windows C Run-Time Error R6034 when trying to start Java applications with 64-bit JREs.

Java AWT/Swing AUTs.

  • The basetype pseudo-property is now recorded for AWT objects that have an inner class type.

  • Fixed a problem with waitForObjectItem calls for Swing menu items on macOS.

  • Fixed the Java screen capturing support for AWT.

Java SWT AUTs.

  • Various fixes for the bounding rectangles of SWT menus and menu items.

  • Prevented mouse presses going to the AUT when picking an SWT (Gtk) object in the Spy.

  • Squish now looks for SWT Cocoa when Carbon is not found on 32-bit macOS

  • Fixed a problem with SWT/Cocoa menu handling.

  • Fixed a problem with the SWT/Cocoa type function replaying when modifiers are used.

  • Fixed the calculation of SWT/Cocoa List item bounds.

  • Fixed the calculation of bounds for SWT/Cocoa TableColumns when the Table is scrolled.

  • Fixed an off-by-one error when handling SWT Table items.

  • Worked around a text-typing bug in the SWT Cocoa implementation on macOS.

  • Fixed architecture detection of SWT module on Windows.

2.39.5. Web-specific

  • Introduced an alternative, proxy-based approach to Web testing that makes it possible to test more browsers in more contexts—for example, Chrome, Opera, and Mobile Safari (the latter on iOS devices).

  • Added a property that holds an object's DOM path.

  • Added a raiseWindow function. This function tries to raise the browser over other windows that may overlap it.

  • Added a new --config option action of setBrowserPath to the squishrunner. This makes it possible for the new IDE to be able to update the browser executable (in particular for the proxy-case).

  • Add a scrollTo function.

  • Added support for object picking through touch events on browsers that provide this feature.

  • Fixed the recording of setText when typing text is interrupted by other events such as focus changes.

  • Fixed the fetching of properties from remote browsers and from browsers that respond very slowly.

  • Allow multiple Firefox instances to be driven from a single user account on a Unix system.

  • Fixed the passing of double quotes via the squishrunner --webbrowserargs option.

  • Fixed the fetching of style properties in Firefox.

2.39.6. Windows (native)-specific

  • Greatly speeded up lookups for native Windows controls in large GUIs by changing the order in which the object hierarchy is traversed.

  • Improved the playback speed for object names with leftObject and/or aboveObject properties.

  • No longer accidentally use the wrong menu in some cases when clicking on menu items in Windows Forms applications.

  • Improved the reliability of recording for Windows Forms menu items.

  • Mouse clicks are no longer recorded on disabled toolbar items.

  • Improved Squish's event processing to enhance the reliability of the recording of mouse and keyboard actions.

  • Added support for testing PowerBuilder-based applications. Inquire with support for more details.

  • Stopped the mouse cursor from changing position when picking native Windows objects.

  • Added support for the CA Plex ObGrid control.

  • Made it possible for the toolkit wrappers (Qt, Web etc.) to specify the list of objects which the Windows wrapper should ignore by specifying a list of object names.

  • Fixed blocking events when picking objects.

  • Fixed the recording of table cell clicks when the mouse down event causes the cell to turn into an edit field.

  • Added a visible property for Excel tables.

  • Made it possible to use wildcards (* and ?) in 'Extra Windows'.

  • Added a selected property on MFC ListBoxItem objects.

  • Added an itemCount property that holds the number of items contained in objects which contain other items, such as tree views, list views, list boxes, menus, menu items, tabs, and status bars.

  • Added a postMessageLong method for WindowsControls.

  • Added a setForegroundWindow function.

  • Added a nativeObject property for all Windows Forms objects. This property can be used to access all the Windows Forms object's native properties.

  • Added support for the Infragistics UltraWinGrid, UltraWinTree, UltraWinTabs, UltraStatusBar, and UltraToolbar components.

  • Made the Object Map name reuse feature much less expensive for Windows tests.

  • Added a getActiveXProperty function.

  • Added support for identifying Windows objects by subproperties. For example, "{type='Window' nativeObject.Text='Update'}".

  • It is now possible for the Windows wrapper to ignore processes by specifying “Blacklisted Processes” in the wrapper configuration file.

  • The _startwinaut.exe is now correctly terminated after test execution.

  • The startwinaut.exe can now accept AUT executable names without absolute paths.

  • Improved MsoCommandBar identification.

  • Imroved the reliability of combobox expansion when a list item is selected.

  • It is now possible to use .bat files as AUTs for Windows test suites.

  • Hooking into 32-bit Windows Forms applications now works on both 32-bit and 64-bit Windows.

  • Introduced a Visual Basic module which, when injected into a VB6 application, adds support for the vb_name property. Installation instructions are in the file vb6hook/README.txt.

  • Started work on an Exontrol extension. Enquire with sales@froglogic.com for availability.

2.39.7. Mac-specific (Cocoa/Carbon edition)

  • Added support for macOS 10.6.

  • Added support for testing 64-bit AUTs.

  • Fixed a problem with verification point generation for Boolean properties.

  • Fixed a squishserver problem regarding the detection of 32-bit and 64-bit executables.

  • Improved the reliability of finding the executable when there is both an AUT executable and a .app directory of the same name.

2.39.8. iPhone/iPad-specific

  • Added special case support for type("UITextField", "<Return>") so that the onscreen keyboard is hidden and the actions associated with the Return are executed.

  • Correctly record type("<Return>").

  • Fixed internal object cache problem.

  • The touchAndDrag function now gracefully handles interacting with null objects.

  • Added an extra step in touchAndDrag replaying to correctly mimic the initial drag trigger.

2.39.9. Tk-specific

  • Added support for the attachToApplication function.

  • Added support for launching Tk AUTs with the Squish startaut tool.

  • Fixed a problem with the replay of iwidgets TabNotebook clicks.

  • Made the windows fallback wrapper work correctly.

  • Fixed a problem that prevented building Squish/Tk on 64-bit Windows.

  • Added support for the recording and replaying of image-information on menu items.

  • Fixed a problem with object identification when recording in the face of overlapping windows.

  • Fixed a problem with clicking native widgets that are children of Tk windows.

  • Squish now ensures that listbox items are visible before clicking them.

  • Squish now ensures that tkTable widget items are visible before clicking them.

  • Squish now highlights widgets that could be picked in spy mode as the mouse hovers over them.

  • Fixed the handling of mixed-case strings in the type function.

  • Added a statically linked Tk example.

2.39.10. Documentation

  • The Qt, Java AWT/Swing, Java SWT, Windows, macOS, and Tk tutorials have all been updated and harmonized for Squish 4.

  • All the newly added Squish functions and features have been documented (with some of the larger items mentioned below). All the documentation has had numerous updates, improvements and corrections.

  • The User Guide has been reorganized to group toolkit-specific sections together.

  • The User Guide has new Qt-specific sections covering the support for Qt signal handlers and the QML Extension API.

  • The User Guide has a new section that shows how to do keyword-driven testing.

  • The User Guide's coverage of shared scripts and data now also covers shared global scripts. And the IDE Reference Manual now has a section on the Global Scripts view.

  • The Test Script APIs are now in their own manual (before they were in the Tools Reference Manual).

  • The Installation Guide now has information on Safari Testing (on iOS devices), on Maemo devices, and on MeeGo.

  • The Add-Ons Reference manual now covers how to integrate the Squish IDE with an existing Eclipse and the TestTrack TCM integration.

  • A global “back of the book”-style index has been added which covers all of the documentation.

  • The PDF version of the manual has been improved.

2.39.11. Source Builds

  • For split builds, the --enable-ide-utils configure option is now needed.

  • The Squish build system now automatically detects the Qt include directory on debian and debian-based systems.

  • Qt 4 headers are now read from the dedicated sub-directories such as QtCore/; this avoids compiler warnings that would otherwise occur with Qt 4.7.

  • Squish can now be compiled with a custom Qt namespace.

  • Experimental support for parallel builds has been added. Pass the -j n option (where n is the number of jobs to do in parallel) to the Squish build tool.

  • Added --withmoc, --withrcc, and --withuic configure options for customized Qt installations such as those found in the MeeGo SDKs.

  • It is now possible to do builds for the Qt Simulator.

  • Support for compiling with mingw-w64 has been added..

  • Qt visibility detection has been enabled on Solaris.

2.39.12. Classic IDE

  • The Classic IDE has been renamed squishclassicide.

  • The Classic IDE had a bug that could result in 100% CPU usage (i.e., hanging) when doing snippet recording; this has now been worked around.