qa-desktop
Desktop application testing across Windows (WinAppDriver, Appium-Windows), macOS (XCTest UI, Apple Accessibility Inspector), Linux (AT-SPI), Electron (Playwright _electron API), and Qt (QtTest framework)
Install this plugin
/plugin install qa-desktop@testland-qaPart of role bundle: qa-role-mobile-desktop
qa-desktop
Desktop application testing across Windows (FlaUI, WinAppDriver, Appium-Windows), macOS (XCTest UI, Apple Accessibility Inspector), Linux (AT-SPI), Electron (Playwright _electron API), and Qt (QtTest framework). Includes desktop-driver-selector, desktop-test-scaffolder, and desktop-test-author agents for cross-driver orchestration.
Components
| Type | Name | Description |
|---|---|---|
| skill | desktop-test-strategy-reference | Pure-reference catalog of desktop GUI test strategies across Windows (UIA), macOS (XCTest + Accessibility), Linux (AT-SPI), Electron, and Qt |
| skill | electron-spectron | Legacy reference for the deprecated Spectron framework; documents migration path to Playwright _electron |
| skill | electron-playwright | Authors Playwright _electron tests for packaged Electron apps; drives main process + renderer windows from one suite |
| skill | flaui-tests | Authors and runs FlaUI-based Windows UI tests - the .NET-native wrapper around Microsoft UI Automation (UIA2 + UIA3) with idiomatic C# API |
| skill | winappdriver | Authors and runs UI tests against Microsoft WinAppDriver (W3C WebDriver for UWP, WPF, WinForms, and Win32 apps on Windows 10) |
| skill | appium-windows-driver | Authors Appium 2.x tests against the Windows driver - the Node.js proxy in front of WinAppDriver with windows: gestures and PowerShell hooks |
| skill | qt-test-framework | Authors and runs Qt Test - the first-party C++ in-process unit + GUI test framework for Qt 6 with QTEST_MAIN, QSignalSpy, and QBENCHMARK |
| skill | xctest-mac-desktop | Authors XCTest UI + unit tests for macOS apps with XCUIApplication / XCUIElement queries and xcodebuild test CI integration |
| skill | at-spi-linux | Authors Linux desktop tests via AT-SPI accessibility - dogtail for GTK + Qt apps, Accerciser for tree inspection, Xvfb + dbus-launch CI |
| agent | desktop-driver-selector | Reads a target desktop project (csproj / package.json / .pro / CMakeLists.txt) and emits one driver recommendation (FlaUI / WinAppDriver / electron-playwright / QtTest / XCUITest / AT-SPI) plus rationale |
| agent | desktop-test-scaffolder | Scaffolds a fresh desktop test project - test project file, driver-init module, one screen-object skeleton, and a CI workflow tagged for the matching Windows / macOS / Linux runner |
| agent | desktop-test-author | Authors one desktop UI test for one user flow given a spec + target app + chosen driver; composes FlaUI / WinAppDriver / Appium-Windows / electron-playwright / QtTest skills with xUnit / NUnit / MSTest harnesses |
| agent | desktop-test-reviewer | Adversarial read-only reviewer for existing desktop UI test files (WPF, WinForms, Electron, Qt, macOS); checks screen-object encapsulation, AutomationId locator stability, explicit-wait usage, and OS-platform hazards (STA threading, foreground-lock, UAC/TCC elevation); emits BLOCK or PASS |
Install
/plugin marketplace add testland/qa
/plugin install qa-desktop@testland-qaSkills
appium-windows-driver
Authors and runs Appium 2.x tests against the Windows driver - the actively-maintained Node.js proxy in front of Microsoft's WinAppDriver server. Covers `appium driver install windows`, capability declaration (`platformName: windows`, `appium:automationName: windows`, `appium:app`, `appium:appTopLevelWindow`, `appium:appArguments`), Windows-specific gestures (`windows: scroll`, `windows: clickAndDrag`, `windows: keys`), PowerShell prerun/postrun hooks, and CI integration. Use when the test stack already uses Appium for other platforms (iOS, Android, Mac2) and Windows support fits the existing Appium client + capability model.
at-spi-linux
Authors Linux desktop UI tests via AT-SPI - the DBus-based Assistive Technology Service Provider Interface implemented by `at-spi2-core` (registry daemon + `libatspi` C library + ATK GTK bridge). Covers enabling toolkit accessibility (`gsettings set org.gnome.desktop.interface toolkit-accessibility true`), driving GTK + Qt apps through Python `dogtail` (object-oriented + procedural APIs), inspecting the tree with Accerciser, scripting via `pyatspi`, and CI integration on headless Linux runners with `Xvfb` + `dbus-launch`. Use for Linux-side desktop tests of GTK applications, Qt apps with QAccessible enabled, and Electron apps on Linux.
desktop-test-strategy-reference
Pure-reference catalog of desktop GUI test strategies across Windows, macOS, and Linux. Defines the three accessibility-tree backends (Microsoft UI Automation on Windows, Apple Accessibility / XCTest on macOS, AT-SPI on Linux), the wrapper-tools that drive each backend (WinAppDriver, Appium-Windows, XCUIApplication, AT-SPI clients), the cross-toolkit Electron + Qt paths, a per-OS decision matrix, the per-OS asynchronous-wait hierarchies (XCTest waitForExistence/XCTestExpectation/XCTWaiter, FlaUI Retry primitives, AT-SPI manual polling), per-OS parallel-test policy, foreground-lock and UAC / TCC / AT-SPI elevation hazards, and the Microsoft-blessed high-DPI / per-monitor test matrix. Use as the strategic reference before picking a desktop test stack - the per-tool skills in this plugin are the implementation arms.
electron-playwright
Authors Playwright `_electron` tests for packaged Electron desktop apps - launches the app via `electron.launch({ args })`, returns an `ElectronApplication` handle, drives renderer windows as Playwright `Page` objects, and probes the main process via `electronApp.evaluate(({ app, BrowserWindow }) => …)`. Distinct from `qa-web-e2e/playwright-testing` (page automation against running browsers); this wraps the `_electron` API for launching packaged Electron apps and probing main + renderer processes. Use for end-to-end tests of Electron apps where main-process state, IPC, and renderer DOM must all be asserted from one suite.
electron-spectron
Legacy reference for Spectron - Electron's original ChromeDriver-based testing framework, officially deprecated 2022-02-01 at v19.0.0. Documents what Spectron was, the architectural reason it became unmaintainable, the migration path to Playwright `_electron`, and the residual support contract for projects still on Spectron. Use only when auditing a legacy suite or planning a migration off Spectron - for new work use `electron-playwright` in this plugin.
flaui-tests
Authors and runs FlaUI-based Windows UI tests - the .NET-native wrapper around Microsoft UI Automation (UIA2 + UIA3). Covers the `FlaUI.Core` / `FlaUI.UIA2` / `FlaUI.UIA3` NuGet packages, `Application.Launch` / `Application.Attach` lifecycles, `ConditionFactory` + `FindFirstDescendant` locator patterns, `Retry` waits, and xUnit / NUnit / MSTest harness integration. Use when the test stack is C# / .NET-first and the team wants idiomatic in-process UIA calls rather than the HTTP/JSON wire protocol of `winappdriver` or the Appium proxy layer of `appium-windows-driver`.
qt-test-framework
Authors and runs Qt Test - the first-party C++ unit + GUI test framework that ships with Qt 6 (`#include <QtTest>`). Covers the `QTEST_MAIN` / `QTEST_APPLESS_MAIN` / `QTEST_GUILESS_MAIN` entry-point macros, the `QObject` private-slot test pattern, `QVERIFY` / `QCOMPARE` / `QFETCH` assertions, GUI event simulation (`QTest::mouseClick`, `QTest::keyClick`, `QTest::touchEvent`), `QSignalSpy` for signal introspection, `QBENCHMARK` for performance regression, and the `-o file,junitxml` CI output. Use for in-process testing of Qt widgets, QObject signal/slot chains, and Qt Quick / QML application logic; for out-of-process Qt-app driving see the OS drivers in this plugin.
winappdriver
Authors and runs Windows UI tests against WinAppDriver - Microsoft's W3C-WebDriver service for UWP, WPF, WinForms, and Win32 applications. Covers installing + launching `WinAppDriver.exe` on the default `127.0.0.1:4723` endpoint, declaring `app` / `platformName` / `appArguments` / `appTopLevelWindow` capabilities, finding elements by `AccessibilityId` / `Name` / `ClassName`, and CI integration on Windows runners. Use when driving a native Windows desktop app from a Selenium-style client (C#, Java, Python, Ruby, JavaScript).
xctest-mac-desktop
Authors and runs XCTest UI + unit tests for macOS desktop apps - the Apple-first-party test framework that ships with Xcode. Covers the `XCTestCase` subclass + `test*` method-naming convention, `XCUIApplication` / `XCUIElement` / `XCUIElementQuery` for UI tests, accessibility-identifier-based locators (the stable replacement for label-based queries), `XCTAssert*` macros, `measureBlock:` for performance regressions, and `xcodebuild test` for CI execution. Use when the macOS app is built with Xcode and the test target is in-tree alongside the app - for cross-OS sharing see Appium Mac2 driver as a separate path.
Agents
desktop-driver-selector
Action-taking agent that reads a target Windows / macOS / Linux / cross-platform desktop project (`*.csproj` / `*.sln` / `package.json` / `*.pro` / `CMakeLists.txt`) and emits one concrete desktop UI driver recommendation - FlaUI, WinAppDriver, Appium-Windows, electron-playwright, QtTest, XCUITest, or AT-SPI - plus rationale and which preloaded SKILL.md to read next. Distinct from `qa-process/framework-choice-advisor` (pure-reference catalog of e2e/load frameworks laying out trade-offs in prose): this agent reads the actual target repo and returns one desktop UI driver per app rather than enumerating options. Use when starting a new desktop test project and the team has not yet committed to a driver.
desktop-test-author
Action-taking agent that, given a user-flow spec + a target desktop app + a chosen driver, authors one desktop UI test file plus any new screen-object additions. Composes the eight qa-desktop driver skills (Windows: flaui-tests, winappdriver, appium-windows-driver; Electron: electron-playwright, electron-spectron; Qt: qt-test-framework; macOS: xctest-mac-desktop; Linux: at-spi-linux) plus desktop-test-strategy-reference, with the .NET xunit-tests / nunit-tests / mstest-tests harness skills from `qa-unit-tests-net`. Distinct from `qa-shift-left/spec-to-suite-orchestrator` (language-agnostic, multi-stage workflow producing a project skeleton): narrower platform (desktop only); output is one test file per spec; defers driver + framework choice to upstream selector agents. Use when adding a new per-flow desktop test to an existing test project.
desktop-test-reviewer
Adversarial read-only reviewer for desktop UI test files (WPF, WinForms, Electron, Qt, macOS Cocoa/SwiftUI). Inspects each test for screen-object encapsulation, locator-stability (AutomationId over Name/index per [Microsoft Learn][msautoid]), explicit-wait primitives over raw sleep, and desktop-specific hazards (STA threading, foreground-window lock, OS elevation). Emits a per-file findings table and a BLOCK or PASS verdict. Distinct from `test-code-critic` (§1-§10 file conventions, framework-agnostic) and `e2e-selector-quality-critic` (web DOM selectors only) - this agent is desktop-platform-specific. Use when reviewing an existing desktop UI test suite or a PR that touches desktop test files.
desktop-test-scaffolder
Builder agent that emits a fresh desktop UI test project - test project file (`.csproj` or `package.json`), driver-init module, one placeholder screen-object / page-object class with explicit selector-confirmation markers, and a CI workflow stub tagged for the matching Windows / macOS / Linux runner. Distinct from `qa-web-e2e/spec-to-e2e-test-scaffolder` (Playwright / Cypress / Selenium / WebdriverIO fixture-shaped scaffolds): this scaffolds for desktop drivers (FlaUI / WinAppDriver / Appium-Windows / electron-playwright / QtTest / XCUITest / AT-SPI) and emits driver-init + screen-object skeletons rather than browser fixtures. Use when starting a brand-new desktop test project after `desktop-driver-selector` has picked the driver.