Page URL
https://www.telekom.de/shop/geraete/alle-geraete

Issues List

Page Notes and General Remarks
Non-text Content 1.1.1 (A)
Device images do not have purpose equivalent text alternative
Non-text Content 1.1.1 (A)
Icons do not have purpose equivalent text alternative
Non-text Content 1.1.1 (A)
"Speicher-Upgrade" image does not have purpose equivalent text alternative
Non-text Content 1.1.1 (A)
Info Icon does not have purpose equivalent text alternative
Non-text Content 1.1.1 (A)
Manufacturer logo images do not have purpose equivalent text alternative
Info and Relationships 1.3.1 (A)
No proper semantic HTML used
Info and Relationships 1.3.1 (A)
Sidebar Content not matching visual presentation and code markup
Info and Relationships 1.3.1 (A)
Device list presentation does not match markup
Info and Relationships 1.3.1 (A)
Improper use of semantic HTML list elements
Info and Relationships 1.3.1 (A)
List of services "rund um Ihre Bestellung" is not using correct semantic HTML
Use of Color 1.4.1 (A)
Links in body copy are indicated by color only
Contrast (Minimum) 1.4.3 (AA)
Link text (blue) on grey background does not meet minimum contrast
Contrast (Minimum) 1.4.3 (AA)
"Bonus" info (magenta) in "Tarif ändern" dialog window is not meeting minimum contrast
Contrast (Minimum) 1.4.3 (AA)
White text on green badge in product card does not meet minimum contrast
Contrast (Minimum) 1.4.3 (AA)
Color contrast in sidebar is weak
Resize text 1.4.4 (AA)
Resizing text leaves very limited space in "Tarif ändern" dialog window
Reflow 1.4.10 (AA)
Text content truncated
Reflow 1.4.10 (AA)
Vertical space in dialog window on small viewport extremely limited (67px)
Reflow 1.4.10 (AA)
Manufacturer filter needs horizontal scrolling
Non-text Contrast 1.4.11 (AA)
Product color options do not always have enough contrast
Non-text Contrast 1.4.11 (AA)
Rocket Icon in Product card badge has weak color contrast
Non-text Contrast 1.4.11 (AA)
Checkmark Icon in Sidebar has weak color contrast
Text Spacing 1.4.12 (AA)
Changing text spacing lets parts of text spill out of their containers
Keyboard 2.1.1 (A)
"Weiter ohne Gerät" link not accessible via keyboard
Keyboard 2.1.1 (A)
Interactive elements in sidebar (links, buttons) not accessible via keyboard
Keyboard 2.1.1 (A)
Filter dialog window cannot be opened or operated
Keyboard 2.1.1 (A)
Footnote dialog window does not receive keyboard focus on open
No Keyboard Trap 2.1.2 (A)
Keyboard focus trapped in "Tarif ändern" dialog window
Bypass Blocks 2.4.1 (A)
Repeated blocks cannot be bypassed
Focus Order 2.4.3 (A)
Clicking button "Weitere Geräte anzeigen" is not setting the right focus
Focus Order 2.4.3 (A)
Filter Dialog Window not in order
Link Purpose (In Context) 2.4.4 (A)
Product card link purpose not determinable
Headings and Labels 2.4.6 (AA)
Single heading present – cannot describe all content accurately
Focus Visible 2.4.7 (AA)
Product card focusable, but focus is not visible
Focus Visible 2.4.7 (AA)
Elements in filter dialog focusable, but focus is not visible
Focus Not Obscured (Minimum) 2.4.11 (AA)
Activated filter dialog window obscures element focus
Focus Not Obscured (Minimum) 2.4.11 (AA)
Activated footnote dialog windows obscure element focus
Pointer Gestures 2.5.1 (A)
Manufacturer filter can only be operated by dragging motion on mobile
Label in Name 2.5.3 (A)
Filter button labels not part of accessible name
Label in Name 2.5.3 (A)
Sorting dropdown label not part of accessible name
Target Size (Minimum) 2.5.8 (AA)
Footnote Asterisk not meeting minimum target size
Target Size (Minimum) 2.5.8 (AA)
Info icon "i" not meeting minimum target size
On Input 3.2.2 (A)
Manufacturer filters are applied on click without previous announcement
Name, Role, Value 4.1.2 (A)
Interactive element uses non-semantic HTML
Name, Role, Value 4.1.2 (A)
Improper use of semantic HTML
Name, Role, Value 4.1.2 (A)
Interactive elements do not use semantic HTML
Priority: Critical Significant Page: Alle Geräte Observation Permalink
Observation Details

Please refer to global observation 1.3.1 Info and Relationships – "Semantic HTML" for general remarks about the use of semantic HTML.

Accompanying Files
Observation Details
  • Image

    • In the badge, the purpose of the content is to show, the user getting 200 € "Ankaufsbonus" on top of the "Ankaufsangebot für das Altgerät". The icon's purpose is to communicate "Ankaufsangebot für das Altgerät".

    • The Trade-In icon uses "tradeIn icon" as its text alternative which does not serve the equivalent purpose of what the icon is communicating.

  • Inline SVG icons have no text alternative. As the icon is embedded as inline SVG, the SVG's <title> element must be present if no other text alternative is provided, in which case the SVG must be hidden from screen readers

    • Badge – Vorbestellung

    • Sidebar – Info

    • Incompatible plan dialog window – Close & Change

Remediation Notes
  • Ankaufsbonus

    • Change the text alternative to communicate the icon's purpose, e.g. by setting alt="Ankaufspreis Ihres Altgerätes".

  • Vorbestellung

    • Add <title> element to SVG or embed SVG from file and treat like <img>

    • If declaring icon as decorative, ensure <title> element is empty and SVG is hidden from screen readers by setting aria-hidden="true"

Accompanying Files
Observation Details

Speicher-Upgrade image has text alternative set to device name "Samsung Galaxy S25 Edge" which does not communicate the contents (purpose) of the image.

Remediation Notes

Change the text alternative to communicate the image's purpose, e.g. by setting it to the displayed text content: alt="2× Speicher-Upgrade".

Priority: Critical Low Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

Device images use device name as text alternative, not serving the equivalent purpose of the image and simply duplicating text content that is already presented down below.

Please read remediation notes carefully.

Remediation Notes

There are multiple ways to remediate this issue.

Image description

