winui-ui-testing

Installation
SKILL.md

Scope and execution boundary

winapp ui uses Windows UI Automation (UIA), so the AutomationId-based workflow works with any Windows desktop framework, packaged or unpackaged. Skip WinUI-specific binding/dialog advice for other frameworks.

Windows Sandbox keeps synthetic input off the user's desktop; target selection is in Step 1. Discover the installed contract with winapp run --help, winapp target --help, and winapp ui <verb> --help. Use --on sandbox, not --sandbox or a top-level sandbox command. Do not enable Windows features or launch an app without the task's permission.

  • Prerequisites and enablement: see winui-setup.
  • Project builds/publishes execute on the host; deployment, app launch, and ui --on sandbox execute in the guest. Run the batch script below on the host, not inside target exec (which would double-route).
  • Real input and capture require an unlocked host and a connected, nonminimized Sandbox client. Tree inspection may work while input cannot; a readable tree is not an input-readiness check.
  • winapp target snapshot sandbox --json is a read-only readiness query: it neither starts nor reconnects a guest. Use it to diagnose readiness rather than probing the user's desktop.
  • The persistent guest is shared, not isolation between mutually untrusted workflows. Coordinate with other users; there is no supported --unique-identity option. Use separate machines for mutually untrusted work.
  • Guest --debug-output supports packaged apps only.

Approach and command discovery

Prefer a single scripted batch over a long series of interactive calls. If you wrote the app, use its XAML/source AutomationIds directly; otherwise inspect its current tree and read source for hidden/lazy flyouts and dialogs. Either way, validate a real window/tree before passing an accessibility audit.

Core verbs: list-windows, inspect, search, get-property, get-value, wait-for; invoke, click, set-value, focus, scroll-into-view; send-keys, hover, drag, touch, pen; screenshot, record. Use each verb's --help for selectors and options, rather than guessing from this short reference.

Installs
20
GitHub Stars
1.3K
First Seen
Oct 8, 2026