Introduction to Accessibility Testing

Accessibility testing ensures that digital products are usable by everyone, including people with disabilities. With over 1 billion people worldwide living with some form of disability, accessibility is not just a legal requirement but a moral imperative and business opportunity.

This guide provides comprehensive frameworks for documenting accessibility test results, ensuring WCAG 2.1 compliance, and creating inclusive digital experiences.

WCAG 2.1 Compliance Levels

Understanding Conformance Levels

LevelDescriptionRequirementsTypical Use Case
AMinimum levelEssential accessibility featuresBasic compliance, minimum legal requirement
AAMid-range levelRecommended standardMost websites, industry standard, legal requirement in many countries
AAAHighest levelEnhanced accessibilityGovernment sites, specialized accessibility-focused applications

WCAG 2.1 Principles (POUR)

Perceivable: Information and user interface components must be presentable to users in ways they can perceive

  • Text alternatives for non-text content
  • Captions and transcripts for multimedia
  • Adaptable content structure
  • Distinguishable visual and audio content

Operable: User interface components and navigation must be operable

  • Keyboard accessibility
  • Sufficient time to read and use content
  • No content that causes seizures
  • Navigable and findable content

Understandable: Information and operation of user interface must be understandable

  • Readable text content
  • Predictable functionality
  • Input assistance and error prevention

Robust: Content must be robust enough to be interpreted by a wide variety of user agents, including assistive technologies

  • Compatible with current and future tools
  • Valid, semantic HTML
  • Proper ARIA usage

Accessibility Test Report Template

Executive Summary Template

# ACCESSIBILITY TEST REPORT

## Executive Summary

**Application**: E-Commerce Web Platform
**Test Date**: October 8, 2025
**Tester**: Alex Rodriguez (Accessibility Specialist)
**Target Compliance**: WCAG 2.1 Level AA
**Overall Result**: 78% Compliant (Needs Improvement)

### Key Findings
- **Critical Issues**: 12 issues blocking accessibility
- **High Priority**: 23 issues significantly impacting usability
- **Medium Priority**: 45 issues affecting user experience
- **Low Priority**: 18 minor accessibility concerns

### Compliance Summary
| Principle | Level A | Level AA | Level AAA |
|-----------|---------|----------|-----------|
| Perceivable | 85% | 72% | 45% |
| Operable | 90% | 78% | 52% |
| Understandable | 88% | 81% | 60% |
| Robust | 82% | 75% | N/A |

### Recommendation
Prioritize fixing all Critical and High Priority issues within 30 days to achieve WCAG 2.1 Level AA compliance.

## Test Scope

### Pages Tested
1. Homepage (/)
2. Product Listing (/products)
3. Product Detail (/products/[id])
4. Shopping Cart (/cart)
5. Checkout (/checkout)
6. User Account (/account)
7. Search Results (/search)
8. Help Center (/help)

### Testing Tools Used
- **Automated**: axe DevTools, WAVE, Lighthouse
- **Manual**: NVDA Screen Reader, JAWS, VoiceOver
- **Keyboard Navigation**: Manual testing
- **Color Contrast**: Contrast Checker, Colorblind Simulator

### Assistive Technologies Tested
- NVDA 2024.3 (Windows)
- JAWS 2024 (Windows)
- VoiceOver (macOS, iOS)
- TalkBack (Android)
- Dragon NaturallySpeaking (Voice control)

## Detailed Findings

### Critical Issues (12 Found)

#### Issue #1: Missing Alt Text for Product Images
**WCAG Criterion**: 1.1.1 Non-text Content (Level A)
**Severity**: Critical
**Impact**: Screen reader users cannot identify products

**Location**: Product listing page (/products)

**Description**:
Product images lack alternative text descriptions. Screen readers announce "image" without providing meaningful information about the product.

