desktop-e2e-edho-ferdian

Automates end-to-end testing of Windows desktop applications using pywinauto and UI Automation.

2|Updated Sep 6, 2026
One-click install
npx skills add https://github.com/edhoferdian/EEF --skill desktop-e2e-edho-ferdian-edhoferdian
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: desktop-e2e-edho-ferdian
Source: https://github.com/edhoferdian/EEF/tree/main/.agents/skills/desktop-e2e-edho-ferdian
Command: npx skills add https://github.com/edhoferdian/EEF --skill desktop-e2e-edho-ferdian-edhoferdian

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires pywinauto, pytest, pytest-html, pytest-timeout, Pillow, psutil, pytest-repeat, pyautogui, opencv-python, and includes references (resource) components.

What problem does it solve? Testing native Windows desktop applications (WPF, WinForms, Win32/MFC, Qt) lacks the mature tooling that browser testing enjoys, leaving teams with flaky suites, fragile locators, and no clear isolation or CI strategy. ## Core Features & Use Cases - pywinauto harness with Page Object Model: Provides a BasePage class with prioritized locators (AutomationId first), explicit waits, and intention-revealing page actions for pytest suites. - Three-tier test isolation: Redirects APPDATA/TEMP per test via tmp_path, contains process trees with Windows Job Objects, or runs clean-room tests in Windows Sandbox. - Framework-specific guidance: Covers AutomationId setup for WPF, WinForms, and Qt, Qt accessibility quirks, and a DPI-aware screenshot-matching fallback for self-drawn controls. - Use Case: A team needs to automate regression tests for a Qt 5 desktop .exe on GitHub Actions windows-latest runners; this Skill sets up the fixture, locators, artifact capture, and CI workflow. ## Quick Start Ask the AI to set up a pywinauto-based pytest end-to-end test suite for your Windows desktop application, starting with an environment check and AutomationId audit.

Frequently Asked Questions about desktop-e2e-edho-ferdian

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I test a Windows desktop application with pywinauto?

Install pywinauto with pytest, launch the app via subprocess.Popen with a redirected environment, and attach with Application(backend="uia").connect(process=pid). Locate controls by AutomationId first, then Name, and use wait("visible") instead of time.sleep for synchronization.

What is the best locator strategy for pywinauto UI Automation tests?

AutomationId is the most reliable locator, followed by Name, with ClassName plus index only as a last resort. Add AutomationIds in the app itself: x:Name in WPF, AccessibleName in WinForms, and setObjectName plus setAccessibleName in Qt.

Does pywinauto work with Qt applications?

Yes, Qt 6 exposes UI Automation by default and Qt 5.7+ requires setting QT_ACCESSIBILITY=1 before launch. Combo box popups and dialogs appear as separate top-level windows, so locate them via Desktop(backend="uia") rather than as children of the main window.

Can pywinauto test Electron or WebView2 apps?

No, Electron, CEF, and WebView2 render HTML content that UI Automation only sees as a shell. Use a browser automation tool like Playwright for those targets; pywinauto is for native Windows GUI frameworks only.

Why are my pywinauto desktop tests flaky?

Common causes are time.sleep instead of explicit waits, unfocused windows, in-progress animations, and dialog timing. Fix them with wait_visible, win.set_focus(), wait_until conditions, and confirm flakiness with pytest-repeat before quarantining tests.

How do I run desktop GUI tests in GitHub Actions CI?

Use runs-on: windows-latest, which provides a real GUI session without an Xvfb equivalent. Pass APP_PATH and APP_TITLE as environment variables, generate HTML and JUnit reports, and upload artifacts with if: always() so failure evidence is preserved.