The ideal way would be to use the actual image description. Possible text alternatives for the example devices in the screenshot could be in the following style:

  • "Apple iPad Air 13" (2025) M3 in Space Grau. Vorderseite mit generischem Wallpaper, Hinterseite mit Kamera"

  • "Samsung Galaxy S25 Edge in Titanium Icyblue (hellblau). Vorderseite mit Gerätenamen als Schriftzug, Seitenansicht, Promotion für 2× Speicher-Upgrade inklusive"

  • "Samsung Galaxy S25 Ultra in Schwarz. Vorderseite mit Gerätenamen als Schriftzug, Rückseite mit 5 Kameras"

Declare decorative

A less ideal way would be to declare the device image as decorative by using a null alt attribute, removing it from the accessibility tree. There are a few caveats to this "tactic", though and if using it, there are multiple other steps to be done, to ensure conformance with this success criterion.

  • While this would improve the current use of the images' text alternatives, removing the content duplication, it does not really solve the issue of the images' purpose not being communicated.

  • A decorative image only is purely decorative, if not adding any information that is not communicated otherwise. While device name and device color might be information which is available elsewhere, the actual description of the device is not.

  • Declaring the images decorative, you additionally MUST ensure, all other information (color, promotions, add-ons, extra devices like styluses, etc.) is available as text in the product card.

Priority: Serious Medium Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

In the filter section, the purpose of the manufacturer's logos is to filter device list by manufacturer. The image's purpose is to communicate, depending on filter status, "Zeige Geräte von MANUFACTURER".

The logos use the name of the manufacturer as its text alternative which does not serve the equivalent purpose of what the image is communicating.

Remediation Notes

Change the text alternative to communicate the icon's purpose, e.g. by setting alt="Geräte von Apple anzeigen". Ensure to deliver accessible, purpose equivalent text alternatives for all filter states.

  • No manufacturer filter selected: "Nur Geräte von MANUFACTURER anzeigen"

  • One manufacturer filter selected

    • selected filter: "Alle Geräte anzeigen"

    • non-selected filter: "Geräte von MANUFACTURER anzeigen"

  • Multiple manufacturer filters selected

    • selected filter: "Geräte von MANUFACTURER nicht mehr anzeigen" (or ideally even announcing the still selected filters, see notes below)

    • non-selected filter: "Geräte von MANUFACTURER anzeigen"


One possible solution would be to use native checkbox inputs for the manufacturer filters. But the structural idea down below can be used with other methods as well.

<fieldset>
  <legend>Filter nach Endgeräte-Hersteller</legend>

  <input type="checkbox" 
         id="manufacturer-apple" 
         name="manufacturer" 
         value="Apple" 
         checked />
  <label for="manufacturer-apple">
    <svg><title>Apple</title>...</svg>
  </label>

  <input type="checkbox" 
         id="manufacturer-google" 
         name="manufacturer" 
         value="Google" />
  <label for="manufacturer-google">
    <svg><title>Google</title>...</svg>
  </label>

  <input type="checkbox" 
         id="manufacturer-samsung" 
         name="manufacturer" 
         value="Samsung" 
         checked />
  <label for="manufacturer-samsung">
    <svg><title>Samsung</title>...</svg>
  </label>

  <input type="checkbox" 
         id="manufacturer-telekom" 
         name="manufacturer" 
         value="Telekom" />
  <label for="manufacturer-telekom">
    <svg><title>Telekom</title>...</svg>
  </label>

  <input type="checkbox" 
         id="manufacturer-xiaomi" 
         name="manufacturer" 
         value="Xiaomi" />
  <label for="manufacturer-xiaomi">
    <svg><title>Xiaomi</title>...</svg>
  </label>
</fieldset>

From there work with the ids of checked/unchecked to create the accessible names by dynamically adding IDs of checked inputs. This way, you could create something like "Geräte von MANUFACTURER nicht mehr anzeigen. Es werden Geräte gezeigt von: CHECKED_MANUFACTURERS"

Accompanying Files
Observation Details

Info icon in sticky sidebar has no text alternative, thus no accessible name. The icons are used as interactive elements and MUST have an accessible name.

Remediation Notes

Change the text alternative to communicate the icon's purpose, e.g. by setting alt="Tarifdetails anzeigen/ausblenden".

Priority: Serious High Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

The device list presentation suggests the code to be marked up like this:

<!-- Device list -->
<div>
  <!-- Device card -->
  <article>
    <span><!-- Badge --></span>
    <img /><!-- Device image -->
    <h2><!-- Device name --></h2>
    <p><!-- Storage --></p>
    <p><!-- Price info --></p>
    <p><!-- Price --></p>
  </article>

  <!-- More device cards -->
</div>

Instead, there are no headings, sections, articles, divs and spans are nested many hierarchy levels and an empty link is present.

Remediation Notes

Ensure, code markup matches the visual presentation. One possible solution could be a structure as follows:

<h2></h2> <!-- Heading to introduce device list -->
<!-- Device list -->
<ul>
  <li>
    <!-- Device card -->
    <article>
      <h3></h3> <!-- Device name -->
      <span></span> <!-- Badge with promotion/info -->

      <dl>
        <div>
          <dt class="visually-hidden">Verfügbar in den Farben</dt>
          <dd>
            <ul></ul> <!-- Available colors -->
          </dd>
        </div>

        <div>
          <dt class="visually-hidden">Speicherplatz</dt>
          <dd>
            Verfügbar in
            <ul></ul> <!-- Storage options -->
          </dd>
        </div>

        <div>
          <dt>Preis, einmalig</dt>
          <dd></dd> <!-- Price -->
        </div>
      </dl>

      <img /><!-- Device image -->
    </article>
  </li>

  <!-- More device cards -->
</ul>

Improvements made and notes to implement:

  • Clear structure without unnecessary nesting, without sections/articles nested, etc.

  • Use actual semantic list (<ul>) for the list

  • Each product is an <article> so it can be navigated to easily via screen reader

  • Product is defined by semantic heading <h3> as first child of product card

  • <span> with badge positioned right after heading, so it will be announced after the device name; badge can be positioned absolute or visually be moved up by using CSS order: -1

  • Product description is moved into description list to make each description detail easily navigable

  • Lists within the description (color list, storage option list) are using semantic list elements

  • Some <dt> can use a class="visually-hidden" to be accessible to screen readers while not being visible; check example class below

