User agent reliability for NVDA Chrome Screen reader compatibility

Screen Readers
Dec 12, 2023

Shows how well NVDA Chrome supports ARIA and WCAG sufficient techniques.

Latest version tested

NVDA 2023.3 with Chrome 120

  • All tests: 101 pass of 123 tests (82%)
  • ARIA tests: 38 pass of 45 tests (84%)
  • WCAG tests: 69 pass of 86 tests (80%)

Reliability trend

100%80%60%40%20%0%2014201520162017201884%201984%202084%202183%202282%202382%

Failing tests

 TestModeWhat the user hearsNotes
WorsePage with xml:lang set on the html and p elementsReadingAct-eef tab-le. Rad-yoh.Pronounced as French, xml:lang ignored at element level.
Failapplication/xhtml+xml page with mismatching lang and xml:lang on the html elementReadingGa-raj. Doo-ble. Damm. Un, zwoy, dry-i.Speech pronounced as lang=fr, but CSS matches :lang(de) and German CSS content pronounced as French.
FailMatch lang subtagsReadingDam-he. Dam-he. Daim.lang=de and lang=de-DE pronounced as German, lang=de-AT pronounced as English.
Failembed with title attributeReadingGrouping unavailable, menu button, submenu, show more media controls.No description of non-text content.
Failembed with aria-label attributeReadingMenu button, submenu, show more media controls.No description of non-text content.
Failembed with aria-labelledby attributeReadingGrouping unavailable, menu button, submenu, show more media controls.No description of non-text content.
Failaudio with aria-label attributeReading Nothing Nothing voiced for audio - no indication it exists
Failaudio with aria-labelledby attributeReading Nothing Nothing voiced for audio - no indication it exists
Failaudio with title attributeReading Nothing Nothing voiced for audio - no indication it exists
Failvideo with aria-label attributeReading Nothing Nothing voiced for video - no indication it exists
Failvideo with aria-labelledby attributeReading Nothing Nothing voiced for video - no indication it exists
Failvideo with title attributeReading Nothing Nothing voiced for video - no indication it exists
FailInteractive iframe with role=presentation and negative tabindex and no accessible nameTabbing Nothing Skips over focusable link in iframe
Failabbr with titleReadingT L NABBR expansion ignored in screen reader, available to sighted users as dotted underline tooltip links in browser.
FailData table with role=columnheader headers but no thReadingMorning. Afternoon. Free. Busy.Table treated as layout table - not announced as table, and no headers read.
FailPDF9 Document with headingsReadingHeading level 2, heading 1.Only finds one heading, reads wrong heading level.
FailPDF1 Image with alt textReadingGraphic, unlabeled graphic.No description for graphic
FailPDF4 Decorative image marked as artifactReadingGraphic, unlabeled graphic.Image not ignored as artifact
FailPDF16 Document default language set to FrenchReadingAct-if tay-billPronounced as English, document language ignored
FailPDF19 Phrase language set to GermanReadingRay-day-ohPronounced as English, phrase language ignored
FailPDF6 Table with header markupReadingMorning, afternoon. Free, busy.No table structure voiced.
FailPDF6 Table with header markup and alt textReadingMorning, afternoon. Free, busy.No table structure voiced.

Passing tests

 TestModeWhat the user hearsNotes
