WCAG - manifest

When creating a new component in Eximee, it is worth starting by familiarizing yourself with:

Perceivable

Information and user interface components must be presented to users in a way that is perceivable by their senses.

Text alternative

Provide text alternatives for all non-text content so it can be changed into other forms (e.g., large print, braille, speech, symbols, or simpler language).

Images, charts, maps must have alternative content added via the attribute Empty attribute.

  1. If an element conveys information it must have alternative text

  2. If an element is purely decorative, provide an empty alternative text value and give the element the role "presentation"

  3. If the element is a link, put the purpose of that link in the alternative text

Implementation in Eximee:

  • Components created in Eximee that contain graphics should allow specifying an alt attribute. This also applies to components that allow supplying the graphic location via a data source. Components should support internationalization of alternative texts.

  • HTML code provided to components (e.g., via TextContent or translation) should include a properly defined alt attribute for <img/> elements.

Adaptability

Create content that can be presented in different ways without losing information or structure.

  1. Use the appropriate heading order. There should be one heading on the page h1, and the next in the hierarchy should be (h2 GesCheckbox11.ariaLabel h3 GesCheckbox11.ariaLabel h4 ...)

  2. List

    1. Use list tags in the correct order

    2. Use lists to bullet links

    3. If you remove the default list marker, add the attribute to the main list tag role="list"

  3. Table

    1. Use the caption tag to describe table content

    2. Use header cells th

    3. Tables should be as regular and simple as possible

  4. The order of displayed information should be logical and determined by the order in the DOM

    1. Elements displayed from left to right and top to bottom

    2. Ensure proper tab order

  5. Navigation elements and messages must not rely on: shape, visual location, color, sound

  6. Displayed content must be properly handled in both portrait and landscape orientations

  7. Data-collecting fields should specify the desired value. You should add the attribute autocomplete with an appropriate value

Implementation in Eximee

  • Eximee components should use standard HTML elements - this greatly facilitates document reading by external tools. If that is not possible, use appropriate roles and aria attributes in accordance with https://www.w3.org/WAI/ARIA/apg/patterns/

  • Texts in Eximee components should be placed in semantic elements, e.g.: <p>, <li>, <td>.

  • HTML code provided to components (e.g., via TextContent or translation) should contain the proper heading levels (they should not start with <h1>).

  • HTML code provided to components (e.g., via TextContent or translation) should contain texts in semantic elements, e.g.: <p>, <li>, <td>.

Distinguishability

Make it easier to see and hear content and separate foreground from background.

  1. Color must not be the only means of conveying an element

    1. required field on a form - e.g., using an asterisk

    2. link - e.g., underline

    3. chart - e.g., highlight a line with a geometric shape, dashed line, or label

    4. inactive field - e.g., additional border, cursor cross icon, strikethrough of the element

  2. Audio playback control - if audio on the page lasts longer than 3 seconds there must be a way to pause or turn it off or control the volume

  3. Text contrast ratio must be at least 4.5:1

    1. if the text is large (larger than 24px or bold 18.5px) it must have a contrast of at least 3:1

    2. decorative elements, logos and product trade names do not require minimum contrast

  4. Contrast of non-text elements between graphical objects, interface elements (excluding inactive elements), and adjacent elements must be at least 3:1

  5. Do not place text as an image (logo excepted)

  6. After increasing text spacing, all elements must still be visible and readable

    1. line height to at least 1.5 times the font size

    2. paragraph spacing to at least 2 times the font size

    3. letter spacing to at least 0.12 times the font size

    4. word spacing to at least 0.16 times the font size

  7. After increasing text size even up to 200% there must be no loss of information or functionality

  8. Responsiveness - content must be presented without loss of information or functionality on screens with a minimum width of 320px and minimum height of 256px. Additionally, there must be no horizontal scrolling (exceptions are two-dimensional content such as tables, complex images, maps and charts)

  9. Behavior of a component when additional content appears on hover or keyboard focus and disappears after they are removed

    1. there must be a mechanism allowing dismissal of the additional content (ensure ESC key handling to close the tooltip)

    2. additional content remains visible until dismissed by the user or the information is no longer relevant

  10. All elements should be visible when high contrast mode is enabled in the operating system and in particular should maintain the required contrast.

Implementation in Eximee

  • Eximee component mockups should comply with WCAG guidelines (contrast, highlighting, etc.).

  • All texts displayed by Eximee components should be able to be enlarged using an appropriate tool, and therefore it should be possible to place the cursor over the text (e.g., over tooltip text).

  • Labels displayed inside Eximee components should be preserved on screens with a width of 320px.

Functionality

User interface components and navigation should be operable

Keyboard accessibility

