Running Windows desktop tests from Linux with disposable VMs

jadenlemmon 86 points 30 comments October 14, 2026
www.qawolf.com · View on Hacker News

Discussion Highlights (11 comments)

jadenlemmon

I work at QA Wolf and lead the development of automated testing for Windows desktop apps. I wanted to share what we did and how we did it. This post covers how we added Windows to a test infrastructure built around Linux runners. The central problem was giving each test a clean, logged-in Windows desktop without waiting 2–3 minutes for a VM to boot. We extended the device scheduler we already use for mobile testing. It maintains warm pools of Windows VMs on GCE. Each test claims a ready VM, uses it once, and releases it. The VM is then destroyed and replaced, rather than cleaned up for the next test. The test code stays in a Linux pod. Playwright connects to browsers on the Windows machine over CDP, while WebdriverIO and Appium handle native apps through WinAppDriver. A small Go agent captures the desktop with FFmpeg and streams it over WebRTC for live viewing and recordings. That separation lets a single test move between a browser and a native Windows app without requiring a separate Windows runner pipeline. The trade-off is that we keep idle Windows VMs ready and install the app under test on every run. In exchange, tests don’t inherit another run’s files, registry changes, or saved sessions. I’d love to answer any questions!

trollbridge

Not to dismiss this, but when I was working on a problem on Windows recently my LLM (6.1 Sol / oh-my-pi) ended up doing the same thing, although it used Qemu and snapshots to accomplish that. Eventually it got to a point it could iterate very quickly and was really only constrained by total system RAM which meant a dozen at most copies could be running simultaneously.

blahgeek

Nothing new here. VM + WebRTC + warm pool to absorb boot time

joinjune

We used several different LLM's and our own skills to build out some novel approaches to document creation with new workflows using QEMU in Linux after upgrading our desktops to Ubuntu from Windows 11.

ranger_danger

Why not use snapshots/save states so the VMs start back up right away? This is what I do with QEMU.

itissid

Why is the comments from the OP marked as flagged or dead at the bottom?

defied

We’ve been providing a similar approach with disposable VMs and emulators/simulators since 2014 at TestingBot. We run our own single-use QEMU VMs with Windows and Linux.

Luker88

what is the minimum license that I would need to do this legally, with just one or two VMs?

xlazom00

This is super slow solution I did build similar solution based on dockur. And it was sooo slow. Just use windows docker containers on windows server. With some hacks you can run any gui application.

msla

What's the licensing on Windows 11 these days? Can an individual still run an unregistered Windows 11 installation basically forever with only minor restrictions?

fhn

thanks for the advertisement

Semantic search powered by Rivestack pgvector
9,516 stories · 89,816 chunks indexed