Advanced
Accessibility
Problems

Drupal Developer Days
Leuven, Belgium
15-18 April 2025

Nicolai Schwarz
textformer.de

Hi, Nicolai Schwarz here
Designer & Webdeveloper
Dortmund, Germany
textformer.de

doing Drupal since around 2008
mostly Site Building & Frontend stuff

written 100+ articles in the last 15 years for Screenguide, PC Magazin, Webstandards Magazin, t3n, PHP Magazin

Nicolai Schwarz
JMB Frontpage

Jewish Museum Berlin
jmberlin.de

Jan Hellbusch is a well known Accessibility Consultant in Germany. He has written several books about the topic.
hellbusch.de

BFIT is the German »Überwachungsstelle des Bundes für Barrierefreiheit von Informationstechnik«.
www.bfit-bund.de

All examples are taken from real accessibility tests for the Jewish Museum Berlin – jmberlin.de.

Main links

Link Icon

Link to slides, at the end

Some of
the stuff
we already do

xxx
xxx
xxx

Granted, these three pages exist because we have to have them. Because like most museums this one is also funded in part by the state.

But then there is also …

xxx
xxx
xxx

Editors are doing their best to add useful alt texts. Here are two examples.

xxx
xxx
xxx

We have something we call »infopanels« – a list of links for a topic. Here we mark the »Current page:«.

This started as an added information for screen readers. But now we are displaying it for everyone.

Stuff I knew
but managed
to miss anyway

xxx

Problem: This looks fine. Until you check the contrast. Here we have:

Contrast Ratio needs to be at least 4.5:1.

xxx

HTML, old code

HTML, corrected code with lang attributes

xxx
xxx xxx

HTML, old code, a few years back

HTML, new code

xxx

HTML, old code, just recently

HTML, new code

Keep in mind: No ARIA is better than Bad ARIA.

See also: aria-label is a letdown
»All in all, 34% of aria-label uses we reviewed are likely incorrect.«

xxx

HTML

Stuff
that was easy
to add

xxx
xxx
xxx
xxx
xxx
xxx

HTML, old code

HTML, new code

»The <hgroup> HTML element represents a heading and related content. It groups a single <h1>–<h6> element with one or more <p>.«

»The <hgroup> element allows the grouping of a heading with any secondary content, such as subheadings, an alternative title, or tagline. Each of these types of content represented as a <p> element within the <hgroup>.«

See mdn.

The hgroup element was dropped from the HTML5 standard. But it is still alive in the HTML Living Standard of the WHATWG. All major browsers support <hgroup> since 2015.

See W3C vs. WHATWG HTML5 Specs – The Differences Documented

xxx
xxx

HTML, old code

HTML, possible solution 1

Stuff that
surprised me

xxx

HTML, current code

Note: The main content is grouped twice, once with a <main> element and once in an <article> element. This is redundant in screen readers.
The article element should be removed – or given the role "none".

xxx

HTML, old code

HTML, new code

Jan Hellbusch writes: Success criterion 1.3.1 requires structure. The HTML specification requires »paragraphs«:
Accordingly, all formulating content (»phrasing content«) belongs in a paragraph. However, a paragraph is not to be equated with a p-element, but with a structuring element.

xxx
xxx
xxx

What is Hanukkah?

Hanukkah (Hebr. for dedication), the Festival of Lights in winter commemorating the rededication of the Temple in Jerusalem by the Maccabees

Read more

HTML, current code

HTML, proposed code

About popover:

»The Popover API provides developers with a mechanism for displaying popover content on top of other page content. Popover content can be controlled either declaratively using HTML attributes, or via JavaScript.«

»The popover can be "light dismissed" – this means that you can hide the popover by clicking outside it. / The popover can also be closed, using browser-specific mechanisms such as pressing the Esc key.«
developer.mozilla.org

Stuff that
Drupal & CKEditor
do

xxx

Problem 1: The mandatory fields are marked a total of four times (*, required attribute, aria-required attribute, text behind the input field):

HTML, example code

Problem 2: Error messages are displayed as a tool tip on the input field. However, these disappear as soon as they leave the field of view.

(I’ll need to check this. They might mean the browser tool tips.)

Problem 3: There is again some structure missing.

HTML, proposed code version 1

HTML, proposed code version 2

xxx

HTML, current code

Problem: The current page is identified as the current page by aria-current and by invisible text. One is redundant.

xxx

Plain text

Ein besonderer Schwerpunkt liegt auf der Bildungsarbeit: Das umfangreiche pädagogische Angebot, die Forschungsmöglichkeiten in Bibliothek und Archiv sowie das Veranstaltungsprogramm richten sich an Kinder, Jugendliche und Erwachsene. Neben Führungen und Workshops finden Vorträge und Konferenzen, Konzerte und Lesungen sowie ein jährlicher Kultursommer statt. Besonders facettenreich sind auch unsere digitalen Programme, wozu der Internetauftritt des Museums, die JMB App, vielfältige Online-Features zu jüdischen Themen, Online-Publikationen, Online-Sammlungen und eine Mediathek gehören.

German tends to have quite long words, which can lead to empty space at the end of lines.

Plain text with hyphens: auto

Ein besonderer Schwerpunkt liegt auf der Bildungsarbeit: Das umfangreiche pädagogische Angebot, die Forschungsmöglichkeiten in Bibliothek und Archiv sowie das Veranstaltungsprogramm richten sich an Kinder, Jugendliche und Erwachsene. Neben Führungen und Workshops finden Vorträge und Konferenzen, Konzerte und Lesungen sowie ein jährlicher Kultursommer statt. Besonders facettenreich sind auch unsere digitalen Programme, wozu der Internetauftritt des Museums, die JMB App, vielfältige Online-Features zu jüdischen Themen, Online-Publikationen, Online-Sammlungen und eine Mediathek gehören.

