11 KiB
LLM Agent Guide: ADA/WCAG Accessibility Testing with Cremote
Purpose
This document provides LLM coding agents with concrete, actionable guidance for using Cremote's accessibility testing tools to conduct ADA/WCAG compliance audits.
Quick Reference
Tool Selection Matrix
| Testing Need | Primary Tool | Secondary Tool | WCAG Criteria |
|---|---|---|---|
| Comprehensive automated audit | web_run_axe_cremotemcp |
- | ~57% of WCAG 2.1 AA |
| Color contrast issues | web_contrast_check_cremotemcp |
web_run_axe_cremotemcp |
1.4.3, 1.4.6 |
| Keyboard accessibility | web_keyboard_test_cremotemcp |
web_run_axe_cremotemcp |
2.1.1, 2.4.7 |
| Zoom/resize functionality | web_zoom_test_cremotemcp |
- | 1.4.4 |
| Responsive design | web_reflow_test_cremotemcp |
- | 1.4.10 |
| Visual documentation | web_screenshot_cremotemcp |
- | Evidence capture |
| Custom JavaScript testing | console_command_cremotemcp |
- | Advanced scenarios |
Standard Testing Sequence
1. web_inject_axe_cremotemcp # Inject axe-core library
2. web_run_axe_cremotemcp # Run comprehensive automated tests
3. web_contrast_check_cremotemcp # Detailed contrast analysis
4. web_keyboard_test_cremotemcp # Keyboard navigation testing
5. web_zoom_test_cremotemcp # Zoom functionality testing
6. web_reflow_test_cremotemcp # Responsive design testing
Tool Usage Patterns
Pattern 1: Initial Audit
// Step 1: Inject axe-core
{
"tool": "web_inject_axe_cremotemcp",
"arguments": {
"timeout": 30
}
}
// Step 2: Run comprehensive tests
{
"tool": "web_run_axe_cremotemcp",
"arguments": {
"run_only": ["wcag2a", "wcag2aa", "wcag21aa"],
"timeout": 30
}
}
// Step 3: Analyze results and run specialized tests based on findings
Pattern 2: Contrast-Specific Testing
// For pages with known or suspected contrast issues
{
"tool": "web_contrast_check_cremotemcp",
"arguments": {
"selector": "body", // Test entire page
"timeout": 10
}
}
// For specific sections
{
"tool": "web_contrast_check_cremotemcp",
"arguments": {
"selector": ".main-content", // Test specific area
"timeout": 10
}
}
Pattern 3: Keyboard Navigation Testing
{
"tool": "web_keyboard_test_cremotemcp",
"arguments": {
"timeout": 10
}
}
// Analyze output for:
// - not_focusable: Elements that should be keyboard accessible but aren't
// - no_focus_indicator: Elements missing visible focus indicators
// - keyboard_trap: Elements that trap keyboard focus
Pattern 4: Zoom and Responsive Testing
// Test zoom levels (WCAG 1.4.4)
{
"tool": "web_zoom_test_cremotemcp",
"arguments": {
"zoom_levels": [1.0, 2.0, 4.0],
"timeout": 10
}
}
// Test responsive breakpoints (WCAG 1.4.10)
{
"tool": "web_reflow_test_cremotemcp",
"arguments": {
"widths": [320, 768, 1280],
"timeout": 10
}
}
Pattern 5: Visual Documentation
// Capture baseline
{
"tool": "web_screenshot_cremotemcp",
"arguments": {
"output": "/tmp/baseline.png",
"timeout": 5
}
}
// Capture at 200% zoom
{
"tool": "web_screenshot_cremotemcp",
"arguments": {
"output": "/tmp/zoom-200.png",
"zoom_level": 2.0,
"timeout": 5
}
}
// Capture mobile view
{
"tool": "web_screenshot_cremotemcp",
"arguments": {
"output": "/tmp/mobile-320.png",
"width": 320,
"height": 568,
"timeout": 5
}
}
Interpreting Results
Axe-Core Results
{
"violations": [
{
"id": "color-contrast",
"impact": "serious", // critical, serious, moderate, minor
"description": "Elements must have sufficient color contrast",
"nodes": [
{
"html": "<p class=\"text-gray\">Low contrast text</p>",
"target": [".text-gray"],
"failureSummary": "Fix any of the following:\n Element has insufficient color contrast of 3.2:1 (foreground color: #808080, background color: #ffffff, font size: 12.0pt (16px), font weight: normal). Expected contrast ratio of 4.5:1"
}
]
}
],
"passes": [...], // Tests that passed
"incomplete": [...], // Tests requiring manual review
"inapplicable": [...] // Tests not applicable to this page
}
Action Priority:
- Critical/Serious violations - Fix immediately
- Moderate violations - Fix in current sprint
- Minor violations - Fix when convenient
- Incomplete - Manually review and test
- Passes - Document for compliance
Contrast Check Results
WCAG AA Violations:
- p:nth-of-type(3): 3.2:1 (required: 4.5:1)
Text: This text has insufficient contrast
Colors: rgb(128, 128, 128) on rgb(255, 255, 255)
Remediation:
- Darken foreground color or lighten background
- Use contrast ratio calculator to find compliant colors
- Test with
web_contrast_check_cremotemcpafter fixes
Keyboard Test Results
High Severity Issues:
- not_focusable: Interactive element is not keyboard focusable
Element: div[role="button"]
- no_focus_indicator: Interactive element lacks visible focus indicator
Element: button.submit-btn
Remediation:
not_focusable: Addtabindex="0"or use semantic HTML (<button>instead of<div>)no_focus_indicator: Add CSS:focusstyles with visible outline/borderkeyboard_trap: Review JavaScript event handlers and focus management
Zoom Test Results
Zoom 400% ✗ FAIL:
Horizontal Scroll: true
Overflowing Elements: 3
Text Readable: true
Remediation:
- Use responsive units (rem, em, %) instead of fixed pixels
- Implement CSS media queries for zoom levels
- Test with
max-width: 100%on images and containers
Reflow Test Results
320px Width ✗ FAIL:
Horizontal Scroll: true
Responsive Layout: false
Overflowing Elements: 5
Remediation:
- Implement mobile-first responsive design
- Use CSS Grid or Flexbox with
flex-wrap - Test with
overflow-x: hiddencautiously (may hide content)
Common Workflows
Workflow 1: New Page Audit
1. Navigate to page
2. Run web_inject_axe_cremotemcp
3. Run web_run_axe_cremotemcp with wcag2aa tags
4. If violations found:
a. Run web_contrast_check_cremotemcp for contrast issues
b. Run web_keyboard_test_cremotemcp for keyboard issues
5. Run web_zoom_test_cremotemcp
6. Run web_reflow_test_cremotemcp
7. Capture screenshots for documentation
8. Generate report with all findings
Workflow 2: Regression Testing
1. Navigate to page
2. Run web_run_axe_cremotemcp
3. Compare results with baseline
4. If new violations:
a. Run specialized tests for affected areas
b. Capture screenshots showing issues
5. Report regressions
Workflow 3: Contrast-Focused Audit
1. Navigate to page
2. Run web_contrast_check_cremotemcp on entire page
3. For each violation:
a. Capture screenshot of affected element
b. Document current and required contrast ratios
c. Suggest color adjustments
4. After fixes, re-run web_contrast_check_cremotemcp
5. Verify all violations resolved
Workflow 4: Keyboard Accessibility Audit
1. Navigate to page
2. Run web_keyboard_test_cremotemcp
3. Analyze tab order for logical sequence
4. For each issue:
a. Document element and issue type
b. Suggest remediation (tabindex, semantic HTML, focus styles)
5. After fixes, re-run web_keyboard_test_cremotemcp
6. Manually verify complex interactions
Error Handling
Common Errors and Solutions
Error: "Failed to inject library"
Solution: Check network connectivity, try alternative CDN, or increase timeout
Error: "Evaluation timed out"
Solution: Increase timeout parameter, test on smaller page sections
Error: "No tab available"
Solution: Navigate to a page first using web_navigate_cremotemcp
Error: "Failed to get page"
Solution: Verify tab ID is valid, check if page is still loaded
Best Practices for LLM Agents
1. Always Start with Axe-Core
Axe-core provides the broadest coverage (~57% of WCAG 2.1 AA). Use it as the foundation, then run specialized tests based on findings.
2. Test in Logical Order
Automated (axe) → Specialized (contrast, keyboard) → Visual (zoom, reflow) → Documentation (screenshots)
3. Provide Context in Reports
When reporting issues, include:
- WCAG criterion violated
- Severity/impact level
- Specific element(s) affected
- Current state (e.g., contrast ratio 3.2:1)
- Required state (e.g., contrast ratio 4.5:1)
- Suggested remediation
4. Capture Evidence
Always capture screenshots when documenting issues:
{
"tool": "web_screenshot_cremotemcp",
"arguments": {
"output": "/tmp/issue-contrast-button.png"
}
}
5. Verify Fixes
After suggesting fixes, re-run the relevant tests to verify resolution:
1. Suggest fix
2. Wait for implementation
3. Re-run specific test
4. Confirm issue resolved
6. Know the Limitations
These tools cannot test:
- Semantic meaning of content
- Cognitive load
- Time-based media (captions, audio descriptions)
- Complex user interactions
- Context-dependent issues
Always recommend manual testing with assistive technologies for comprehensive audits.
Integration with Development Workflow
Pre-Commit Testing
# Run quick accessibility check before commit
cremote inject-axe && cremote run-axe --run-only wcag2aa
CI/CD Integration
# Run full accessibility suite in CI
- cremote inject-axe
- cremote run-axe > axe-results.json
- cremote contrast-check > contrast-results.txt
- cremote keyboard-test > keyboard-results.txt
- cremote zoom-test > zoom-results.txt
- cremote reflow-test > reflow-results.txt
Pull Request Reviews
1. Run accessibility tests on PR branch
2. Compare with main branch baseline
3. Report new violations in PR comments
4. Block merge if critical violations found
Quick Command Reference
# Inject axe-core
cremote inject-axe
# Run comprehensive tests
cremote run-axe --run-only wcag2a,wcag2aa,wcag21aa
# Check contrast
cremote contrast-check --selector body
# Test keyboard navigation
cremote keyboard-test
# Test zoom levels
cremote zoom-test --zoom-levels 1.0,2.0,4.0
# Test responsive design
cremote reflow-test --widths 320,768,1280
# Capture screenshot
cremote screenshot --output /tmp/screenshot.png
# Capture screenshot at zoom level
cremote screenshot --output /tmp/zoom-200.png --zoom-level 2.0
# Capture screenshot at specific viewport
cremote screenshot --output /tmp/mobile.png --width 320 --height 568
# Get accessibility tree
cremote get-accessibility-tree --include-contrast true
# Execute custom JavaScript with library injection
cremote console-command --command "axe.run()" --inject-library axe
Resources
- WCAG 2.1 Quick Reference: https://www.w3.org/WAI/WCAG21/quickref/
- Axe-Core Rules: https://github.com/dequelabs/axe-core/blob/develop/doc/rule-descriptions.md
- Contrast Ratio Calculator: https://contrast-ratio.com/
- WebAIM Resources: https://webaim.org/resources/
For LLM Agents: This guide is designed for programmatic use. Always provide specific, actionable recommendations based on test results. Include WCAG criterion numbers, severity levels, and concrete remediation steps in your reports.