Skip to content

axe testing codes as dataframes and exceptions¤

in accessibility testing there are two modes:

  1. one mode where you are testing a baseline
  2. one mode where you have errors in the baseline, and trying to address to errors.

as we work through the tidy data representation of the axe codes we'll understand more of the landscape that axe covers in their automated tests. we'll have a birds eye of what is tested. these tests then need to make sense in automated testing scenarios beyond a 👍/👎. it is important that downstreams user can reason with continuous test results, and promptly resolve automated inaccessibles. improvements to the testing resolution should help developers resolve issues.

    import pandas, requests, markdown_it, io, networkx, matplotlib, numpy
    from toolz.curried import *; f = compose = compose_left

the axe codes¤

axe has tests for a varied accessibility conditions. the list of categories/tags are available @ https://raw.githubusercontent.com/dequelabs/axe-core/master/doc/rule-descriptions.md

    page = requests.get("https://raw.githubusercontent.com/dequelabs/axe-core/master/doc/rule-descriptions.md")
    MD = markdown_it.MarkdownIt("gfm-like")

load the rules into a dataframe¤

it is possible to extra tables as dataframes after we convert the markdown to html.

this next unit of work separates urls from their content.

    rules, *_ = pandas.read_html(io.StringIO(MD.render(page.text)), extract_links="body")
    rules = rules.join(
        rules[["ACT Rules", "Rule ID"]]
        .stack().apply(f(type([]), pandas.Series))
        .rename(columns=dict(enumerate("value url".split())))
        .unstack().pipe(
            lambda df: df[df.map(bool).any(axis=1)]
        )["url"].map(juxt(identity)), rsuffix="_url"
    )
    rules = rules.map(lambda x: x[0])
    rules.columns = pipe(rules.columns, map(f(str.lower, str.split, "_".join)))
    rules.issue_type =  rules.issue_type.str.replace("needs\s", "needs_", regex=True)
    rules = rules.set_index(rules.rule_id.str.replace("([.-])", "_", regex=True).pipe(pandas.Index, name="id"))
    rules
