winwright
Testing a Windows desktop app usually means a framework that reports pass or fail and leaves you to guess which one you got. winwright reports four verdicts, so a check that could not run is never filed as one that passed, and the test tells you what it actually observed rather than what it hoped for.

Public numbers
- GitHub stars
- 1
- Release downloads
- 0
Public numbers from GitHub and PyPI, as of 2026-10-20. The site is rebuilt daily.
Install
/plugin marketplace add alegauss/alegauss.github.io /plugin install winwright@alegauss
<PackageReference Include="Winwright" Version="1.1.3" />
What comes next
From the product's own docs/ROADMAP.md at 6d1a41c.
Capture — the picture that proves what it photographed
- PartialA Mica window whose picture is drawn by Direct3D has no capture route at all
The Claude Code surface — plugin, tools, skill, hook
- DesignedThe plugin's marketplace is named alegauss like roadkeep's, so a project using roadkeep cannot install it per project
The site on the shared design system
- DesignedThe site keeps its own copy of the template that eight product sites share
Recently shipped
All 544 entries →- WW551 · e826dc4A case cannot drive the common Open or Save dialog, so choosing a file through it has no case
'choose file' fills the common Open or Save dialog's name box by id and confirms; a read absent proves it closed, and pick sets the type (design recorded in
src/Winwright/Acting/Act.cs). - WW550 · e6c2602A case cannot drop a file from Explorer onto the application, so a drop zone has no case
'drop file' drops a file onto the app by a real drag carrying CF_HDROP; a target that answers no effect is a named hole (design recorded in
src/Winwright/Acting/FileDrop.cs). - WW549 · da0d785A case first in its run cannot type: the window it launched never comes forward before any synthesised input
A launch hands the started process the foreground first, so a case first in its run or soaked alone comes forward (design recorded in
src/Winwright/Windowing/ForegroundLock.cs). - WW548 · 7c853f3A case cannot claim a window covers its monitor, so a full-screen mode that leaves a border or a pixel uncovered passes
A step claims fillsMonitor: its element covers the whole monitor it is on, so a full screen leaving a border fails naming both rectangles and each edge left uncovered in pixels.
- WW545 · d87820dTyping into a terminal substitutes the last character for an earlier one about once a send in fifty, unrepaired
Typing into a terminal repairs the last-character substitution before Enter, proven by quickshell's tab case passing 300 of 300 guest runs on 1.1.2, the repair firing on two.
- WW547 · c40adc6A run's summary says "1 case that ran say what they catch", plural verb and pronoun on a single case
A run's two catches lines agree with one case in every word, saying "1 case that ran says what it catches", and the tests assert the whole singular sentence.
- WW546 · b871ebeA case's type step drops the resend count, so a repaired substitution traces exactly like a clean send
A case's type step that WW249 had to resend stays green and its trace line names how many resends it took, so the fault rate can be read off an adopter's own runs.
- WW544 · 01119e1A case cannot press Alt alone, so a menu bar shown the Windows way by an Alt tap has no case
A press of a modifier alone, such as Alt, is a tap sent down and up with nothing between, so a classic menu bar shown by an Alt tap has a case.