.visually-hidden:not(:focus):not(:active) {
  clip: rect(0 0 0 0); 
  clip-path: inset(50%);
  height: 1px;
  overflow: hidden;
  position: absolute;
  white-space: nowrap; 
  width: 1px;
}

Added side-effect of a semantic structure like this is the improved simplicity to build a responsive layout for the list, using CSS grid and Flexbox.

Accompanying Files
Observation Details

The sidebar section "Vorteile im Überblick" uses visual presentation (and CSS classes) of a heading structure that is not reflected in the HTML markup. Visual presentation MUST match code markup.

Remediation Notes

Use proper semantic HTML headings to indicate the structure of the sidebar content.

<h2>Vorteile im Überblick</h2>

<h3>Unbegrenztes Datenvolumen</h3>
<p>...</p>
<p><a href="...">...</a></p>

<h3>MagentaEINS Vorteil</h3>
<p>...</p>
<p><a href="...">...</a></p>
Priority: Critical Significant Page: Alle Geräte Observation Permalink
Observation Details

This observation is a general remark on semantic HTML, as there are numerous issues with improper use (or complete lack of use) of semantic HTML. Listing these issues in single observations would make that list unusable. At this stage, an accessibility auditor would usually stop the auditing and wait for general improvements from development to go ahead.

I will not list every issue in here. I will list –in no particular order– issues with semantic HTML in the remediation notes.

Remediation Notes

Semantic HTML

Ensure, using proper semantic HTML. This means,

  • If there is an HTML element with needed or wanted functionality, use it.

    • If a link is needed, use <a>, if a button is needed, use <button> – also, using links and buttons as intended (links to move to content and buttons to do an action) will help navigation immensely, as e.g. screen readers can return lists of buttons/links independently. So knowing what elements will keep you on the page (footnote buttons) and what elements will bring you somewhere (product detail page) is simply made possible by using the correct element.

    • If creating user interface components with input controls like checkboxes, radio buttons, etc., use the appropriate, native semantic HTML elements for them. Use <input type="">, <select>, <button>, ... to ensure accessibility.

    • If writing headings, use the proper semantic HTML headings (<h1>, <h2>, <h3>, <h4>)

    • If you are listing elements (color variants, storage options, products, ...), use semantic list elements (<ul> for lists, where the order is not relevant, <ol> for lists, where the order is relevant, <dl> for key-value-paired descriptions)

  • Visual presentation MUST match code markup. If it looks like a heading, semantic HTML heading elements MUST be used. If it does not look like a heading, semantic HTML heading elements MUST NOT be used. Same goes for every other native HTML element.

  • Grouping elements/objects/content for layout or styling purposes must only be done, using generic HTML elements.

    • There are only 2 generic HTML elements named in MDN docs – ARIA: generic role. No other element shall be used for this purpose. Those are <div>, <span>,

    • Additionally, the <section> element has the generic role, too. The section however comes with a very crucial limitation, as it "should always have a heading, with very few exceptions".

Best practice HTML nesting

Ensure, using as little nesting as possible. Every single level of nesting inside HTML code will impact website performance. Using a 10-level-hierarchy to create a button with <div>s etc., is completely unnecessary, as a <button>Button text</button> will result in accessible, robust, portable solution and will always outperform.

Outline / Heading structure

Ensure use of heading structure for a page's content. Headings are the most used method to navigate the broad structure of a website for users of screen readers. A clear heading structure will also increase SEO performance. The shop page "Alle Geräte mit Vertrag" (/shop/geraete/alle-geraete) only uses a single main heading and no more. A good structure could be:

<main>

1 Alle Geräte mit Vertrag
  2 Filter und Sortierung
  2 Geräteliste
    3 GERÄTENAME
    3 ...

<aside>
  
  2 Auswahl ("Warenkorb")
    3 Tarif
    3 Gerät
  2 Vorteile im Überblick
    3 Unbegrenztes Datenvolumen
    3 MagentaEINS Vorteil

Priority: Critical Medium Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

Text content within product cards gets truncated on small viewport with no possibility to reach the content. This also affects product card badges and interactive elements (footnotes) inside them.

Remediation Notes

Ensure the site is responsive. A viewport of 320px width must keep all content visible and all functionality intact. For the product cards, use a responsive layout method like the following to ensure correct reflow:

.product-list {
  --min-card-width: 200px;
  --product-list-gap: 1rem;

  display: grid;
  grid-gap: var(--product-list-gap);
}

@supports (width: min(var(--min-card-width), 100%)) {
  .product-list {
    grid-template-columns: repeat(auto-fit, minmax(min(var(--min-card-width), 100%), 1fr));
  }
}
Priority: Critical High Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

Some text, when text spacing is changed, spills out of its parent containers, making some text hard, other text impossible to read. This includes:

  • Product card (storage options)

  • Badges

  • Selection input (Sortieren)

Remediation Notes

Containers of any type (e.g. badges, teasers, stages) must not use fixed dimensions, if they contain text content.

Priority: Serious Medium Page: Alle Geräte Observation Permalink
Observation Details

Shop Pages are repeating certain content blocks.

  • Breadcrumb navigation

  • Optional product highlights

  • Product group navigation

  • Main heading and description

  • Filtering and sorting mechanisms

  • Product list

  • Side bar with payment information and offer details

  • SEO content/landing page content, including FAQ section

Those parts are not correctly identifiable by common mechanisms like landmarks (only main landmark used) or heading structure (only main heading and headings in optional landing page/SEO content). Reaching certain parts of the page is made very difficult for users of keyboard or other assistive technology like screen readers.

Remediation Notes

Ensure use of proper structure of of the page and easy identification of repeated content blocks by using a combination of landmarks, and HTML headings. An example structure for the shop pages containing product lists, could be as followed:

  1. HTML header

    1. The current header element is not part of this audit, thus its current contents are not listed in here.

    2. Breadcrumb navigation as HTML <nav> element, labeled to differentiate from main menu, and including an ordered list <ol>

    3. Option product highlights identified by <h2> heading

    4. Device group navigation, using <nav> navigation element, labeled to differentiate from other menus

  2. <main> landmark

    1. <h1> main heading and description text content

    2. <section> for filtering and sorting

      1. evaluate use of ARIA role search

      2. add <h2> heading with id attribute and

      3. label the section by using aria-labelledby="" with the heading ID

    3. <section> for product list as your main content

      1. add <h2> heading with id attribute and

      2. label the section by using aria-labelledby="" with the heading ID

      3. The actual device list should use <ul>

      4. Each product card should be <article> including <h3> with product name

      5. No further nesting of landmarks should be needed inside this section as the structure is well defined by the article elements and their nested heading

    4. <section> for sidebar content; ideally labeled by a visible heading <h2> that describes all sidebar content; sections inside sidebar should not use <section> but only <h3> for structure

    5. <section> for landing page, SEO content and FAQ; sections inside should not use <section> but only <h2> and <h3> for structure

  3. HTML footer

