Rust无障碍检测工具a11ywatch_cli的使用,a11ywatch_cli提供高效网站可访问性检查和合规性测试

Rust无障碍检测工具a11ywatch_cli的使用,a11ywatch_cli提供高效网站可访问性检查和合规性测试

安装

  1. 通过cargo安装:
cargo install a11ywatch_cli

可选功能:

  • 如果使用Lite模式,可以添加grpc功能标志来编译protoc和tonic
  • 需要安装Protoc进行编译
  • 可以通过dist-vendor功能标志在安装时使用vendoring OpenSSL

Linux系统要求

在Ubuntu上需要OpenSSL:

apt-get update && apt upgrade -y && apt-get install -y --no-install-recommends build-essential gcc cmake libc6 libssl-dev pkg-config

Windows系统要求

需要安装Cmake。

构建

获取CLI的几种方式:

# 通过cargo安装
cargo install a11ywatch_cli
# 或通过npm安装
npm i a11ywatch-cli -g

初始化构建:

a11ywatch build

启动

启动实例的命令(需要Docker运行):

# 基本启动
a11ywatch start

# 启动并附带前端(默认端口3270)
a11ywatch start -f

# 本地启动(使用nodejs单机模式)
a11ywatch start --local

# 在Docker中使用单机模式
a11ywatch start --standalone

# 升级实例
a11ywatch start --upgrade

操作示例

# 扫描URL并将结果输出到文件
a11ywatch scan --url https://a11ywatch.com > results.json

# 扫描URL并尝试修复代码
a11ywatch scan --url https://a11ywatch.com --fix

# 扫描并将结果保存为CSV
a11ywatch scan --save --csv --url https://a11ywatch.com

# 多页面扫描网站
a11ywatch crawl --url https://a11ywatch.com > results.json

# 多页面扫描包含子域名
a11ywatch crawl --url https://a11ywatch.com -S > results.json

# 多页面扫描包含子域名和所有TLD扩展
a11ywatch crawl --url https://a11ywatch.com -S -t > results.json

# 多页面扫描并以检查清单形式输出结果
a11ywatch crawl --url https://a11ywatch.com -d -n -s && a11ywatch --results-parsed-list

# 爬取并将结果保存为CSV
a11ywatch crawl --save --csv --url https://a11ywatch.com

环境变量配置

可以配置以下环境变量增强系统功能:

.env文件示例:

COMPUTER_VISION_SUBSCRIPTION_KEY="REPLACE_WITH_KEY"
COMPUTER_VISION_ENDPOINT="REPLACE_WITH_ENDPOINT"
PAGESPEED_API_KEY="REPLACE_WITH_PAGESPEED_API_KEY"
# 设置为目录或true以启用Litemode中的录制
PAGEMIND_RECORD=

也可以通过CLI配置设置:

# 配置计算机视觉凭证
a11ywatch --set-cv-token $mycv_token
a11ywatch --set-cv-url https://$myvcvname.cognitiveservices.azure.com/
a11ywatch --set-recording ./recordings

帮助提示

  • 如果在Docker容器中运行本地网站,需要使用计算机主机名而不是localhost
  • 停止服务时需要传递与构建/启动实例时相同的标志

完整示例代码

// 这是一个使用a11ywatch_cli进行网站可访问性检查的完整示例

fn main() {
    // 安装a11ywatch_cli (如果尚未安装)
    // std::process::Command::new("cargo")
    //     .arg("install")
    //     .arg("a11ywatch_cli")
    //     .status()
    //     .expect("Failed to install a11ywatch_cli");

    // 构建实例
    std::process::Command::new("a11ywatch")
        .arg("build")
        .status()
        .expect("Failed to build a11ywatch instance");

    // 启动实例
    std::process::Command::new("a11ywatch")
        .arg("start")
        .status()
        .expect("Failed to start a11ywatch instance");

    // 扫描网站并保存结果为JSON
    let output = std::process::Command::new("a11ywatch")
        .arg("scan")
        .arg("--url")
        .arg("https://example.com")
        .output()
        .expect("Failed to scan website");

    // 处理扫描结果
    if output.status.success() {
        let results = String::from_utf8_lossy(&output.stdout);
        println!("扫描结果: {}", results);
        
        // 可以进一步解析JSON结果
        // let parsed: Value = serde_json::from_str(&results).unwrap();
    } else {
        eprintln!("扫描失败: {}", String::from_utf8_lossy(&output.stderr));
    }

    // 多页面扫描网站
    let crawl_output = std::process::Command::new("a11ywatch")
        .arg("crawl")
        .arg("--url")
        .arg("https://example.com")
        .arg("--save")
        .arg("--csv")
        .output()
        .expect("Failed to crawl website");

    if crawl_output.status.success() {
        println!("多页面扫描完成,结果已保存为CSV");
    }
}

