- Page URL
- https://www.telekom.de/unterwegs/hersteller/apple/iphone-erleben
Issues List
Non-text Content
1.1.1 (A)
Image text alternative does not serve equivalent purpose
+
Non-text Content
1.1.1 (A)
Image is missing alt attribute
+
Non-text Content
1.1.1 (A)
CAPTCHA used; no text alternative present
+
Non-text Content
1.1.1 (A)
Image text alternative does not serve equivalent purpose
+
Non-text Content
1.1.1 (A)
Icons used non-decoratively in "Zusammenfassung" list but are hidden from assistive technology
+
Info and Relationships
1.3.1 (A)
Visual presentation of heading structure does not match code markup
+
Info and Relationships
1.3.1 (A)
Visual presentation of heading structure does not match code markup
+
Info and Relationships
1.3.1 (A)
Improper use of semantic HTML list elements
+
Info and Relationships
1.3.1 (A)
Improper use of semantic HTML list elements
+
Identify Input Purpose
1.3.5 (AA)
Handyankauf form inputs not using appropriate autocomplete values
+
Use of Color
1.4.1 (A)
Links are indicated by color only
+
Use of Color
1.4.1 (A)
Interactive element's focus state indicated by color only
+
Use of Color
1.4.1 (A)
Links are indicated by color only
+
Contrast (Minimum)
1.4.3 (AA)
Disabled form field does not have enough color contrast
+
Text Spacing
1.4.12 (AA)
Text content overflows containers with user changed text spacing
+
Keyboard
2.1.1 (A)
Interactive element, operable by mouse, not accessible by keyboard
+
Keyboard
2.1.1 (A)
Dialog window does not receive keyboard focus
+
Focus Order
2.4.3 (A)
Visually hidden elements in focus order are not shown on focus
+
Focus Order
2.4.3 (A)
User-activated dynamic content not in correct focus order
+
Headings and Labels
2.4.6 (AA)
Input group does not use fieldset
+
Focus Visible
2.4.7 (AA)
Element's focused state is not visible
+
Focus Not Obscured (Minimum)
2.4.11 (AA)
Dialog windows obscure focus of underlying elements
+
Pointer Gestures
2.5.1 (A)
Overflowing elements rely on pointer gesture to be navigated
+
Label in Name
2.5.3 (A)
Visible label is not matching interactive element's accessible name
+
On Focus
3.2.1 (A)
Tab, focused by assistive technology, initiates context cchange
+
On Focus
3.2.1 (A)
Auto completing input field auto selects focused element
+
Labels or Instructions
3.3.2 (A)
Pflichtfelder marked "*" but not explanation is present
+
Labels or Instructions
3.3.2 (A)
Form input IMEI-Nummer requires specific format
+
Labels or Instructions
3.3.2 (A)
Radio button group is not using semantic grouping
+
Error Suggestion
3.3.3 (AA)
Error suggestions messing on form inputs "Handyankauf"
+
Error Prevention (Legal, Financial, Data)
3.3.4 (AA)
No error prevention on Handyankauf form
+
Redundant Entry
3.3.7 (A)
Duplicate entry of data is required
+
Name, Role, Value
4.1.2 (A)
Interactive element does not use correct semantic HTML
+
Name, Role, Value
4.1.2 (A)
Interactive element does not use correct semantic HTML
+
Name, Role, Value
4.1.2 (A)
Interactive element uses non-semantic HTML
+
Name, Role, Value
4.1.2 (A)
Multiple main landmarks found
+
Unrelated to Success Criteria / Best Practice
Handyankauf form step has no way to go "back"
+
Observation Details
When dynamically added content can be activated by the user, correct focus order must be ensured. This includes:
Opening a dialog window
Expanding an accordion item
Dynamically loading more content (e.g. more products in a product list) via "Load more" button
Adding and removing dynamic content must not remove focus from the triggering element. E.g. a footnote or info icon opening (adding) a dialog window. When the dialog window is closed (removed) again, focus must be on the triggering element.
Remediation Notes
Ensure, for all dynamically added content that can be activated by user,
focus cannot be set to focusable elements inside content, before content is being visually added (e.g. collapsed accordion items, or not yet opened dialog windows)
dynamic content should be placed directly below the triggering element in the DOM order
Opening e.g. a dialog window, will set the focus on the first focusable element inside the dialog window
Activating a "Load more" button must ensure, focus, after content is loaded, either
is set to the first focusable element of newly loaded content or
is set to the first preceding focusable element of newly loaded content.
Ensure, for all dynamically added and then removed content that can be activated by user,
keyboard focus
remains (e.g. collapsing/expanding accordion items) on the triggering element or
is set to (e.g. opening and closing a dialog window) the triggering element again.
Accompanying Files
Observation Details
Focusable elements must have a visually distinct focus state. Moving keyboard focus to a focusable element must clearly identify the element as being focused. If this is not the case, sighted users of keyboard navigation will have difficulties navigating a page. Especially when multiple focusable elements do not show visible focus indicators, properly navigating the page may become impossible.
Elements in "Handyankauf" form:
"In welchem Zustand ist Ihr..." Radio buttons
Remediation Notes
Ensure, all focusable elements have a visible focus indicator.
The focus indicator should ideally be clearly visible
The focus indicator should not solely rely on change of color (see 1.4.1 Use of Color)
The focus indicator should not create contrast issues of focused text content (see 1.4.3 Contrast (Minimum))
The browser's native focus indicator can be used if it itself passes contrast minimum requirements to the element's background (see 1.4.11 Non-text Contrast).
Observation Details
Open dialog windows can obscure focus of underlying interactive elements. Obscuring can be partial or complete. This will impact users of keyboard navigation as focus cannot be tracked while a dialog window is open. Dialog windows may be triggered by:
Footnotes
Info Icons
Buttons
Remediation Notes
When opened,
dialog windows must receive keyboard focus and
keyboard focus must be trapped inside the dialog window.
Ensuring placed and trapped keyboard focus to the opened dialog window will remediate this issue, as no interactive element outside of the opened dialog window should be focusable, thus cannot be focus obscured.
For more information about technical requirements of modal dialogs, refer to BFIT-Bund Handreichung "Accessible design of user interface elements – Modal Dialog". Also, consider/evaluate use of HTML dialog element <dialgo>. See HTML specifications – The dialog element and Can I Use – Dialog for browser support information.
Observation Details
When (non-native) functionality relies on non-single pointer gestures, like swiping sliders, table columns, or opening sidebars by swipe, these must also have a single pointer variant accessible. The situation may occur, when changing to smaller viewports and the component in question is set to not use native overflow methods and to not reflow.
Users, not able to use complex pointer gestures, will not be able to access the elements in question and most likely will have difficulties to access information that is overflowing the viewport.
The page uses carousels for all major content cards on smaller viewports, not implementing pagination/navigation buttons to navigate by single pointer.
Remediation Notes
Ideally, elements overflowing the viewport would reflow instead. This way, the elements can rely on the user-agents functionality, and additional functionality must not be implemented. Another option would be to allow native overflow with scroll. If not using native methods to address these. If no native method is used:
Ensure, no functionality solely relies on complex pointer gestures. E.g. when using swiping functionality to navigate through slider items or table columns, ensure additionally adding accessible single pointer methods with equal functionality.
Sliders should use navigation (e.g. left/right arrow) or buttons
Responsive table columns should use navigation (e.g. left/right arrow) or buttons
Accompanying Files
Observation Details
Interactive elements, like links, buttons, inputs, must have a label that is visible at all times and an accessible name that is programmatically determinable. The visible label of interactive elements must be equal to, or part of the accessible name.
If the accessible name is changed programmatically to differ from the natively set name, the visible label must be part of it in the exact wording. If the accessible name is changed, ideally, the visible label is the first part of the accessible name.
Assistive technology like voice control software uses the accessible name to control interactive elements. By stating the accessible name, the interactive element can be activated. So to activate a button, labeled "Submit", a user of voice control software can say "Click button Submit". If the accessible name of the button has been changed to "Send Form", the user is not able to access the button this way. If the accessible name of the button has been changed to "Submit Form", the name differs from the visible label but still includes the visible name as first part, making it still accessible to voice control software.
Mismatch of text content and accessible name:
"Mehr erfahren" has accessible name "Entdecken Sie die innovative Mobilfunktechnologie"
"Fragen? Wir helfen auch persönlich." has accessible name "Weiter zum Apple Business Chat"
"Mehr erfahren" has accessible name "Erfahre mehr wie wir uns für einen verantwortungsvollen Umgang mit der Umwelt einsetzen"
"Jetzt iPhone Modelle vergleichen" has accessible name "iPhone vergleichen: Alle Modelle im Überblick"
"iPhone Vergleich" has accessible name "Zum iPhone Vergleich"
"Smartphone-Tarif" has accessible name "Zu unseren Smartphone-Tarifen"
"Prepaid-Tarife" has accessible name "Zu unseren Prepaid-Tarifen"
"monatlich kündbaren Handyverträge" has accessible name "Wechselassistent für Smartphones"
"Handyvergleich" has accessible name "Zu unserem Handyvergleich"
"iPad" has accessible name "Alle iPads bei der Telekom entdecken"
title attribute on link:
"Wo finde ich die Angaben?" uses
titleattribute that duplicates accessible name"Zurück" uses
titleattribute that duplicates accessible name
Cards show button style link; mismatch of text content and accessible name:
"iPhone 'Zum Angebot'" have accessible names "Zum iPhone X Angebot"
Remediation Notes
Ensure visible text labels match the accessible name. If not, the visible label must be the first part of the accessible name ("more info" → "more info about X").
The title attribute is not a way to give an accessible name. It is to provide additional information that is not important, thus there is rarely a reason to use it on links.
Given the following example of heading and CTA of a product card:
<h2 id="heading-product-x">Product X</h2>
<a id="link-product-x" href="#">Zum Angebot</a>Whenever possible, use native accessible names for interactive elements and do not overwrite them. E.g. links and button will use their contents as the accessible name. Overwriting them with ARIA methods most like is not necessary, as the element's contents can be changed to reflect the wanted or needed accessible name.
<h2 id="heading-product-x">Product X</h2>
<a id="link-product-x" href="#">Zum product X Angebot</a>If this is not possible, ARIA can be used to enrich an element's accessible name for users of assistive technology. Using ARIA in an accessible way will introduce code complexity, as shown below, so the native way of changing the visible label is most always preferred. See also W3C WAI – First Rule of ARIA Use.
As this method is especially used for users of assistive technology, it is important to use it accessibly as well, by keeping the exact wording of the visible label in place and use it as the first part of the accessible name.
<h2 id="heading-product-x">Product X</h2>
<a id="link-product-x" aria-labelledby="link-product-x link-product-x-about heading-product-x" href="#">
Zum Angebot <span class="visually-hidden" id="link-product-x-about">für das</span>
</a>This will result in visible label being "Zum Angebot" and accessible name being "Zum Angebot für das Product X", using "für das" from the visually hidden <span> and "Product X" from the already existing, visible heading <h2>.
Dynamically building web applications, aria-label often is used to enrich an element's accessible name by implicitly using existing visible content as opposed to explicitly use it with aria-labelledby.
<h2 id="heading-product-x">Product X</h2>
<a id="link-product-x" aria-label="Zum Angebot für das Product X" href="#">Zum Angebot</a>This method, while not a failure per se, can introduce other issues. While this reduces complexity as opposed to aria-labelledby, and will result in an accessible name that passes this success criterion, aria-label may be overwritten by aria-labelledby at any time.
When using existing content anyways, ensure using aria-labelledby to do so.
Observation Details
Focusing the tabs "Bereit für ein neues iPhone?" & "Bereit für den Wechsel zum iPhone?" by assistive technology will automatically select the tab. This results in behavior, that the first tab can be selected by assistive technology but moving to the main content is not possible, as navigating through the page will automatically select the second tab.
Remediation Notes
Ensure, selecting tab by assistive technology like screen reader is done by clicking the button instead of focusing it.
Observation Details
Observations on input field "Modell, z. B. Apple iPhone 11":
Moving screen reader focus to input field announces editable text field.
Entering character shows list.
The first item in list is automatically selected.
This traps focus of screen reader in the list box.
Entering next character will auto select first item.
Selection is possible via ARROW UP / DOWN
Remediation Notes
Ensure full accessibility of interactive elements for assistive technology. The use of native semantic HTML elements is important to ensure proper functionality and operability.
Accompanying Files
Observation Details
Handyankauf form marks (some) "Pflichtfelder" with "*". But there is not explanation present.
Step 1: Modell is Pflichtfeld but not marked
Step 6
Anrede is Pflichtfeld but not marked
Checkboxes are Pflichtfeld but not marked
Remediation Notes
Ensure, the logic of mandatory and optional fields is explained prior to the form inputs.
Ensure, all Pflichtfelder use the "*" consistently
Observation Details
IMEI-Nummer form input requires "15-stellig" which is part of visible label. It also requires the input without spaces, which is not part of the visible label.
Remediation Notes
Ensure, all known requirements for input formats are mentioned.
Observation Details
Radio button groups in "In welchem Zustand ist Ihr X?" in Handyankauf form step 3 do label each individual radio button by visible text content. The radio button group however does not have appropriate label linked to the inputs.
Remediation Notes
Consider use of semantic grouping of radio buttons by using fieldset and legend. For an example, look at the following code snippet from GOV.UK Design System – Radios:
<div class="govuk-form-group">
<fieldset class="govuk-fieldset">
<legend class="govuk-fieldset__legend govuk-fieldset__legend--l">
<h1 class="govuk-fieldset__heading">
Where do you live?
</h1>
</legend>
<div class="govuk-radios" data-module="govuk-radios">
<div class="govuk-radios__item">
<input class="govuk-radios__input" id="whereDoYouLive" name="whereDoYouLive" type="radio" value="england">
<label class="govuk-label govuk-radios__label" for="whereDoYouLive">
England
</label>
</div>
<div class="govuk-radios__item">
<input class="govuk-radios__input" id="whereDoYouLive-2" name="whereDoYouLive" type="radio" value="scotland">
<label class="govuk-label govuk-radios__label" for="whereDoYouLive-2">
Scotland
</label>
</div>
<div class="govuk-radios__item">
<input class="govuk-radios__input" id="whereDoYouLive-3" name="whereDoYouLive" type="radio" value="wales">
<label class="govuk-label govuk-radios__label" for="whereDoYouLive-3">
Wales
</label>
</div>
<div class="govuk-radios__item">
<input class="govuk-radios__input" id="whereDoYouLive-4" name="whereDoYouLive" type="radio" value="northern-ireland">
<label class="govuk-label govuk-radios__label" for="whereDoYouLive-4">
Northern Ireland
</label>
</div>
</div>
</fieldset>
</div>Accompanying Files
Observation Details
Handyankauf form input throws errors but known suggestions are not made.
Step 2: "IMEI ungültig" does not hint to specific format requirements (e.g. number of characters, as shown in label, omitting spaces, etc.)
Step 5: "Code/IMEI-Nummer ungültig." does not suggest Code/IMEI format requirements (compared to e.g. step 2)
Step 5: "Achten Sie genau auf die Buchstaben oder Nummern." is not accurate wording for input of IMEI number
Step 6:
"Der Vorname ist ungültig."
"Der Nachname ist ungültig."
"Die IBAN ist ungültig"
Remediation Notes
Ensure, all known error suggestions are displayed in error message or visible label.
Especially when arbitrary requirements are implemented (length minimum on "Vorname" and "Nachname"), display the requirements in the error message. Side note: setting these arbitrary requirements will exclude people.
Observation Details
Handyankauf form does not implement error prevention. At least one of the following must be true for submitting data:
Reversible – Submissions are reversible.
Checked – Data entered by the user is checked for input errors and the user is provided an opportunity to correct them.
Confirmed – A mechanism is available for reviewing, confirming, and correcting information before finalizing the submission.
Remediation Notes
Ensure at least one of the mechanisms is implemented. A confirmation screen with summary of entered data and a possibility to correct information is ideal for the use-case.
Observation Details
The "Handyankauf" form provides two steps for entering a device IMEI. The IMEI is not auto-populated to the second occurrence.
Remediation Notes
Ensure, all data that is required to be entered multiple times, is auto-populated. Ideally, no data needs to be entered multiple times, or the user should be able to choose auto-population vs. manual entry.
Observation Details
Form inputs in "Handyankauf" form Step 6 do not use appropriate autocomplete values.
"PLZ" → "new-password"
"Ort" → "new-password"
"Straße" → "new-password"
"Hausnr." → "new-password"
Some form inputs have autocomplete="off"
(Anrede) – not using semantic HTML input element
"Vorname"
"Nachname"
"E-Mail Adresse"
"IBAN"
Remediation Notes
Ensure, all form inputs, requiring user specific data input, turn on autocomplete functionality and set the autocomplete attribute to the appropriate values.
Refer to WCAG "Input Purposes for User Interface Components":
(Anrede):
honorific-prefixVorname:
given-nameNachname:
family-nameStraße:
address-line1(evaluate use ofstreet-addressfor Straße & Hausnr.)Hausnr.:
address-line2(evaluate use ofstreet-addressfor Straße & Hausnr.)PLZ:
postal-codeOrt:
address-level2E-Mail-Adresse:
emailIBAN:
cc-number
Observation Details
Input form "Handyankauf" has no "Zurück" button on
step 6 as opposed to all previous steps. As data, entered to the form, is not saved, and the only way to go back from step 6 is to reload the page, all entered data will be erased. By ensuring, users can navigate all steps back and forth, ideally also being able to jump to specific steps, users will have an easier time, navigating the multi-step form.
step 3 when choosing "wrong" radio buttons. When choice of radio buttons will terminate the form process, those radio buttons should be separated from the others. When 3 of 4 radio buttons are required to be marked as "YES", this information should be available to the user beforehand. Information like "Wir können Ihr Gerät nur ankaufen, wenn es keine der folgenden Schäden hat" is important to know in advance and is better suited to be displayed as a
type="checkbox", where the user can confirm all 3 items ("Ich versichere, dass mein Handy funktionsfähig ist – 1. Das Handy lässt sich einschalten, bleibt mindestens 45 Sekunden lang eingeschaltet und lässt sich aufladen [✔︎], ...") Then adding the last "optional" question that determines the Ankaufs value, could remain a radio button group to differentiate from the mandatory "YES" questions.
Observation Details
Observations:
Dropdown "Wählen Sie ein iPhone aus" uses
span role="combobox" tabindex="0"instead of semantic input field for selection / dropdownHandyankauf form
Step indicators use
<button type="button" disabled>but are not buttonsCAPTCHA reload button uses
span aria-hidden="true"instead of button element"Wo finde ich die IMEI-Nummer" uses
a href="#imei" title="..."instead of button element; side note,#imeiis not found in DOMClose button in dialog window uses
<button type="button">which is redundant and unnecessary
"Zurück" button use
a href="#" title="Zurück"instead of button elementInfo "i" icon buttons (step 3) use
<span aria-hidden="true"><svg>...instead of semantic (accessible) button elementClose button in dialog window uses
<button type="button">which is redundant and unnecessary
"Wo finde ich die Angabe" uses
a href="#imei" title="..."instead of button element; side note,#imeiis not found in DOMClose button in dialog window uses
<button type="button">which is redundant and unnecessary
"Prüfen" button uses
<button type="button">which is redundant and unnecessary"Ohne Aktion fortfahren" button uses
<button type="button">which is redundant and unnecessary"Anrede" dropdown uses
span role="button" tabindex="0" ...andselect id="..." name="title"(with non-unique id) instead of semantic input element
All interactive elements that do not use the correct 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 incorrect 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
Please refer to observation 1.3.1 Info and Relationships – "Semantic HTML" for general remarks about the use of semantic HTML.
Observation Details
Footnote dialog window is not keyboard accessible.
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
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.
Accompanying Files
Observation Details
Elements that are visually hidden should not receive keyboard focus.
See links "Gerät ändern", "Wie wird der Wrt berechnet", "Weitere Informationen"
Remediation Notes
Ensure, visually hidden elements cannot receive keyboard focus.
Especially elements in collapsed accordion items, non-active tabs, and un-opened dialog windows should not receive keyboard focus.
If they can receive keyboard focus, the elements must be made clearly visible on receiving keyboard focus. This is a common method to hide skip links and un-hide them on keyboard focus, using e.g. a CSS class visually-hidden with selector .visually-hidden:not(:focus):not(:active).
Accompanying Files
Observation Details
Images that are not purely decorative, must have a purpose equivalent text alternative set, to be accessible if the image cannot be visually perceived. A prime example is a blind screen reader user. But also if an image cannot be loaded due to network issues, the text alternative ensures perception of the conveyed information.
Images with non-equivalent text alternative and observations:
Main stage image
missing text alternative
iPhone das ein Bild von einer schönen Rosa macht
User takes photo
There is no Rose on the photo
Typo in "Rosa"
Grüner Batterie Icon
Typo in "Grüner"
Arguably decorative image
Telekom Logo mit 5G daneben stehen
Arguably decorative image
If not decorative, wording could be "Telekom 5G Logo"
Blaues FaceID Icon
Description of color only important if icon is known
Arguably decorative, since Face ID is already mentioned twice
Ein iPhone das
Missing parts of text alternative
Das Icon von der Foto App von Apple
Text alternative, if used in
altattribute should rather be concise than using complete sentences; "Apple Foto Icon" would be enoughArguably decorative
Apple setzt sich ein für recycelte Materialien
Image has text content but text content is not part of text alternative
Text alternative is full duplicate of already existing, visible text content
Mädchen das mit ihrem Gelben iPhone auf der Wiese liegt
"Mädchen" arguably wrong
"Gelbes iPhone" not visible
"liegt auf Wiese" not part of image
Green Magenta logo
Mentioning the logo isn't adding any information; if image is not decorative, added information would be a description (e.g. likes of "Hashtag Green Magenta mit einer Sammlung an grünen Blättern")
iPhone von von der seite
Two devices shows, color not mentioned
"iPhone 16 Pro" is text content but not mentioned
Typo "von von"
Typo "seite" → "Seite"
Remediation Notes
Ensure purpose equivalent text alternatives are present for every non-decorative image. Depending on the purpose, the text alternative may be describing the contents of an image or the functionality it serves (e.g. as a link to a specific page).
Accompanying Files
Observation Details
The HTML image element must always use have alt attribute present. Either
null alt attribute for purely decorative or
non-null alt attribute for informative/functional images.
Image elements missing alt attribute:
Main stage image embedded as background image
Remediation Notes
As background images cannot use alt attributes another method to display text alternative must be used. This can be done with properly visually (display: none will still fail this criterion) hidden text at the same position in DOM order.
Ideally, embed image with HTML image element instead of as background image.
Ensure, all HTML image elements properly set the alt attribute. Depending on the purpose of the image, choose whether to declare an image decorative, informative, or functional. For more guidance in choosing, refer to the W3C Alt-decision tree.
If the image is
purely decorative, set a null alt attribute as follows:
<img alt="" />not purely decorative, the
altattribute must not be null
Accompanying Files
Observation Details
CAPTCHAs will always exclude user groups from accessing functionality of a page. Manually entered CAPTCHAs should always be avoided. If CAPTCHA is used, a text alternative must be presented so users of assistive technology can still access the functionality.
Remediation Notes
Evaluate use of non-visual CAPTCHA solutions.
Embed audio CAPTCHA as non-visual alternative.
Is image element is used:
Ensure, all HTML image elements properly set the alt attribute. Depending on the purpose of the image, choose whether to declare an image decorative, informative, or functional. For more guidance in choosing, refer to the W3C Alt-decision tree.
If the image is
purely decorative, set a null alt attribute as follows:
<img alt="" />not purely decorative, the
altattribute must not be null
Accompanying Files
Observation Details
"Handyankauf" form has explanation dialog windows in step 3 (triggered by info icon).
Images all use same alt text "Gerät Schäden".
Images that are not purely decorative, must have a purpose equivalent text alternative set, to be accessible if the image cannot be visually perceived. A prime example is a blind screen reader user. But also if an image cannot be loaded due to network issues, the text alternative ensures perception of the conveyed information.
Remediation Notes
Ensure purpose equivalent text alternatives are present for every non-decorative image. Depending on the purpose, the text alternative may be describing the contents of an image or the functionality it serves (e.g. as a link to a specific page).
This means, each image must have a unique text alternative if it is not marked decorative.
Observation Details
Links solely rely on color to be differentiated from other, surrounding text content and color contrast ratio of link text color to surrounding text color does not meet minimum required 3:1 color contrast ratio. Links, relying on color only and with insufficient color contrast ratio to surrounding text content include:
"Telekom Netz" link in "Netz" dialog window
Remediation Notes
Ensure, links can be differentiated from surrounding text content by at least one other visually perceivable factor. Preferably use underline to indicate link text as it is browser default and known pattern to users.
Accompanying Files
Observation Details
Focused interactive elements with focus states solely relying on color difference:
"Handyankauf" form
All/most steps
Buttons
Weiter
Ohne Aktion fortfahren
Verbindliche Anfrage abschicken
Step 2
Close button in dialog window "Wo finde ich die IMEI-Nummer?"
Step 3
Close button in dialog windows (triggered by info icon)
Step 5
Close button in dialog window "Wo finde ich die Angaben?"
"Prüfen" button
Step 6
Select / Dropdown "Anrede"
Checkboxes
Focus state
Error state
Focusing interactive element adds visual focus indicator that does solely rely on color to be differentiated from default, un-focused state and color contrast ratio of default and focused states does not meet minimum required 3:1 color contrast ratio. Interactive elements' focus states, relying on color only and with insufficient color contrast ratio to default, un-focused state include:
Links
Buttons
Input elements (e.g. radio buttons)
Accordion items
Remediation Notes
Ensure, focus states of interactive elements can be differentiated from default, un-focused states by at least one other visually perceivable factor. The issue may be remediated by ensuring high enough color contrast ratio of 3:1 for difference between states.
Preferably though, use focus outlines to indicate focus state of interactive elements, as it is browser default and known pattern to users.
Observation Details
Links solely rely on color to be differentiated from other, surrounding text content and color contrast ratio of link text color to surrounding text color does not meet minimum required 3:1 color contrast ratio. Links, relying on color only and with insufficient color contrast ratio to surrounding text content include "Handyankauf" form:
General
Zurück buttons/links
Step 2
Wo finde ich die IMEI-Nummer?
Step 5
Wo finde ich die Angaben?
Step 6
Checkbox links
Ankaufsbedingungen
Datenschutzbestimmungen
Remediation Notes
Ensure, links can be differentiated from surrounding text content by at least one other visually perceivable factor. Preferably use underline to indicate link text as it is browser default and known pattern to users.
Observation Details
The visually presented heading structure of the page does not match the use of semantic HTML heading elements. The visually presented structure is as follows:
h1 Wir bringen zusammen, was zusammengehört
h2 iPhone mit der Telekom: Momente perfekt festhalten. Und superschnell teilen.
h3 Fortschrittliche Kamera – Das iPhone macht unglaubliche Fotos und Videos.
h3 Batterie – Eine Batterie, die den ganzen Tag mithält.
h3 Auflösung – Retina HD Display. Scharf und hell, mit fantastischen Farben.
h3 Leistung – Die volle Power ultraschneller Chips.
h3 5G Netz – Mit mehr Speed aufs nächste Level.
h2 Finden Sie jetzt Ihr neues iPhone bei der Telekom
h3 iPhone 16 Pro Max. Übernimm die Kamerasteuerung.
h3 ...
h2 Ein ganzes Netzwerk eingebauter Sicherheitsfeatures.
h3 App Tracking Transparenz – Ohne Erlaubnis dürfen Apps keine Aktivitäten tracken.
h3 Face ID – Face ID funktioniert ohne ein Selfie zu speichern.
h3 Mehr Sicherheit mit 5G – Bewahren Sie Ihre persönlichen Daten sicher auf, wo immer Sie sind.
h3 Fotos – Selbst entscheiden, wer was auf der Fotos App sehen kann.
h2 Einfach das iPhone bei der Telekom finden, das am besten passt
h3 Apple iPhone 16
h3 Apple iPhone 16 Pro
h3 Apple iPhone 16 Plus
h3 Apple iPhone 16 Pro Max
h2 Immer in Verbindung. Und besser für die Umwelt.
h3 Rohstoffe – Apple setzt sich ein für 100% recycelte oder erneuerbare Materialien.
h3 Erneuerbare Energien – Telekom 5G läuft zu 100 % mit erneuerbaren Energien.
h3 Green Magenta – Grüne und nachhaltige Produkte und Initiativen.
h3 Langlebigkeit – Für alle, die ein Smartphone wollen, das lange hält – das iPhone.
h3 Handyankauf
h4 Welches Smartphone wollen Sie verkaufen?
h4 IMEI-Nummer Ihres ...
h4 In welchem Zustand ist Ihr ...
h4 Leider können wir Ihr Smartphone nicht ankaufen
h4 Zusammenfassung
h4 Jetzt Ankaufsbonus erhalten
h4 Ankaufsanfrage abschließen
h5 Ihre Kontaktdaten
h5 Ihre Kontodaten
h5 Ankaufsanfrage
h3 Die iPhone Modelle entdecken – Welches iPhone ist das richtige?
h2 Häufig gestellte Fragen zum iPhone bei der Telekom
h3 Was kostet ein iPhone bei Vertragsverlängerung bei der Telekom?
h3 Wie kann ich auf ein neueres iPhone Modell bei der Telekom wechseln?
h3 Welcher SIM-Kartentyp der Telekom passt in das neueste iPhone?
h3 Kann ich mein altes iPhone bei der Telekom in Zahlung geben?The programmatically determinable heading structure, using HTML heading elements is as follows:
h1 iPhone mit der Telekom: Momente perfekt festhalten. Und superschnell teilen.
h2 Das iPhone macht unglaubliche Fotos und Videos.
h2 Eine Batterie, die den ganzen Tag mithält.
h2 Retina HD Display. Scharf und hell, mit fantastischen Farben.
h2 Die volle Power ultraschneller Chips.
h2 Mit mehr Speed aufs nächste Level.
h2 Finden Sie jetzt Ihr neues iPhone bei der Telekom
h3 iPhone 16 Pro Max. Übernimm die Kamerasteuerung.
h2 Ein ganzes Netzwerk eingebauter Sicherheitsfeatures.
h3 Ohne Erlaubnis dürfen Apps keine Aktivitäten tracken.
h3 Face ID funktioniert ohne ein Selfie zu speichern.
h3 Bewahren Sie Ihre persönlichen Daten sicher auf, wo immer Sie sind.
h3 Selbst entscheiden, wer was auf der Fotos App sehen kann.
h2 Einfach das iPhone bei der Telekom finden, das am besten passt
h2 Immer in Verbindung. Und besser für die Umwelt.
h3 Telekom 5G läuft zu 100 % mit erneuerbaren Energien.
h3 Grüne und nachhaltige Produkte und Initiativen.
h3 Für alle, die ein Smartphone wollen, das lange hält – das iPhone.
<!-- HANDYANKAUF FORM WITH STEPS -->
h2 Handyankauf
h2 Welches Smartphonewollen Sie verkaufen?
h3 Geben Sie den Namen Ihres Smartphones ein und wählen Sie es aus der Liste aus.
h2 IMEI-Nummer Ihres ... für Ihren Ankauf
h4 Basierend auf Ihrer Auswahl haben wir einen geschätzten Ankaufswert ermittelt: ... € Für die genaue Preisermittlung und den Ankauf Ihres Geräts benötigen wir zusätzlich die IMEI-Nummer Ihres Smartphones.
h2 In welchem Zustand ist Ihr ...?
h4 Bitte beantworten Sie vier kurze Fragen, damit wir ermitteln können, ob wir Ihr Gerät ankaufen und um Ihnen ein vorläufiges Angebot machen zu können.
h4 Lässt sich das Handy einschalten?
h4 Ist das Handy frei von erheblichen Schäden und/oder sichtbaren Flüssigkeitsschäden?
h4 Verfügt das Handy über ein funktionstüchtiges Display, das keine Risse oder andere Schäden aufweist?
h4 Ist die Rückseite des Handys intakt und frei von Rissen?
(h2 Leider können wir Ihr Smartphone nicht ankaufen)
h2 Zusammenfassung
h4 Basierend auf Ihren Angaben erhalten Sie für Ihr... bis zu:
h2 Jetzt Ankaufsbonus erhalten
h4 Wenn Sie ein Neugerät gekauft haben, für das die Telekom einen Ankaufsbonus bietet, geben Sie die IMEI des erworbenen Neugerätes ein. Oder tippen Sie hier einen Aktionscode ein.
h2 Ankaufsanfrage abschließen
h4 Die Gesamtsumme für Ihr ... (ggf. mit einem Ankaufsbonus) beträgt bis zu:
h4 Um Ihre Anfrage für den Ankauf Ihres ... abzuschließen, benötigen wir Ihre persönlichen Daten (bitte keine Packstation als Absender verwenden). Bitte nennen Sie uns zudem noch das Bankkonto, auf das wir den Ankaufswert und ggf. Ankaufsbonus nach erfolgreicher Prüfung Ihres Gerätes überweisen können.
h3 Ihre Kontaktdaten
h3 Ihre Kontodaten
h3 Ankaufsanfrage
h4 Bitte senden Sie uns Ihr ... innerhalb von 21 Tagen zu. Sobald dieses in unserem Logistikzentrum eingetroffen ist und der Zustand des Gerätes den Angaben entspricht, kontaktieren wir Sie mit dem ermittelten Ankaufspreis von bis zu ... € und schließen den Ankauf ab.
<!-- END OF FORM -->
h2 Häufig gestellte Fragen zum iPhone bei der Telekom
h3 Was kostet ein iPhone bei Vertragsverlängerung bei der Telekom?
h3 Wie kann ich auf ein neueres iPhone Modell bei der Telekom wechseln?
h3 Welcher SIM-Kartentyp der Telekom passt in das neueste iPhone?
h3 Kann ich mein altes iPhone bei der Telekom in Zahlung geben?Remediation Notes
No heading levels must be skipped
No non-heading content must use heading elements
All heading content must use heading elements
Proper grouping of content into heading sections is mandatory
Ensure, visually presented heading structure matches programmatically determinable heading structure by only using HTML heading elements for heading content and using HTML heading elements for all heading content.
Side note: This criterion does not specifically look at proper heading content (i.e. wordings, usefulness of headings). See 2.4.6 Headings and Labels for this.
Accompanying Files
Observation Details
While disabled interactive elements do not have to adhere to same contrast requirements as enabled elements, text content still should use proper color contrast ratio.
Given that this usually is not too easy to manage with existing design system guidelines, it should be evaluated to remove disabled form elements completely. Especially if they will not be editable anyways.
Accompanying Files
Observation Details
Multiple (nested) main elements found. Ensure only a single main landmark is used per page.
Accompanying Files
Observation Details
Text content in certain containers may overflow the container's boundaries, when text spacings are changed, making some text harder, other text impossible to perceive. This often includes:
Stage areas
Badges
Manually outlined elements like buttons (e.g. footnote icon buttons)
Teasers
Card components
Remediation Notes
Container elements must not use fixed dimensions, if they contain text content, to allow proper reflow without obscuring / overlapping content. Changing text spacings to values
Line height (line spacing) to at least 1.5 times the font size;
Spacing following paragraphs to at least 2 times the font size;
Letter spacing (tracking) to at least 0.12 times the font size;
Word spacing to at least 0.16 times the font size.
must be possible and must not lead to any loss of content or functionality.
Accompanying Files
Observation Details
"Handyankauf" form step headings use control characters for line breaks.
<h2 class="...">
"IMEI-Nummer "
"Ihres"
"iPhone 11"
" mit "
"128"
"GB "
" für Ihren Ankauf "
</h2>Character codes are 000D, Carriage Return, \r & 000A, Line Feed, \n.
A screen reader announces this as follows:
Heading
IMEI-Nummer Ihres iPhone 11 mit 128GB für Ihren Ankauf
8 Items
You are currently on a Heading level 2
IMEI-Nummer, level 1
Ihres, level 1
Leerzeichen, level 1
iPhone 11, level 1
mit, level 1
128, level 1
GB, level 1
für Ihren Ankauf, level 1
End of Heading Level 2Subsequent heading levels (e.g. right now the whole body copy text below this heading level 2 in step 2 is a heading with 9 items, including announced space characters) will further worsen the announcements as levels are going deeper.
Remediation Notes
Ensure no special control characters are used in text content. Paragraphs must always use <p> elements and manual line breaks must be avoided unless necessary (e.g. in poetry).
Ensure only actual heading content uses heading elements.
Observation Details
When opening a dialog window (e.g. via footnote or info icon), said dialog window does not receive keyboard focus. This leads to multiple issues:
The contents of the dialog window are not accessible via keyboard.
The dialog window can not be closed by 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. (see also 2.4.11 Focus Not Obscured (Minimum))
Since keyboard navigation stays possible, opening multiple dialog windows above each other also is possible.
Remediation Notes
Opening a dialog window by keyboard navigation must set the focus to the dialog window's content. Opening a dialog window must trap keyboard focus inside the dialog window, so underlying content cannot be accessed while dialog window is opened. Closing the dialog window, focus must be set to the triggering element again.
Ideally, the first focusable element in a dialog window can be used to close the dialog window, so opening and closing of a dialog window can be done without the need of navigating through other focusable elements. Although simple dialog windows, e.g. asking for confirmation, and providing "Accept" and "Cancel" buttons, might not have an explicit "Close" button and may set focus to the dialog window's "main purpose action" instead.
Observation Details
CAPTCHA reload icon button not operable by keyboard
Button uses non-semantic
<span>Button is hidden by using
aria-hidden="true"
Interactive element can be operated by mouse but not by keyboard. The issue may occur when:
Non-semantic HTML elements (e.g.
<div>,<span>) are used for interactive purposes (e.g. links, buttons, inputs), instead of semantic HTML elements (e.g.<a href="">,<button>). This often also leads to other issues, concerning 4.1.2 Name, Role, Value.Semantic elements are used but required attributes are missing (e.g.
<a>, missinghrefattribute)Semantic HTML elements are mis-used (e.g.
<a>used as a button, or<button>used as a link)
Remediation Notes
Ensure, using native, semantic HTML elements for interactive elements and not re-building existing functionality with generic elements like <div> and <span>.
Ensure, choosing the proper elements, depending on purpose (e.g. links, using <a href=""> to link to resources, and <button> to perform actions).
Ensure no interactive element that must be accessible is hidden from assistive technology by method of aria-hidden="true" or any other method for that matter.
This way, the need for added JavaScript (e.g. on click events / event handlers) and ARIA methodologies is reduced to a minimum, which will ensure clean and simple code and backwards compatibility, will future-proof functionality, and will avoid issues with keyboard navigation or other assistive technology (see also 4.1.2 Name, Role, Value).
Accompanying Files
Observation Details
Dropdown / selection "Wählen Sie ein iPhone aus" uses <span role="combobox" tabindex="0" ...>. Dropdown caret icon uses <span aria-hidden="true"><svg role="img" focusable="false">.
Navigating by screen reader, after the section heading, the main image is selected. After that, the right container half is skipped by the screen reader.
All interactive elements that do not use the correct 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 incorrect 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
Manually setting tabindex rarely has a use-case. Use of proper semantic interactive elements will almost always fit the needs. Ensure, only semantic elements are used for wanted functionality.
Please refer to observation 1.3.1 Info and Relationships – "Semantic HTML" for general remarks about the use of semantic HTML.
Observation Details
"Question tiles" / cards in Handyankauf form step 3 ("Lässt sich das Handy einschalten?", etc.) use radio buttons for "yes" an "no" values. The radio buttons are not grouped by <fieldset>. While this is no strict failure on its own, it only works accurately, when heading structure and structured content of the card is presented and programmatically determinable in a way so that the context always is clear.
The code syntax is as follows:
<div class="...">
<div class="">
<div class="...">
<h4 class="">Lässt sich das Handy einschalten?</h4>
<span class="..." aria-hidden="true">
<svg>...</svg>
</span>
</div>
<ul class="...">
<li class="...">
<span class="">Das Handy lässt sich einschalten.</span>
</li>
<li class="...">
<span class="">Es bleibt mindestens 45 Sekunden lang eingeschaltet.</span>
</li>
<li class="...">
<span class="">Es lässt sich aufladen.</span>
</li>
</ul>
<div class="...">
<div>
<input type="radio" id="POWERON_YES" name="1_POWER_ON_WCTI" value="POWERON_YES">
<label for="POWERON_YES" class="">Ja, lässt sich einschalten</label>
</div>
<div>
<input type="radio" id="POWERON_NO" name="1_POWER_ON_WCTI" value="POWERON_NO">
<label for="POWERON_NO" class="">Nein</label>
</div>
</div>
</div>
</div>Observations:
No
<fieldset>used to group radio buttonsWhile each radio button has a label, provided by
for="..."andid="..."attributes, the radio button group does not have a label programmatically attached (e.g. via<legend>The list contains "features" or "functionality states" of the device in question, but the list is introduced by heading "Lässt sich das Handy einschalten?"; wording can be improved
Remediation Notes
It is recommended to group radio buttons in a <fieldset> element and label the radio button group by use of <legend>. Example setup:
<h2>Handyankauf</h2>
<div>
<h3>Zustand des Handys</h3>
<p>Um zu prüfen, ob Ihr Handy für den Ankauf geeignet ist, müssen wir ermitteln, in welchem Zustand sich das Handy befindet.</p>
<form>
<h3>Funktionsfähigkeit des Handys</h3>
<p id="required-poweron">Diese Frage muss mit "Ja" beantwortet werden, damit Ihr Handy für den Ankauf in Frage kommt.</p>
<ul>
<li id="hint-poweron">Handy lässt sich einschalten</li>
<li id="hint-poweron-stay">Handy bleibt mindestens 45 Sekunden an</li>
<li id="hint-poweron-charge">Handy lässt sich aufladen</li>
</ul>
<fieldset aria-describedby="hint-poweron hint-poweron-stay hint-poweron-charge required-poweron">
<legend>
Lässt sich das Handy einschalten?
</legend>
<div>
<div>
<input id="..." name="..." type="radio" value="...">
<label for="...">
Ja
</label>
</div>
<div>
<input id="..." name="..." type="radio" value="...">
<label for="...">
Nein
</label>
</div>
</div>
</fieldset>
<h3>Schäden am Handy</h3>
<p id="required-damage">Diese Frage muss mit "Ja" beantwortet werden, damit Ihr Handy für den Ankauf in Frage kommt.</p>
<ul>
<li id="hint-damage-display">Gehäuse und Bildschirm sind nicht zertrümmert oder verbogen</li>
<li id="hint-damage-custom">Gehäuse nicht verändert und frei von Gravuren oder anderen Personalisierungen</li>
<li id="hint-damage-liquid">Keine sichtbaren Schäden durch Flüssigkeit oder Feuchtigkeit</li>
</ul>
<fieldset aria-describedby="hint-damage-display hint-damage-custom hint-damage-liquid required-damage">
<legend>
Ist das Handy frei von erheblichen Schäden und sichtbaren Flüssigkeitsschäden?
</legend>
<div>
<div>
<input id="..." name="..." type="radio" value="...">
<label for="...">
Ja
</label>
</div>
<div>
<input id="..." name="..." type="radio" value="...">
<label for="...">
Nein
</label>
</div>
</div>
</fieldset>
...
</form>
</div>This setup follows the practice to:
Introduce overall form purpose
Introduce each question's purpose
Provide important information like "required to be TRUE"
Group radio buttons in fieldset elements
Properly label radio button groups and each individual radio button
Programmatically connect labels, inputs, fieldsets, input hints
Observation Details
What arguably is list content:
Das iPhone macht unglaubliche Fotos und Videos.
Eine Batterie, die den ganzen Tag mithält.
Retina HD Display. Scharf und hell, mit fantastischen Farben.
Die volle Power ultraschneller Chips.
Mit mehr Speed aufs nächste Level.
and
Ohne Erlaubnis dürfen Apps keine Aktivitäten tracken.
Face ID funktioniert ohne ein Selfie zu speichern.
Bewahren Sie Ihre persönlichen Daten sicher auf, wo immer Sie sind.
Selbst entscheiden, wer was auf der Fotos App sehen kann.
and
Telekom 5G läuft zu 100 % mit erneuerbaren Energien.
Grüne und nachhaltige Produkte und Initiativen.
Für alle, die ein Smartphone wollen, das lange hält – das iPhone.
is using heading elements instead.
Remediation Notes
Use semantic list for all list content. When a heading element provides all information on its own and does not introduce any more content, it is likely to be list content instead. Given the page structure, there are lots of "cards" that only have a heading element.
Ensure readability by grouping these cards under accurate heading elements and remove unused heading elements on the cards themselves.
A structure could look like:
h2 iPhone mit der Telekom. Die wichtigsten Funktionen im Überblick
ul
li Fortschrittliche Kameras – Das iPhone macht unglaubliche Fotos und Videos.
li Batterie – Eine Batterie, die den ganzen Tag mithält.
...
h2 Ein ganzes Netzwerk eingebauter Sicherheitsfeatures
ul
li App Tracking Transparenz – Ohne Erlaubnis dürfen Apps keine Aktivitäten tracken.
...
h2 Immer in Verbindung und dabei besser für die Umwelt
ul
li Rohstoffe – Apple setzt sich ein für 100 % recycelte oder erneuerbare Materialien.
li Erneuerbare Energien – Telekom 5G läuft zu 100 % mit erneuerbaren Energien.
li Green Magenta – Grüne und nachhaltige Produkte und Initiativen.
li Langlebigkeit – Für alle, die ein Smartphone wollen, das lange hält – das iPhone.Accompanying Files
Observation Details
List in Handyankauf form does not use semantic HTML list element.
Remediation Notes
Do not use semantic lists for non-list content. But do use semantic list for all list content.
Accompanying Files
Observation Details
The icons in "Zusammenfassung" list are hidden from assistive technology by using aria-hidden="true". The icons however are not decorative. The inform the user about the state of their answers from previous steps. As the icons are hidden, assistive technology announces the list items only.
Remediation Notes
Ensure all non-decorative images use proper text alternatives.
Ideally, the user input is not only displayed visually but reflected in the text content of the list like this:
<h3>Zusammenfassung</h3>
<p>
Basierend auf Ihren Angaben erhalten Sie für Ihr iPhone 11 mit 128 GB bis zu
<span>29 €</span>
</p>
<p>Sie haben angegeben, dass</p>
<ul>
<li>sich Ihr Handy einschalten lässt</li>
<li>Gehäuse und Bildschirm Ihres Handys nicht zertrümmert oder verbogen sind</li>
<li>das Display keine Risse hat</li>
<li>die Glasrückseite Risse aufweist</li>
</ul>
<p>
Sollten wir nach der Prüfung zu einem anderen Ergebnis...
</p>Another option would be to split the "YES" and "NO" lists.