Accessibility digest

Contents

Synopsis
PageChris Cunningham;Libertarian;Nevada
URLhttps://CunninghamForNevada.com
Test date2024/09/22
Score2751
Configuration
Redirectionspermitted
Tool isolationno
Report format(s)standard
Requester
Devicedefault
Browser typewebkit
Reduced motionnot requested
Tested byTestaro, procedure senate2024
Scored byTestilo, procedure tsp50
Digested byTestilo, procedure tdp50
Full report 240915T1658-ikz-1f.json

Introduction

How accessible is the Chris Cunningham;Libertarian;Nevada web page at https://CunninghamForNevada.com?

This digest gives one answer to that question. Eleven different tools (Alfa, ASLint, Axe, Editoria11y, Equal Access, HTML CodeSniffer, Nu Html Checker, QualWeb, Testaro, WAVE, and WallyAX) tested the page to check its compliance with their accessibility rules. In all, the tools define about a thousand rules, which are classified here into about three hundred accessibility issues.

The results were interpreted to yield a score, with 0 being ideal. The score for this page was 2751, the sum of 660 for the count of issues, 1483 for specific issues, 0 for unclassified rule violations, 180 for tool-by-tool ratings, 306 for the count of violating elements, 0 for the page preventing tools from running, 122 for browser warnings, and 0 for delayed page responses.

How the page was scored

Introduction

This is an explanation of the scoring of the page.

Motivations for scoring

Why score? Specifically, why aggregate many facts about a page into a single number?

One motivation is to simplify comparison and tracking. If you want to compare a page with other pages, or if you want to track changes in a page over time, aggregating many test results for each page into one page score simplifies the task. It becomes possible to say things like Page A is more accessible than page B or Page A is becoming more accessible over time.

Another motivation is to influence behavior. A score arises from decisions about importance, urgency, and other attributes. People may use scores to award benefits, impose costs, or prioritize work. So, scoring can influence who gets and does what.

How to score?

Scoring is subjective. Accessibility testing tools use various scoring procedures, based on various ideas.

The built-in scoring procedures of Testilo are based on the idea that multiple attributes should affect a web-page accessibility score, including:

Some ideas found elsewhere in accessibility scoring are rejected by the Testilo procedures:

Scoring method summary

The scoring method is found in the code of the procedure. The file for any procedure tspnn is in the file procs/score/tspnn.js within the Testilo package.

The score computed by this procedure for any page is a non-negative number. The numbers represent accessibility faults, so a higher-scoring page is considered less accessible than a lower-scoring page. The best possible score is 0.

The procedure makes the score of a page the sum of 7 components:

Scoring method details

The above component descriptions omit various details.

About a thousand tool rules are classified into issues in the tic50.js file used by this procedure. Each of those rules has a quality, ranging from 0 to 1. When the issue score is computed, the count of violations of each rule is multiplied by the quality of that rule. Whichever tool has the largest quality-weighted violation count for an issue, that count is treated as the instance count for the issue. Thus, if 8 tools each report 15 violations within the issue, and their rule qualities are all 1, the instance count is 15, not 120. Moreover, the issue itself has a weight, ranging from 1 to 4, representing its importance. This instance count is multiplied by that weight. That product is further multiplied by the issueCountWeight value, namely 10. That final product is further adjusted if the issue is inherently limited in instance count. For example, if the issue is that the page html element has no lang attribute, the instance count is limited to 1. If there is such a limit, the maxWeight value, namely 30, is divided by the actual instance count and the quotient is added to 1. That product (or 1 if there is no limit) is multiplied by the instance count, and then the result is treated as the contribution of the issue to the issue score.

Each solo (not yet issue-classified) rule violation is multiplied by the sum of 1 and the ordinal severity of the rule, to produce the solo score.

Each rule violation reported by each tool is severity-weighted in the same way as solo rule violations are. Then the sum of those violations is multiplied by the toolWeight value, namely 0.1, to produce the tool score.

