Skip to main content

Every feature on every kind of application

What each case of the shared contract said on each kind of application, as SPART-Desk's own contract runs last saw it. Each run drives one application of its kind, carrying the same form, tree, list and dialog (and, with --more, the same further controls); app-coverage.md rates the kinds of application as a whole. This page is rendered from those runs, and a run on one application updates its column.

MarkMeaning
✓passes
✓ˢpasses, with a control found on the screen (read text or a picture) rather than in an accessibility tree
gapnot done by SPART-Desk on this kind of application: the application gives what it would need
limitthe application gives nothing to do it with, and SPART-Desk says so: it refuses at once, or says why it found nothing
silentthe application gives nothing to do it with, in a way SPART-Desk cannot tell (a wrong state, input it ignores)
n/athe application has no such control
✗failed
!passed, though declared a gap, a limit or silent: the case should not run here
(blank)not run

Summary​

Application✓gaplimitsilentn/a✗!not runLast run
Win328600010002026-11-03
Win32 (RichEdit20W)8400010022026-10-30
VCL8601000002026-11-03
VCL (32-bit)8401000022026-11-02
WinForms8700000002026-11-03
WinForms .NET 108500000022026-10-30
Krypton8601000002026-11-03
WPF8500020002026-11-03
WPF suite8700000002026-11-03
WinUI 38400030002026-11-03
WinUI 3 (packaged)8200030022026-11-02
MAUI68020170002026-11-03
Avalonia8700000002026-11-03
Qt8601000002026-11-03
Qt Quick7702080002026-11-03
wx8601000002026-11-03
Tk8205000002026-11-03
Swing8601000002026-11-03
Swing (Java 8, 32-bit)8601000002026-11-02
JavaFX8601000002026-11-03
SWT8601000002026-11-03
Electron8700000002026-11-03
CEF8700000002026-11-03
WebView28400030002026-11-04
IE WebBrowser8401020002026-11-03
Flutter68013060002026-11-03
React Native (Windows)66000190022026-11-03

A form​

FeatureWin32Win32 (RichEdit20W)VCLVCL (32-bit)WinFormsWinForms .NET 10KryptonWPFWPF suiteWinUI 3WinUI 3 (packaged)MAUIAvaloniaQtQt QuickwxTkSwingSwing (Java 8, 32-bit)JavaFXSWTElectronCEFWebView2IE WebBrowserFlutterReact Native (Windows)
form.submit getByLabel · fill · selectOption · check · click✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
form.value toHaveValue · textContent✓✓✓ˢ✓ˢ✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
form.clear clear✓✓✓ˢ✓ˢ✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
form.type pressSequentially✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
form.key press(key)✓✓✓ˢ✓ˢ✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
form.chord press(chord)✓✓✓ˢ✓ˢ✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
form.focus focus · toBeFocused · isFocused✓✓✓ˢ✓ˢ✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
form.check check · uncheck · toBeChecked · isChecked✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
form.set-checked setChecked✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
form.option selectOption · toHaveValue✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
form.state toBeVisible · toBeEnabled · isEnabled · toHaveCount(0) · toBeHidden✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓limit¹✓
form.read toHaveText · toContainText · textContent✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓ˢ✓ˢ✓✓ˢ✓✓✓✓✓✓✓✓✓✓
  • ¹ Flutter: a disabled Flutter button does not report itself disabled

Saying which control​

FeatureWin32Win32 (RichEdit20W)VCLVCL (32-bit)WinFormsWinForms .NET 10KryptonWPFWPF suiteWinUI 3WinUI 3 (packaged)MAUIAvaloniaQtQt QuickwxTkSwingSwing (Java 8, 32-bit)JavaFXSWTElectronCEFWebView2IE WebBrowserFlutterReact Native (Windows)
loc.and and✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
loc.or or✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
loc.filter filter({ hasText })✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
loc.relative rightOf✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓limit¹✓
loc.string locator('role=…[name=…]')✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
loc.automation-id getByAutomationId✓✓limit²limit²✓✓✓ˢ✓✓✓✓✓✓limit³limit³limit⁴limit⁵limit⁶limit⁶limit⁷limit⁸✓✓✓✓limit⁹✓
loc.image screenshot · getByImage✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ
  • ¹ Flutter: a Flutter text field's label is drawn inside it: no text lies to its left
  • ² VCL, VCL (32-bit): VCL gives every window its own handle as its control id, new from run to run: no identifier stays
  • ³ Qt, Qt Quick: Qt reports a label whose accessible name is set by that name alone: its text shows only on the screen
  • ⁴ wx: wxWidgets gives the status line no identifier of its own
  • ⁵ Tk: Tk 9.0 shows UI Automation nothing: a painted widget has no role, state or value to read
  • ⁶ Swing, Swing (Java 8, 32-bit): the Java Access Bridge gives a control no identifier
  • ⁷ JavaFX: JavaFX reports no node's id as its AutomationId: the status line's id is set, and not seen
  • ⁸ SWT: SWT gives a control no identifier of its own
  • ⁹ Flutter: Flutter's semantics give a widget no identifier

