Search code examples
accessibility-insights

What is the ControlType in Accessibility Insights for Windows and how does it map to HTML elements?


Accessibility Insights for Windows shows the following property:

ControlType Group(50026)

when I hover over a search box that is an <input /> html tag.
I used Google Chrome Version 80.0.3987.87 (Official Build) (64-bit).

How does AI4W determine the control type of the html tag?

The accessibility insights doc says the control type is a concept from the Microsoft UI automation accessibility framework. You can look up the 50026 id for Group on this reference page.

It is not yet clear to me how AI4W determined the exact control type. I suspect Chrome implements a Client-Side (Proxy) UI Automation Provider but I am not sure about it. If it does, how does the implementation deduce the control types?

Related questions:


Solution

  • To add to Rob Gallo's answer:

    To determine the exact accessibility provider used by the browser:

    1. Start Accessibility Insights for Windows.
    2. Select live inspect and point to element of interest.
    3. Set the tool to always show following properties: FrameworkId and ProviderDescription (use the cogwheel in upper right of pane containing the Properties table).
    4. Observe the value.

    For example, this:

    FrameworkId: Chrome 
    ProviderDescription: [pid:33748,providerId:0x0 Main(parent link):Microsoft: MSAA Proxy (IAccessible2) (unmanaged:UIAutomationCore.DLL)]
    

    means that UIA is translating to its format the data exposed by Chrome as IAccessible2, as explained in UI Automation: An Incomplete Guide for UI builders – Part 1. There are more possible UIA providers even when using the same browser. Knowing the right UIA provider is required for root causing problems with the UIA hierarchy. See the linked article for details.

    In addition, the HTML Accessibility API Mappings 1.0 spec section on accessibility APIs links to UI Automation for W3C Accessible Rich Internet Applications Specification which explains specified ControlTypes for given ARIA roles, which are defined in this spec (v1.1).

    A good article providing additional context for this discussion: https://sarahmhigley.com/writing/roles-and-relationships/