Skip to main content

Crate auditmysite

Crate auditmysite 

Source
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

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::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::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 screen_reader::navigation_views;
pub use screen_reader::NavigationViews;
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 the ai-transparency Cargo feature to do anything — see module.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-display convention.
error
Error types for AuditMySit
html_conform
HTML5 spec-conformance checking via the html-conform crate.
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
IgnoredReadingNode
Diagnostic entry for ignored AXNodes skipped by the standard reading order.
ReadingItem
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.