User agent reliability for JAWS Edge Screen reader compatibility

Screen Readers
Dec 12, 2023

Shows how well JAWS Edge supports ARIA and WCAG sufficient techniques.

Latest version tested

JAWS 2023.2311.34 with Edge 120

  • All tests: 102 pass of 123 tests (83%)
  • ARIA tests: 38 pass of 45 tests (84%)
  • WCAG tests: 70 pass of 86 tests (81%)

Reliability trend

100%80%60%40%20%0%201420152016201720182019202085%202183%202283%202383%

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, zway, dray.Speech pronounced as lang=fr, but CSS matches :lang(de) and German CSS content pronounced as French.
Failembed with title attributeReadingVideo start. Show more media controls, more options button menu. Video end.Title not read, no description of non-text content.
Failembed with aria-label attributeReadingVideo start. Show more media controls, more options button menu. Video end.Aria-label not read - no description of non-text content.
Failembed with aria-labelledby attributeReadingVideo start. Show more media controls, more options button menu. Video end.Aria-labelledby not read - no description of non-text content.
Failobject with fallback contentReading Nothing Nothing voiced for fallback content displayed on screen - no indication it exists
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 no accessible nameTabbingExample target group, slash 1234 dot html, example hyperlink, groupReads link as group role instead of link role, and reads URL of iframe document
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 using default JAWS settings.
FailPDF9 Document with headingsReadingHeading 1, heading level 2.Only finds one heading, reads wrong heading level.
FailPDF4 Decorative image marked as artifactReadingUnlabeled 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).  
PassMatch lang subtagsReadingDam-he. Dam-he. Dam-he.All pronounced as German.  
PassARIA role=headingHeadingFirst level heading, heading level 1. Second level heading, heading level 2.  
PassHeading is img with altHeadingSecond level alt, heading level 2, graphic.  
Passapplet with title attributeReading Nothing Edge has no applet support, and doesn't render applet on screen unless applet has fallback content  
Passapplet with fallback contentReadingFallback content for applet  
Passapplet with aria-label attributeReading Nothing Edge has no applet support, and doesn't render applet on screen unless applet has fallback content  
Passapplet with aria-labelledby attributeReading Nothing Edge has no applet support, and doesn't render applet on screen unless applet has fallback content  
Passapplet inside figure with figcaption elementReadingHas details, figure caption for applet.  
Passembed inside figure with figcaptionReadingVideo start. Has details, show more media controls, more options button menu. Video end. Has details, figure caption for embed.  
Passobject with title attributeReadingTitle for object, graphic unavailable.  
Passobject with aria-label attributeReadingARIA label for object, graphic unavailable.  
Passobject with aria-labelledby attributeReadingThis is ARIA-LABELLEDBY text, graphic unavailable.  
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 contentReadingThis is an. Link example hyperlink. In the target page.JAWS 15 reads out iframe fallback content, JAWS 16 and later no longer read this.  
Passiframe with fallback contentTabbingFrame, example hyperlink, link.Fallback content is ignored  
Passiframe with title attributeReadingThis is an. Link example hyperlink. In the target page.  
Passiframe with title attributeTabbingThis is an IFRAME title frame, example hyperlink, link.  
PassInteractive iframe with role=presentation and no accessible nameReadingGroup start, example target. This is an. Link, example hyperlink. In the target page.  
PassInteractive iframe with role=presentation and negative tabindex and no accessible nameReadingGroup start, example target. This is an. Link, example hyperlink. In the target page.  
Passbutton containing img with altReadingThis is image alt, button  
Passbutton containing img with altTabbingThis is image alt, button, to activate press enter  
Passbutton containing img with title attributeReadingThis is image title, button  
Passbutton containing img with title attributeTabbingThis is image title, button, to activate press enter  
Passbutton containing img with aria-labelReadingThis is image aria label, button  
Passbutton containing img with aria-labelTabbingThis is image aria label, button, to activate press enter  
Passbutton containing img with aria-labelledbyReadingThis is an aria labelled by, button  
Passbutton containing img with aria-labelledbyTabbingThis is an aria labelled by, button, to activate press enter  
Passbutton with title containing img with null altReadingThis is button title, button  
Passbutton with title containing img with null altTabbingThis is button title, button, to activate press enter  
Passbutton with aria-label containing img with null altReadingThis is button aria label, button  
Passbutton with aria-label containing img with null altTabbingThis is button aria label, button, to activate press enter  
Passinput type=image with altReadingThis is image button alt text, button  
Passinput type=image with altTabbingThis is image button alt text, button, to activate press enter  
Passinput type=image with title attributeReadingThis is image button title text, button  
Passinput type=image with title attributeTabbingThis is image button title text, button, to activate press enter  
Passinput type=image with aria-label attributeReadingThis is image button aria label text, button  
Passinput type=image with aria-label attributeTabbingThis is image button aria label text, button, to activate press enter  
Passinput type=image with aria-labelledby attributeReadingThis is image button aria labelled by text, button  
Passinput type=image with aria-labelledby attributeTabbingThis is image button aria labelled by text, button, to activate press enter  
Passinput type=text with aria-describedby attributeReadingFirst name. Blank, edit, first 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, type in text  
Passinput type=text with title attributeReadingEnter search text. Blank edit, enter search text edit.  
Passinput type=text with title attributeTabbingEnter search text, edit, type in text  
Passinput type=text with aria-label attributeReadingEnter search text. Blank, enter search text, edit.  
Passinput type=text with aria-label attributeTabbingEnter search text, edit, type in text  
Passinput type=text with aria-labelledby attributeReadingEnter search text. Enter search text. Blank, edit, enter search text edit.  
Passinput type=text with aria-labelledby attributeTabbingEnter search text, edit, type in text  
Passinput type=text with label forReadingEnter search text. Blank edit, enter search text edit.  
Passinput type=text with label forTabbingEnter search text, edit, type in text  
Passinput type=text inside label with text before controlReadingEnter search text. Blank, edit, enter search text, edit.  
Passinput type=text inside label with text before controlTabbingEnter search text, edit, type in text  
Passinput type=text inside label with text after controlReadingBlank, edit, enter search text, edit. Enter search text.  
Passinput type=text inside label with text after controlTabbingEnter search text, edit, type in text  
Passinput type=text inside label with text before and after controlReadingEnter search text. Blank, edit, enter search text, blanks not allowed edit.  
Passinput type=text inside label with text before and after controlTabbingEnter search text, blanks not allowed, edit, type in text  
Passfieldset containing linksReadingGroup start, legend for enclosed links. Link home. Link about. Link contact. Group end, legend for enclosed links.  
Passfieldset containing linksTabbingLegend for enclosed links group, home link. About link. Contact link.  
PassYes/No radio buttons inside fieldset elementReadingGroup start, I agree to terms and conditions. Yes, radio button checked. No, radio button not checked. Group end, I agree to terms and conditions. Group start, sign me up to the newsletter. Yes, radio button checked. No, radio button not checked. Group end, sign me up to the newsletter.  
PassYes/No radio buttons inside fieldset elementTabbingI agree to terms and conditions group, yes, radio button checked. Sign me up to the newsletter group, yes, radio button checked.  
Passimg with null altReading Nothing Ignored as expected  
Passimg with altReadingThis is alt text, graphic  
Passimg with figcaptionReadingHas details, Violet, taken on 12/11/2010.  
Passimg with titleReadingThis is title text, graphic  
Passimg with aria-labelReadingThis is an aria label, graphic  
Passimg with aria-labelledbyReadingThis is an aria labelled by, graphic. This is an aria labelled by  
Passarea and img with alt attributesReadingImage map link graphic, this is left alt text. Image map link graphic, this is right alt text  
Passarea and img with alt attributesTabbingThis is alt text image map, this is left alt text, image map link graphic. This is right alt text, image map link graphic  
Passarea with alt attribute and img with null altReadingImage map link, this is left alt text. Image map link, this is right alt text.  
Passarea with alt attribute and img with null altTabbingThis is left alt text, image map link. This is right alt text, image map link  
Passarea with title attributeReadingImage map link graphic, this is left title text. Image map link graphic, this is right title text  
Passarea with title attributeTabbingThis is alt text, image map, this is left title text, image map link graphic. This is right title text, image map link graphic.  
Passarea with aria-label attributeReadingImage map link graphic, this is left aria label text. Image map link graphic, this is right aria label text.  
Passarea with aria-label attributeTabbingThis is alt text, image map, this is left aria label text, image map link graphic. This is right aria label text, image map link graphic.  
Passarea with aria-labelledby attributeReadingImage map link graphic, this is left aria labelled by text. Image map link graphic, this is right aria labelled by text.  
Passarea with aria-labelledby attributeTabbingThis is alt text, image map, this is left aria labelled by text, image map link graphic. This is right aria labelled by text, image map link graphic.  
PassLink containing img with altReadingLink graphic, this is a link alt.  
PassLink containing img with altTabbingThis is a link alt, link graphic.  
PassLink containing img with titleReadingLink graphic, this is an image title  
PassLink containing img with titleTabbingThis is an image title, link graphic  
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.aria-describedby is read when tabbing  
PassLayout table with single cellReadingTable with 1 columns and 1 rows. This is some text.Treated as a data table.  
PassLayout table with role=presentationReadingExample. Navigation. Links. Content.Table treated as layout table - not announced as table.  
PassData table with role=gridReadingGrid with two columns and two rows. Morning (column one, row one, morning). Afternoon (column two, row one, morning, afternoon). Free (column one, row two, morning, free). Busy (column two, row two, afternoon, busy). Grid end.Reads cell headers when using table navigation commands.  
PassData table with role=tableReadingTable with 1 columns and 1 rows. This is some text.  
PassData table with summary and thReadingSummary colon, data table summary. Table with two columns and two rows. Morning (column one, row one, morning). Afternoon (column two, row one, afternoon). Free (column one, row two, morning, free). Busy (column two, row two, afternoon, busy).  
PassData table with caption and thReadingTable with two columns and two rows. Data table caption. Morning (column one, row one, morning). Afternoon (column two, row one, afternoon). Free (column one, row two, morning, free). Busy (column two, row two, afternoon, busy).  
BetterData table with role=columnheader headers but no thReadingTable with two columns and two rows. Morning. Afternoon. Free. Busy (column 2, row 2, afternoon, busy).Reads cell headers when using table navigation commands  
PassData table with th cell headersReadingTable with two columns and two rows. Morning. Afternoon. Free. Busy.Reads cell headers when using table navigation commands  
PassData table with th scope on cell headersReading Table with 5 columns and 4 rows. Contact information. Blank (column 1, row 1, blank). Blank. Name (column 2, row 1, name). Phone number (column 3, row 1, phone number). Fax number (column 4, row 1, fax number). City (column 5, row 1, city). One (column 1, row 2, one). Joel Garner (column 2, row 2, name, Joel Garner). 412-212-5421 (column 3, row 2, phone number, Joel Garner, 412-212-5421). 412-212-5400 (column 4, row 2, fax number, Joel Garner, 412-212-5400). Pittsburgh (column 5, row 2, city, Joel Garner, Pittsburgh) Row header read out along with column header for cells when using table navigation commands.  
PassData table with td headers attributeReading Table with 7 columns and 3 rows. Homework (column 1, row 1, homework). Exams (column 2, row 1, exams, spans 3 columns). Projects (column 3, row 1, projects, spans 3 columns). Homework (column 1, row 2, homework). One (column 1, row 2, exams, one). Two (column 3, row 2, exams, two). Final (column 4, row 2, exams, final). One (column 5, row 2, projects, one). Two (column 6, row 2, projects, two). Final (column 7, row 2, projects, final). Fifteen percent (column 1, row 3, homework homework, fifteen percent). Fifteen percent (column 2, row 3, exams one, fifteen percent). Fifteen percent (column 3, row 3, exams two, fifteen percent). Twenty percent (column 4, row 3, exams final, twenty percent). Ten percent (column 5, row 3, projects one, ten percent). Ten percent (column 6, row 3, projects two, ten percent). Fifteen percent (column 7, row 3, projects final, fifteen percent). Headers associated with the cell read out when using table navigation commands.  
PassPDF18 Document with doc titleReadingThis is document title  
PassPDF1 Image with alt textReadingThis is alt text.