Additionally, the use of skip links should be evaluated. Skip links are not only meant to be the first links on a page, but can also be used before certain repeated content blocks. For example, at the start of the main landmark, there could be a skip link that skips the product list and brings the user to the sidebar content or the FAQ section. Skip links can also be used at the end of a section or landmark to go back to its beginning. For example, at the end of the product list, which can be quite long, there could be a skip link to reach the start of the product list again.


Using proper structure of HTML headings usually makes "custom landmarks" (by sections) a redundant mechanism to navigate on a page, so they should not be used on everything. Only use landmarks for broad page structure.

The same goes for skip links. If a proper heading structure and optional landmarks already exist, there usually is no need for additional skip links.


Please (also) refer to observation 1.3.1 Info and Relationships – "Semantic HTML" for general remarks about the use of semantic HTML.

Priority: Moderate Unknown Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

From filter button, a dialog window with filtering options opens. There is one focusable element in that dialog window which is ordered after all main content.

Remediation Notes

Ensure, contents of the filtering dialog window are in correct focus order (after filter button)

Priority: Critical Medium Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

The product card link is empty, resulting in a null accessible name. As such it is announced only as "link" to assistive technology.

As the product cards are not semantically structured e.g. by using <article> for the whole card and a heading <h3> with the product name, there is no programmatically determinable context that makes the link purpose clear to the user.

Interactive, focusable elements like links must have an accessible name. The name should state the link's purpose. If not directly, it must be determinable by context.

Remediation Notes

Ensure, link purpose is determinable. This can be done by adding "GERÄT XYZ in den Warenkorb legen" as text alternative. Ideally, a proper semantic structure on product card is used.

<article>
  <h3 id="heading-PRODUCT">PRODUCT NAME</h3>
  ...
  <a href="..." id="link-PRODUCT" aria-labelledby="heading-PRODUCT link-PRODUCT">
    Produktdetails
  </a>
</article>
Priority: Best Practice Low Page: Alle Geräte Observation Permalink
Observation Details

As there is only one single HTML heading used on the page, it would have to describe topic or purpose of all page content.

Remediation Notes

Use proper semantic headings to structure page content into parts.

Please (also) refer to observation 1.3.1 Info and Relationships – "Semantic HTML" for general remarks about the use of semantic HTML.

Priority: Critical Medium Page: Alle Geräte Observation Permalink
Observation Details

Focusing product card by keyboard navigation does not add visible focus state.

Remediation Notes

A focus state must be defined for all interactive, focusable elements. Ideally, a visual distinct focus state uses an outline or other larger area changes to the product card.

If using color change for focus state, ensure to meet minimum color contrast between different states (1.4.3 Contrast (Minimum)) and to not only rely on color change (1.4.1 Use of Color).

Priority: Critical Medium Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

Focusing the focusable elements inside the filter dialog window ("Weiter anzeigen", "Zurücksetzen", "Filter anwenden") by keyboard navigation does not add visible focus state.

Remediation Notes

A focus state must be defined for all interactive, focusable elements. Ideally, a visual distinct focus state uses an outline or other larger area changes to the focused element.

If using color change for focus state, ensure to meet minimum color contrast between different states (1.4.3 Contrast (Minimum)) and to not only rely on color change (1.4.1 Use of Color).

Priority: Moderate High Page: Alle Geräte Observation Permalink
Observation Details

Opening a footnote dialog window can obscure underlying focused elements (partially AND completely). Since the footnote dialog window cannot be closed via ESC in that situation, the underlying element cannot be made visible without removing the keyboard focus from it.

Remediation Notes

Footnotes must be made accessible. They must trap the keyboard focus when opened and must not allow scrolling of the page and focusing of underlying interactive elements. This will remediate the obscuring of focused elements.

Priority: Best Practice Low Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

Horizontal scrolling is necessary for manufacturer filter on smaller viewports. There is no indication by visible scrollbar nor a secondary mechanism to navigate by single pointer events (buttons).

Remediation Notes

Treat scrollable area as carousel or make scrollbar visible.

Ideally, the filter buttons should reflow correctly into multiple rows.

Priority: Moderate Unknown Page: Alle Geräte Observation Permalink
Observation Details

When opening a footnote dialog window, the keyboard focus is not set to said dialog window. This leads to multiple issues:

  • The contents of the dialog window are not accessible via keyboard.

  • The dialog window can not be closed with the keyboard (easily or at all).

  • While the dialog window is open, keyboard navigation of the underlying page is still possible; the dialog window however blocks the view.

  • Since keyboard navigation stays possible, opening multiple dialog windows above each other also is possible.

Remediation Notes

Opening a dialog window with the keyboard must set the focus into the dialog window. Preferably onto the close button as the first interactive element in the dialog window. The focus must also be trapped inside the dialog window so the underlying page cannot be reached by keyboard while the dialog window is opened.

A better approach would be to use a <dialog> element for dialog windows.

Priority: Critical High Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

Filter button is not accessible. All filtering is impossible to be operated by keyboard.

Inside filter dialog window, only collapsible and "main buttons" at dialog window bottom are accessible via keyboard navigation. All other elements are not.

All interactive elements MUST be accessible via keyboard. As a Level A success criterion, it is crucial for operating a website.

Remediation Notes

Ensure complete navigation and operation by keyboard is possible. All interactive elements MUST be reachable by keyboard.

Only use semantic HTML elements to create interactive elements to ensure the base accessibility. If building custom interactive elements instead, you MUST refer to something like BFIT-Bund Handreichung "Accessible design of user interface elements" to ensure all necessary functionality is available. This MUST be done for all interactive elements that are custom built. Every button, every input, every link, ... Thus, using proper semantic HTML will decrease time and necessary effort to complete dramatically.

