Skip to content

Automated Scan Tools — Complete Guide

DodaTech Updated 2026-06-28 3 min read

In this tutorial, you will learn about Automated Scan Tools. We cover key concepts, practical examples, and best practices to help you master this topic.

Automated scan tools are the first phase of any Accessibility audit, using axe-core, Lighthouse, and WAVE to rapidly identify technical violations across all in-scope pages before manual evaluation begins.

What You'll Learn

You will configure automated scans for audit use, batch scan multiple pages, filter results by WCAG criteria, interpret findings in audit context, and export results for report integration.

Why It Matters

Automated scans provide the foundation of an audit. They catch technical violations (missing alt text, insufficient contrast, missing labels) that would waste manual testing time. They also provide quantitative metrics for tracking improvement.

Real-World Use

An auditor scans 30 pages with axe-core CLI in a batch script. The scan completes in 3 minutes, finding 142 violations across all pages. The auditor groups violations by type, identifies the 5 most common patterns, and begins manual testing with this knowledge.

Automated Scan Workflow

flowchart TD
  A[URL List] --> B[Batch Scan]
  B --> C[axe-core]
  B --> D[Lighthouse]
  B --> E[WAVE]
  C --> F[Aggregate Results]
  D --> F
  E --> F
  F --> G[Group by Pattern]
  G --> H[Identify Common Issues]
  H --> I[Manual Testing Focus]

Batch Scanning

Create a script that runs automated scans across all in-scope URLs and aggregates results.

#!/bin/bash
# Batch scan script for audit
URLS=(
  "https://example.com"
  "https://example.com/about"
  "https://example.com/products"
  "https://example.com/contact"
)

for url in "${URLS[@]}"; do
  echo "Scanning: $url"
  npx axe "$url" --save "results/$(echo $url | sed 's/[^a-zA-Z0-9]/_/g').json"
done
// Aggregate results across multiple pages
const fs = require('fs');
const path = require('path');

function aggregateResults(resultsDir) {
  const files = fs.readdirSync(resultsDir);
  const allViolations = {};

  files.forEach(file => {
    const data = JSON.parse(fs.readFileSync(path.join(resultsDir, file)));
    data.violations.forEach(v => {
      if (!allViolations[v.id]) {
        allViolations[v.id] = {
          rule: v.id,
          help: v.help,
          impact: v.impact,
          occurrences: 0,
          pages: []
        };
      }
      allViolations[v.id].occurrences++;
      allViolations[v.id].pages.push({
        url: data.url,
        selector: v.nodes[0]?.target?.join(' ')
      });
    });
  });

  return Object.values(allViolations).sort((a, b) => b.occurrences - a.occurrences);
}

const aggregated = aggregateResults('./results');
console.table(aggregated.map(r => ({
  rule: r.rule,
  occurrences: r.occurrences,
  impact: r.impact
})));
<!-- Automated scan finding example -->
<!-- axe-core would flag this -->
<button class="icon-btn">
  <span class="icon">X</span>
</button>
<!-- Missing accessible name -->

Common Mistakes

  • Running scans only on the homepage
  • Not configuring tool rules to match audit scope
  • Ignoring the context of automated findings
  • Not deduplicating issues across pages
  • Saving results without metadata (URL, date, tool version)
  • Running scans before pages fully load (SPA issues)
  • Not documenting which tool found which issue

Practice and Challenge

Practice 1: Write a bash script to batch scan 5 URLs with axe-core. Practice 2: Aggregate scan results from multiple pages into one report. Practice 3: Group violations by WCAG criterion across all pages. Practice 4: Identify the top 3 most common violation types. Practice 5: Compare axe-core and Lighthouse results for the same page.

Challenge: Create an automated scan pipeline that scans 20 pages of a sample site, aggregates results by WCAG criterion, generates a summary report with violation counts per page and per criterion, and identifies which issues are unique to specific page templates.

FAQ

Should I use multiple tools or one?

Use at least two tools. Axe-core and Lighthouse together provide complementary coverage with different rule sets.

How do I handle duplicate issues across tools?

Map each issue to its WCAG criterion and deduplicate by criterion and selector across tools.

What if automated scans miss issues?

Automated scans catch only 30 percent of issues. Manual testing is essential for the remaining 70 percent.

How do I handle third-party content in scans?

Include third-party content in scans but document separately as third-party issues in the report.

Should I scan mobile and desktop views?

Yes. Scan both viewports separately as they may produce different results.

How do I save and organize scan results?

Save results with ISO date and URL in filename. Organize in folders by scan date for historical comparison.

Mini Project

Build a scan result aggregator that takes a folder of axe-core JSON results and produces: a summary table of violations by type, a per-page violation count chart, a list of unique violations with affected pages, and a comparison against the previous scan showing new and fixed issues.

What's Next

Manual Review Process covers the manual review phase of accessibility audits.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro