Expand description
AuditMySite - Resource-efficient WCAG 2.2 AA Accessibility Checker
A fast, accurate accessibility auditing tool written in Rust. Uses Chrome DevTools Protocol (CDP) to extract the Accessibility Tree and analyze it for WCAG violations.
§Features
- Fast: Rust performance with async processing
- Accurate: Uses browser’s native Accessibility Tree
- Focused: automates a documented subset of the 55 WCAG 2.2 A/AA
criteria (see
docs/PARITY_CONTRACT.jsonc), plus a few AAA criteria; AAA coverage is not comprehensive - Flexible: CLI, library, and API interfaces
§Quick Start
use auditmysite::browser::BrowserManager;
use auditmysite::audit::{run_single_audit, PipelineConfig};
use auditmysite::cli::WcagLevel;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Create browser manager (auto-detects Chrome)
let browser = BrowserManager::new().await?;
// Configure the audit
let config = PipelineConfig {
wcag_level: WcagLevel::AA,
full_audit: false,
timeout_secs: 30,
stability_budget_ms: 1500,
verbose: false,
check_performance: false,
check_seo: false,
check_security: false,
check_mobile: false,
check_dark_mode: false,
check_html_conform: false,
check_design_quality: false,
check_ai_transparency: false,
check_dns: false,
check_isolate_third_party_impact: false,
check_ssr_content: false,
check_stack: false,
rule_filter: auditmysite::wcag::RuleFilterConfig::default(),
persist_artifacts: true,
capture_screenshots: false,
capture_element_evidence: false,
dismiss_consent: false,
exclude_selectors: Vec::new(),
interactive: auditmysite::cli::InteractiveMode::Off,
journey_budget_ms: auditmysite::a11y_journey::DEFAULT_BUDGET_MS,
lang: "de".to_string(),
display_mode: None,
};
// Run audit
let report = run_single_audit("https://example.com", &browser, &config).await?;
// Print results
println!("Score: {}", report.accessibility.score);
println!("Violations: {}", report.violation_count());
// Close browser
browser.close().await?;
Ok(())
}§Modules
- Browser and capture:
browser,accessibility(AXTree extraction),interaction,a11y_journey - Accessibility checks:
wcag(rule engine),screen_reader,html_conform,patterns - Further analysis modules:
performance,seo,security,mobile,best_practices,dark_mode,design_quality,journey,ux,content_visibility,ai_visibility,ai_transparency,source_quality,tech_stack,commerce,network - Orchestration and scoring:
audit(pipeline, batch, normalization),taxonomy,assessment,registry - Output:
output(JSON, table, PDF),lint(report-lint),studio(types shared with auditmysite_studio),i18n - Entry points and support:
cli,error,util
See docs/ARCHITECTURE.md for the full module structure.
§WCAG coverage
Which WCAG 2.2 A/AA criteria are automated and which need manual review is frozen in the parity contract.
Re-exports§
pub use ai_visibility::analyze_ai_visibility;pub use ai_visibility::AiVisibilityAnalysis;pub use assessment::signal_from_check;pub use assessment::AssessmentLevel;pub use assessment::ContentArea;pub use assessment::ContentEvidence;pub use assessment::ContentSignal;pub use assessment::EvidenceConfidence;pub use assessment::EvidenceSource;pub use audit::analyze_crawl_links;pub use audit::audit_page;pub use audit::crawl_site;pub use audit::parse_sitemap;pub use audit::read_url_file;pub use audit::run_concurrent_batch;pub use audit::AuditReport;pub use audit::BatchConfig;pub use audit::BatchReport;pub use audit::BrokenLink;pub use audit::BrokenLinkSeverity;pub use audit::CrawlDiagnostics;pub use audit::CrawlNode;pub use audit::CrawlResult;pub use audit::PerformanceResults;pub use audit::PipelineConfig;pub use audit::RedirectChain;pub use audit::Verdict;pub use audit::VerdictResult;pub use browser::detect_all_browsers;pub use browser::resolve_browser;pub use browser::BrowserInstaller;pub use browser::BrowserKind;pub use browser::BrowserManager;pub use browser::BrowserMode;pub use browser::BrowserOptions;pub use browser::BrowserPool;pub use browser::BrowserResolveOptions;pub use browser::BrowserSource;pub use browser::DetectedBrowser;pub use browser::InstallTarget;pub use browser::PoolConfig;pub use browser::ResolvedBrowser;pub use cli::Args;pub use cli::BrowserAction;pub use cli::Command;pub use cli::OutputFormat;pub use cli::WcagLevel;pub use content_visibility::analyze_content_visibility;pub use content_visibility::ContentVisibilityAnalysis;pub use dark_mode::analyze_dark_mode;pub use dark_mode::DarkModeAnalysis;pub use dark_mode::DarkModeIssue;pub use dark_mode::DarkModeIssueKind;pub use error::AuditError;pub use error::Result;pub use journey::analyze_journey;pub use journey::analyze_journey_with_dom_check;pub use journey::JourneyAnalysis;pub use journey::PageIntent;pub use mobile::analyze_mobile_friendliness;pub use mobile::MobileFriendliness;pub use output::format_json_normalized;pub use performance::calculate_performance_score;pub use performance::extract_web_vitals;pub use performance::PerformanceScore;pub use performance::WebVitals;pub use screen_reader::announce;pub use screen_reader::announce_localized;pub use security::analyze_security;pub use security::SecurityAnalysis;pub use seo::analyze_seo;pub use seo::SeoAnalysis;pub use source_quality::analyze_source_quality;pub use source_quality::SourceQualityAnalysis;pub use ux::analyze_ux;pub use ux::UxAnalysis;pub use wcag::Violation;pub use wcag::WcagResults;
Modules§
- a11y_
journey - Accessibility-Journey-Layer — runs interactive journeys against a page after the static AXTree-based audit has finished.
- accessibility
- Accessibility analysis module
- ai_
transparency - AI-transparency analysis: EU AI Act Art. 50 image-provenance check (opt-in,
--ai-transparency, requires theai-transparencyCargo feature to do anything — seemodule.rs). - ai_
visibility - AI Visibility Analysis
- assessment
- Unified assessment type system (issue #51).
- audit
- Audit orchestration module
- best_
practices - Best practices analysis — console errors (#121) and vulnerable libraries (#124).
- browser
- Browser management module
- cli
- CLI module for AuditMySit
- commerce
- Commerce / shop audit.
- content_
visibility - Content Visibility Analysis — issue #54.
- dark_
mode - Dark Mode Analysis
- design_
quality - Design-quality analysis (#528): opt-in, evidence-based UX/readability heuristics from the rendered page.
- display
- Display modes (#653): the BarrierLab
data-displayconvention. - error
- Error types for AuditMySit
- html_
conform - HTML5 spec-conformance checking via the
html-conformcrate. - i18n
- interaction
- Browser interaction primitives for the Accessibility-Journey-Layer.
- journey
- Journey Module — User-flow analysis from AXTree data
- lint
- Deterministic report-lint (#507).
- mobile
- Mobile friendliness analysis module
- network
- Network-level, host-scoped checks that do not require a browser/CDP page
(#545). Currently just DNS configuration; kept as its own top-level module
(mirroring
design_quality/ai_transparency) rather than folded into an existing module, since it is the first check in this codebase that talks to the network directly instead of through the audited page. - output
- Output formatting module
- patterns
- Pattern Detection — structural recognition of UI patterns in the AXTree.
- performance
- Performance analysis module
- registry
- Canonical metric registry (#506).
- screen_
reader - Screen reader audit primitives built from the browser AXTree.
- security
- Security headers analysis module
- seo
- SEO analysis module
- source_
quality - Source Quality Analysis
- studio
- Studio Contract — shared types between auditmysite and auditmysite_studio
- taxonomy
- Taxonomy — Standard-Report-Taxonomie für das Audit-Produkt
- tech_
stack - Tech Stack Detection and Stack-Specific Auditing
- util
- Shared utility functions
- ux
- UX Analysis Module
- wcag
- WCAG Accessibility Rules Module
Structs§
- AXNode
- A single node in the Accessibility Tree
- AXTree
- The complete Accessibility Tree for a page
- Ignored
Reading Node - Diagnostic entry for ignored AXNodes skipped by the standard reading order.
- Reading
Item - A node in the order a screen reader would encounter it in the AXTree.
Enums§
- Severity
- Wie schwer wiegt das Problem — unabhängig davon, wie sicher es ist.
Functions§
- linearize
- Build the default screen reader reading order from an AXTree.
- linearize_
with_ ignored - Build reading order and retain ignored nodes for diagnostics.