Squish GUI Tester 5.1 Released

As announced today on www.froglogic.com, we are excited to make available Squish 5.1.

A lot of new features found its way into this release. This includes Multi-touch gesture support, an interactive “object not found” debugging wizard, new integrations for Bamboo, JIRA, TeamCity and the Robot Framework, full-blown Google Chrome support, added support for Qt 5.2, and Java 8, improved support for testing Qt and QML on QNX, Android and VxWorks, major improvements in the Python editor and more.

You can read the full press release and release notes at http://www.froglogic.com/news-events/index.php?id=squish-5.1-released.html.

We are excited to finally share this new version and look forward to your feedback!

Squish tip of the week: How to determine all child objects of a given type

Need to know the number of check boxes, rows or items associated with a particular parent object?
Perhaps each child object containing a specific flag holds valuable information.

You can tell Squish to find all the parent object’s children, and only the children of a given type.

Here’s how:

Using Squish’s object.children() function, you can retrieve all child objects of a given parent. Further examining each child object by className, id or another attribute, can tell you more about each child object.

In the following example, a list of child objects, containing a specific className and with a maximum quantity retrieval of 1000 items, returns all matching child objects. The filtered list of child objects can be used as a key driving mechanism in other test cases.

Squish tip of the week: How to capture data for reuse later in test

A common question I hear from users is: Is it possible to capture data from my application, store it, and use it later in my test?

Quick Answer: Absolutely!

Using Squish’s object access functions, users can retrieve information about an object, it’s properties, values, etc.

Take an Inventory application for example. After entering a new item in inventory, a corresponding SKU is generated. Later in your test you may wish to confirm the generated SKU matches the SKU listed when searching for the inventory item by name.

function main(){
var newInventoryItem = new Array("Part ABC", "Manufacturer XYZ", "Available");
var newSKU = generateNewInventoryEntry(newInventoryItem);
var retrievedSKU = getSKUByInventoryName("Part ABC");
test.compare(newSKU, retrievedSKU, "Validating generated SKU matches SKU search result by item name");

function generateNewInventoryEntry(inventoryItem){
var inventoryFields = ["Part", "Manufacturer", "Status"];
for (var i = 0; i < inventoryItem.length; ++i)
type(waitForObject(":Invnt." + inventoryFields[i] + ":_.JTextField"), inventoryItem[i]);
var generatedSKU = object.properties(waitForObject(":itemSKU_TableItem"));
return generatedSKU["text"];

function getSKUByInventoryName(itemName){
type(waitForObject(":SearchInventName:_JTextField"), itemName);
var properties = object.properties(waitForObject(":itemSKU_TableItem"));
return properties["text"];

Read more about Object Access Functions

Fixed blog comment captchas

A customer pointed out that the “captcha” mechanism protecting this blog against spammers worked so “good” that even legitimate users couldn’t post any comments.

Embarassing. Turned out that the plugin providing this feature was indeed install wrongly. It broke after a system upgrade. Never change a running system!

This posting serves a “comments are open again” notice as well as a testbed for trying out the feature.


Squish tip of the week: Keyword-driven testing with Robot Framework

Designing your test framework to incorporate keyword-driven testing can produce a test framework that minimized maintenance time as your application changes.

Keyword-driven testing utilizes action or descriptive words describing the functionality being tested.

By integrating Squish with Robot Framework users can produce higher-level keywords, which can then be used to drive a test framework regardless of technology by the defined keywords.

To learn more read Keyword-driven testing with Squish and Robot Framework

Squish tip of the week: How to modify the mouse click duration

Did you know you can control the duration of a mouse click? Or create drag-and-drop mouse events?

Perhaps you have a pop-up menu, a menu which requires a longer click, or need to click and drag an object from one area to another.

Using a combination of mouse Interaction Functions, mousePress, mouseMove and mouseRelease can be individually scripted in place of the more common mouseClick function.

Creating a slow mouseClick event

If your script recorded:

Then modify the script to:

Read the following KB article to learn how to script the mouse to drag-and-drop: Using mousePress(), mouseMove(), mouseRelease()

Squish tip of the week: How to wait for multiple objects

Ever encounter a situation where waiting for the availability of just one object isn’t enough?

Perhaps multiple items in your application need to be in a particular state before your test can proceed?

The following article demonstrates how to refactor your script to determine if all necessary objects are ready for the next portion of your test before proceeding. And in the event the proper conditions are not met after a user-defined number of retries and delays are attempted, the script returns an error.

Read article Waiting for multiple objects