The verbs
This is what the engine can do, and — the column that decides where your suite can run — what each verb needs before it can answer.
These are the engine’s own calls, which is what your driving project reaches for and what a case file reaches through. A step in a case names an act by one word; the closed list of those words is on the case format, and the verb underneath it is here.
121 verbs in 39 families. 94 of them run against an application that references nothing and a desk nobody promised. 25 need a desk. 2 need the in-app half on the other end.
Those three figures are counted out of the catalogue on every build, and the catalogue is checked against the engine in both directions — a verb added without an entry is a red. So the table below cannot fall behind the engine without the suite saying so first.
What a verb can need
Section titled “What a verb can need”Most need nothing. A pattern act asks the control through its own accessibility peer:
invoke, toggle, set value, select, expand, collapse. It works on an application
that has never heard of this library, on a build agent, with the window in the background.
A desk means the foreground. The acts that synthesise real input — typing, clicking, nudging, pressing a key, walking a menu — put the input where Windows is pointing, so they need the foreground and there is nobody who can promise it. A run that asked and did not get it reports a hole: named, counted, and not folded into either a pass or a failure. That is the difference between a suite that runs unattended and one that only runs at somebody’s desk, and this table is where to find out which verbs you are reaching for.
The in-app half is a package you ship. These verbs need Winwright.InApp referenced by the
application under test, so they are a decision about your product rather than about your tests.
- None
- Nothing. It reads what any Windows application already offers.
- TheInAppHalf
- The in-app half, on the other end. The engine cannot call it at all — the assembly carries no reference to it — so this is never an API call.
Every verb
Section titled “Every verb”| Family | Verb | What it does | Needs |
|---|---|---|---|
Resolve | Once | one look for a locator under a root | nothing |
Until | the same, polled to a deadline | nothing | |
Matching | every element one step matches | nothing | |
Beneath | every element a locator's steps before its last one reach | nothing | |
Inspect | Window | the control view under a window handle | nothing |
Under | the same under an element already in hand | nothing | |
Render | that tree as lines a person reads | nothing | |
Rendered | the same lines with their parts kept | nothing | |
Line | one element as its own line | nothing | |
CopyableStep | the step a line opens with, where it has one | nothing | |
ElementFacts | Of | what UI Automation says about one element | nothing |
PatternValues | Of | what its patterns read, as values | nothing |
ActionabilityCheck | Of | whether an element can take an act | nothing |
Worded | one of the four as a person says it | nothing | |
Admitted | To | the door an act reaches its element through | nothing |
Of | the same against a look already taken | nothing | |
Subject | Unguarded | a subject with no project behind it | nothing |
Locator | Parse | a locator out of its text | nothing |
TryParse | the same without throwing | nothing | |
UiaVocabulary | IsControlType | whether a name is a control type | nothing |
IsPattern | whether a name is a pattern | nothing | |
ControlTypeFor | the control type one name means | nothing | |
Nearest | the nearest name to a misspelt one | nothing | |
Attempt | Once | one look, which is what asking whether a thing has gone needs | nothing |
Until | a deadline on a sighting | nothing | |
UntilTrue | a deadline on a condition | nothing | |
Retry | Bounded | an act attempted to a cap and counted | nothing |
Recorded | that count stamped onto the step a trace records | nothing | |
Focus | In | what holds the focus, read against the application under test | nothing |
Held | the same, or nothing where the focus went somewhere else | nothing | |
Preflight | Check | what each declared act needs against the tree | nothing |
Offers | what one locator's element offers | nothing | |
Require | the same, stopping on a refusal | nothing | |
Act | Invoke | press it through its own accessibility peer | nothing |
Toggle | flip it through the toggle pattern | nothing | |
SetValue | write through the value pattern | nothing | |
SetRange | move through the range pattern | nothing | |
Select | select through the selection-item pattern | nothing | |
Expand | open through the expand-collapse pattern | nothing | |
Collapse | shut through the same | nothing | |
Selecting | Confirmed | select and confirm, escalating only if allowed | nothing |
Surface | AsFound | put the controls back the way they were | nothing |
Pick | Values | every value a picker holds | nothing |
Pointer | Check | each declared reason against the tree | nothing |
Reasons | what needs a desktop, grouped by why | nothing | |
Summarise | the same as one block of text | nothing | |
Worded | one reason as a person says it | nothing | |
MayGetAPeer | whether a peer would make the act unnecessary | nothing | |
Click | synthesised mouse input | a desk | |
DoubleClick | two of the same | a desk | |
Run | a declared pointer act | a desk | |
Keyboard | Type | synthesised keys into a control | a desk |
Run | a declared typing act | a desk | |
Traversal | Press | a traversal key at a window | a desk |
Nudge | a range moved by a key | a desk | |
WhoHasFocus | what holds the focus, asked and not pressed | nothing | |
Synthesised | Type | typing, as a step's own result | a desk |
Click | a click a case had to say the reason for | a desk | |
Nudge | an arrow key at a range control, as a step | a desk | |
Chord | TryParse | whether text a case wrote is a chord, answered before anything is driven | nothing |
Spelled | what a chord may be, which is what a refusal lists when one is not | nothing | |
Synthesised | Press | a traversal key at the window, or WW317's chord — one verb, and neither needs anything of the application beyond the desktop the keys go to | a desk |
Pick | Value | reach a value, by keyboard where the pattern will not | a desk |
At | reach whatever sits at a position, by the same two routes | a desk | |
Synthesised | Pick | reaching a value in a picker, as a step | a desk |
PickAt | reaching a position in a picker, as a step | a desk | |
ExpandMenu | opening a submenu with Right, as a step | a desk | |
Menu | Enter | enter a menu bar the way a keyboard user does | a desk |
To | walk to an entry | a desk | |
Expand | open a submenu | a desk | |
Dismiss | close what was opened | a desk | |
Highlighted | what a menu is highlighting, read and not pressed | nothing | |
NotificationArea | Tray | the taskbar's notification area | nothing |
Overflow | the flyout, where it is open | nothing | |
Chevron | the button that opens it | nothing | |
Showing | the icons on the bar | nothing | |
Hidden | the icons in the flyout | nothing | |
ElementFor | one icon as an element | nothing | |
Reachable | whether there is a notification area to look at | nothing | |
Placing | whether this desk is placing icons at all, wherever they land — the question a case asks after failing to find its own, and the one that tells a slow shell from an absent icon | nothing | |
Find | an icon by name, opening the flyout to look | a desk | |
OpenOverflow | open the flyout | a desk | |
CloseOverflow | shut it again | a desk | |
OpenMenu | an icon's context menu, by key | a desk | |
Click | an icon clicked with the primary button, at its centre (WW483) | a desk | |
TopLevelWindows | OfProcess | every top-level window a process owns | nothing |
Largest | the largest of them, which is the frame where there is one | nothing | |
DrawnByTheShell | whether a window class is one the shell draws on an application's behalf, which is how the drop shadow behind a menu stops being the largest window a tray process owns | nothing | |
Foreground | Now | who holds the keyboard, read straight from Windows | nothing |
Check | whether a named window holds it | nothing | |
Waited | the same, waited for over a budget the caller declares — WW470, for a window that is still coming forward rather than one somebody else is holding | nothing | |
Between | the same judgement over two sightings a caller already has | nothing | |
ForeignInput | Watch | start a window in which this run owns the machine | nothing |
Read | whether anybody else used it in that window | nothing | |
Desk | Read | whether there is an interactive desk to drive at all | nothing |
Blocked | the reading as the one line a refusal prints | nothing | |
Caught | whether a throw is the desk refusing rather than the code failing | nothing | |
WorthAnotherLook | whether a refusal is one a second look could answer | nothing | |
AppTarget | AttachTo | a target from a pid this run did not start | nothing |
AttachToWindow | the same from a window handle | nothing | |
FromLaunch | a target from a process this run launched, arguments kept | nothing | |
ProcessRegister | For | a register with the stopping budget a project declares | nothing |
Obstruction | Reading | what stands over a region, read off the z order | nothing |
PaintedFrame | Of | what a window actually paints inside the rectangle it owns | nothing |
SeeThrough | Of | whether a window's own pixels are composited with what is behind them, read off its style bits and its layer attributes — an application that references nothing still has both | nothing |
DerivedSet | From | the expected set out of the strings the project declares | nothing |
Reported | the expected set out of what the application prints when the project's arguments ask it | nothing | |
ReportedValue | one expected value out of what the application prints, where the answer is not a set | nothing | |
Loading | In | whether a page has finished computing, read off the tree against the project's own loading label — and a page it could not walk answers that it did not look | nothing |
Sighted | whether one declared string is showing right now, and whether the look reached the whole window — which is what makes an absence an absence | nothing | |
CaseRun | Of | one case, run: the loop, the waits, the attempts and the verdict, none of which the case itself carries | nothing |
Suite | Run | the cases a selection asked for, run against a window the caller already has, with what it left alone named rather than counted | nothing |
Launch | the same, launching the application under test per fixture — and lending one window to the cases that only read it where the invocation asked for that | nothing | |
Undeclared | which steps name an act needing a project key nothing declares — the reading behind the refusal a run makes at its door, split out so a tool can report every one of them where a run stops at the first | nothing | |
OwnRender | Into | ask the application to render the tree behind one of its windows into a named file, and read back whether it did — the route this block calls its default, which the engine cannot take because a render needs a visual tree and nothing outside that process has one | the in-app half |
PopupInto | ask the application for the tree one named popup is holding — the surface a copy of the screen cannot photograph open and has nothing to photograph closed, so a preview of a flyout nobody has clicked is a picture only the application can take | the in-app half | |
ArmedIn | whether an application has put up the window its in-app half declares — the reading the engine already took to decide whether a silence it recorded still stands, and the one this suite used to take again with a walk of its own | nothing | |
DropShadows | Reading | whether this desk draws the shadow a menu asks for — a system setting, off on a runner tuned for speed, and the fact that turns a case waiting for a shadow into a hole naming it | nothing |
Of | the answer a reading already taken turns into, which is the half a case can drive without switching a setting of the machine off in the middle of a run | nothing | |
Menu | MenuOwner | which window is working a menu right now, read from the desk's own input state — the fact that tells a tracked popup's owner holding the foreground from an intruder holding it | nothing |
RaisedFrom | the same fact for the kind Windows says nothing about: which window of the menu's own thread holds the desk, which is what a drop-down raised for a tray icon leaves behind | nothing |
Where to go next
Section titled “Where to go next”- The case format — the
actfield, and the closed list of what a step may name. - Addressing an element — how a verb is told what to act on.
- The README — the same families in prose, with the reasoning behind each.