The window's input devices​

FeatureWin32Win32 (RichEdit20W)VCLVCL (32-bit)WinFormsWinForms .NET 10KryptonWPFWPF suiteWinUI 3WinUI 3 (packaged)MAUIAvaloniaQtQt QuickwxTkSwingSwing (Java 8, 32-bit)JavaFXSWTElectronCEFWebView2IE WebBrowserFlutterReact Native (Windows)
input.keyboard window.keyboard.type · press✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
input.mouse window.mouse.click · move · down · up✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
input.touchscreen window.touchscreen.tap✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
input.tap tap✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
input.pen window.pen.tap✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓

A modal dialog​

FeatureWin32Win32 (RichEdit20W)VCLVCL (32-bit)WinFormsWinForms .NET 10KryptonWPFWPF suiteWinUI 3WinUI 3 (packaged)MAUIAvaloniaQtQt QuickwxTkSwingSwing (Java 8, 32-bit)JavaFXSWTElectronCEFWebView2IE WebBrowserFlutterReact Native (Windows)
modal.answer click a dialog's button✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
modal.wait-for waitFor · waitFor({ state: hidden })✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
modal.window waitForWindow · toHaveTitle✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓n/a¹n/a¹n/a¹✓✓n/a¹✓✓ˢ✓✓✓✓✓✓n/a¹✓n/a¹n/a¹
modal.on-window onWindow✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓n/a¹n/a¹n/a¹✓✓n/a¹✓✓ˢ✓✓✓✓✓✓n/a¹✓n/a¹n/a¹
modal.close window({ title }).close✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓n/a¹n/a¹n/a¹✓✓n/a¹✓✓ˢ✓✓✓✓✓✓n/a¹✓n/a¹n/a¹
  • ¹ WinUI 3, WinUI 3 (packaged), MAUI, Qt Quick, WebView2, Flutter, React Native (Windows): the modal dialog shows inside the window, with no window of its own

The clipboard​

FeatureWin32Win32 (RichEdit20W)VCLVCL (32-bit)WinFormsWinForms .NET 10KryptonWPFWPF suiteWinUI 3WinUI 3 (packaged)MAUIAvaloniaQtQt QuickwxTkSwingSwing (Java 8, 32-bit)JavaFXSWTElectronCEFWebView2IE WebBrowserFlutterReact Native (Windows)
clipboard.paste clipboard.writeText · press(Control+V)✓✓ˢ✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓
clipboard.copy press(Control+C) · clipboard.readText✓✓ˢ✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓

A tree​

FeatureWin32Win32 (RichEdit20W)VCLVCL (32-bit)WinFormsWinForms .NET 10KryptonWPFWPF suiteWinUI 3WinUI 3 (packaged)MAUIAvaloniaQtQt QuickwxTkSwingSwing (Java 8, 32-bit)JavaFXSWTElectronCEFWebView2IE WebBrowserFlutterReact Native (Windows)
tree.choose expand · click✓✓✓✓✓✓✓✓✓✓✓n/a¹✓✓n/a²✓✓ˢ✓✓✓✓✓✓✓✓limit³✓
tree.selected isSelected✓✓✓✓✓✓✓✓✓✓✓n/a¹✓✓n/a²✓✓ˢ✓✓✓✓✓✓✓✓limit³✓
tree.expanded expand · collapse · toBeExpanded✓✓✓✓✓✓✓✓✓✓✓n/a¹✓✓n/a²✓✓ˢ✓✓✓✓✓✓✓✓limit³✓
tree.items count · allTextContents✓✓✓✓✓✓✓✓✓✓✓n/a¹✓✓n/a²✓✓ˢ✓✓✓✓✓✓✓✓limit³✓
tree.path tree().node().node()✓✓✓✓✓✓✓✓✓✓✓n/a¹✓✓n/a²✓✓ˢ✓✓✓✓✓✓✓✓limit³✓
  • ¹ MAUI: MAUI has no tree control
  • ² Qt Quick: Qt Quick Controls have no tree control
  • ³ Flutter: Flutter has no tree: an ExpansionTile reports a text with no tree item role or expand state

A list​

