VS Code extension integrating Squish (Qt GUI test automation, v9.x) with the native Testing UI. Replaces the Squish IDE / Eclipse runner for day-to-day test execution inside VS Code.
Features
Auto-discovery — scans the workspace for suite_*/suite.conf files and builds a Suite → Test case tree in the Testing view. Updates live as files are added or removed.
Run all / suite / case — click the play button at any level; runs the minimal squishrunner invocation for exactly what you selected.
Streaming output — live stdout/stderr from squishrunner appears in the Test Results panel while the run is in progress.
Pass / Fail / Skip / Error — results are read from JUnit XML (--reportgen junit,…); failures carry a clickable link to the exact file and line in test.py.
Cancel — the stop button sends SIGTERM to the running process (SIGKILL after 3 s).
Context menus — right-click a suite to open its suite.conf or reveal the suite folder in the Explorer.
Status bar — shows suite and test-case counts; turns amber when the runner is not configured.
Requirements
Squish 9.x Linux x86_64 installed (WSL2 or native Linux).
AUT registered before running: squishserver --config addAUT <name> <path>
Python test suites only (LANGUAGE=Python in suite.conf).
Setup
Install the extension.
Open a workspace that contains suite_*/suite.conf files — the Testing tree appears automatically.
Set Squish › Install Dir (squish.installDir) to the root of your Squish installation (the directory that contains bin/squishrunner). Supports ${workspaceFolder}.
Directories to scan. Defaults to workspace folders.
squish.testSuiteSearch
["**/suite_*/suite.conf"]
Globs used to find suites.
squish.testSuiteExclude
["**/node_modules/**","**/build/**"]
Globs to exclude.
squish.useLocalServer
true
Pass --local to squishrunner (auto-spawns squishserver).
squish.serverHost
"127.0.0.1"
squishserver host (when useLocalServer is false).
squish.serverPort
4322
squishserver port.
squish.abortOnFail
false
Stop the suite run on the first failure.
squish.snoozeFactor
1.0
Multiply all Squish timeouts by this factor.
squish.extraRunnerArgs
[]
Extra arguments appended to every squishrunner call.
squish.env
{}
Extra environment variables (e.g. {"QT_QPA_PLATFORM":"wayland"}).
squish.resultDir
"${workspaceFolder}/.squish-results"
Directory for JUnit XML and attachments.
WSL2 notes
Use a Linux x86_64 Squish build inside WSL2 — not the Windows installer.
WSLg (Win11) provides a display automatically; no DISPLAY setup needed.
If the xcb platform plugin fails, add "QT_QPA_PLATFORM": "wayland" to squish.env.
Development
First-time setup
make configure # npm install
Build & watch
make build # one-shot bundle → dist/extension.js
make watch # rebuild on every save
Type-check & lint
make compile # tsc --noEmit
make lint # ESLint
Interactive debugging (F5)
make watch in a terminal.
F5 in VS Code — opens an Extension Development Host with the extension loaded.
Offline / mock testing
The repo ships a fake squishrunner at fake-squish/bin/squishrunner. Set squish.installDir to ${workspaceFolder}/fake-squish and open the repo itself as a workspace — the test_squish/ directory contains four mock suites with 17 test cases that exercise pass, fail, and skip outcomes without a real Squish installation.
Package and install
make package # produces squish-test-explorer-<version>.vsix
make install # package + install into the running VS Code