The count of elements reported as violators of any rule is multiplied by the elementWeight value, namely 2, to produce the element score.

The count of prevented Testaro rules is multiplied by the testaroRulePreventionWeight quantity, namely 30, and the count of other prevented tools is multiplied by the preventionWeight value, namely 300, to produce the prevention score.

The log score is the sum of several components:

Each of these components is multiplied by a weight found in the logWeights object.

Finally, the latency score is based on how much longer it took for the page to become loaded and stable than expected. The expected total duration in seconds is the normalLatency value, namely 22 seconds (that is 2 seconds per visit, multiplied by the 11 visits of the 11 tools). This is subtracted from the actual total latency, and that difference is multiplied by the latencyWeight amount, namely 2.

Issue summary

Details about this summary

The summary

Sorting is by score.

How many violations each tool reported, by issue
IssueWCAGWeightScoreInstance counts
CSS invalid4.13360nuVal:120
font small1.43159testaro:53, wave:4, alfa:0, aslint:0
h1 not 1st heading1.3.1393alfa:1
not exactly 1 h1 heading1.3.1262aslint:1, wave:1, axe:0, nuVal:0
primary heading not h11.3.1262wax:1
line height low1.4.8258alfa:3, testaro:29
text contrast not testable1.4.3150alfa:50, htmlcs:6, aslint:0
attribute value invalid1.3.1448nuVal:12, ibm:0, wax:0
skip method missing or invalid2.4.1348wax:1, axe:0, ibm:0, wave:0
parent invalid1.3.1440nuVal:10, ibm:0
font size absolute1.4.4238alfa:10, qualWeb:24
contrast poor1.4.3436axe:9, ibm:1, qualWeb:1, wave:2, alfa:0, aslint:0, htmlcs:0, wax:0
attribute invalid1.3.1432nuVal:8, aslint:0, axe:0, ibm:0, wax:0
large visible-element count2.4131testaro:1
void element has trailing slash4.1130nuVal:30
meta invalid1.3.1324nuVal:8
focus indication poor2.4.7424testaro:6, alfa:0, aslint:0
operable element not focusable2.1.1424testaro:6
video not named1.2.2416axe:1, qualWeb:4
link element invalid1.3.1416htmlcs:4, wax:4, nuVal:0
error reference invalid3.3.1416qualWeb:4, ibm:0
color missing1.4.3416qualWeb:4
code obsolete4.1315ibm:5, nuVal:0
link indication poor1.3.3214testaro:7, alfa:0, axe:0
element closure invalid4.1.1312nuVal:4
overflow hidden?1.4.4111qualWeb:11
item makes testing inconclusive4.1110alfa:10
line height absolute1.4.12210alfa:5
skip method missing or invalid?2.4.118alfa:1, qualWeb:0
image has no src1.3.148nuVal:2
audio track missing1.2.148qualWeb:2, aslint:0, axe:0
text and image link not combined2.4.428wave:4, aslint:0, qualWeb:0
target small2.5.517alfa:2, testaro:7
element reloads or redirects2.2.136qualWeb:2, aslint:0, wave:0
links named identically2.4.424aslint:2, qualWeb:2, testaro:0
requirement invalid1.3.544aslint:1
audio or video caption track missing1.2.144aslint:1
video alternative missing1.2.144aslint:1
heading structure illogical1.3.124aslint:1, htmlcs:2
image dubiously named1.1.114aslint:1, qualWeb:4, wave:0
no role-required name4.1.244ibm:1, wax:0
section heading missing1.3.114nuVal:4
video audio description missing1.2.144qualWeb:1
title attribute invalid1.3.144testaro:1
iframe not named4.1.244wax:1, alfa:0, aslint:0, axe:0, htmlcs:0, ibm:0, qualWeb:0
all-capital text3.1.513aslint:3, testaro:2, alfa:0, ed11y:0
form submission button missing3.2.233aslint:1, qualWeb:1, htmlcs:0
hover indication poor3.3.233testaro:1
inconsistent heading, link, or button styles3.2.413testaro:3
heading heads nothing1.3.122alfa:1, wax:0
tab-opening link action unstated?3.2.512aslint:2, htmlcs:2, testaro:2
autoplay1.4.222aslint:1, axe:0, qualWeb:0
position sticky1.4.1012aslint:1, htmlcs:2
type redundant1.3.112nuVal:2
autocomplete missing1.3.542testaro:1
text distortion3.1.512testaro:2
element not focusable2.1.142testaro:1, alfa:0, qualWeb:0
focusable element inoperable2.1.122testaro:1
z-index not zero1.412testaro:2
heading names repeated1.3.122wax:1, aslint:0, testaro:0
links dubiously share name2.4.411axe:1
image dubiously marked decorative1.1.111htmlcs:1
aria attribute redundant4.1.211ibm:1, nuVal:0
text contrast improvable1.4.611qualWeb:1, alfa:0, aslint:0, axe:0, htmlcs:0, wax:0
audio or video alternatives missing?1.2.211wave:1
false aria-hidden value risky2.4.600aslint:5