FeatureWin32Win32 (RichEdit20W)VCLVCL (32-bit)WinFormsWinForms .NET 10KryptonWPFWPF suiteWinUI 3WinUI 3 (packaged)MAUIAvaloniaQtQt QuickwxTkSwingSwing (Java 8, 32-bit)JavaFXSWTElectronCEFWebView2IE WebBrowserFlutterReact Native (Windows)
list.selected isSelected✓✓✓✓✓✓✓✓✓✓✓✓✓✓limit¹✓✓ˢ✓✓✓✓✓✓✓✓✓✓
list.nth first · nth✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
list.filter filter({ hasText }) · filter({ has })✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
list.api list() · item().named().find() · toContainItems✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
list.wheel scroll({ wheel }) · window.mouse.wheel✓✓✓ˢ✓ˢ✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
list.scroll scroll({ direction }) · scroll({ to })✓✓✓ˢ✓ˢ✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
list.into-view scrollIntoView✓✓✓ˢ✓ˢ✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
list.far-item click, paged into view✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
  • ¹ Qt Quick: Qt Quick reports a highlighted list item unselected: only a delegate's Accessible.selected reports the selection

A form with nothing tied to its labels​

FeatureWin32Win32 (RichEdit20W)VCLVCL (32-bit)WinFormsWinForms .NET 10KryptonWPFWPF suiteWinUI 3WinUI 3 (packaged)MAUIAvaloniaQtQt QuickwxTkSwingSwing (Java 8, 32-bit)JavaFXSWTElectronCEFWebView2IE WebBrowserFlutterReact Native (Windows)
plain.form getByLabel by the text beside · getByText✓✓✓ˢ✓ˢ✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓ˢ✓✓✓
plain.select getByLabel(…).selectOption by the text beside✓✓✓ˢ✓ˢ✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓limit¹n/a²
plain.near near✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ
  • ¹ Flutter: Flutter reports its drop-down as a button named by its choice, which the label beside it does not name
  • ² React Native (Windows): React Native's drop-down is a button named by its value, which the screen's reader does not take for one

Resolution strategies​

FeatureWin32Win32 (RichEdit20W)VCLVCL (32-bit)WinFormsWinForms .NET 10KryptonWPFWPF suiteWinUI 3WinUI 3 (packaged)MAUIAvaloniaQtQt QuickwxTkSwingSwing (Java 8, 32-bit)JavaFXSWTElectronCEFWebView2IE WebBrowserFlutterReact Native (Windows)
resolution.read read() · getByOcr✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓

A control's further properties​

FeatureWin32Win32 (RichEdit20W)VCLVCL (32-bit)WinFormsWinForms .NET 10KryptonWPFWPF suiteWinUI 3WinUI 3 (packaged)MAUIAvaloniaQtQt QuickwxTkSwingSwing (Java 8, 32-bit)JavaFXSWTElectronCEFWebView2IE WebBrowserFlutterReact Native (Windows)
props.details details✓✓✓ˢ✓ˢ✓✓✓✓✓✓✓✓✓✓✓✓limit¹✓✓✓✓✓✓✓✓✓✓
props.drop-down-click expand · click an item · closed after✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
  • ¹ Tk: Tk 9.0 shows UI Automation nothing: a painted widget has no role, state or value to read

What a pointer pad hears​

FeatureWin32Win32 (RichEdit20W)VCLVCL (32-bit)WinFormsWinForms .NET 10KryptonWPFWPF suiteWinUI 3WinUI 3 (packaged)MAUIAvaloniaQtQt QuickwxTkSwingSwing (Java 8, 32-bit)JavaFXSWTElectronCEFWebView2IE WebBrowserFlutterReact Native (Windows)
pad.buttons click({ button: middle | back | forward })✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓n/a¹✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
pad.touch tap✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓n/a¹✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
pad.pen window.pen.tap({ pressure, tilt })✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓n/a¹✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
  • ¹ MAUI: the application has no pointer pad

The window​

FeatureWin32Win32 (RichEdit20W)VCLVCL (32-bit)WinFormsWinForms .NET 10KryptonWPFWPF suiteWinUI 3WinUI 3 (packaged)MAUIAvaloniaQtQt QuickwxTkSwingSwing (Java 8, 32-bit)JavaFXSWTElectronCEFWebView2IE WebBrowserFlutterReact Native (Windows)
window.bounds setBounds · currentBounds✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
window.title toHaveTitle · currentTitle✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓
window.idle waitForIdle✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
window.screenshot window.screenshot · locator.screenshot✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
window.golden toHaveScreenshot · toMatchTreeSnapshot✓✓✓ˢ✓ˢ✓✓✓✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
window.snapshot app.snapshot · window.snapshot✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓
window.recommend candidatesFor · recommended locator✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
window.min-restore minimize · restore✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓
window.max-restore maximize · restoren/a¹n/a¹✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓
window.front bringToFront✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓
window.title-changes toHaveTitle after a change✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓n/a²n/a³
window.close app.close · isOpen✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓✓
  • ¹ Win32, Win32 (RichEdit20W): the window cannot be resized, so it cannot be maximized
  • ² Flutter: Flutter has no way to rename its window on Windows
  • ³ React Native (Windows): React Native has no way to rename its window from JavaScript