支持架构

Mac、Linux和Windows系统。

功能

  • grpc - 使用gRPC连接到Litemode实例

1 回复

Rust无障碍检测工具a11ywatch_cli使用指南

工具介绍

a11ywatch_cli是一个用Rust编写的命令行工具,用于高效检测网站的可访问性(a11y)和合规性问题。它能够快速扫描网页,识别可能影响残障人士访问的问题,并帮助开发者确保网站符合WCAG(Web内容可访问性指南)标准。

安装方法

使用Cargo安装

cargo install a11ywatch_cli

二进制文件下载

也可以从项目发布页面下载预编译的二进制文件。

基本使用方法

扫描单个URL

a11ywatch_cli scan --url https://example.com

扫描多个URL

a11ywatch_cli scan --url https://example.com https://example.org

保存结果到JSON文件

a11ywatch_cli scan --url https://example.com --output results.json

高级选项

设置并发请求数

a11ywatch_cli scan --url https://example.com --concurrency 10

忽略特定规则

a11ywatch_cli scan --url https://example.com --ignore "image-alt,aria-hidden-focus"

设置超时时间(秒)

a11ywatch_cli scan --url https://example.com --timeout 30

示例输出

运行命令后,你会看到类似这样的输出:

Scanning: https://example.com
================================
Found 8 accessibility issues:

1. [Critical] Missing alt text on image (img#logo)
   - WCAG 1.1.1 Non-text Content
   - Element: <img id="logo" src="/logo.png">

2. [Warning] Low contrast text (p.description)
   - WCAG 1.4.3 Contrast (Minimum)
   - Element: <p class="description">Welcome to...</p>
   - Contrast ratio: 3.2:1 (should be at least 4.5:1)

3. [Error] Missing form label (input#search)
   - WCAG 1.3.1 Info and Relationships
   - Element: <input type="text" id="search">

...

集成到CI/CD流程

可以将a11ywatch_cli集成到你的持续集成流程中,例如在GitHub Actions中:

name: Accessibility Check

on: [push]

jobs:
  a11y-check:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Install a11ywatch_cli
      run: cargo install a11ywatch_cli
    - name: Run accessibility scan
      run: a11ywatch_cli scan --url https://your-site.com --fail-on-error

退出代码

  • 0: 扫描完成,没有错误
  • 1: 扫描完成,发现错误
  • 2: 扫描过程中发生错误

可以使用--fail-on-error选项在发现可访问性问题时使命令返回非零退出码,便于CI/CD流程处理。

完整示例演示

下面是一个完整的a11ywatch_cli使用示例,展示了从安装到扫描的完整流程:

  1. 首先安装工具:
# 使用cargo安装最新版本
cargo install a11ywatch_cli
  1. 扫描一个网站并输出结果:
# 扫描单个网站并显示详细结果
a11ywatch_cli scan --url https://example.com
  1. 扫描多个网站并保存结果:
# 扫描多个网站并将结果保存为JSON格式
a11ywatch_cli scan \
  --url https://example.com https://example.org \
  --output scan_results.json \
  --concurrency 5 \
  --timeout 20
  1. 在CI/CD中使用(以GitHub Actions为例):
name: Accessibility Testing

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  accessibility:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    
    - name: Install Rust
      uses: actions-rs/toolchain@v1
      with:
        toolchain: stable
        profile: minimal
        override: true
    
    - name: Install a11ywatch_cli
      run: cargo install a11ywatch_cli
      
    - name: Run accessibility scan
      run: |
        a11ywatch_cli scan \
          --url https://your-production-site.com \
          --fail-on-error \
          --ignore "color-contrast" \
          --output a11y-report.json
          
    - name: Upload report
      uses: actions/upload-artifact@v3
      with:
        name: accessibility-report
        path: a11y-report.json

总结

a11ywatch_cli是一个快速、高效的网站可访问性检测工具,适合开发者将无障碍检测集成到开发流程中。通过定期扫描,可以确保网站对所有用户都保持可访问性,并符合相关法规要求。

回到顶部