Please refer to observation 1.3.1 Info and Relationships – "Semantic HTML" for general remarks about the use of semantic HTML.

For example, filtering dialog window should use buttons, radio button groups, checkmark groups, etc. instead of relying on dozens/hundreds of nested <div> to "rebuild" functionality, native HTML elements already deliver.

The "Filter" button to open the filter dialog window looks as follows:

<div class="... clickable" data-qa="LST_FilterButton">
  <i class="..." id="svg_wrapper_undefined">
    <svg width="1em" height="1em" viewBox="0 0 20 20" color="currentColor">
      <path>...</path>
    </svg>
  </i>
  <p class="...">Filter</p>
</div>

When it could just be:

<button><svg aria-hidden="true">...</svg>Filter</button>
Priority: Critical Low Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

"Weiter ohne Gerät" link does not have an href attribute set, basically making it a "non-link" element. An <a> without href attribute is not considered a link.

Remediation Notes

All <a> elements MUST have an href attribute.

Priority: Critical Low Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

All interactive elements MUST be able to be navigated to/from and operated by keyboard. All interactive elements in sidebar do not match this requirement.

Remediation Notes

Use actual semantic HTML to create interactive elements. If you need a button, use <button>, if you need a link, use <a>. Ensure, all <a> elements have a valid href attribute as this is what makes them links. Anchor elements without href attribute are not considered links and as such are not accessible by keyboard.

This is an info "i" button:

<span class="...">
  <i class="..." id="svg_wrapper_undefined">
    <svg width="1em" height="1em" viewBox="0 0 24 24" color="currentColor">
      <path>...</path>
    </svg>
  </i>
</span>

Instead, use:

<button aria-label="Tarifdetails zum Tarif MagentaMobil M">Tarifdetails</button>

This is perfectly keyboard accessible, will be listed in a button list for screen readers, can be operated via voice control and much more.

If using an SVG is a must, refer to e.g. Sara Soueidan's "Accessible Icon Buttons" article.

Priority: Serious High Page: Alle Geräte Observation Permalink
Observation Details

Opening the filter dialog window can obscure underlying focused elements (partially AND completely). Since the dialog window cannot be closed via ESC in that situation, the underlying element cannot be made visible without removing the keyboard focus from it.

Remediation Notes

Dialog windows must be made accessible. They must trap the keyboard focus when opened and must not allow scrolling of the page and focusing of underlying interactive elements. They must be closable via ESC and the close button must be operable by keyboard as well. This will remediate the obscuring of focused elements.

Priority: Moderate Low Page: Alle Geräte Observation Permalink
Observation Details

The asterisk icon to activate a footnote dialog window does not meet minimum target size (24×24px). The icon's target size is 15×15px, making it hard for certain people to reliably click it. This includes people with motor disabilities, people using devices like styluses, people in moving vehicles, and mobile users altogether. Especially considering its use inside other interactive elements (e.g. footnote in badge inside product tile).

Remediation Notes

Ensure, making all interactive elements at least 24×24px in size. This does not necessarily mean to make the icon itself 24×24px, if you can ensure a surrounding area of said size to be the clickable area of the icon.

A better approach would however be to not use interactive elements below this minimum size. Also consider mobile users when designing these elements. An increased target size of 44×44px (see success criterion 2.5.5 Target Size (Enhanced) [AAA]) will immensely help mobile users as well.

Priority: Moderate Low Page: Alle Geräte Observation Permalink
Observation Details

The info icon "i" to activate a footnote dialog window does not meet minimum target size (24×24px). The icon's target size is ~18×18px, making it hard for certain people to reliably click it. This includes people with motor disabilities, people using devices like styluses, people in moving vehicles, and mobile users altogether.

Remediation Notes

Ensure, making all interactive elements at least 24×24px in size. This does not necessarily mean to make the icon itself 24×24px, if you can ensure a surrounding area of said size to be the clickable area of the icon.

A better approach would however be to not use interactive elements below this minimum size. Also consider mobile users when designing these elements. An increased target size of 44×44px (see success criterion 2.5.5 Target Size (Enhanced) [AAA]) will immensely help mobile users as well.

Priority: Moderate Medium Page: Alle Geräte Observation Permalink
Observation Details

Clicking on a manufacturer filter button will filter the product list without confirmation of the action.

Remediation Notes

As used in the filter dialog window already, a "Filter anwenden" button could fix this issue, although for the given structure, this might not be the best option.

The buttons should have appropriate accessible names to describe their purpose. See ___ for an example solution. The success criterion says, the change of content or context can be announced prior to making the change. Having the accessible name set properly, would meet this for screen reader users. For other users it would be best to visually indicate by text. E.g., introducing the filter section by a short text:

<section>
  <h2>Geräteliste filtern und sortieren</h2>
  <h3>Filter</h3>
  <p> <!-- Add description -->
  <button> <!-- Filter dialog window -->
  <fieldset> <!-- Checkbox Group for direct filters -->

That description could be:

"Öffnen Sie die gesamten Filteroptionen über einen Klick auf den 'Filter' Button oder klicken sie auf einen der darauffolgenden Hersteller-Buttons, um die Geräteliste entsprechend zu filtern."

Or you could even set a <legend> inside the checkbox group to properly describe their purpose.

Priority: Moderate Unknown Page: Alle Geräte Observation Permalink
Observation Details

Multiple elements are not using proper semantic HTML but instead are custom built, leading to numerous issues e.g. with keyboard accessibility (see 2.1.1 Keyboard). Including but not limited to, are the following elements:

  • Links ("Weiter ohne Gerät", Product cards, ...)

  • Buttons (Filter, Info icons, Footnote Asterisks)

Remediation Notes

Using native semantic HTML is always the preferred method.

If this is absolutely impossible in a situation, re-building can be viable but comes with dramatically increased time and effort to meet technical requirements. The BFIT-Bund Handreichung "Accessible design of user interface elements" shows technical requirements (e.g. keyboard navigation, mouse operation, etc.) for interactive elements. Looking into Accessible design of user interface elements – Links, quickly shows the complexity of what is required to meet the functionality, a properly used <a href="..."> element already includes.

Please (also) refer to observation 1.3.1 Info and Relationships – "Semantic HTML" for general remarks about the use of semantic HTML.