Itemized issues

The reported rule violations are itemized below, issue by issue. Additional details can be inspected in the full report.

Issue: CSS invalid

Impact: Document cannot be properly displayed

WCAG: 4.1

Score: 360

Elements

None identified

Violations of nuVal rules

Rule CSS: Parse Error.

Description: Invalid CSS

Count of instances: 20

Rule ^CSS: .+: Property .+ doesn't exist.*$

Description: Invalid property in CSS

Count of instances: 10

Rule ^CSS: .+: Unknown dimension.*$

Description: Unknown CSS dimension

Count of instances: 2

Rule ^CSS: .+: .+ is not a .+ value.*$

Description: Invalid value in CSS

Count of instances: 8

Rule ^CSS: .+: .+ is not a valid color 3 or 6 hexadecimals numbers.*$

Description: Invalid hexadecimal color in CSS

Count of instances: 72

Rule ^CSS: .+: Parse Error.*$

Description: Invalid CSS

Count of instances: 8

Issue: font small

Impact: Text is difficult to read

WCAG: 1.4

Score: 159

Elements

Violations of testaro rules

Rule miniText

Description: Text node has a font smaller than 11 pixels

Count of instances: 53

Violations of wave rules

Rule text_small

Description: Text is very small

Count of instances: 4

Issue: h1 not 1st heading

Impact: User cannot understand the topic of the document

WCAG: 1.3.1

Score: 93

Elements

Violations of alfa rules

Rule r61

Description: First heading is not h1

Count of instances: 1

Issue: not exactly 1 h1 heading

Impact: User cannot understand the topic of the document

WCAG: 1.3.1

Score: 62

Elements

None identified

Violations of aslint rules

Rule h1_must_be

Description: Page contains no h1 element

Count of instances: 1

Violations of wave rules

Rule h1_missing

Description: Missing first level heading

Count of instances: 1

Issue: primary heading not h1

Impact: User cannot understand the topic of the document

WCAG: 1.3.1

Score: 62

Elements

None identified

Violations of wax rules

Rule ^The heading structure is not logically nested. This h. element appears to be the primary document heading, so should be an h1 element.+$

Description: Apparent primary document heading is not h1

Count of instances: 1

Issue: line height low

Impact: Text is difficult to read

WCAG: 1.4.8

Score: 58

Elements

Violations of alfa rules

Rule r73

Description: Text line height is not at least 1.5

Count of instances: 3

Violations of testaro rules

Rule lineHeight

Description: Text has a line height less than 1.5 times its font size

Count of instances: 29

Issue: text contrast not testable

Impact: Text may be difficult to read

WCAG: 1.4.3

Score: 50

Elements

Violations of alfa rules

Rule cantTellTextContrast

Description: Test of text contrast could not give a conclusive result

