WCAG 5.2.3: Complete processes

Understanding WCAG Principle: Complete Processes

The principle of "Complete processes," while not a numerically designated Success Criterion in WCAG 2.0 or 2.1, is a fundamental concept that underpins the entire Web Content Accessibility Guidelines. It emphasizes that for any multi-step interaction or task on a website or application, all individual steps must conform to WCAG requirements for the entire process to be considered accessible. An accessible journey is only as strong as its weakest link.

This means that if a user encounters an inaccessible step—such as an unlabelled form field, a keyboard-unfriendly interaction, or a confusing error message—within a larger process like account registration, online checkout, or submitting an application, they may be entirely blocked from completing their goal. The overall accessibility of the process is therefore compromised, even if other steps are perfectly compliant.

Why the ‘Complete Processes’ Principle Matters

Adhering to the ‘Complete processes’ principle is critical for several reasons:

  • Holistic Accessibility: It shifts the focus from individual page accessibility to the entire user journey, ensuring a truly inclusive experience.
  • User Empowerment: It guarantees that users with disabilities can independently complete essential tasks, rather than being able to navigate parts of a process only to be blocked later.
  • Legal Compliance: While not a single WCAG success criterion, failing to ensure all steps are accessible can lead to non-conformance with broader WCAG guidelines and, consequently, potential legal challenges.
  • Business Impact: Inaccessible processes lead to high abandonment rates, lost conversions, damaged brand reputation, and increased customer support inquiries.

User Groups Affected

When a process is not completely accessible, a wide range of users can be negatively impacted:

  • Users with Motor Impairments: May struggle with steps requiring precise mouse movements, complex drag-and-drop, or small interactive elements if keyboard navigation is not fully supported throughout.
  • Users with Visual Impairments: Screen reader users may be unable to perceive information, identify elements, or understand relationships in certain steps due to missing labels, poor heading structure, or inaccessible CAPTCHAs.
  • Users with Cognitive Disabilities: Inconsistent navigation, confusing instructions, unmanageable time limits, or overwhelming error messages in any single step can disrupt their ability to complete the process.
  • Users with Hearing Impairments: If a step includes audio-only content without captions or transcripts, they may be excluded from necessary information or verification.

Related WCAG Success Criteria and Requirements

The ‘Complete processes’ principle is achieved by diligently applying numerous WCAG 2.0 and 2.1 Success Criteria to every single component and interaction within a multi-step flow. Key areas of focus include:

  • Perceivable (Principle 1): Information and user interface components must be presentable to users in ways they can perceive.
    • 1.1.1 Non-text Content: All non-text content in each step (e.g., images, CAPTCHAs) has a text alternative.
    • 1.3.1 Info and Relationships: Information, structure, and relationships conveyed through presentation can be programmatically determined or are available in text.
  • Operable (Principle 2): User interface components and navigation must be operable.
    • 2.1.1 Keyboard: All functionality of the content is operable through a keyboard interface without requiring specific timings for individual keystrokes.
    • 2.2.1 Timing Adjustable: Where timed interactions occur (e.g., session timeouts), users can adjust or extend the time limit.
    • 2.4.3 Focus Order: If a Web page can be navigated sequentially and the navigation sequences affect meaning or operation, focusable components receive focus in an order that preserves meaning and operability.
    • 2.4.7 Focus Visible: Any user interface component that can be operated or navigated to using a keyboard interface has a mode of operation where the keyboard focus indicator is visible.
  • Understandable (Principle 3): Information and the operation of user interface must be understandable.
    • 3.2.3 Consistent Navigation: Navigational mechanisms that are repeated on multiple Web pages within a set of Web pages occur in the same relative order each time unless a change is initiated by the user.
    • 3.3.1 Error Identification: If an input error is automatically detected, the item that is in error is identified and the error is described to the user in text.
    • 3.3.2 Labels or Instructions: Labels or instructions are provided when content requires user input.
    • 3.3.3 Error Suggestion: If an input error is automatically detected and a suggestion for correction is known, then the suggestion is provided to the user, unless it would jeopardize the security or purpose of the content.
  • Robust (Principle 4): Content must be robust enough that it can be interpreted reliably by a wide variety of user agents, including assistive technologies.
    • 4.1.2 Name, Role, Value: For all user interface components (including form elements, links, and components generated by scripts), the name and role can be programmatically determined; states, properties, and values that can be set by the user can be programmatically set; and notification of changes to these items is available to user agents, including assistive technologies.

Practical Guidelines for Compliance