Observation Details

Links are only differentiated from normal body text (black, rgb(38, 38, 38)) by use of color (blue, rgb(0, 115, 159)).

In addition, the contrast ratio of link text color and body text color also is insufficient (2.8:1 < 3:1).

Links can be found, e.g. in

  • footnote dialog windows "Ankaufsbonus", as "Teilnahmebedingungen" links.

  • "Tarif ändern" dialog window as "Preisliste, Leistungsbeschreibung und AGB"

Remediation Notes

Ensure, links do not rely on color alone to be differentiated from (surrounding) body text. Preferably use underline to indicate text links as it is the default –thus user friendly– method.

Priority: Best Practice Low Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

Color contrast ratio of grey text on grey background in sidebar (4.8:1), just meeting contrast minimum requirements (4.5:1). Given the contrast ratio and the smaller font size, while meeting the criterion's requirements, text could be more difficult to be read by certain user groups.

Remediation Notes

No remediation necessary, as the contrast ratio does exceed the required ratio slightly.

Priority: Best Practice Low Page: Alle Geräte Observation Permalink
Accompanying Files
Remediation Notes

No remediation necessary, as the icon is not adamant to the content's understanding, if the icon is declared purely decorative by using a null alt attribute.

Icon could get an outline with sufficient (3:1) color contrast to improve legibility.

Accompanying Files
Observation Details

Link text on grey background has contrast ratio of 4.2:1 which does not meet Color contrast ratio minimum requirements of 4.5:1. See:

  • "Weiter ohne Gerät" link above product list

  • All links in grey area of sidebar

Remediation Notes

Ensure, all text content meets required contrast minimum.

Accompanying Files
Observation Details

Magenta text on magenta background has contrast ratio of 4.3:1 which does not meet color contrast ratio minimum of 4.5:1 for text content.

Remediation Notes

Ensure all text content meets minimum color contrast requirements.

Accompanying Files
Observation Details

White text on green badge background has color contrast of 2.9:1 which does not meet color contrast minimum requirement of 4.5:1 for text content (and additionally 3:1 for non-text content with the rocket icon).

Remediation Notes

Ensure minimum color contrast ratio is met for all text content.

Accompanying Files
Observation Details

Rocket icon (white) on badge (green) has insufficient color contrast ratio of 2.9:1.

Remediation Notes

If the icon is declared purely decorative by using a null alt attribute or an empty <title> element, no remediation is necessary, as the icon is not adamant to the content's understanding.

As it does not and as such is accessible to screen readers, the icon must meet color contrast of 3:1.

Priority: Critical High Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

The sorting dropdown has no accessible name but is "labeled" by "Sortieren:".

Remediation Notes

The dropdown MUST be a user accessible interface component. Ideally, use a native semantic HTML <select> element for the dropdown and an explicit label to go with it. As is, there is neither a programmatically determinable connection between the "label" "Sortieren:" and the dropdown, nor does the dropdown has any accessible name, let alone one including the label.

Please (also) refer to observation 1.3.1 Info and Relationships – "Semantic HTML" for general remarks about the use of semantic HTML.

Priority: Critical Medium Page: Alle Geräte Observation Permalink
Observation Details

The filter buttons have no accessible name but are "labeled" by their text and/or image content.

Remediation Notes

The buttons MUST be user accessible interface components. Ideally, use a native semantic HTML <button> element for the filter button, <fieldset> including <input type="checkbox"> for the "direct manufacturer filter" buttons, and explicit labels to go with them. As is, there is neither a programmatically determinable connection between the "labels" and the buttons, nor does the buttons have any accessible name, let alone one including the label.

Please (also) refer to observation 1.3.1 Info and Relationships – "Semantic HTML" for general remarks about the use of semantic HTML.

Priority: Critical Low Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

The display of a product's color options is not using high enough contrast.

As the information conveyed is necessary to understand the content, the color contrast ratio must be at least 3:1. Some color options barely reach color contrast ratio of 1.1:1.

Please note: The accompanying screenshot is showing one example product card. This observation spans multiple products. Ensure, all options meet required minimum contrast ratio.

Remediation Notes

Ideally, the colors would be described as text.

If this is not possible, ensure a minimum contrast ratio of 3:1. The easiest way to achieve this is by using a simple outline on the color variant circle:

.variantCircle {
  outline: .1px solid;
}

This way, the contrast ratio is not calculated to the background color but to the outline color.

Priority: Serious Medium Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

On base viewport size of 1024×768px and page zoom of 200%, the available:

  • vertical space in the "Tarif ändern" dialog window, due to fixed top and bottom bars, is less than 400px.

  • horizontal space, due to page zoom, is limited and cuts of hover tooltips

All content must be presented without loss of information or functionality.

Remediation Notes

The contents of the tooltip must stay accessible on smaller viewports. Ensure to display the contents within the boundaries of the viewport.

As the site is already working with dialog windows and collapsible elements, the easiest way to achieve this is to eliminate the tooltip functionality, as they (tooltip, dialog window, collapsible) serve the same purpose of hiding information. For this, the other used method must meet all success criteria, but this would eliminate the need of meeting them with yet another mechanism.

Hiding information from the user never is good user experience but the use of dialog windows or collapsible elements is widespread. While the use is no clear failure of accessibility criteria, concerning WCAG, one could argue it being at least a grey area for 3.2.4 Consistent Identification: "Components that have the same functionality within a set of Web pages are identified consistently." – this audit will not add this as a failure but asks to evaluate the use of multiple components that have the same purpose. Ideally, the functionality "hide from user" has a single way to be done. Splitting into a trigger being "block level" (FAQ) and "inline level" (Footnotes) seems reasonable, but adding another mechanism does not seem necessary.


While not a failure for the given success criterion, I also attached a screenshot showing the limited vertical space in the dialog window, which makes navigating the dialog's contents extremely difficult. Evaluation of the need for the top bar and the large bottom bar should be done.

Priority: Moderate Medium Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

On base viewport size of 320×256px and page zoom of 100%, the available vertical space in the "Tarif ändern" dialog window, due to fixed top and bottom bars, is just 67px.

Remediation Notes

While not a failure for the given success criterion, the limited vertical space in the dialog window makes navigating the dialog's contents extremely difficult. Evaluation of the need for the fixed top bar and the large fixed bottom bar should be done.

