Skip to content
Testing · .NET library

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
Latest release
v1.1.3
released 2026-10-19
Release downloads
0
v1.1.3

Public numbers from GitHub and PyPI, as of 2026-10-20. The site is rebuilt daily.

Install

Claude Code plugin
/plugin marketplace add alegauss/alegauss.github.io
/plugin install winwright@alegauss
NuGet
<PackageReference Include="Winwright" Version="1.1.3" />

What comes next

From the product's own docs/ROADMAP.md at 6d1a41c.

Block E

Capture — the picture that proves what it photographed

  • PartialA Mica window whose picture is drawn by Direct3D has no capture route at all
Block H

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
Block M

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 →
  1. A 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).

    WW551 · e826dc4
  2. A 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).

    WW550 · e6c2602
  3. A 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).

    WW549 · da0d785
  4. A 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.

    WW548 · 7c853f3
  5. Typing 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.

    WW545 · d87820d
  6. A 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.

    WW547 · c40adc6
  7. A 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.

    WW546 · b871ebe
  8. A 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.

    WW544 · 01119e1