rule_id description impact tags issue_type act_rules act_rules_url rule_id_url
id
area_alt area-alt Ensures <area> elements of image maps have alt... Critical cat.text-alternatives, wcag2a, wcag244, wcag41... failure, needs_review c487ae https://act-rules.github.io/rules/c487ae https://dequeuniversity.com/rules/axe/4.8/area...
aria_allowed_attr aria-allowed-attr Ensures an element's role supports its ARIA at... Critical cat.aria, wcag2a, wcag412, EN-301-549, EN-9.4.1.2 failure, needs_review 5c01ea https://act-rules.github.io/rules/5c01ea https://dequeuniversity.com/rules/axe/4.8/aria...
aria_braille_equivalent aria-braille-equivalent Ensure aria-braillelabel and aria-brailleroled... Serious cat.aria, wcag2a, wcag412, EN-301-549, EN-9.4.1.2 needs_review None https://dequeuniversity.com/rules/axe/4.8/aria...
aria_command_name aria-command-name Ensures every ARIA button, link and menuitem h... Serious cat.aria, wcag2a, wcag412, TTv5, TT6.a, EN-301... failure, needs_review 97a4e1 https://act-rules.github.io/rules/97a4e1 https://dequeuniversity.com/rules/axe/4.8/aria...
aria_conditional_attr aria-conditional-attr Ensures ARIA attributes are used as described ... Serious cat.aria, wcag2a, wcag412, EN-301-549, EN-9.4.1.2 failure 5c01ea https://act-rules.github.io/rules/5c01ea https://dequeuniversity.com/rules/axe/4.8/aria...
aria_deprecated_role aria-deprecated-role Ensures elements do not use deprecated roles Minor cat.aria, wcag2a, wcag412, EN-301-549, EN-9.4.1.2 failure 674b10 https://act-rules.github.io/rules/674b10 https://dequeuniversity.com/rules/axe/4.8/aria...
aria_hidden_body aria-hidden-body Ensures aria-hidden="true" is not present on t... Critical cat.aria, wcag2a, wcag412, EN-301-549, EN-9.4.1.2 failure None https://dequeuniversity.com/rules/axe/4.8/aria...
aria_hidden_focus aria-hidden-focus Ensures aria-hidden elements are not focusable... Serious cat.name-role-value, wcag2a, wcag412, TTv5, TT... failure, needs_review 6cfa84 https://act-rules.github.io/rules/6cfa84 https://dequeuniversity.com/rules/axe/4.8/aria...
aria_input_field_name aria-input-field-name Ensures every ARIA input field has an accessib... Serious cat.aria, wcag2a, wcag412, TTv5, TT5.c, EN-301... failure, needs_review e086e5 https://act-rules.github.io/rules/e086e5 https://dequeuniversity.com/rules/axe/4.8/aria...
aria_meter_name aria-meter-name Ensures every ARIA meter node has an accessibl... Serious cat.aria, wcag2a, wcag111, EN-301-549, EN-9.1.1.1 failure, needs_review None https://dequeuniversity.com/rules/axe/4.8/aria...
aria_progressbar_name aria-progressbar-name Ensures every ARIA progressbar node has an acc... Serious cat.aria, wcag2a, wcag111, EN-301-549, EN-9.1.1.1 failure, needs_review None https://dequeuniversity.com/rules/axe/4.8/aria...
aria_prohibited_attr aria-prohibited-attr Ensures ARIA attributes are not prohibited for... Serious cat.aria, wcag2a, wcag412, EN-301-549, EN-9.4.1.2 failure, needs_review 5c01ea https://act-rules.github.io/rules/5c01ea https://dequeuniversity.com/rules/axe/4.8/aria...
aria_required_attr aria-required-attr Ensures elements with ARIA roles have all requ... Critical cat.aria, wcag2a, wcag412, EN-301-549, EN-9.4.1.2 failure 4e8ab6 https://act-rules.github.io/rules/4e8ab6 https://dequeuniversity.com/rules/axe/4.8/aria...
aria_required_children aria-required-children Ensures elements with an ARIA role that requir... Critical cat.aria, wcag2a, wcag131, EN-301-549, EN-9.1.3.1 failure, needs_review bc4a75, ff89c9 https://act-rules.github.io/rules/bc4a75 https://dequeuniversity.com/rules/axe/4.8/aria...
aria_required_parent aria-required-parent Ensures elements with an ARIA role that requir... Critical cat.aria, wcag2a, wcag131, EN-301-549, EN-9.1.3.1 failure ff89c9 https://act-rules.github.io/rules/ff89c9 https://dequeuniversity.com/rules/axe/4.8/aria...
aria_roles aria-roles Ensures all elements with a role attribute use... Critical cat.aria, wcag2a, wcag412, EN-301-549, EN-9.4.1.2 failure 674b10 https://act-rules.github.io/rules/674b10 https://dequeuniversity.com/rules/axe/4.8/aria...
aria_toggle_field_name aria-toggle-field-name Ensures every ARIA toggle field has an accessi... Serious cat.aria, wcag2a, wcag412, TTv5, TT5.c, EN-301... failure, needs_review e086e5 https://act-rules.github.io/rules/e086e5 https://dequeuniversity.com/rules/axe/4.8/aria...
aria_tooltip_name aria-tooltip-name Ensures every ARIA tooltip node has an accessi... Serious cat.aria, wcag2a, wcag412, EN-301-549, EN-9.4.1.2 failure, needs_review None https://dequeuniversity.com/rules/axe/4.8/aria...
aria_valid_attr_value aria-valid-attr-value Ensures all ARIA attributes have valid values Critical cat.aria, wcag2a, wcag412, EN-301-549, EN-9.4.1.2 failure, needs_review 6a7281 https://act-rules.github.io/rules/6a7281 https://dequeuniversity.com/rules/axe/4.8/aria...
aria_valid_attr aria-valid-attr Ensures attributes that begin with aria- are v... Critical cat.aria, wcag2a, wcag412, EN-301-549, EN-9.4.1.2 failure 5f99a7 https://act-rules.github.io/rules/5f99a7 https://dequeuniversity.com/rules/axe/4.8/aria...
blink blink Ensures <blink> elements are not used Serious cat.time-and-media, wcag2a, wcag222, section50... failure None https://dequeuniversity.com/rules/axe/4.8/blin...
button_name button-name Ensures buttons have discernible text Critical cat.name-role-value, wcag2a, wcag412, section5... failure, needs_review 97a4e1, m6b1q3 https://act-rules.github.io/rules/97a4e1 https://dequeuniversity.com/rules/axe/4.8/butt...
bypass bypass Ensures each page has at least one mechanism f... Serious cat.keyboard, wcag2a, wcag241, section508, sec... needs_review cf77f2, 047fe0, b40fd1, 3e12e1, ye5d6e https://act-rules.github.io/rules/cf77f2 https://dequeuniversity.com/rules/axe/4.8/bypa...
color_contrast color-contrast Ensures the contrast between foreground and ba... Serious cat.color, wcag2aa, wcag143, TTv5, TT13.c, EN-... failure, needs_review afw4f7, 09o5cg https://act-rules.github.io/rules/afw4f7 https://dequeuniversity.com/rules/axe/4.8/colo...
definition_list definition-list Ensures <dl> elements are structured correctly Serious cat.structure, wcag2a, wcag131, EN-301-549, EN... failure None https://dequeuniversity.com/rules/axe/4.8/defi...
dlitem dlitem Ensures <dt> and <dd> elements are contained b... Serious cat.structure, wcag2a, wcag131, EN-301-549, EN... failure None https://dequeuniversity.com/rules/axe/4.8/dlit...
document_title document-title Ensures each HTML document contains a non-empt... Serious cat.text-alternatives, wcag2a, wcag242, TTv5, ... failure 2779a5 https://act-rules.github.io/rules/2779a5 https://dequeuniversity.com/rules/axe/4.8/docu...
duplicate_id_aria duplicate-id-aria Ensures every id attribute value used in ARIA ... Critical cat.parsing, wcag2a, wcag412, EN-301-549, EN-9... needs_review 3ea0c8 https://act-rules.github.io/rules/3ea0c8 https://dequeuniversity.com/rules/axe/4.8/dupl...
form_field_multiple_labels form-field-multiple-labels Ensures form field does not have multiple labe... Moderate cat.forms, wcag2a, wcag332, TTv5, TT5.c, EN-30... needs_review None https://dequeuniversity.com/rules/axe/4.8/form...
frame_focusable_content frame-focusable-content Ensures <frame> and <iframe> elements with foc... Serious cat.keyboard, wcag2a, wcag211, TTv5, TT4.a, EN... failure, needs_review akn7bn https://act-rules.github.io/rules/akn7bn https://dequeuniversity.com/rules/axe/4.8/fram...
frame_title_unique frame-title-unique Ensures <iframe> and <frame> elements contain ... Serious cat.text-alternatives, wcag2a, wcag412, TTv5, ... needs_review 4b1c6c https://act-rules.github.io/rules/4b1c6c https://dequeuniversity.com/rules/axe/4.8/fram...
frame_title frame-title Ensures <iframe> and <frame> elements have an ... Serious cat.text-alternatives, wcag2a, wcag412, sectio... failure, needs_review cae760 https://act-rules.github.io/rules/cae760 https://dequeuniversity.com/rules/axe/4.8/fram...
html_has_lang html-has-lang Ensures every HTML document has a lang attribute Serious cat.language, wcag2a, wcag311, TTv5, TT11.a, E... failure b5c3f8 https://act-rules.github.io/rules/b5c3f8 https://dequeuniversity.com/rules/axe/4.8/html...
html_lang_valid html-lang-valid Ensures the lang attribute of the <html> eleme... Serious cat.language, wcag2a, wcag311, TTv5, TT11.a, E... failure bf051a https://act-rules.github.io/rules/bf051a https://dequeuniversity.com/rules/axe/4.8/html...
html_xml_lang_mismatch html-xml-lang-mismatch Ensure that HTML elements with both valid lang... Moderate cat.language, wcag2a, wcag311, EN-301-549, EN-... failure 5b7ae0 https://act-rules.github.io/rules/5b7ae0 https://dequeuniversity.com/rules/axe/4.8/html...
image_alt image-alt Ensures <img> elements have alternate text or ... Critical cat.text-alternatives, wcag2a, wcag111, sectio... failure, needs_review 23a2a8 https://act-rules.github.io/rules/23a2a8 https://dequeuniversity.com/rules/axe/4.8/imag...
input_button_name input-button-name Ensures input buttons have discernible text Critical cat.name-role-value, wcag2a, wcag412, section5... failure, needs_review 97a4e1 https://act-rules.github.io/rules/97a4e1 https://dequeuniversity.com/rules/axe/4.8/inpu...
input_image_alt input-image-alt Ensures <input type="image"> elements have alt... Critical cat.text-alternatives, wcag2a, wcag111, wcag41... failure, needs_review 59796f https://act-rules.github.io/rules/59796f https://dequeuniversity.com/rules/axe/4.8/inpu...
label label Ensures every form element has a label Critical cat.forms, wcag2a, wcag412, section508, sectio... failure, needs_review e086e5 https://act-rules.github.io/rules/e086e5 https://dequeuniversity.com/rules/axe/4.8/labe...
link_in_text_block link-in-text-block Ensure links are distinguished from surroundin... Serious cat.color, wcag2a, wcag141, TTv5, TT13.a, EN-3... failure, needs_review None https://dequeuniversity.com/rules/axe/4.8/link...
link_name link-name Ensures links have discernible text Serious cat.name-role-value, wcag2a, wcag244, wcag412,... failure, needs_review c487ae https://act-rules.github.io/rules/c487ae https://dequeuniversity.com/rules/axe/4.8/link...
list list Ensures that lists are structured correctly Serious cat.structure, wcag2a, wcag131, EN-301-549, EN... failure None https://dequeuniversity.com/rules/axe/4.8/list...
listitem listitem Ensures <li> elements are used semantically Serious cat.structure, wcag2a, wcag131, EN-301-549, EN... failure None https://dequeuniversity.com/rules/axe/4.8/list...
marquee marquee Ensures <marquee> elements are not used Serious cat.parsing, wcag2a, wcag222, TTv5, TT2.b, EN-... failure None https://dequeuniversity.com/rules/axe/4.8/marq...
meta_refresh meta-refresh Ensures <meta http-equiv="refresh"> is not use... Critical cat.time-and-media, wcag2a, wcag221, TTv5, TT8... failure bc659a, bisz58 https://act-rules.github.io/rules/bc659a https://dequeuniversity.com/rules/axe/4.8/meta...
meta_viewport meta-viewport Ensures <meta name="viewport"> does not disabl... Critical cat.sensory-and-visual-cues, wcag2aa, wcag144,... failure b4f0c3 https://act-rules.github.io/rules/b4f0c3 https://dequeuniversity.com/rules/axe/4.8/meta...
nested_interactive nested-interactive Ensures interactive controls are not nested as... Serious cat.keyboard, wcag2a, wcag412, TTv5, TT6.a, EN... failure, needs_review 307n5z https://act-rules.github.io/rules/307n5z https://dequeuniversity.com/rules/axe/4.8/nest...
no_autoplay_audio no-autoplay-audio Ensures <video> or <audio> elements do not aut... Moderate cat.time-and-media, wcag2a, wcag142, TTv5, TT2... needs_review 80f0bf https://act-rules.github.io/rules/80f0bf https://dequeuniversity.com/rules/axe/4.8/no-a...
object_alt object-alt Ensures <object> elements have alternate text Serious cat.text-alternatives, wcag2a, wcag111, sectio... failure, needs_review 8fc3b6 https://act-rules.github.io/rules/8fc3b6 https://dequeuniversity.com/rules/axe/4.8/obje...
role_img_alt role-img-alt Ensures [role="img"] elements have alternate text Serious cat.text-alternatives, wcag2a, wcag111, sectio... failure, needs_review 23a2a8 https://act-rules.github.io/rules/23a2a8 https://dequeuniversity.com/rules/axe/4.8/role...
scrollable_region_focusable scrollable-region-focusable Ensure elements that have scrollable content a... Serious cat.keyboard, wcag2a, wcag211, TTv5, TT4.a, EN... failure 0ssw9k https://act-rules.github.io/rules/0ssw9k https://dequeuniversity.com/rules/axe/4.8/scro...
select_name select-name Ensures select element has an accessible name Critical cat.forms, wcag2a, wcag412, section508, sectio... failure, needs_review e086e5 https://act-rules.github.io/rules/e086e5 https://dequeuniversity.com/rules/axe/4.8/sele...
server_side_image_map server-side-image-map Ensures that server-side image maps are not used Minor cat.text-alternatives, wcag2a, wcag211, sectio... needs_review None https://dequeuniversity.com/rules/axe/4.8/serv...
svg_img_alt svg-img-alt Ensures <svg> elements with an img, graphics-d... Serious cat.text-alternatives, wcag2a, wcag111, sectio... failure, needs_review 7d6734 https://act-rules.github.io/rules/7d6734 https://dequeuniversity.com/rules/axe/4.8/svg-...
td_headers_attr td-headers-attr Ensure that each cell in a table that uses the... Serious cat.tables, wcag2a, wcag131, section508, secti... failure, needs_review a25f45 https://act-rules.github.io/rules/a25f45 https://dequeuniversity.com/rules/axe/4.8/td-h...
th_has_data_cells th-has-data-cells Ensure that <th> elements and elements with ro... Serious cat.tables, wcag2a, wcag131, section508, secti... failure, needs_review d0f69e https://act-rules.github.io/rules/d0f69e https://dequeuniversity.com/rules/axe/4.8/th-h...
valid_lang valid-lang Ensures lang attributes have valid values Serious cat.language, wcag2aa, wcag312, TTv5, TT11.b, ... failure de46e4 https://act-rules.github.io/rules/de46e4 https://dequeuniversity.com/rules/axe/4.8/vali...
video_caption video-caption Ensures <video> elements have captions Critical cat.text-alternatives, wcag2a, wcag122, sectio... needs_review eac66b https://act-rules.github.io/rules/eac66b https://dequeuniversity.com/rules/axe/4.8/vide...

