Automates QA for Windows 11 desktop apps (WinForms/WPF/UWP) using UFO UIA/Win32 tools: discovers controls, clicks/types/keystrokes, asserts text/UI, screenshots, reports.
npx claudepluginhub codealive-ai/ai-driven-development --plugin ai-driven-developmentThis skill uses the workspace's default tool permissions.
You are an AI-QA operator on the SAME Windows 11 desktop as the SUT.
Automates GUI interactions via screen capture, mouse clicks, typing, scrolling for UI testing, visual verification, and non-browser apps. Bridges Playwright to user browsers using extensions or CDP endpoints.
Automates Windows desktop applications securely using UI Automation (UIA) and Win32 APIs for element discovery, input simulation, and process interaction. Ideal for safe desktop UI tasks.
Routes E2E testing to platform tools like Playwright for CI/CD, Chrome MCP for web debugging, Hammerspoon for macOS, Linux X11/Wayland for desktop; enforces TDD gates first.
Share bugs, ideas, or general feedback.
You are an AI-QA operator on the SAME Windows 11 desktop as the SUT. All automation uses UFO's real MCP tools (UICollector, HostUIExecutor, AppUIExecutor) -- no mocks.
If UFO tools are NOT available as MCP tools, run setup before QA work:
python "<skill-dir>/scripts/skill_installer.py" --project-dir "<project-root>"success is true, tell user to restart Claude CodeFollow this sequence for every test run. Do not skip steps.
qa_refresh_and_list_windows()select_application_window(id, name) (HostUIExecutor)capture_window_screenshot() (UICollector) -- baseline screenshotget_app_window_controls_info(field_list=["label","control_text","control_type","automation_id","control_rect"])id + control_text / automation_id -- never hardcode coordinates unless control tree failsclick_input(id, name), set_edit_text(id, name, text), keyboard_input(id, name, keys)texts(id, name) and compare against expectedqa_wait_for_text_contains(id, name, expected, timeout_s=10) over sleepscapture_window_screenshot()| Tool | Server | Purpose |
|---|---|---|
qa_refresh_and_list_windows | QA helper | Refresh + list all windows |
select_application_window | HostUIExecutor | Select SUT by id+name |
get_app_window_controls_info | UICollector | Get control tree |
capture_window_screenshot | UICollector | Screenshot selected window |
click_input | AppUIExecutor | Click control by id+name |
set_edit_text | AppUIExecutor | Type into control |
keyboard_input | AppUIExecutor | Send keystrokes |
texts | AppUIExecutor | Read control text |
qa_wait_for_text_contains | QA helper | Poll until text matches |
qa_refresh_controls | QA helper | Re-collect control tree |
User says: "Test the login flow on MyApp"
1. qa_refresh_and_list_windows() → find "MyApp - Login"
2. select_application_window(id="3", name="MyApp - Login")
3. capture_window_screenshot() → baseline
4. get_app_window_controls_info(field_list=["label","control_text","control_type","automation_id","control_rect"])
→ find username (id=12), password (id=14), login button (id=16)
5. set_edit_text(id="12", name="Username", text="testuser")
6. set_edit_text(id="14", name="Password", text="pass123")
7. click_input(id="16", name="Login")
8. qa_wait_for_text_contains(id="20", name="WelcomeLabel", expected_substring="Welcome", timeout_s=10)
→ {"ok": true, "text": "Welcome, testuser"}
9. capture_window_screenshot() → post-login
10. Report: PASS
No windows found: Re-check the SUT is running. Call qa_refresh_and_list_windows() again. If still empty, ask the user to confirm the app is open.
Empty control tree: The window may not have finished loading. Wait 2-3 seconds, then qa_refresh_controls(field_list=[...]). If still empty, try CONTROL_BACKEND=win32 (see setup.md).
Control not clickable / action fails: Re-collect controls (the tree may have changed after navigation). If the control lacks a usable id, fall back to coordinate-based action and document why.
MCP tools not found: Run auto-setup first (see Auto-Setup above). If auto-setup fails, direct the user to references/setup.md and run doctor.ps1.
See references/qa-workflows.md for more examples, locator strategy, and common patterns.
See references/setup.md for UFO installation, MCP configuration, and diagnostics.