PassPage with lang set on the html and p elementsReadingAct-eef tab-le. Rah-di-oh.Pronounced as French and German.  
Passtext/html page with mismatching lang and xml:lang on the html elementReadingGa-raj. Doo-ble. Damm. Un, deux, trois.Speech pronounced as lang=fr, and CSS matches :lang(fr).  
PassARIA role=headingHeadingFirst level heading, heading level 1. Second level heading, heading level 2.  
PassHeading is img with altHeadingSecond level alt, graphic heading level 2.  
Passapplet with title attributeReading Nothing Chrome 45 removed applet support in 2015, and doesn't render applet on screen unless applet has fallback content  
Passapplet with fallback contentReadingFallback content for appletChrome removed support for Java Applets in September 2015, and doesn't render applet on screen unless applet has fallback content  
Passapplet with aria-label attributeReading Nothing Chrome 45 removed applet support in 2015, and doesn't render applet on screen unless applet has fallback content  
Passapplet with aria-labelledby attributeReading Nothing Chrome 45 removed applet support in 2015, and doesn't render applet on screen unless applet has fallback content  
Passapplet inside figure with figcaption elementReadingHas details caption, figure caption for applet.Chrome 45 removed applet support in 2015, and doesn't render applet on screen unless applet has fallback content  
Passembed inside figure with figcaptionReadingHas details, grouping unavailable, menu button submenu, show more media controls. Caption, figure caption for embed.  
Passobject with fallback contentReadingFallback content for object.Flash is no longer supported by Chrome.  
Passobject with title attributeReadingEmbedded object unavailable, title for object.Screen says 'Adobe Flash Player is no longer supported'  
Passobject with aria-label attributeReadingEmbedded object unavailable, ARIA label for object.Screen says 'Adobe Flash Player is no longer supported'  
Passobject with aria-labelledby attributeReadingEmbedded object unavailable, this is ARIA-LABELLEDBY text.Screen says 'Adobe Flash Player is no longer supported'  
Passa element placeholder link with no event handler or href attributeReadingPlaceholder text  
Passa element placeholder link with no event handler or href attributeTabbing Nothing Skipped when tabbing, as expected  
Passiframe with fallback contentReadingFrame, this is an, link, example hyperlink in the target page. Out of frame.Fallback content is ignored  
Passiframe with fallback contentTabbingFrame, example hyperlink, link.  
Passiframe with title attributeReadingThis is an IFRAME title, frame, this is an, link, example hyperlink in the target page. Out of frame.  
Passiframe with title attributeTabbingThis is an iframe title, frame, example hyperlink, link.  
PassInteractive iframe with role=presentation and no accessible nameReadingExample target grouping, this is a link, example hyperlink, link, in the target pageReads as group role instead of frame role, and reads title element of iframe document  
PassInteractive iframe with role=presentation and no accessible nameTabbingExample target grouping, this is an, example hyperlink, link, in the target page, example hyperlink, linkReads title element and contents of iframe document  
PassInteractive iframe with role=presentation and negative tabindex and no accessible nameReadingExample target grouping, this is a link, example hyperlink, in the target page.  
Passbutton containing img with altReadingButton graphic, this is image alt  
Passbutton containing img with altTabbingThis is image alt, graphic button  
Passbutton containing img with title attributeReadingButton graphic, this is image title.  
Passbutton containing img with title attributeTabbingThis is image title, graphic button.  
Passbutton containing img with aria-labelReadingButton graphic, this is image aria label.  
Passbutton containing img with aria-labelTabbingThis is image aria label, graphic button.  
Passbutton containing img with aria-labelledbyReadingButton graphic, this is an aria labelled by, this is an aria labelled by  
Passbutton containing img with aria-labelledbyTabbingThis is an aria labelled by, graphic button.  
Passbutton with title containing img with null altReadingButton, this is button title  
Passbutton with title containing img with null altTabbingThis is button title, button  
Passbutton with aria-label containing img with null altReadingButton, this is button aria label  
Passbutton with aria-label containing img with null altTabbingThis is button aria label, button  
Passinput type=image with altReadingButton, this is image button alt text  
Passinput type=image with altTabbingThis is image button alt text, button  
Passinput type=image with title attributeReadingButton, this is image button title text  
Passinput type=image with title attributeTabbingThis is image button title text, button  
Passinput type=image with aria-label attributeReadingButton, this is image button aria label text  
Passinput type=image with aria-label attributeTabbingThis is image button aria label text, button  
Passinput type=image with aria-labelledby attributeReadingButton, this is image button aria labelled by text, this is image button aria labelled by text  
Passinput type=image with aria-labelledby attributeTabbingThis is image button aria labelled by text, button  
Passinput type=text with aria-describedby attributeReadingFirst name, edit, a bit of instructions for this field linked with aria describedby  
Passinput type=text with aria-describedby attributeTabbingFirst name, edit, a bit of instructions for this field linked with aria describedby, blank  
Passinput type=text with title attributeReadingEnter search text, edit  
Passinput type=text with title attributeTabbingEnter search text, edit, blank  
Passinput type=text with aria-label attributeReadingEnter search text, edit  
Passinput type=text with aria-label attributeTabbingEnter search text, edit, blank  
Passinput type=text with aria-labelledby attributeReadingEnter search text, edit  
Passinput type=text with aria-labelledby attributeTabbingEnter search text, edit, blank  
Passinput type=text with label forReadingEnter search text, edit  
Passinput type=text with label forTabbingEnter search text, edit, blank  
Passinput type=text inside label with text before controlReadingEnter search text, edit  
Passinput type=text inside label with text before controlTabbingDocument, enter search text, edit, blank  
Passinput type=text inside label with text after controlReadingEdit, enter search text  
Passinput type=text inside label with text after controlTabbingDocument, enter search text, edit, blank  
Passinput type=text inside label with text before and after controlReadingEnter search text, edit, blanks not allowed  
Passinput type=text inside label with text before and after controlTabbingDocument, enter search text, blanks not allowed, edit, blank  
Passfieldset containing linksReadingGrouping, legend for enclosed links. Link home, link about, link contact. Out of grouping.  
Passfieldset containing linksTabbingLegend for enclosed links, grouping, home link. About link. Contact link.  
PassYes/No radio buttons inside fieldset elementReadingGrouping, I agree to terms and conditions. Radio button checked, yes, radio button not checked, no. Out of grouping, grouping, sign me up to the newsletter. Radio button checked, yes, radio button not checked, no. Out of grouping.  
PassYes/No radio buttons inside fieldset elementTabbingI agree to terms and conditions grouping, yes radio button checked, one of two. Sign me up to the newsletter grouping, yes radio button checked, one of two.  
Passimg with null altReading Nothing Ignored as expected  
Passimg with altReadingGraphic, this is alt text  
Passimg with figcaptionReadingHas details caption, Violet, taken on 12/11/2010.  
Passimg with titleReadingGraphic, this is title text  
Passimg with aria-labelReadingGraphic, this is an aria label  
Passimg with aria-labelledbyReadingGraphic, this is an aria labelled by, this is an aria labelled by  
Passarea and img with alt attributesReadingLink, this is left alt text, link, this is right alt text  
Passarea and img with alt attributesTabbingThis is left alt text, link. This is right alt text, link  
Passarea with alt attribute and img with null altReadingLink, this is left alt text, link, this is right alt text.  
Passarea with alt attribute and img with null altTabbingThis is left alt text, link. This is right alt text, link.  
Passarea with title attributeReadingLink, this is left title text, link, this is right title text.  
Passarea with title attributeTabbingThis is left title text, link. This is right title text, link  
Passarea with aria-label attributeReadingLink, this is left aria label text, link, this is right aria label text.  
Passarea with aria-label attributeTabbingThis is left aria label text, link. This is right aria label text, link.  
Passarea with aria-labelledby attributeReadingLink, this is left aria labelled by text, link, this is right aria labelled by text.  
Passarea with aria-labelledby attributeTabbingThis is left aria labelled by text, link. This is right aria labelled by text, link.  
PassLink containing img with altReadingLink graphic, this is a link alt  
PassLink containing img with altTabbingThis is a link alt, graphic link  
PassLink containing img with titleReadingLink graphic, this is an image title  
PassLink containing img with titleTabbingThis is an image title, graphic link  
PassClick Here link with title attributeReadingLink, click here  
PassClick Here link with title attributeTabbingClick here link, this is a link title  
PassLink text replaced by aria-label attributeReadingLink, this is an aria label  
PassLink text replaced by aria-label attributeTabbingThis is an aria label, link  
PassLink text replaced by aria-labelledby attributeReadingLink, this is an aria labelled by, this is an aria labelled by  
PassLink text replaced by aria-labelledby attributeTabbingThis is an aria labelled by, link  
PassClick Here link with aria-describedby attributeReadingLink click here, this is an aria described by  
PassClick Here link with aria-describedby attributeTabbingClick here link, this is an aria described by  
PassLayout table with single cellReadingThis is some text.Treated as a layout table.  
PassLayout table with role=presentationReadingExample. Navigation. Links. Content.Table treated as layout table - not announced as table.  
PassData table with role=gridReadingTable with two rows and two columns, row one column one, morning. Column two, afternoon. Row two, morning, column one, free. Afternoon, column two, busy.  
PassData table with role=tableReadingTable with 1 rows and 1 columns. Row 1, columns 1, this is some text.  
PassData table with summary and thReadingTable with two rows and two columns, data table summary. Row one column one, morning. Column two, afternoon. Row two, morning, column one, free. Afternoon, column two, busy.  
PassData table with caption and thReadingTable with two rows and two columns, caption, data table caption. Row one column one, morning. Column two, afternoon. Row two, morning, column one, free. Afternoon, column two, busy.  
PassData table with th cell headersReadingTable with two rows and two columns, row one column one, morning. Column two, afternoon. Row two, morning, column one, free. Afternoon, column two, busy.  
PassData table with th scope on cell headersReading Table with 4 rows and 5 columns, caption, contact information. Row 1, column 1. Column 2, name. Column 3, phone number. Column 4, fax number. Column 5, city. Joel Garner, row 2, column 1, one. Name, column 2, Joel Garner. Phone number, column 3, 412 212 5421. Fax number, column 4, 412 212 5400. City, column 5, Pittsburgh. Column headers, but no row headers, announced for TD cells in reading mode, but row headers are announced when using table navigation commands.  
PassData table with td headers attributeReading Table with 3 rows and 7 columns, row 1 through 2, column 1, homework. Row 1, 1 column 2 through 4, exams. 1 column 5 through 7, projects. Row 2, exams 1, column 1, one. Exams column 2, two. Exams column 3, final. Projects column 4, one. Projects column 5, two. Projects column 6, final. Row 3, homework homework, column 1, fifteen percent. Exams one, column 2, fifteen percent. Exams two, column 3, fifteen percent. Exams final, column 4, twenty percent. Projects one, column 5, ten percent. Projects two, column 6, ten percent. Projects final, column 7, fifteen percent. Headers associated with the cell read out before column number.  
PassPDF18 Document with doc titleReadingThis is document titleVoices document title.