**Evidence**:
```html
<!-- Current (Non-compliant) -->
<img src="/images/product-123.jpg" />

<!-- Should be -->
<img src="/images/product-123.jpg"
     alt="Blue cotton t-shirt with round neck, size medium" />

User Impact:

  • Screen reader users: Cannot identify products
  • Users with images disabled: No product information
  • SEO impact: Reduced search visibility

Recommendation: Add descriptive alt text to all product images. Include:

  • Product name
  • Key visual characteristics (color, style)
  • Size information when visible

Priority: P0 - Critical Estimated Effort: 2 days (100+ images)


Issue #2: Keyboard Trap in Modal Dialogs

WCAG Criterion: 2.1.2 No Keyboard Trap (Level A) Severity: Critical Impact: Keyboard users cannot escape modal dialogs

Location: Add to Cart modal, Login popup

Description: When users open modal dialogs using keyboard navigation, focus becomes trapped inside the modal. Pressing Esc or Tab does not close the modal or allow navigation outside.

Evidence: Video recording shows keyboard navigation test where user cannot exit modal using standard keyboard commands.

Steps to Reproduce:

  1. Navigate to product page using Tab key
  2. Press Enter on “Add to Cart” button
  3. Modal opens
  4. Try to close modal using Esc key - FAILS
  5. Try to Tab outside modal - FAILS

User Impact:

  • Keyboard-only users: Cannot continue shopping
  • Screen reader users: Stuck in modal context
  • Affects: ~15% of users with motor disabilities

Recommendation: Implement proper focus management:

// Add keyboard event handler
modal.addEventListener('keydown', (e) => {
  if (e.key === 'Escape') {
    closeModal();
    returnFocusToTrigger();
  }
});

// Trap focus within modal
trapFocus(modal);

// Return focus on close
function closeModal() {
  modal.close();
  triggerButton.focus();
}

Priority: P0 - Critical Estimated Effort: 1 day

High Priority Issues (23 Found)

Issue #3: Insufficient Color Contrast

WCAG Criterion: 1.4.3 Contrast (Minimum) (Level AA) Severity: High Impact: Low vision users cannot read text

Location: Multiple pages - secondary buttons, form labels, footer links

Description: Text elements fail to meet minimum 4.5:1 contrast ratio requirement. Particularly problematic for light gray text on white backgrounds.

Evidence:

ElementForegroundBackgroundContrast RatioRequiredStatus
Secondary button#999999#FFFFFF2.8:14.5:1FAIL
Form label#AAAAAA#FFFFFF2.3:14.5:1FAIL
Footer link#888888#F5F5F53.2:14.5:1FAIL

User Impact:

  • Low vision users: Cannot read text
  • Colorblind users: Reduced readability
  • Aging users: Eye strain and difficulty
  • Outdoor users: Sunlight glare makes text invisible

Recommendation: Update color palette to meet contrast requirements:

/* Update CSS */
.secondary-button {
  color: #595959; /* Was #999999 - New ratio: 7.0:1 ✓ */
}

.form-label {
  color: #4A4A4A; /* Was #AAAAAA - New ratio: 9.7:1 ✓ */
}

.footer-link {
  color: #666666; /* Was #888888 - New ratio: 5.7:1 ✓ */
}

Priority: P1 - High Estimated Effort: 3 days (design review + implementation)


Issue #4: Form Validation Without Text Alternative

WCAG Criterion: 3.3.1 Error Identification (Level A) Severity: High Impact: Users cannot understand form errors

Location: Checkout form, Registration form

Description: Form validation errors are indicated only by red border color without text explanation. Screen readers do not announce errors.

Evidence:

<!-- Current (Non-compliant) -->
<input type="email"
       class="error"
       value="invalid-email" />

<!-- Should be -->
<input type="email"
       class="error"
       value="invalid-email"
       aria-invalid="true"
       aria-describedby="email-error" />
<span id="email-error" role="alert">
  Please enter a valid email address
</span>

User Impact:

  • Screen reader users: No error notification
  • Colorblind users: Cannot see red border
  • Cognitive disability: No clear guidance

Recommendation: Implement accessible form validation:

  1. Add text error messages
  2. Use aria-invalid attribute
  3. Link errors with aria-describedby
  4. Announce errors with role=“alert”

Priority: P1 - High Estimated Effort: 2 days

Medium Priority Issues (45 Found)

Issue #5: Missing Landmark Regions

WCAG Criterion: 2.4.1 Bypass Blocks (Level A) Severity: Medium Impact: Screen reader navigation inefficiency

Recommendation:

<header role="banner">
  <nav role="navigation" aria-label="Main navigation">
    <!-- Navigation content -->
  </nav>
</header>

<main role="main">
  <!-- Main content -->
</main>

<footer role="contentinfo">
  <!-- Footer content -->
</footer>

Priority: P2 - Medium Estimated Effort: 1 day

Testing Methodology

Automated Testing

// Example: axe-core integration for automated testing
const { AxePuppeteer } = require('@axe-core/puppeteer');
const puppeteer = require('puppeteer');

async function runAccessibilityTest(url) {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto(url);

  const results = await new AxePuppeteer(page)
    .withTags(['wcag2a', 'wcag2aa', 'wcag21a', 'wcag21aa'])
    .analyze();

  console.log(`Violations found: ${results.violations.length}`);

  results.violations.forEach(violation => {
    console.log(`
      Issue: ${violation.description}
      WCAG: ${violation.tags.join(', ')}
      Impact: ${violation.impact}
      Elements affected: ${violation.nodes.length}
    `);
  });

  await browser.close();
  return results;
}

// Run tests
const pages = [
  'https://example.com/',
  'https://example.com/products',
  'https://example.com/checkout'
];

pages.forEach(async (page) => {
  await runAccessibilityTest(page);
});

Manual Testing Checklist

## Manual Accessibility Test Checklist

### Keyboard Navigation
- [ ] All interactive elements accessible via Tab key
- [ ] Logical tab order follows visual layout
- [ ] Focus indicators clearly visible
- [ ] No keyboard traps
- [ ] All functionality available via keyboard
- [ ] Skip links present and functional
- [ ] Modal dialogs manage focus correctly

### Screen Reader Testing
- [ ] All images have appropriate alt text
- [ ] Form labels properly associated
- [ ] Error messages announced
- [ ] Dynamic content updates announced
- [ ] ARIA landmarks properly implemented
- [ ] ARIA live regions for updates
- [ ] Table headers properly associated
- [ ] List structures properly marked up

### Visual Testing
- [ ] Color contrast meets WCAG AA standards
- [ ] Text remains readable at 200% zoom
- [ ] No information conveyed by color alone
- [ ] Text spacing adjustable
- [ ] Content reflows at 320px width
- [ ] No horizontal scrolling at 100% zoom

### Multimedia
- [ ] Videos have captions
- [ ] Audio has transcripts
- [ ] Auto-play can be paused
- [ ] No flashing content >3 times per second

### Forms
- [ ] All form fields have labels
- [ ] Required fields clearly marked
- [ ] Error messages are clear and helpful
- [ ] Error prevention for critical actions
- [ ] Success confirmation provided

### Cognitive Accessibility
- [ ] Consistent navigation across pages
- [ ] Predictable functionality
- [ ] Clear headings and labels
- [ ] Simple, clear language
- [ ] Help and documentation available

Remediation Plan

Priority Matrix

PriorityTimelineIssuesEffortImpact
P0 - CriticalWeek 1128 daysBlocks basic usage
P1 - HighWeek 2-32315 daysSignificantly impacts UX
P2 - MediumWeek 4-64520 daysImproves experience
P3 - LowWeek 7-8188 daysPolish and refinement

Implementation Roadmap

## Week 1: Critical Issues
**Goal**: Fix all blocking accessibility issues

- [ ] Add alt text to all images
- [ ] Fix keyboard traps in modals
- [ ] Implement skip links
- [ ] Fix form label associations
- [ ] Add ARIA labels to unlabeled buttons

**Testing**: Daily automated scans, manual verification

## Week 2-3: High Priority Issues
**Goal**: Achieve basic WCAG 2.1 AA compliance

- [ ] Fix color contrast issues
- [ ] Implement accessible form validation
- [ ] Add landmark regions
- [ ] Fix heading hierarchy
- [ ] Implement focus management

**Testing**: Screen reader testing, keyboard navigation

## Week 4-6: Medium Priority Issues
**Goal**: Enhance accessibility experience

- [ ] Add ARIA live regions for dynamic content
- [ ] Implement accessible data tables
- [ ] Add breadcrumb navigation
- [ ] Enhance mobile accessibility
- [ ] Improve error recovery

**Testing**: Full WCAG 2.1 AA audit

## Week 7-8: Low Priority Issues
**Goal**: Polish and AAA-level enhancements

- [ ] Add extended descriptions where helpful
- [ ] Implement reading level indicators
- [ ] Add sign language videos for key content
- [ ] Enhance keyboard shortcuts
- [ ] Document accessibility features

**Testing**: User testing with people with disabilities

Continuous Monitoring

Automated Testing in CI/CD

# .github/workflows/accessibility.yml
name: Accessibility Tests

on: [push, pull_request]

jobs:
  a11y-tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2

      - name: Install dependencies
        run: npm install

      - name: Build application
        run: npm run build

      - name: Start server
        run: npm start &

      - name: Run axe tests
        run: npm run test:a11y

      - name: Upload results
        uses: actions/upload-artifact@v2
        with:
          name: accessibility-report
          path: accessibility-report.html

      - name: Comment PR with results
        uses: actions/github-script@v5
        with:
          script: |
            const results = require('./accessibility-results.json');
            const violations = results.violations.length;

            if (violations > 0) {
              core.setFailed(`Found ${violations} accessibility violations`);
            }

Conclusion

Accessibility testing is an ongoing process that requires automated tools, manual testing, and user feedback. By following WCAG 2.1 guidelines and implementing comprehensive testing strategies, organizations can create inclusive digital experiences that serve all users effectively.

Regular accessibility audits, continuous monitoring, and prioritized remediation ensure that applications remain accessible as they evolve. Remember that accessibility benefits everyone, improving usability, SEO, and overall user experience.