Count of instances: 50

Violations of htmlcs rules

Rule AAA.1_4_6.G17.Abs

Description: Contrast between the absolutely positioned text and its background may be less than 7:1

Count of instances: 6

Issue: attribute value invalid

Impact: Item behaves improperly

WCAG: 1.3.1

Score: 48

Elements

None identified

Violations of nuVal rules

Rule ^Bad value .* for attribute .+ on element .+$

Description: Attribute on this element has an invalid value

Count of instances: 12

Issue: skip method missing or invalid

Impact: Keyboard-only user cannot easily reach the specific content of the document

WCAG: 2.4.1

Score: 48

Elements

Violations of wax rules

Rule Ensure that any common navigation elements can be bypassed; for instance, by use of skip links, header elements, or ARIA landmark roles.

Description: Page provides no way to quickly navigate to the main content

Count of instances: 1

Issue: parent invalid

Impact: User cannot properly operate an item

WCAG: 1.3.1

Score: 40

Elements

None identified

Violations of nuVal rules

Rule ^Element .+ not allowed as child of element .+ in this context.*$

Description: Element has an invalid parent

Count of instances: 10

Issue: font size absolute

Impact: User cannot adjust the text size for readability

WCAG: 1.4.4

Score: 38

Elements

Violations of alfa rules

Rule r74

Description: Paragraph text has an absolute font size

Count of instances: 10

Violations of qualWeb rules

Rule QW-WCAG-T28

Description: Font size set to an absolute unit value

Count of instances: 24

Issue: contrast poor

Impact: Content is difficult to understand

WCAG: 1.4.3

Score: 36

Elements

Violations of axe rules

Rule color-contrast

Description: Element has insufficient color contrast

Count of instances: 9

Violations of ibm rules

Rule text_contrast_sufficient

Description: Text has a contrast with its background less than the WCAG AA minimum for its size and weight

Count of instances: 1

Violations of qualWeb rules

Rule QW-ACT-R37

Description: Text has less than the minimum contrast

Count of instances: 1

Violations of wave rules

Rule contrast

Description: Very low contrast

Count of instances: 2

Issue: attribute invalid

Impact: Item behaves improperly

WCAG: 1.3.1

Score: 32

Elements

None identified

Violations of nuVal rules

Rule ^Attribute .+ not allowed on element .+ at this point.*$

Description: Attribute not allowed on this element

Count of instances: 8

Issue: large visible-element count

Impact: User cannot easily find items in the document

WCAG: 2.4

Score: 31

Elements

Violations of testaro rules

Rule bulk

Description: Page contains many visible elements

Count of instances: 1

Issue: void element has trailing slash

Impact: Document contains invalid code

WCAG: 4.1

Score: 30

Elements

None identified

Violations of nuVal rules

Rule Trailing slash on void elements has no effect and interacts badly with unquoted attribute values.

Description: Void element has a useless trailing slash.

Count of instances: 30

Issue: meta invalid

Impact: Document fails to include needed data

WCAG: 1.3.1

Score: 24

Elements

None identified

Violations of nuVal rules

Rule ^Bad value .+ for attribute .+ on element meta.*$

Description: Attribute of a meta element has an invalid value

Count of instances: 8

Issue: focus indication poor

Impact: Keyboard-only user cannot choose an item to operate

WCAG: 2.4.7

Score: 24

Elements

Violations of testaro rules

Rule focInd

Description: Focused element displays a nonstandard or no focus indicator

Count of instances: 6

Issue: operable element not focusable

Impact: Keyboard-only user cannot navigate properly to an operable item

WCAG: 2.1.1

Score: 24

Elements

Violations of testaro rules

Rule opFoc

Description: Operable element is not Tab-focusable

Count of instances: 6

Issue: video not named

Impact: User cannot get help reading video content as text

WCAG: 1.2.2

Score: 16

Elements

Violations of axe rules

Rule video-caption

Description: Element has no captions

Count of instances: 1