To ensure your multi-step processes adhere to the ‘Complete processes’ principle, consider the following practical guidelines:

  1. Map Out User Journeys: Clearly define all steps in a process from start to finish. Identify all interactive elements and information presented in each step.
  2. Conduct Step-by-Step Audits: Perform thorough accessibility evaluations for every single screen, modal, or interaction within the process. Do not assume compliance for one step means compliance for all.
  3. Prioritize Keyboard Accessibility: Ensure that every interactive element, navigation link, and form field across all steps can be accessed, operated, and understood using only the keyboard. Verify visible focus indicators.
  4. Provide Clear & Consistent Feedback: Implement accessible progress indicators, clear error messages that are programmatically associated with the input fields, and success messages that are conveyed to assistive technologies.
  5. Accessible Form Design: For any input step, ensure all form fields have explicit, programmatically associated labels, proper input types, and validation feedback.
  6. Time Management: If a process has time limits (e.g., session expiration), provide options to extend or turn off these limits as per WCAG 2.2.1 Timing Adjustable.
  7. Test with Assistive Technologies: Regularly test the entire process flow using a variety of assistive technologies (e.g., screen readers like NVDA/JAWS/VoiceOver, speech recognition software) to catch issues specific to AT users.
  8. User Testing with Disabilities: Involve actual users with diverse disabilities in testing the complete process from start to finish. Their feedback is invaluable for identifying real-world barriers.

Examples of Correct and Incorrect Implementations

Consider an online checkout process involving multiple steps: ‘Shipping Info’, ‘Payment Details’, ‘Review Order’, and ‘Confirmation’.

Incorrect Implementation Example

Imagine a checkout process where the ‘Payment Details’ step has an inaccessible credit card input field and the ‘Review Order’ step presents a modal that cannot be dismissed by keyboard.

Scenario: Inaccessible Payment Form Step

Problem: The credit card number input field lacks a proper label, and the error message for an invalid card number is only visually indicated in red text, not programmatically associated.

<!-- Inaccessible HTML for a Payment Details step -->
<form>
  <p>Credit Card Number:</p>
  <input type="text" id="cardNumber" placeholder="XXXX-XXXX-XXXX-XXXX">
  <!-- Error message only visible, not associated -->
  <p id="cardError" style="color: red; display: none;">Invalid card number.</p>

  <label for="expiryDate">Expiry Date:</label>
  <input type="text" id="expiryDate" placeholder="MM/YY">
  
  <button>Continue</button>
</form>

Impact: Screen reader users would not know the purpose of the cardNumber input field. If they enter an invalid number, they might not perceive the error message at all, or understand which field it relates to, blocking their ability to complete the purchase.

Scenario: Inaccessible Review Order Modal

Problem: After clicking ‘Review Order’, a modal appears. The ‘Close’ button for this modal is only clickable by mouse, and keyboard focus gets trapped inside the modal without a way to dismiss it.

<!-- Inaccessible HTML for a Review Order modal -->
<div id="reviewModal" role="dialog" aria-modal="true" style="display: block;">
  <h3>Review Your Order</h3>
  <!-- ... order details ... -->
  <span class="close-button" onclick="document.getElementById('reviewModal').style.display = 'none';">X</span> <!-- Not focusable -->
  <button>Place Order</button>
</div>

Impact: Keyboard users are trapped in the modal, unable to close it and proceed with placing the order, effectively blocking them from completing the checkout process.

Correct Implementation Example

An accessible checkout process ensures every step is fully navigable, understandable, and operable.

Scenario: Accessible Payment Form Step

Solution: The credit card number input has an explicit label, and error messages are programmatically associated using aria-describedby and aria-live regions.

<!-- Accessible HTML for a Payment Details step -->
<form>
  <label for="cardNumber">Credit Card Number:</label>
  <input type="text" id="cardNumber" placeholder="XXXX-XXXX-XXXX-XXXX" aria-describedby="cardError" aria-invalid="false">
  <div id="cardError" role="alert" style="color: red; display: none;">Please enter a valid 16-digit card number.</div>

  <label for="expiryDate">Expiry Date (MM/YY):</label>
  <input type="text" id="expiryDate" placeholder="MM/YY">
  
  <button type="submit">Continue</button>
</form>

<script>
  // Example JavaScript for error handling
  const cardNumberInput = document.getElementById('cardNumber');
  const cardErrorDiv = document.getElementById('cardError');

  cardNumberInput.addEventListener('blur', () => {
    if (cardNumberInput.value.length !== 16 || !/^[0-9]+$/.test(cardNumberInput.value)) {
      cardErrorDiv.style.display = 'block';
      cardNumberInput.setAttribute('aria-invalid', 'true');
    } else {
      cardErrorDiv.style.display = 'none';
      cardNumberInput.setAttribute('aria-invalid', 'false');
    }
  });
