Automate UI Testing of Windows applications under Wine on Linux

Automate UI Testing of Windows applications under Wine on Linux

If your Windows application runs fine under Wine, you can automate the GUI tests of your application using Squish for Windows running under Wine on Linux too. One reason to try Wine is to get a broader variation of Windows OS’es for finding hard to trigger bugs. Also, compared to a full blown Windows installation, the Wine setup is fast and easy.

I’ll start this quick walk-through with installing Wine on Linux. I use Debian, thus

$ sudo apt-get install wine winetricks
$ winetricks list-download

The last line is just to run winetricks once so the ~/.wine directory is created for me as user.

Next is to install Squish,

$ wine squish-6.4.0-windows.exe


and stepping through the installer dialog, I’ll get an installed Squish for Windows on my Linux system.

The goal is to run the application under test (AUT) under Wine, not to test Squish under Wine. The most minimal use of Wine with Squish is to start the AUT with the Squish tool startwinaut. The test script can then attach to the AUT.
Any Linux edition of Squish, e.g. Squish/Qt, can be used to connect to the AUT.

From the created Squish for Windows 6.4.0 directory, I run

$ wine bin/startwinaut.exe --port=1234 notepad

which starts notepad from the Wine installation, launched from Squish’ startwinaut.
As usual with attaching, in the Squish IDE’s Server Settings dialog, an Attachable AUT entry must be created, choosing localhost and port 1234, named it port1234.
Then a small script needs to be written:

function main() {
    attachToApplication("port1234");
    snooze(1);
}

Place a breakpoint on the snooze line, run the script to the breakpoint, and then (e.g. via the Run menu), Record a Snippet.

That’s all you need to get a Windows AUT running with Squish on a Linux system.

What about using startApplication you may wonder? For this, squishserver must be running under Wine so squishserver can start Windows applications. I also need to register the AUT with squishserver.

$ wine bin/squishserver --config addAUT notepad c:\\windows\\system32
$ wine bin/squishserver.exe

In the Squish IDE Preferences dialog under remote testing, an external squishserver needs to be configured.

Side note, the contents of ~/.wine/drive_c/users/koos/Application\ Data/froglogic/Squish/ver1/server.ini is

[General]
AUT/notepad = "c:\\windows\\system32"
attachableAUT/port1234 = "localhost:1234"

Second side note, when squishserver needs to start an application, squishserver needs to know which toolkit wrapper is needed. Typically, this is provided by the WRAPPERS line in the suite.conf of your testsuite, so double-check that it has the correct value, Windows.

In the above recorded script, I only need to change attachToApplication("port1234") with startApplication("notepad") and I’m done.
When also setting notepad as AUT in the testsuite settings page, I should be able to record a full testcase. But unfortunately that doesn’t seem to work. So recording needs the breakpoint and snippet recording way.

0 Comments

Leave a reply

Your email address will not be published. Required fields are marked *

*