Violations of qualWeb rules

Rule QW-ACT-R56

Description: video element content is not a media alternative for text

Count of instances: 1

Rule QW-ACT-R61

Description: video element visual content has no transcript

Count of instances: 1

Rule QW-ACT-R23

Description: video element visual content has no accessible alternative

Count of instances: 1

Rule QW-ACT-R32

Description: video element visual-only content has no strict accessible alternative

Count of instances: 1

Issue: link element invalid

Impact: Document fails to get a needed external resource

WCAG: 1.3.1

Score: 16

Elements

Violations of htmlcs rules

Rule AAA.2_4_8.H59.1

Description: Element is not in the document head

Count of instances: 4

Violations of wax rules

Rule Link elements can only be located in the head section of the document.

Description: link element is not located in the head element

Count of instances: 4

Issue: error reference invalid

Impact: User cannot correct a form error

WCAG: 3.3.1

Score: 16

Elements

Violations of qualWeb rules

Rule QW-ACT-R41

Description: Error message describes no invalid form field value

Count of instances: 4

Issue: color missing

Impact: Content is impossible to perceive under some conditions

WCAG: 1.4.3

Score: 16

Elements

Violations of qualWeb rules

Rule QW-WCAG-T31

Description: Foreground or background color is specified but not both

Count of instances: 4

Issue: code obsolete

Impact: Document contains code that is no longer standard

WCAG: 4.1

Score: 15

Elements

Violations of ibm rules

Rule element_attribute_deprecated

Description: Element or attribute is obsolete

Count of instances: 5

Issue: link indication poor

Impact: User cannot differentiate a link from plain text

WCAG: 1.3.3

Score: 14

Elements

Violations of testaro rules

Rule linkUl

Description: Inline links are not underlined

Count of instances: 7

Issue: element closure invalid

Impact: Document contains invalid code

WCAG: 4.1.1

Score: 12

Elements

None identified

Violations of nuVal rules

Rule ^Stray end tag .+$

Description: Invalid closing tag

Count of instances: 4

Issue: overflow hidden?

Impact: User may be unable to enlarge the text for readability

WCAG: 1.4.4

Score: 11

Elements

Violations of qualWeb rules

Rule QW-ACT-R40

Description: Zoomed text node may be clipped by a CSS overflow declaration

Count of instances: 11

Issue: item makes testing inconclusive

Impact: Item prevents a conclusive accessibility test

WCAG: 4.1

Score: 10

Elements

Violations of alfa rules

Rule cantTell

Description: Test could not give a conclusive result

Count of instances: 10

Issue: line height absolute

Impact: User cannot adjust the line height of text for readability

WCAG: 1.4.12

Score: 10

Elements

Violations of alfa rules

Rule r80

Description: Paragraph text has an absolute line height

Count of instances: 5

Issue: skip method missing or invalid?

Impact: Keyboard-only user may be unable easily to reach the specific content of the document

WCAG: 2.4.1

Score: 8

Elements

Violations of alfa rules

Rule r87

Description: First focusable element is not a link to the main content

Count of instances: 1

Issue: image has no src

Impact: Image to be shown cannot be found

WCAG: 1.3.1

Score: 8

Elements

None identified

Violations of nuVal rules

Rule Element img is missing required attribute src.

Description: img element has no src attribute

Count of instances: 2

Issue: audio track missing

Impact: User cannot get help reading speech as text

WCAG: 1.2.1

Score: 8

Elements

Violations of qualWeb rules

Rule QW-ACT-R60

Description: Auditory content of the element has no captions

Count of instances: 1

Rule QW-ACT-R26

Description: Auditory content of the element has no accessible alternative

Count of instances: 1

Issue: text and image link not combined

Impact: Keyboard-only user expends extra effort to skip a link

WCAG: 2.4.4

Score: 8

Elements

Violations of wave rules

Rule link_redundant

Description: Adjacent links go to the same URL

Count of instances: 4