extract all the unique tags¤

https://www.deque.com/en-301-549-compliance/ https://www.un.org/development/desa/disabilities/convention-on-the-rights-of-persons-with-disabilities/article-9-accessibility.html https://www.dhs.gov/trusted-tester section 508

    tags = rules.tags.str.split(",", expand=True).fillna("").map(str.strip).apply(

        f(lambda x: {x: True for x in x if x}, pandas.Series), axis=1
    ).fillna(False).astype(int)
    tags = tags.set_index(tags.index.str.replace("-", "_").str.replace(".", "_"))
    tags.columns = tags.columns.str.replace("-", "_").str.replace(".", "_")
    tags.T.style.set_caption("the tags associated with each axe rule")
the tags associated with each axe rule
id area_alt aria_allowed_attr aria_braille_equivalent aria_command_name aria_conditional_attr aria_deprecated_role aria_hidden_body aria_hidden_focus aria_input_field_name aria_meter_name aria_progressbar_name aria_prohibited_attr aria_required_attr aria_required_children aria_required_parent aria_roles aria_toggle_field_name aria_tooltip_name aria_valid_attr_value aria_valid_attr blink button_name bypass color_contrast definition_list dlitem document_title duplicate_id_aria form_field_multiple_labels frame_focusable_content frame_title_unique frame_title html_has_lang html_lang_valid html_xml_lang_mismatch image_alt input_button_name input_image_alt label link_in_text_block link_name list listitem marquee meta_refresh meta_viewport nested_interactive no_autoplay_audio object_alt role_img_alt scrollable_region_focusable select_name server_side_image_map svg_img_alt td_headers_attr th_has_data_cells valid_lang video_caption
ACT 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0
EN_301_549 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
EN_9_1_1_1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0
EN_9_1_2_2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
EN_9_1_3_1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
EN_9_1_4_1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
EN_9_1_4_2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
EN_9_1_4_3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
EN_9_1_4_4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
EN_9_2_1_1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0
EN_9_2_2_1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
EN_9_2_2_2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
EN_9_2_4_1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
EN_9_2_4_2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
EN_9_2_4_4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
EN_9_3_1_1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
EN_9_3_1_2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
EN_9_3_3_2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
EN_9_4_1_2 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0
TT11_a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TT11_b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
TT12_a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TT12_d 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TT13_a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TT13_c 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TT14_b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
TT17_a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
TT2_a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
TT2_b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TT4_a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0
TT5_c 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
TT6_a 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
TT7_a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0
TT7_b 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TT8_a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
TT9_a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
TTv5 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1
cat_aria 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
cat_color 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
cat_forms 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
cat_keyboard 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0
cat_language 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
cat_name_role_value 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
cat_parsing 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
cat_sensory_and_visual_cues 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
cat_structure 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
cat_tables 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
cat_text_alternatives 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1
cat_time_and_media 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0
section508 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 1 1 0 1 1 1 1 1 0 1
section508_22_a 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1
section508_22_f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
section508_22_g 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
section508_22_i 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
section508_22_j 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
section508_22_n 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
section508_22_o 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
wcag111 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0
wcag122 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
wcag131 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0
wcag141 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
wcag142 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
wcag143 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
wcag144 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0
wcag211 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0
wcag221 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0
wcag222 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
wcag241 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
wcag242 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
wcag244 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
wcag2a 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1
wcag2aa 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0
wcag311 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
wcag312 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
wcag332 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
wcag412 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0

topology of the axe tag network¤

we find a high level understanding of the relationship between the tags when we look at different layouts of the network.s

    adjacency = tags.values.T @ tags.values
    adjacency = adjacency - adjacency * numpy.identity(adjacency.shape[0])
    G = pandas.DataFrame(adjacency, tags.columns, tags.columns).pipe(networkx.from_pandas_adjacency)
    networkx.draw_networkx(G, networkx.nx_agraph.graphviz_layout(G), alpha=.5)
    matplotlib.pyplot.gcf().set_size_inches(24, 24)
No description has been provided for this image