Further controls (--more)​

FeatureWin32Win32 (RichEdit20W)VCLVCL (32-bit)WinFormsWinForms .NET 10KryptonWPFWPF suiteWinUI 3WinUI 3 (packaged)MAUIAvaloniaQtQt QuickwxTkSwingSwing (Java 8, 32-bit)JavaFXSWTElectronCEFWebView2IE WebBrowserFlutterReact Native (Windows)
more.radio radio check · toBeChecked✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
more.radio-group group >> radio · toHaveCount · last✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓limit¹✓ˢ✓
more.slider slider fill · toHaveValue✓✓✓ˢ✓ˢ✓✓limit²✓✓✓✓✓✓✓✓✓limit³✓✓✓✓✓✓✓✓✓n/a⁴
more.slider-keys slider press(End)✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓limit³✓✓✓✓✓✓✓✓limit⁵n/a⁴
more.spinner spinbutton fill · toHaveValue✓✓✓ˢ✓ˢ✓✓✓ˢn/a⁶✓✓✓limit⁷✓✓✓✓✓ˢ✓✓✓✓✓✓✓n/a⁸n/a⁹n/a¹⁰
more.spinner-keys spinbutton press(ArrowUp)✓✓✓ˢ✓ˢ✓✓✓n/a⁶✓✓✓limit⁷✓✓✓✓✓ˢ✓✓✓✓✓✓✓n/a⁸n/a⁹n/a¹⁰
more.tabs tab click · isSelected✓✓✓✓✓✓✓ˢ✓✓✓✓n/a¹¹✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
more.menu menuitem click✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓limit¹²n/a¹³
more.menu-shortcut window.keyboard.press(shortcut)✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓n/a¹³
more.context-menu click({ button: right }) · menuitem click✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓limit¹²n/a¹⁴
more.dblclick dblclick✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
more.click-modifiers click({ modifiers }) · click({ position })✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓n/a¹⁵
more.hover hover✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓ˢ✓
more.tooltip hover · tooltip✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓ˢn/a¹⁶
more.drag dragTo✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓ˢn/a¹⁷
more.mouse-drag window.mouse.drag✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓ˢn/a¹⁷
more.disabled toBeDisabled · isEnabled · click times out✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓✓✓✓✓✓limit³✓✓✓✓✓✓✓✓limit¹⁸✓
more.keys press(Control+Shift+K)✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓n/a¹⁹✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
more.function-key press(F2)✓✓✓ˢ✓ˢ✓✓✓ˢ✓✓✓✓n/a¹⁹✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓✓
more.grid table().columns · toHaveRowCount✓✓✓ˢ✓ˢ✓✓✓✓✓✓✓n/a²⁰✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓n/a²¹
more.grid-row row().where().equals().find() · getByColumn · toContainRows✓✓✓✓✓✓✓✓✓✓✓n/a²⁰✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓n/a²¹
more.grid-select row click✓✓✓✓✓✓✓ˢ✓✓✓✓n/a²⁰✓✓✓✓✓ˢ✓✓✓✓✓✓✓✓✓n/a²¹
  • ¹ IE WebBrowser: Internet Explorer reports an HTML fieldset as nothing: its legend is a text beside the radio buttons, and no group holds them
  • ² Krypton: Krypton paints the control itself: it has no element with a role or a state
  • ³ Tk: Tk 9.0 shows UI Automation nothing: a painted widget has no role, state or value to read
  • ⁴ React Native (Windows): React Native's core has no slider
  • ⁵ Flutter: Flutter's slider takes the arrow keys only
  • ⁶ WPF: WPF has no spin box of its own
  • ⁷ MAUI: MAUI's Stepper is two buttons, with no spin box and no field
  • ⁸ IE WebBrowser: Internet Explorer shows an as a plain text field: there is no spin box
  • ⁹ Flutter: Flutter has no spin box widget
  • ¹⁰ React Native (Windows): React Native's core has no spin box
  • ¹¹ MAUI: a TabbedPage replaces the page: MAUI has no tabs inside one
  • ¹² Flutter: a Flutter menu's items are buttons to UI Automation, not menu items
  • ¹³ React Native (Windows): React Native has no menu bar
  • ¹⁴ React Native (Windows): a right click reaches no React Native for Windows component
  • ¹⁵ React Native (Windows): a React Native for Windows press carries no modifier keys
  • ¹⁶ React Native (Windows): React Native for Windows' tooltip lies outside the application's accessibility tree
  • ¹⁷ React Native (Windows): React Native's core has no drag and drop
  • ¹⁸ Flutter: a disabled Flutter button does not report itself disabled
  • ¹⁹ MAUI: a MAUI view raises no key events
  • ²⁰ MAUI: MAUI has no data grid
  • ²¹ React Native (Windows): React Native's core has no data grid