</script>

Benefit: Screen readers announce the label for the card number field. If an error occurs, the aria-describedby links the error message to the input, and the role="alert" ensures screen readers announce the error immediately, guiding the user to correct the input.

Scenario: Accessible Review Order Modal

Solution: The modal is properly managed for keyboard users: focus is managed, and there’s an accessible close button.

<!-- Accessible HTML for a Review Order modal -->
<div id="reviewModal" role="dialog" aria-modal="true" aria-labelledby="modalTitle" style="display: block;" tabindex="-1">
  <h3 id="modalTitle">Review Your Order</h3>
  <!-- ... order details ... -->
  <button class="close-button" aria-label="Close" onclick="closeModal()">X</button>
  <button>Place Order</button>
</div>

<script>
  const reviewModal = document.getElementById('reviewModal');
  const firstFocusableElement = reviewModal.querySelector('h3'); // Or first interactive element
  const lastFocusableElement = reviewModal.querySelector('button:last-of-type');

  function openModal() {
    reviewModal.style.display = 'block';
    reviewModal.focus(); // Focus the modal itself or first interactive element
    document.addEventListener('keydown', trapTabKey);
  }

  function closeModal() {
    reviewModal.style.display = 'none';
    document.removeEventListener('keydown', trapTabKey);
    // Return focus to the element that opened the modal
  }

  function trapTabKey(e) {
    if (e.key === 'Tab') {
      if (e.shiftKey) { // Shift + Tab
        if (document.activeElement === firstFocusableElement) {
          lastFocusableElement.focus();
          e.preventDefault();
        }
      } else { // Tab
        if (document.activeElement === lastFocusableElement) {
          firstFocusableElement.focus();
          e.preventDefault();
        }
      }
    } else if (e.key === 'Escape') {
      closeModal();
    }
  }
  // Example of how the close button would be focusable and operable by keyboard
  reviewModal.querySelector('.close-button').setAttribute('tabindex', '0');
  reviewModal.querySelector('.close-button').addEventListener('keydown', (e) => {
    if (e.key === 'Enter' || e.key === ' ') closeModal();
  });
</script>

Benefit: The ‘X’ button is now a proper <button>, focusable, and operable by keyboard. Keyboard focus is programmatically managed within the modal, and users can close it using the Escape key, ensuring they are not trapped.

Best Practices and Common Pitfalls

Best Practices

  • Integrate Accessibility Early: Build accessibility into the design and development lifecycle from the start, rather than as an afterthought.
  • User-Centered Design: Design processes with diverse user needs in mind, simplifying complex steps where possible.
  • Consistent UI Patterns: Use consistent and predictable navigation, labeling, and interactive patterns across all steps to reduce cognitive load.
  • Comprehensive Testing: Combine automated accessibility checks, manual audits (including keyboard-only navigation and screen reader testing), and user testing with individuals with disabilities.
  • Clear Progress Indicators: Provide clear, accessible progress indicators (e.g., "Step 3 of 5") that inform users where they are in the process.
  • Meaningful Error Prevention & Recovery: Guide users with clear instructions and provide helpful, accessible error messages with suggestions for correction.

Common Pitfalls

  • Partial Audits: Only auditing the first few steps or individual pages in isolation, missing issues in subsequent, more complex interactions.
  • Over-reliance on Automated Tools: Automated tools can catch about 30-50% of WCAG issues. Manual testing is crucial, especially for dynamic or complex multi-step interactions.
  • Ignoring Dynamic Content: Assuming content loaded via AJAX or single-page application (SPA) transitions will automatically be accessible. These require careful focus management and ARIA attributes.
  • Inconsistent Development: Different teams or developers working on different parts of a process without consistent accessibility guidelines, leading to varying levels of compliance.
  • Lack of Keyboard Accessibility in Later Steps: Often, the initial steps are keyboard-accessible, but more complex interactions or modals appearing later in a process neglect keyboard and focus management.

Conclusion

The principle of ‘Complete processes’ is essential for achieving true web accessibility. It underscores that a user’s ability to successfully complete their desired task hinges on the accessibility of every single step along the way. By diligently applying WCAG 2.0 and 2.1 Success Criteria to each part of a multi-step journey, and by prioritizing comprehensive testing and user-centered design, developers and content creators can ensure that their digital processes are truly inclusive and usable by everyone.

Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.