Article - Requirements of Squish for Qt

Skip to end of metadata
Go to start of metadata

Table of Contents

Overview

The default set of pre-built Squish for Qt binary packages is targeting the most common Qt configurations. The most important compatibility requirements are listed below.

Other configurations can be targeted by compiling Squish using a source package.

For some alternatives (debug builds, Qt 4 without Qt3Support) froglogic can quickly provide modified builds upon. For other non-standard configurations (e.g. renamed Qt libraries, embedded systems, modified Qt API or binary interface, statically linked applications) please contact technical support for creation of custom builds. Extra charges may apply.

In particular, for the default set Squish binary packages the following requirements must be met:

  • Requirement #1: ONLY FOR QT BASED APPLICATIONS - Squish for Qt binary packges can only be used to automate Qt applications.
  • Requirement #2: ONLY FOR DYNAMICALLY LOADED QT LIBRARIES - Squish binary packages can only be used to automate Qt applications that load the Qt libraries dynamically. (See above description of our customization service for creation of builds that allow testing of statically linked applications.)
  • Requirement #3: COMPILER OF QT LIBRARIES MUST MATCH THE ONE USED FOR THE SQUISH PACKAGE - Squish binary packages must match the compiler (vendor and version) used to compile the Qt libraries of application.
  • Requirement #4: QT APPLICATION BUILD TYPE MUST BE "RELEASE" - Squish binary packages are release builds, so your Qt application must also be a release build. (If you want to test debug builds please contact froglogic, or create your own debug build of Squish using a source package.)
  • Requirement #5: APPLICATION'S QT MUST BE BUILT WITH DEFAULT CONFIGURATION - Squish binary packages are built using a Qt that was built with the default configuration. This means that the application must also use Qt libraries that have been built using the default configuration (or one that is compatible with it). Most importantly this means that the Accessibility and Qt3Support modules must be enabled in the AUT's Qt and that the linker flags LDFLAGS='-Wl,-Bsymbolic-functions' must not have been used for building Qt.
  • Requirement #6: QT DLLS MUST HAVE THEIR ORIGINAL NAMES - This is actually a variation of the previous requirement: With Squish for Qt binary packages on Windows the Qt libraries used by your application must have the original library names. (Custom names of Qt libraries are supported when building Squish from sources and when using the -qtlibinfix configure option of Qt (see -qtlibinfix at Configuration Options for Qt)).
If you do not know about any of the points above please consult the developers of your application about these points.

Dependencies of Squish for Qt (Qt 4) binary packages

Library Mac Unix Windows
QtCore4 QtCore.framework libQtCore.so.4 QtCore4.dll
QtGui4 QtGui.framework libQtGui.so.4 QtGui4.dll
QtNetwork QtNetwork.framework libQtNetwork.so.4 QtNetwork4.dll
Qt3Support Qt3Support.framework libQt3Support.so.4 Qt3Support4.dll
QtSql QtSql.framework libQtSql.so.4 QtSql4.dll
QtXml QtXml.framework libQtXml.so.4 QtXml4.dll

On Windows, Squish for Qt ships with the libraries listed above (*.dll), so that it is possible to test Qt applications that do not include these libraries, without any further steps being necessary.

PLEASE NOTE
If your application does not contain these libraries you must provide them anyway to allow Squish to work.

In the simplest case you can put the above Qt libraries into <SQUISH_DIR>\bin (on Windows) or <SQUISH_DIR>/lib (Linux) to allow Squish to use them.

Alternatively what should also work is to put these Qt libraries alongside the other Qt libraries of your application.

If these libraries are not provided you get errors such as these in Runner/Server Log:

The specified module could not be found.

Dependencies of Squish for Qt Pure Qt 4 binary packages

Pure Qt 4 (Which means Qt configured without the Qt3Support module) packages are only available on request, so please contact froglogic if you require a pure Qt 4 package.

Library Mac Unix Windows
QtCore4 QtCore.framework libQtCore.so.4 QtCore4.dll
QtGui4 QtGui.framework libQtGui.so.4 QtGui4.dll
QtNetwork QtNetwork.framework libQtNetwork.so.4 QtNetwork4.dll
QtSql QtSql.framework libQtSql.so.4 QtSql4.dll
QtXml QtXml.framework libQtXml.so.4 QtXml4.dll

On Windows, Squish for Qt ships with the libraries listed above (*.dll), so that it is possible to test Qt applications that do not include these libraries, without any further steps being necessary.

Additional dependencies of Pure Qt 4 packages on Windows

  • QtNetwork4.dll

Squish binary packages ship with this library, but it may be slightly incompatible. This can cause the following error when the application starts up under Squish's control:

The specified procedure could not be found

(This won't happen if this library is shipped with your application of course, because in such cases the application will use its own copy of the library rather than Squish's.)

The solution is simply to copy the QtNetwork4.dll file that the application was built with (i.e., the one used by the Qt that the application was built with) into the same folder as the other library files that your application uses.

Additional requirements for automating QtWebKit

Squish supports automating QtWebKit interaction via an extension. (The extension ships with Squish for Qt, but requires an additional Squish for Web license to be usable.) Qt binaries above Qt 5.6 no longer include QtWebkit, so binary releases of Squish for Qt versions higher than that won't work with Webkit either, without a "quick install" step with a custom build of Qt.

The Squish QtWebKit extension depends on the following libraries:

Library Mac Unix Windows
phonon phonon.framework Not required Not required
QtDeclarative QtDeclarative.framework libQtDeclarative.so.4 QtDeclarative4.dll
QtOpenGL QtOpenGL.framework Not required Not required
QtScript QtScript.framework libQtScript.so.4 QtScript4.dll
QtSvg QtSvg.framework Not required Not required
QtXmlPatterns QtXmlPatterns.framework libQtXmlPatterns.so.4 QtXmlPatterns4.dll

On Windows it should be sufficient to copy these files to the SQUISH_DIR\bin folder.

On Mac OS X these should be copied into the Frameworks folder of the application (for example /Applications/MyApp.app/Contents/Framework).

Possible workarounds

If the requirements listed above (or ones compatible with them) are not met, it may be possible to use the Qt libraries supplied with the Squish binary package. To try this out, first make sure that you make a backup of your application's libraries! Then copy Squish's Qt libraries into the directory that has your application's Qt libraries, overwriting the originals (hence the need to backup first). Now try recording and playing back tests.

If you still cannot get things to work, restore the application to its original Qt libraries. Download a Squish binary package and build Squish from source using the same Qt libraries as your application uses.

Note that if your application uses Qt without Qt3Support, contact froglogic support so that we can build you a Squish binary package without Qt3Support that can be used with your application and its Qt libraries.

Related information

Labels:
None
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.