User agent reliability for NVDA Firefox Screen reader compatibility
Screen Readers
Dec 12, 2023
Shows how well NVDA Firefox supports ARIA and WCAG sufficient techniques.
Latest version tested
NVDA 2023.3 with FF 115
- All tests: 110 pass of 127 tests (87%)
- ARIA tests: 44 pass of 47 tests (94%)
- WCAG tests: 74 pass of 86 tests (86%)
Reliability trend
Failing tests
Test | Mode | What the user hears | Notes | |
---|---|---|---|---|
Page with xml:lang set on the html and p elements | Reading | Act-if tay-bill. Ray-day-oh. | Pronounced as English. Ignores xml:lang. | |
application/xhtml+xml page with mismatching lang and xml:lang on the html element | Reading | Ga-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. | |
Match lang subtags | Reading | Dam-he. Dam-he. Daim. | lang=de and lang=de-DE pronounced as German, lang=de-AT pronounced as English. | |
audio with aria-label attribute | Reading | Nothing | Nothing voiced for audio - no indication it exists | |
audio with aria-labelledby attribute | Reading | Nothing | Nothing voiced for audio - no indication it exists | |
audio with title attribute | Reading | Nothing | Nothing voiced for audio - no indication it exists | |
iframe with fallback content | Tabbing | Silence. Frame, example hyperlink, link. | Silence when tab focus stops on iframe. | |
iframe with title attribute | Tabbing | Silence. This is an iframe title, frame, example hyperlink, link. | Silence when tab focus stops on iframe. | |
Interactive iframe with role=presentation and negative tabindex and no accessible name | Tabbing | Nothing | Skips over focusable link in iframe | |
abbr with title | Reading | T L N | ABBR expansion ignored in screen reader, available to sighted users as dotted underline tooltip links in browser. | |
area with title attribute | Reading | This is alt text, graphic, this is alt text, link, slash left arrow dot HTM. This is alt text, graphic link, slash right arrow dot HTM. | Link URLs read out instead of link title | |
area with title attribute | Tabbing | Slash left arrow dot HTM, link, this is alt text, graphic. Slash right arrow dot HTM, link, this is alt text, graphic. | Link URLs read out each time user tabs. | |
Data table with role=columnheader headers but no th | Reading | Morning. Afternoon. Free. Busy. | Table treated as layout table - not announced as table, and no headers read. | |
PDF1 Image with alt text | Reading | Nothing | Image ignored - but Firefox accessibility inspector shows figure named 'this is alt text' in accessibility tree | |
PDF19 Phrase language set to German | Reading | Rah-di-oh | Pronounced as French, using document language, phrase language ignored | |
PDF6 Table with header markup | Reading | Table with 1 rows and 2 columns, column header, column header, morning. Column header. Afternoon. Row 1, column 1, free. Column 2. Busy. Out of table | Voiced as table, but no headers voiced for data cells. | |
PDF6 Table with header markup and alt text | Reading | Table with 1 rows and 2 columns. Column header, column header, morning. Column header, afternoon. Row 1, column 1, free. Column 2, busy. Out of table | Voiced as table, but no headers voiced for data cells. |
Passing tests
Test | Mode | What the user hears | Notes | |
---|---|---|---|---|
Page with lang set on the html and p elements | Reading | Act-eef tab-le. Rah-di-oh. | Pronounced as French and German. | |
text/html page with mismatching lang and xml:lang on the html element | Reading | Ga-raj. Doo-ble. Damm. Un, deux, trois. | Speech pronounced as lang=fr, and CSS matches :lang(fr). | |
ARIA role=heading | Heading | First level heading, heading level 1. Second level heading, heading level 2. | ||
Heading is img with alt | Heading | Second level alt, graphic heading level 2. | ||
applet with title attribute | Reading | Nothing | Firefox 52 removed applet support in 2017, and doesn't render applet on screen unless applet has fallback content | |
applet with fallback content | Reading | Fallback content for applet | Firefox 52 removed applet support in 2017, and doesn't render applet on screen unless applet has fallback content | |
applet with aria-label attribute | Reading | Nothing | Firefox 52 removed applet support in 2017, and doesn't render applet on screen unless applet has fallback content | |
applet with aria-labelledby attribute | Reading | Nothing | Firefox 52 removed applet support in 2017, and doesn't render applet on screen unless applet has fallback content | |
applet inside figure with figcaption element | Reading | Figure caption, figure caption for applet. Out of figure. | Firefox 52 removed applet support in 2017, and doesn't render applet on screen unless applet has fallback content | |
embed with title attribute | Reading | Title text for embed, frame button play. Button mute. Out of frame, blank. | ||
embed inside figure with figcaption | Reading | Figure frame, button play. Button mute. Out of frame, blank. Caption, figure caption for embed. Out of figure. | ||
embed with aria-label attribute | Reading | ARIA label for embed, frame, button play. Button mute. Out of frame, blank. | ||
embed with aria-labelledby attribute | Reading | This is ARIA-LABELLEDBY text, frame, button play. Button mute. Out of frame, blank. | ||
object with fallback content | Reading | Fallback content for object. | Flash is no longer supported by Firefox. | |
object with title attribute | Reading | Nothing | Nothing displayed on screen and nothing voiced for object | |
object with aria-label attribute | Reading | Nothing | Nothing displayed on screen and nothing voiced for object | |
object with aria-labelledby attribute | Reading | Nothing | Nothing displayed on screen and nothing voiced for object | |
video with aria-label attribute | Reading | Video aria label, grouping, out of grouping. | ||
video with aria-labelledby attribute | Reading | This is ARIA-LABELLEDBY text, grouping, out of grouping | ||
video with title attribute | Reading | Video title grouping, out of grouping. | ||
a element placeholder link with no event handler or href attribute | Reading | Placeholder text | ||
a element placeholder link with no event handler or href attribute | Tabbing | Nothing | Skipped when tabbing, as expected | |
iframe with fallback content | Reading | Frame, this is an, link, example hyperlink in the target page. Out of frame, blank. | Fallback content is ignored | |
iframe with title attribute | Reading | This is an IFRAME title, frame, this is an, link, example hyperlink in the target page. Out of frame, blank. | ||
Interactive iframe with role=presentation and no accessible name | Reading | This is a link, example hyperlink, in the target page. | role=presentation makes frame seamless | |
Interactive iframe with role=presentation and no accessible name | Tabbing | Silence. Frame, example hyperlink, link | ||
Interactive iframe with role=presentation and negative tabindex and no accessible name | Reading | Frame, this is a link, example hyperlink, in the target page. | role=presentation makes frame seamless | |
Interactive iframe with role=presentation and title attribute | Reading | This is frame title, frame, this is an, visited link, example hyperlink, in the target page. | ||
Interactive iframe with role=presentation and title attribute | Tabbing | This is frame title, frame, example hyperlink, visited link. | ||
Interactive iframe with role=presentation and aria-label attribute | Reading | This is aria-label, frame, this is an, visited link, example hyperlink, in the target page. | ||
Interactive iframe with role=presentation and aria-label attribute | Tabbing | This is aria-label, frame, example hyperlink, visited link. | ||
button containing img with alt | Reading | Button graphic, this is image alt | ||
button containing img with alt | Tabbing | This is image alt, graphic button | ||
button containing img with title attribute | Reading | Button graphic, this is image title. | ||
button containing img with title attribute | Tabbing | This is image title, graphic button. | ||
button containing img with aria-label | Reading | Button graphic, this is image aria label. | ||
button containing img with aria-label | Tabbing | This is image aria label, graphic button. | ||
button containing img with aria-labelledby | Reading | Button graphic, this is an aria labelled by, this is an aria labelled by | ||
button containing img with aria-labelledby | Tabbing | This is an aria labelled by, graphic button. | ||
button with title containing img with null alt | Reading | Button, this is button title | ||
button with title containing img with null alt | Tabbing | This is button title, button | ||
button with aria-label containing img with null alt | Reading | Button, this is button aria label | ||
button with aria-label containing img with null alt | Tabbing | This is button aria label, button | ||
input type=image with alt | Reading | Button, this is image button alt text | ||
input type=image with alt | Tabbing | This is image button alt text, button | ||
input type=image with title attribute | Reading | Button, this is image button title text | ||
input type=image with title attribute | Tabbing | This is image button title text, button | ||
input type=image with aria-label attribute | Reading | Button, this is image button aria label text | ||
input type=image with aria-label attribute | Tabbing | This is image button aria label text, button | ||
input type=image with aria-labelledby attribute | Reading | Button, this is image button aria labelled by text, this is image button aria labelled by text | ||
input type=image with aria-labelledby attribute | Tabbing | This is image button aria labelled by text, button | ||
input type=text with aria-describedby attribute | Reading | Clickable, first name, edit has auto complete, a bit of instructions for this field linked with aria describedby | ||
input type=text with aria-describedby attribute | Tabbing | First name, edit, has auto complete, a bit of instructions for this field linked with aria describedby, blank | ||
input type=text with title attribute | Reading | Enter search text, edit has auto complete | ||
input type=text with title attribute | Tabbing | Enter search text, edit, has auto complete, blank | ||
input type=text with aria-label attribute | Reading | Enter search text, edit has auto complete | ||
input type=text with aria-label attribute | Tabbing | Enter search text, edit, has auto complete, blank | ||
input type=text with aria-labelledby attribute | Reading | Enter search text, edit has auto complete | ||
input type=text with aria-labelledby attribute | Tabbing | Enter search text, edit, has auto complete, blank | ||
input type=text with label for | Reading | Clickable, enter search text, edit has auto complete | ||
input type=text with label for | Tabbing | Enter search text, edit, has auto complete, blank | ||
input type=text inside label with text before control | Reading | Clickable, enter search text, edit has auto complete | ||
input type=text inside label with text before control | Tabbing | Article, enter search text, edit has auto complete, blank | ||
input type=text inside label with text after control | Reading | Clickable, edit has auto complete, enter search text | ||
input type=text inside label with text after control | Tabbing | Article, enter search text, edit has auto complete, blank | ||
input type=text inside label with text before and after control | Reading | Clickable, enter search text, edit has auto complete, blanks not allowed | ||
input type=text inside label with text before and after control | Tabbing | Article, enter search text, blanks not allowed, edit has auto complete, blank | ||
fieldset containing links | Reading | Legend for enclosed links grouping, legend for enclosed links. Link home, link about, link contact. Out of grouping. | ||
fieldset containing links | Tabbing | Legend for enclosed links, grouping, home link. About link. Contact link. | ||
Yes/No radio buttons inside fieldset element | Reading | I agree to terms and conditions grouping, I agree to terms and conditions. Clickable radio button checked, yes, clickable radio button not checked, no. Out of grouping, sign me up to the newsletter grouping, sign me up to the newsletter. Clickable radio button checked, yes, clickable radio button not checked, no. Out of grouping. | ||
Yes/No radio buttons inside fieldset element | Tabbing | I 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. | ||
img with null alt | Reading | Nothing | Ignored as expected | |
img with alt | Reading | Graphic, this is alt text | ||
img with figcaption | Reading | Figure caption, Violet, taken on 12/11/2010. Out of figure. | ||
img with title | Reading | Graphic, this is title text | ||
img with aria-label | Reading | Graphic, this is an aria label | ||
img with aria-labelledby | Reading | Graphic, this is an aria labelled by, this is an aria labelled by | ||
area and img with alt attributes | Reading | This is alt text, graphic, this is alt text, link this is left alt text, link this is right alt text | ||
area and img with alt attributes | Tabbing | This is left alt text, link, this is alt text graphic. This is right alt text, link, this is alt text graphic | ||
area with alt attribute and img with null alt | Reading | Graphic link, this is left alt text, link, this is right alt text. | ||
area with alt attribute and img with null alt | Tabbing | This is left alt text, link graphic. This is right alt text, link graphic. | ||
area with aria-label attribute | Reading | This is alt text, graphic, this is alt text link, this is left aria label text, link, this is right aria label text. | ||
area with aria-label attribute | Tabbing | This is left aria label text, link, this is alt text, graphic. This is right aria label text, link, this is alt text, graphic | ||
area with aria-labelledby attribute | Reading | This is alt text, graphic, this is alt text link, this is left aria labelled by text, link, this is right aria labelled by text. | ||
area with aria-labelledby attribute | Tabbing | This is left aria labelled by text, link, this is alt text graphic. This is right aria labelled by text, link, this is alt text graphic. | ||
Link containing img with alt | Reading | Link graphic, this is a link alt | ||
Link containing img with alt | Tabbing | This is a link alt, graphic link | ||
Link containing img with title | Reading | Link graphic, this is an image title | ||
Link containing img with title | Tabbing | This is an image title, graphic link | ||
Click Here link with title attribute | Reading | Link, click here | ||
Click Here link with title attribute | Tabbing | Click here link, this is a link title | ||
Link text replaced by aria-label attribute | Reading | Link, this is an aria label | ||
Link text replaced by aria-label attribute | Tabbing | This is an aria label, link | ||
Link text replaced by aria-labelledby attribute | Reading | Link, this is an aria labelled by, this is an aria labelled by | ||
Link text replaced by aria-labelledby attribute | Tabbing | This is an aria labelled by, link | ||
Click Here link with aria-describedby attribute | Reading | Link click here, this is an aria described by | ||
Click Here link with aria-describedby attribute | Tabbing | Click here link, this is an aria described by | ||
Layout table with single cell | Reading | This is some text. | Treated as a layout table. | |
Layout table with role=presentation | Reading | Example. Navigation. Links. Content. | Table treated as layout table - not announced as table. | |
Data table with role=grid | Reading | Table with two rows and two columns, row one column one, morning. Column two afternoon. Row two, morning, column one, free. Afternoon, column two, busy. | ||
Data table with role=table | Reading | Table with 1 rows and 1 columns. Row 1, columns 1, this is some text. | ||
Data table with summary and th | Reading | Table with two rows and two columns, row one column one, morning. Column two, afternoon. Row two, morning, column one, free. Afternoon, column two, busy. | ||
Data table with caption and th | Reading | Table 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. | ||
Data table with th cell headers | Reading | Table with two rows and two columns, row one, column one, morning. Column two, afternoon. Row two, morning, column one, free. Afternoon, column two, busy. | ||
Data table with th scope on cell headers | Reading | 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. 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. | |
Data table with td headers attribute | Reading | Table with 3 rows and 7 columns, row 1 through 2 column 1, homework. Row 1 column 2 through 4, exams. Column 5 through 7, projects. Row 2, exams, column 2, one. Exams, column 3, two. Exams, column 4, final. Projects, column 5, one. Projects, column 6, two. Projects, column 7, final. Row 3, 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. | |
PDF18 Document with doc title | Reading | This is document title - SR_PDF_doc_title.pdf | Voices PDF document title, and filename part of URL. | |
PDF9 Document with headings | Reading | Heading level 1, heading 1. Heading level 2, heading 1.2 | ||
PDF4 Decorative image marked as artifact | Reading | Nothing | Image ignored as expected | |
PDF16 Document default language set to French | Reading | Act-eef tab-le | Document pronounced as French, document language applied |