Issue: target small

Impact: User cannot reliably choose an item to click or tap

WCAG: 2.5.5

Score: 7

Elements

Violations of alfa rules

Rule r111

Description: Target size is suboptimal

Count of instances: 2

Violations of testaro rules

Rule targetSize

Description: Button, input, or non-inline link is smaller than 44 px wide and high

Count of instances: 7

Issue: element reloads or redirects

Impact: Document change may surprise a user

WCAG: 2.2.1

Score: 6

Elements

Violations of qualWeb rules

Rule QW-ACT-R4

Description: Element refreshes or redirects with delay

Count of instances: 1

Rule QW-ACT-R71

Description: Element has a refresh delay (no exception)

Count of instances: 1

Issue: links named identically

Impact: User cannot get help differentiating links

WCAG: 2.4.4

Score: 4

Elements

Violations of aslint rules

Rule links_same_content_different_url

Description: Links with the same text content have different destination URLs

Count of instances: 2

Violations of qualWeb rules

Rule QW-ACT-R9

Description: Links with identical accessible names have different purposes

Count of instances: 2

Issue: requirement invalid

Impact: User may fail to get help determining whether a form item must be completed

WCAG: 1.3.5

Score: 4

Elements

Violations of aslint rules

Rule misused_required_attribute

Description: Requirement status of the element is invalid

Count of instances: 1

Issue: audio or video caption track missing

Impact: User cannot get help reading speech as text

WCAG: 1.2.1

Score: 4

Elements

Violations of aslint rules

Rule audio_video_captions

Description: Element is audio or video but contains no caption track element

Count of instances: 1

Issue: video alternative missing

Impact: User cannot get help consuming a video recording as text or speech

WCAG: 1.2.1

Score: 4

Elements

Violations of aslint rules

Rule video_audio_descriptions

Description: Element has neither an audio source nor a description track

Count of instances: 1

Issue: heading structure illogical

Impact: Helper misdescribes the document

WCAG: 1.3.1

Score: 4

Elements

Violations of aslint rules

Rule headings_hierarchy

Description: Heading level is illogical in its context

Count of instances: 1

Violations of htmlcs rules

Rule AAA.1_3_1_AAA.G141

Description: Heading level is incorrect

Count of instances: 2

Issue: image dubiously named

Impact: Helper may describe an image inadequately

WCAG: 1.1.1

Score: 4

Elements

Violations of aslint rules

Rule alt_color_convey_information

Description: Text alternative may fail to give information provided by colors

Count of instances: 1

Violations of qualWeb rules

Rule QW-WCAG-T8

Description: Text alternative is suspect

Count of instances: 4

Issue: no role-required name

Impact: User cannot get help understanding an item

WCAG: 4.1.2

Score: 4

Elements

Violations of ibm rules

Rule aria_accessiblename_exists

Description: Element has no accessible name, although its role requires one

Count of instances: 1

Issue: section heading missing

Impact: User cannot understand the topic of a part of the document

WCAG: 1.3.1

Score: 4

Elements

None identified

Violations of nuVal rules

Rule Section lacks heading. Consider using h2-h6 elements to add identifying headings to all sections, or else use a div element instead for any cases where no heading is needed.

Description: section has no heading

Count of instances: 4

Issue: video audio description missing

Impact: User cannot get help hearing video content as speech

WCAG: 1.2.1

Score: 4

Elements

Violations of qualWeb rules

Rule QW-ACT-R55

Description: video element visual content has no audio description

Count of instances: 1

Issue: title attribute invalid

Impact: User cannot hover to get help explaining an item

WCAG: 1.3.1

Score: 4

Elements

Violations of testaro rules

Rule titledEl

Description: title attribute belongs to an inappropriate element

Count of instances: 1

Issue: iframe not named

Impact: User cannot get help on the topic of an embedded document

WCAG: 4.1.2

Score: 4

Elements

None identified

Violations of wax rules

Rule Provide accessible names for