Accessibility Interoperability Testing
Typically, user interfaces are represented as a hierarchical tree. For example, an application window would contain several objects, the first of which might be a menu bar. The menu bar would contain a number of menus, each of which contains a number of menu items, and so on. The Accessibility Application Program Interface (AAPI) describes the object relationships to other objects, to provide context. Other features such as information about text formatting, applicable headers for content sections or table cells and things such as event notifications, are also available in the AAPI.
- A web developer writes some HTML code.
- That HTML code is retrieved and parsed by a user agent browser.
- The user agent browser uses the appropriate AAPI Mapping standard to create, and maintain, an Accessibility Tree Document Object Model (DOM) representation with only HTML information that is relevant to the assistive technology screen reader.
- The Accessibility Tree is exposed via the platform AAPI.
- The assistive technology screen reader then interacts with the AAPI to retrieve information about the web page.
- The assistive technology screen reader reads the content to the end user via a refreshable braille display and/or synthesized speech output.
- A Key To Web Accessibility: By Leonie Watson & Chaals McCathie Nevile, March 2015
Application Programming Interface Models
There is a contract model between user agents (browsers) and assistive technologies (screen readers). Each web page element has a Name, a Role, a Value and a State Interpreted by assistive technology Used in combination with the Accessibility Application Programming Interface (AAPI). Assistive technologies can make standard method calls to the operating system to get information about the objects on the screen. In browsers, the platform Accessibility API is used both to make information about the browser itself available to assistive technologies and to expose information about the currently rendered content. Browsers typically support one or more of the available AAPI for the platform they are running on. Typically, browsers use the HTML DOM, along with further information derived from style sheets, to generate an accessibility tree hierarchy of the content it is displaying, and it passes that information to the platform AAPI. Information such as the role, name and state of each object in the content, as well as how it relates to other objects in the content, can then be queried by assistive technologies. While each operating system and vendor AAPI is different, there are some concepts all of them share.
- The tree, which models the entire interface as a tree of objects, exposed to assistive technology via the Accessibility API.
- The events, which let assistive technology know that a part of the tree has changed somehow.
- The actions, which come from assistive technology to ask the interface to change.
AAPI Models
Windows, Firefox, Chrome, Opera and Yandex, support MSAA, IAccessible and IAccessible2. While Internet Explorer supports MSAA, IAccessible and UIAExpress. Safari and Chrome support NSAccessibility on OSX and UIAccessibility on iOS. ChromeVox uses DOM access exclusively to provide web content information to assistive technologies, and does not use the Chrome Accessibility API.
- Mac OS: Mac OS X Accessibility Protocol
- Microsoft Windows: MSAA, IAccessible2, UI Automation
- Linux: ATK, AT-SPI
- W3C: HTML to Platform Accessibility APIs Implementation Guide