Agent skill · Testing & QA

windows-desktop-e2e

E2E testing for Windows native desktop apps (WPF, WinForms, Win32/MFC, Qt) using pywinauto and Windows UI Automation.

mturacgithub.com/mturacGitHub ↗
codexcopilotcursorMIT
Install
npx skills add mturac/everything-openai-codex --skill windows-desktop-e2e --agent codex

Same command for any agent — swap --agent for claude-code, cursor, copilot.

Facts
Files in the skill folder: 1
SKILL.md size: 30 KB
Bundled scripts: none
Path: skills/windows-desktop-e2e/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 84
Language: JavaScript

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

Review
written from the skill's own SKILL.md · Aug 5, 2026

What it does

Enables end-to-end tests for Windows desktop applications by leveraging pywinauto with the UI Automation backend. It covers multiple UI frameworks (WPF, WinForms, Win32/MFC, Qt) and provides a structured approach including a Page Object Model, test fixtures, and artifact management for diagnosing failures.

How it works

  • Uses pywinauto (UIA backend) to interact with a running Windows desktop application, navigating via AutomationId, names, or class/indices.
  • Provides a BasePage with methods to locate elements (by_id, by_name, by_class), wait helpers (wait_visible, wait_gone, wait_window, wait_until), and actions (click, type_text, get_text, screenshot).
  • Defines login and page objects (LoginPage) that map UI controls to AutomationIds (e.g., usernameInput, passwordInput, btnLogin, lblError).
  • Contains a pytest-based test harness (conftest.py) that launches the app via pywinauto Application with backend="uia", waits for the main window, and captures a failure screenshot. It includes a teardown that closes the window and terminates the process when done.
  • Includes test structure guidance (Page Object Model) and a configuration module (config.py) for environment-driven paths and timeouts.
  • Offers wait patterns and an artifact strategy (screenshots, optional screen recording, trace options) to aid debugging.

When to use it

  • Writing or running E2E tests for a Windows native desktop application
  • Setting up a desktop GUI test suite from scratch
  • Diagnosing flaky or failing desktop automation tests
  • Adding testability (AutomationId, accessible names) to an existing app
  • Integrating desktop E2E into a CI/CD pipeline (GitHub Actions windows-latest)

What it can touch

  • The agent uses tools: codex, copilot, cursor to implement tests and automation scripts.
  • Primary interactions target UI elements via AutomationId, and may use Python code under the provided structure (base_page.py, login_page.py, conftest.py, config.py).

Caveats

  • Requires Python 3.8+ and Windows, with pywinauto, pytest, pytest-html, Pillow, pytest-timeout installed.
  • Qt 5.x may require a fallback path in certain type_text scenarios due to UIA ValuePattern limitations.
  • CI environments should ensure Accessibility Insights is available for UI inspection, and QT_ACCESSIBILITY is enabled when needed.
  • The approach discourages time.sleep in favor of wait and wait_until patterns to synchronize with the UI.
From the SKILL.md

# Windows Desktop E2E Testing End-to-end testing for Windows native desktop applications using **pywinauto** backed by Windows UI Automation (UIA). Covers WPF, WinForms, Win32/MFC, and Qt (5.x / 6.x) — with Qt-specific guidance as a dedicated section. ## When to Activate - Writing or running E2E tests for a Windows native desktop application - Setting up a desktop GUI test suite from scratch - Diagnosing flaky or failing desktop automation tests - Adding testability (AutomationId, accessible names) to an existing app - Integrating desktop E2E into a CI/CD pipeline (GitHub Actions `windows-latest`) ### When NOT to Use - Web applications → use `e2e-testing` skill (Playwright) - Electron / CEF / WebView2 apps → the HTML layer needs browser automation, not UIA - Mobile apps → use platform-specific tools (UIAutomator, XCUITest) - Pure unit or integration tests that don't need a running GUI ## Core Concepts All Windows desktop automation relies on **UI Automation (UIA)**, a Windows-built-in accessibility API. Every supported framework exposes a tree of UIA elements with properties Codex can read and act on: ``` Your test (Python) └── pywinauto (UIA backend) └── Windows UI Automation API

What's inside
Steps it walks through
  1. When to Activate
  2. When NOT to Use
  3. Core Concepts
  4. Setup & Prerequisites
  5. Testability Setup (by Framework)
  6. WPF
  7. WinForms
  8. Win32 / MFC
  9. Qt — see dedicated section below
  10. Page Object Model
  11. basepage.py
  12. loginpage.py
  13. conftest.py
  14. config.py
Commands it runs
Python 3.8+, Windows only
pip install pywinauto pytest pytest-html Pillow pytest-timeout
Install ffmpeg and add to PATH: https://ffmpeg.org/download.html
Include typed text in the JSONL log (DO NOT use on tests that type credentials/PII):
pip install pyautogui Pillow opencv-python
All tests
pytest tests/ -v
Smoke only
pytest tests/ -m smoke -v
Specific file
More from everything-openai-codex
All skills →
About this skill
What does the windows-desktop-e2e skill do?

E2E testing for Windows native desktop apps (WPF, WinForms, Win32/MFC, Qt) using pywinauto and Windows UI Automation.

How do I install it?

Run `npx skills add mturac/everything-openai-codex --skill windows-desktop-e2e --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From mturac/everything-openai-codex, a repository with 84 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going