Consistency with other dialog windows could remove the (empty) top bar and/or add the close button to a fixed position of the scrollable dialog window.

The fixed bottom bar could e.g. be shrunken by

  • decreasing margins and/or paddings,

  • decreasing the size of the primary button,

  • changing the layout to display price information and primary button side-by-side.

Accompanying Files
Observation Details

The manufacturer filter (direct filter buttons) can only be operated by horizontal scroll on desktop and by dragging movement on a mobile device. As the dragging needs a base precision to stop the movement at the right time to reach the wanted filter button, a single pointer alternative for operation / navigation must be offered.

The viewport of the example screenshot is 375×635px, simulating an Apple iPhone 11 Pro. While this is an old device and more current phones do tend to have increased viewport widths, this test would look even more drastic on the 320px viewport width, the WCAG sets for e.g. 1.4.10 Reflow.

As the manufacturer filter buttons are accessible within the filter options dialog window as well, the issue is rated priority "Minor" and the impact on accessibility conformance is low. However, usability / user experience is affected by this issue, as the user is not aware of those buttons being duplicated from the filter option dialog window.

Remediation Notes

Possible methods to remediate and to ensure access to the buttons:

  • Adding pagination (single pointer arrow buttons)

  • Reflow to multiple lines of buttons (also see 1.4.10 Reflow)

Note, that the WCAG, and success criterion 2.5.7 Dragging Movements specifically, do not require presentation / layout parity of different devices, viewports, etc. This means, while functionality and information parity is a must, the layout and presentation can be different.

This allows for another method to remediate, by only displaying the amount of buttons, fitting the available space. So while "all" buttons are shown on larger viewports, the number can decrease on smaller viewports, as long as the functionality parity is met, which is the case, with the filter buttons being accessible via the filter dialog window.

Positive side-effect of the latter option is one less mechanism (horizontally scrolling items) to be maintained.

Priority: Serious Medium Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

Loading more products into product list by clicking "Weitere Geräte anzeigen" should move the focus, so that the first dynamically added element becomes the next focusable element. This is not the case.

Using keyboard navigation, after clicking the button, the content is correctly loaded, but the focus is set in a way, so that the next focusable element (pressing TAB) is the button again; this means, navigating the product list by keyboard becomes nearly impossible

