axobject-query

Build Status

NOTICE: The API for AXObject Query is very much under development until a major version release. Please be aware that data structures might change in minor version releases before 1.0.0 is released.

AXObject Query

Approximate model of the Chrome AXObject.

The project attempts to map the AXObject concepts to the WAI-ARIA 1.1 Roles Model so that a complete representation of the semantic HTML layer, as it is exposed assistive technology, can be obtained.

Utilities

AXObjects

import { AXObjects } from 'axobject-query';

AXObjects are mapped to their HTML and ARIA concepts in the relatedConcepts field.

The type field is a loose association of an AXObject to the window, structure and widget abstract roles in ARIA. The generic value is given to DivRole; it does not exist in ARIA. Divs are special in HTML in the way that they are used as generic containers. Span might have also been associated with a generic type except that there is no SpanRole AXObject.

Map {
  'AbbrRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'AlertDialogRole' => { relatedConcepts: [ [Object] ], type: 'window' },
  'AlertRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'AnnotationRole' => { relatedConcepts: [], type: 'structure' },
  'ApplicationRole' => { relatedConcepts: [ [Object] ], type: 'window' },
  'ArticleRole' => { relatedConcepts: [ [Object], [Object] ], type: 'structure' },
  'AudioRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'BannerRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'BlockquoteRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'BusyIndicatorRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'ButtonRole' => { relatedConcepts: [ [Object], [Object] ], type: 'widget' },
  'CanvasRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'CaptionRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'CellRole' => { relatedConcepts: [ [Object], [Object], [Object] ], type: 'widget' },
  'CheckBoxRole' => { relatedConcepts: [ [Object], [Object] ], type: 'widget' },
  'ColorWellRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'ColumnHeaderRole' => { relatedConcepts: [ [Object], [Object] ], type: 'widget' },
  'ColumnRole' => { relatedConcepts: [], type: 'structure' },
  'ComboBoxRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'ComplementaryRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'ContentInfoRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'DateRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'DateTimeRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'DefinitionRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'DescriptionListDetailRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'DescriptionListRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'DescriptionListTermRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'DetailsRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'DialogRole' => { relatedConcepts: [ [Object], [Object] ], type: 'window' },
  'DirectoryRole' => { relatedConcepts: [ [Object], [Object] ], type: 'structure' },
  'DisclosureTriangleRole' => { relatedConcepts: [], type: 'widget' },
  'DivRole' => { relatedConcepts: [ [Object] ], type: 'generic' },
  'DocumentRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'EmbeddedObjectRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'FeedRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'FigcaptionRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'FigureRole' => { relatedConcepts: [ [Object], [Object] ], type: 'structure' },
  'FooterRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'FormRole' => { relatedConcepts: [ [Object], [Object] ], type: 'structure' },
  'GridRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'GroupRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'HeadingRole' => { relatedConcepts: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object] ], type: 'structure' },
  'IframePresentationalRole' => { relatedConcepts: [], type: 'window' },
  'IframeRole' => { relatedConcepts: [ [Object] ], type: 'window' },
  'IgnoredRole' => { relatedConcepts: [], type: 'structure' },
  'ImageMapLinkRole' => { relatedConcepts: [], type: 'widget' },
  'ImageMapRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'ImageRole' => { relatedConcepts: [ [Object], [Object] ], type: 'structure' },
  'InlineTextBoxRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'InputTimeRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'LabelRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'LegendRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'LineBreakRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'LinkRole' => { relatedConcepts: [ [Object], [Object] ], type: 'widget' },
  'ListBoxOptionRole' => { relatedConcepts: [ [Object], [Object] ], type: 'widget' },
  'ListBoxRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'ListItemRole' => { relatedConcepts: [ [Object], [Object] ], type: 'structure' },
  'ListMarkerRole' => { relatedConcepts: [], type: 'structure' },
  'ListRole' => { relatedConcepts: [ [Object], [Object], [Object] ], type: 'structure' },
  'LogRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'MainRole' => { relatedConcepts: [ [Object], [Object] ], type: 'structure' },
  'MarkRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'MarqueeRole' => { relatedConcepts: [ [Object], [Object] ], type: 'structure' },
  'MathRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'MenuBarRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'MenuButtonRole' => { relatedConcepts: [], type: 'widget' },
  'MenuItemRole' => { relatedConcepts: [ [Object], [Object] ], type: 'widget' },
  'MenuItemCheckBoxRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'MenuItemRadioRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'MenuListOptionRole' => { relatedConcepts: [], type: 'widget' },
  'MenuListPopupRole' => { relatedConcepts: [], type: 'widget' },
  'MenuRole' => { relatedConcepts: [ [Object], [Object] ], type: 'structure' },
  'MeterRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'NavigationRole' => { relatedConcepts: [ [Object], [Object] ], type: 'structure' },
  'NoneRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'NoteRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'OutlineRole' => { relatedConcepts: [], type: 'structure' },
  'ParagraphRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'PopUpButtonRole' => { relatedConcepts: [], type: 'widget' },
  'PreRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'PresentationalRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'ProgressIndicatorRole' => { relatedConcepts: [ [Object], [Object] ], type: 'structure' },
  'RadioButtonRole' => { relatedConcepts: [ [Object], [Object] ], type: 'widget' },
  'RadioGroupRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'RegionRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'RootWebAreaRole' => { relatedConcepts: [], type: 'structure' },
  'RowHeaderRole' => { relatedConcepts: [ [Object], [Object] ], type: 'widget' },
  'RowRole' => { relatedConcepts: [ [Object], [Object] ], type: 'structure' },
  'RubyRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'RulerRole' => { relatedConcepts: [], type: 'structure' },
  'ScrollAreaRole' => { relatedConcepts: [], type: 'structure' },
  'ScrollBarRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'SeamlessWebAreaRole' => { relatedConcepts: [], type: 'structure' },
  'SearchRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'SearchBoxRole' => { relatedConcepts: [ [Object], [Object] ], type: 'widget' },
  'SliderRole' => { relatedConcepts: [ [Object], [Object] ], type: 'widget' },
  'SliderThumbRole' => { relatedConcepts: [], type: 'structure' },
  'SpinButtonRole' => { relatedConcepts: [ [Object], [Object] ], type: 'widget' },
  'SpinButtonPartRole' => { relatedConcepts: [], type: 'structure' },
  'SplitterRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'StaticTextRole' => { relatedConcepts: [], type: 'structure' },
  'StatusRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'SVGRootRole' => { relatedConcepts: [], type: 'structure' },
  'SwitchRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'TabGroupRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'TabRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'TableHeaderContainerRole' => { relatedConcepts: [], type: 'structure' },
  'TableRole' => { relatedConcepts: [ [Object], [Object] ], type: 'structure' },
  'TabListRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'TabPanelRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'TermRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'TextFieldRole' => { relatedConcepts: [ [Object], [Object], [Object] ], type: 'widget' },
  'TimeRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'TimerRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'ToggleButtonRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'ToolbarRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'TreeRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'TreeGridRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'TreeItemRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'UserInterfaceTooltipRole' => { relatedConcepts: [ [Object] ], type: 'structure' },
  'VideoRole' => { relatedConcepts: [ [Object] ], type: 'widget' },
  'WebAreaRole' => { relatedConcepts: [], type: 'structure' },
  'WindowRole' => { relatedConcepts: [], type: 'window' }
}

AXObject to Element

AXObjects are mapped to their related HTML concepts, which may require attributes (in the case of inputs) to obtain the correct association.

AXObject to Role

AXObjects are mapped to their related ARIA concepts..

Element to AXObject

HTML elements are mapped to their related AXConcepts concepts.

Last updated

Was this helpful?