Ensure all functionality is available via keyboard

  1. It must be possible to navigate the site using only the keyboard

  2. If focus can be moved using the keyboard then it must be possible to remove it in the same way. If there is another way to leave the component, an appropriate hint should be displayed

  3. If single-character keyboard shortcuts are used, one of the following requirements should be met

    1. there is a way to disable the shortcut

    2. there is a way to change the mapping

    3. the shortcut is active only when it has focus

Enough time

Give users enough time to read and use content

  1. When time to use content is limited, information with the remaining time must appear and at least one of the following conditions must be met

    1. the user can turn off the time limit before time expires

    2. the user can extend the time limit

    3. the user can adjust the time

  2. If content moves, flashes, scrolls, or is automatically updated it should have the ability to reverse and to pause or hide

Navigability

Provide users with tools to help navigate, find content, and determine where they are

  1. The page title should identify the current location without needing to read the page content

  2. Focus should move from left to right, and after a page change it should be on the h1 heading or the initial landmark

  3. Links must clearly indicate what they do and where they lead

  4. If special characters are used in content e.g., an arrow, it should be hidden using aria-hidden

  5. Headings and labels must describe the topic or purpose of the content

  6. Focus on a field should be visible, have a border with appropriate contrast and size of at least 2px and be consistent across all elements

  7. Do not use only uppercase letters in links

Implementation in Eximee

  • Eximee components that require user reaction (popup, session expiry notice) should automatically set focus.

  • If the content of a link is an image, it should contain alternative text.

  • Aria attributes used in Eximee components should allow setting the appropriate language version.

  • If the link content is incomplete (e.g., derives from other visible content) additional content should be added that will not be visible but will be available to screen readers.

Input methods

Make it easier for users to operate functions using methods other than the keyboard.

  1. If a component is operated by multi-touch gestures there should be a way to perform the same action with a single-point gesture

  2. If a component is operated by tilting, shaking or user movement there should be a way to disable that and provide operation via standard controls

  3. If we click on an element there should be a way to cancel the action. The action should execute on the mouseup

  4. If in a link or button we use alternative text (aria-label) it should start with the text from the label

Understandability

Content and user interface operation must be understandable.

Readability

Create content that can be read and understood.

  1. In the CSS tag there should be an attribute lang with the page language

  2. If we add text in a different language than the rest of the page it should have the lang attribute with its language

  3. Content read by a screen reader should be understandable, without unnecessary repetition and unambiguous for the recipient

Implementation in Eximee

  • If the HTML code provided to components (e.g., via TextContent or translation) contains texts in a different language than the rest of the page, we can give them a lang attribute, e.g., by placing them in a <span> element.

Predictability

Design web pages so they open, look and behave in a predictable way.

  1. When a component receives focus, no action may occur immediately without user confirmation

  2. Changing a value in a component must not automatically perform any context-changing action

  3. Navigation elements should be in the same place on subpages

  4. The same elements on different pages should have the same labels

  5. The user should be informed that a link will open in a new tab or another application

Implementation in Eximee

  • If the HTML code provided to components (e.g., via TextContent or translation) contains links that open in another tab or application, additional information can be provided that will not be visible but will be read by screen readers (e.g., by placing it in a <span> element).

Assistance with input

Help users avoid and correct mistakes.

  1. If an input error is automatically detected, the erroneous component should be highlighted and the user should receive an error description

  2. Each form field should have a label or instruction

  3. Each navigational element of a component should have a label.

  4. If an input error is automatically detected, the user should receive a clear error message and instructions on how to fix it

  5. The form should include a confirmation page (a summary page with the ability to verify, go back and correct data, and submit)

  6. If a specific data format is required, add alternative text describing it

Implementation in Eximee

  • The Eximee component element displaying an error message should be associated with the form field using the aria-describedby attribute.

  • Navigation elements of Eximee components should be associated with labels using the aria-labelledby attribute.

  • Eximee components that accept data in a specific format should include hidden text describing that format (e.g., a <span> element with aria-hidden=false).

Robustness

Content must be robustly prepared so it can be reliably interpreted by various user agents, including assistive technologies.

  1. Code should conform to the HTML standard

  2. When creating custom components, provide appropriate role and value by using ROLE and ARIA-* attributes

  3. If we display a message that does not have focus, ensure it is read by a screen reader via roles

Implementation in Eximee

  • Eximee components that control element visibility should also dynamically manage aria-hidden attributes.

  • Eximee components that control expansion of elements should also dynamically manage aria-expanded attributes.

  • Eximee components that obtain a set of result data (e.g., filters, searches) should notify about the set of found results using invisible elements with attributes aria-atomic="true" and aria-live="polite". In case of an empty result set, inform the user by using the role="alert" attribute on the element indicating no results.

Helpful tools

  1. Screen reader

    1. VoiceOver

    2. TalkBack

  2. HTML conformance validator

  3. Contrast analysis

  4. Tab Accessibility in Firefox

Materials

Last updated

Was this helpful?