Using a screen reader to navigate (see attached GIF screencast),

  • after clicking the button, the content is loaded correctly

  • screen reader announces the change in URL (adding "?currentPage=2&tariffld=MF_17496&itemPerPage=12&e

    xcludedCurrentPage=1&bp=acquisition")

  • focus is set, so that to the next focusable element is the last element that was focused before the button. In this case, the price of the previous product card, which, while not being exactly what is needed, at least is not wrong

This however only works, when arriving at the button from the "right direction". Selecting the button from the next element in the DOM results in the focus being set to this exact element after dynamically loading of the new products. This way, the focus is set to after the product list and navigating to newly added devices is again nearly impossible

Remediation Notes

Important note:

While technically, this behavior does not completely remove access which would be needed to justify priority 1 "Critical", the combination of this issue with other issues, limiting the user experience with keyboard and screen reader navigation immensely already, still does make this issue a critical one.

Treating it as such in the current state, keyboard and screen reader users might not at all be able to navigate more than one page of products in the product list within the shop, is highly recommended.


Ensure, clicking the button "Weitere Geräte anzeigen" will result in:

  • Loading more products into the product list

  • Not announcing change of query parameters in the URL, as long as the change is not useful information to be announced

  • But ideally do announce the change of content (e.g. by using an ARIA live region and announce "X weitere Geräte werden angezeigt")

  • Setting the focus to the first focusable element before the first newly added element

    • This must be indicated by DOM structure, not by the element that was focused before the button was focused

    • This must work with keyboard and screen reader navigation alike

Priority: Minor Unknown Page: Alle Geräte Observation Permalink
Observation Details

The section "Verlässlicher Service rund um Ihre Bestellung" arguably houses a list of services but is not using semantic HTML list elements. While this is not a strict failure of this success criterion, remediation is recommended.

Priority: Critical Significant Page: Alle Geräte Observation Permalink
Observation Details

Product color "variant circles" use <div value="..." aria-describedby="..." role="button" tabindex="0">. The buttons are accessible by keyboard but have no functionality at all, which results in multiple (color count) non-interactive but focusable elements. For each card, a user of keyboard navigation has to click up to six times to get to the next card.

aria-describedby="tooltip-content-id" refers to a <span> element in the sidebar, with the following content. This whole content is the accessible name of each of the color circle "buttons":

Jubiläumsaktion: Als Neukunde 240 € Wechselbonus sichern


Internet

  • 50 GB Highspeed-Volumen (mit LTE Max/5G)

  • Mit einer Pluskarte zu 19,95 € monatlich: deutschlandweit unbegrenztes Datenvolumen für den Hauptvertrag und alle Pluskarten

  • Geschwindigkeit im Download: bis zu 300 MBit/s

  • Geschwindigkeit im Upload: bis zu 50 MBit/s

  • Nach Verbrauch des Highspeed-Volumens wird die Geschwindigkeit im jeweiligen Monat auf max. 64 KBit/s (Download) und 16 KBit/s (Upload) reduziert.


Inklusivleistungen

  • Telefonie- und SMS-Flat in alle deutschen Netze:
    Telefonieren Sie unbegrenzt ins deutsche Mobilfunk- und Festnetz und versenden Sie unbegrenzt SMS.

  • Hotspot Flat:
    Mit einem Telekom HotSpot in Ihrer Nähe können Sie auch unterwegs surfen, ohne dabei das eigene Datenvolumen zu verbrauchen. Mehr Infos unter www.hotspot.de

  • Roaming:
    In der EU inkl. Schweiz & Großbritannien surfen und telefonieren Sie auf vorübergehenden Reisen ohne zusätzliche Kosten wie im Inland.


Tarife ohne Mindestlaufzeit

  • Infos zu Tarifen ohne Mindestlaufzeit, die lediglich ohne Gerät erhältlich sind, finden Sie unter www.telekom.de/flex-mobil oder in der Preisliste.


Produktinformationsblatt (PDF)


Preisliste, Leistungsbeschreibung und AGB

As the accessible name, this whole text content is announced by assistive technology for every color variant circle.


All interactive elements that do not use native, interactive HTML elements must be built in a way, that semantic information is provided and updates to semantic information are accessible via assistive technology. Building interactive components with non-semantic HTML elements results in inaccessible content. These accessibility issues might occur:

  • Interactivity of element is not announced → user will not know, that element is interactive

  • Changes to states (e.g. collapsed/expanded) is not announced → user will not know of the change

  • Target resource is not announced → e.g. user will not know, where a link leads to

  • Interactive action is not announced → e.g. user will not know, that a dialog window will be opened

Issues in 4.1.2 Name, Role, Value often occur together with other issues e.g. in 2.1.1 Keyboard and 2.4.7 Focus Visible.

Remediation Notes

Ensure, only using button functionality for actual buttons. When button functionality is needed, ensure using a semantic HTML button element, instead trying rebuilding button functionality with generic non-semantic HTML elements.

Using non-native, non-semantic HTML elements to build functionality, native, semantic HTML elements already provide should be a rare occasion. As the first rule of ARIA use describes, if there is a semantic HTML with needed or wanted functionality this should always be used instead of ARIA.

Ensure, semantic HTML elements are used for all interactive elements and components. Refer to BFIT-Bund Handreichung "Accessible design of user interface elements" for technical requirements for building interactive user interface components.

Priority: Moderate Low Page: Alle Geräte Observation Permalink
Observation Details

What is arguably list content, is not using semantic list elements. See

  • Product cards

  • Color variant circles on product cards

Remediation Notes

Ensure, using semantic list elements for all list content.

Priority: Serious Significant Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

In "Tarif ändern" dialog window, keyboard focus is trapped after selecting tariff. Following these steps:

  1. Open "Tarif ändern" dialog window

  2. Press TAB until tariff slider is focused

  3. Press ARROW LEFT / RIGHT to focus tariff

  4. Press ENTER to select focused tariff

  5. Pressing TAB now will rotate within tariff card

Remediation Notes

Ensure proper functionality of keyboard navigation for all interactive elements. Especially non-native, complex components must adhere to all technical requirements for presentation, operation, keyboard navigation, assistive technology navigation. For technical requirements, refer to BFIT-Bund Handreichung "Accessible design of user interface elements" for the chosen interactive elements. Please note, all interactive elements must meet these requirements. If native, semantic HTML elements are used unchanged, these requirements are met by default. Changing default presentation or functionality, or using non-native elements, will always add drastically more difficulty and maintenance requirements.

That said, use of proper semantic HTML elements without the need of ARIA enrichments is always the preferred method. For the given component, functionality can be defined as "radio button group", as the user can choose one item from a list of items. The group is presented as a carousel, which has no (fully accessible) way of being built without use of JavaScript and/or ARIA enrichments. If presentation as carousel is not mandatory, simple, responsive reflow of the radio button content would suffice.

Priority: Critical Significant Page: Alle Geräte Observation Permalink
Accompanying Files
Observation Details

Assistive technology relies on use of proper semantic HTML. The screenshots show lists of elements, a user of assistive technology gets, using e.g. macOS VoiceOver screen reader rotor:

  • Landmarks list

  • Links list

  • Buttons list

All of these give an idea of improper use of semantic HTML. Observations:

Landmarks

  • Main and navigation landmarks are used

  • Each product price uses three(!) semantic article elements, two of which are empty

Each product price (e.g. "889,95 €") is marked up as follows:

<div class="...">
  <div class="...">
    <div class="...">
      <section class="...">
        Einmalig
      </section>
      <article class="...">
        <div class="...">
          889,95 €
        </div>
        <div class="...">
          <svg class="...">
            <line y1="80%" x2="100%" y2="20%"></line>
            <line y1="80%" x2="100%" y2="20%"></line>
          </svg>
          <div class="...">
            <div class="..." data-qa="...">
            </div>
          </div>
        </div>
      </article>
    </div>
  </div>
  <section class="...">
    <div class="...">
      <article class="...">
        <div class="...">
          <svg class="...">
            <line y1="80%" x2="100%" y2="20%"></line>
            <line y1="80%" x2="100%" y2="20%"></line>
          </svg>
          <div class="...">
            <div class="..." data-qa="...">
            </div>
          </div>
        </div>
      </article>
      <div class="...">
        <article class="...">
        </article>
      </div>
    </div>
  </section>
</div>

Links

  • Product card link elements are empty

  • assistive technology will always try to find a fallback for missing information; in this case, the last part of the link's URL path (stripping query parameters) is used; href="/shop/geraet/apple/apple-ipad-air-13-2025-m3/space-grau-256-gb?tariffId=MF17498&tariffSubTenId=MF17496&categoryId=alle-geraete"space-grau-256-gb

  • As the product color and storage is part of the URL path, multiple products with same color and storage will have the same fallback name (see e.g. "space-schwarz-256-gb")

  • "Weitere Geräte anzeigen" has button functionality but is using a semantic link element

  • "Tarif ändern" has button functionality but is using a semantic link element

  • "Tarif entfernen" has button functionality but is using a semantic link element

  • "Preisübersicht anzeigen"

    • has button functionality but is using a semantic link element

    • uses a <div role="link"> inside the aforementioned link element

    • as two nested links are used, the link is duplicated in the link list

Buttons

  • Color variant circles use buttons as <div value="#262529" class="..." aria-describedby="tooltip-content-id" role="button" tabindex="0">...</div>;

  • Color variants use buttons without any functionality

  • Color variant buttons are labeled by sidebar content tooltip-content-id

  • All color variant buttons are labeled the same, thus cannot be differentiated

  • "* Schaltfläche" announces footnotes. All footnote buttons are announced the same: "*" / "STAR"

Remediation Notes

Using non-native, non-semantic HTML elements to build functionality, native, semantic HTML elements already provide should be a rare occasion. As the first rule of ARIA use describes, if there is a semantic HTML with needed or wanted functionality this should always be used instead of ARIA.

Ensure, semantic HTML elements are used for all interactive elements and components. Refer to BFIT-Bund Handreichung "Accessible design of user interface elements" for technical requirements for building interactive user interface components.


Ensure,

  • only links (that lead to resources) are using HTML link elements

  • only buttons (that perform actions) are using HTML button elements

  • no generic element is used, if a native, semantic HTML element with wanted functionality exists

  • all interactive elements are labeled uniquely, to be identifiable by assistive technology