Rust无障碍检测工具a11ywatch_cli的使用,a11ywatch_cli提供高效网站可访问性检查和合规性测试
Rust无障碍检测工具a11ywatch_cli的使用,a11ywatch_cli提供高效网站可访问性检查和合规性测试
安装
- 通过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使用示例,展示了从安装到扫描的完整流程:
- 首先安装工具:
# 使用cargo安装最新版本
cargo install a11ywatch_cli
- 扫描一个网站并输出结果:
# 扫描单个网站并显示详细结果
a11ywatch_cli scan --url https://example.com
- 扫描多个网站并保存结果:
# 扫描多个网站并将结果保存为JSON格式
a11ywatch_cli scan \
--url https://example.com https://example.org \
--output scan_results.json \
--concurrency 5 \
--timeout 20
- 在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是一个快速、高效的网站可访问性检测工具,适合开发者将无障碍检测集成到开发流程中。通过定期扫描,可以确保网站对所有用户都保持可访问性,并符合相关法规要求。