With CSS we could add hyphens: auto, but this leads to unwanted hyphenation.

Plain text with &shy;

Ein besonderer Schwer­punkt liegt auf der Bildungs­arbeit: Das umfangreiche pädagogische Angebot, die Forschungs­möglichkeiten in Bibliothek und Archiv sowie das Veranstaltungs­programm richten sich an Kinder, Jugendliche und Erwachsene. Neben Führungen und Workshops finden Vorträge und Konferenzen, Konzerte und Lesungen sowie ein jährlicher Kultur­sommer statt. Besonders facettenreich sind auch unsere digitalen Programme, wozu der Internet­auftritt des Museums, die JMB App, vielfältige Online-Features zu jüdischen Themen, Online-Publikationen, Online-Sammlungen und eine Mediathek gehören.

For years, the editors are adding &shy; manually to have full control where breaks can occur.

xxx
xxx
xxx

Problem for editors: In Drupal 10 the new CKEditor decides to swap the &shy; to an invisible character. These characters do hyphenate in the background. But editors can’t see what is going on.

Now we have to rebuild a fine HTML feature with stupid workarounds.

xxx
xxx
xxx

HTML, code within CKEditor

New problem: HTML, within CKEditor

HTML, on the actual page

So we wanted to know if the divided cite had any impact on the accessibility / screen reader. Answer: The cite doesn’t register at all in the accessibility tree.

But something else popped up.

Jan Hellbusch testet this last week:

Plain text with <wbr>

Ein besonderer Schwerpunkt liegt auf der Bildungsarbeit: Das umfangreiche pädagogische Angebot, die Forschungsmöglichkeiten in Bibliothek und Archiv sowie das Veranstaltungsprogramm richten sich an Kinder, Jugendliche und Erwachsene. Neben Führungen und Workshops finden Vorträge und Konferenzen, Konzerte und Lesungen sowie ein jährlicher Kultursommer statt. Besonders facettenreich sind auch unsere digitalen Programme, wozu der Internetauftritt des Museums, die JMB App, vielfältige Online-Features zu jüdischen Themen, Online-Publikationen, Online-Sammlungen und eine Mediathek gehören.

<wbr> does break the word. But in contrast to &shy; you do not get a hyphen. This is worse for people who can see. So we will not use this.

Stuff that is OK
in theory
– but not for
screen readers

xxx

Our »infopanels« are currently styled as definition lists. That looks ok. But …

HTML, current code

Problem: The dl elements are readable in screen readers. But they do not any semantics. They have no role.

See https://www.w3.org/TR/html-aria/#el-dl

HTML, proposed code

xxx

HTML, current code

HTML, better solution

CSS, to expand the link

This is a teaser

where the link contains everything.

This is a teaser

where the link only contains the first four words.

xxx

When is the museum open?

The museum is open daily from 10 am to 6 pm. The museum is closed on the Jewish Holidays of Rosh ha-Shanah (the Jewish New Year) and Yom Kippur (the Day of Atonement), on the day of the ceremony for the Prize for Understanding and Tolerance, and on Christmas Eve.

HTML, our code

HTML, proposed code in 2021

And then toggle aria-expanded and hidden with JavaScript.

The problem with summary: The summary element may contain headings, but screen readers can’t access the heading. E.g. when you jump from hx to hx with the key H, you will not find the heading inside the summary.

The problem may be the default style display: list-item. If you reset that part then the screen reader will find the heading. This only works when there is only one element in the summary.

CSS

Still a problem: Cause our summary contains a heading and two SVG.

HTML, our code

Solution: The SVG need to move inside the h3.

This needs a little bit more work, cause at the moment the editors write the heading directly into the textfield, as they need to choose h2, h3 or h4.

Stuff that is
just annoying

xxx
xxx
xxx
xxx

HTML, current code

Note: It has been noticed that the designation also includes the indication of the author. There is no requirement that explicitly prohibits this, but this is about the text alternative that should indicate the purpose of the graphic. Therefore, information of this kind should be placed outside the <figcaption>.

HTML, proposed better code

xxx

Problem 1: It must be possible to move the mouse pointer over the displayed text without the text being hidden. (CSS)

Stuff that need some serious reworking

xxx
xxx
xxx

Problem 1: People can tab out of the layers and reach the content in the background.

xxx

When the search layer is opened the focus jumps to the input field. As it should be.

xxx

But we have other layers that open and close.

Problem 2: The focus needs to go into that layer.

Problem 3: The new layers are currently simple divs.

Problem 4: Currently there is a list for the buttons. The new layers are placed after the ul. This is not the correct order for screen readers.

HTML, simplified version

xxx
xxx
xxx
xxx

We have one rather regular slider. One where the first element can be bigger (one element instead of three on desktop). And one carousel on the frontpage. All with some variations in responsive sizes.

Problem 1: (again) People can reach slides that are currently not visible.

Problem 2: Slider items need more info.

HTML, current code

HTML, better code

Nice to have: Instead of buttons with text »Next« and »Previous«, the buttons should say: »Next three slides«. Responsive of course: »Next two slides« / »Next slide«.

xxx

HTML, current code

Screenreader reads

HTML, better accessibility without figcaption

Stuff that will not work with the current design

xxx
xxx
xxx

Problem: There must be no overlapping up to 400% text zoom.

Link Icon textformer.de/ddd25