Ann Arbor Accessibility Tool

Ben Pham

0

Software Engineer

Digital Accessibility

Pytest

Python

Ann Arbor was originally an internal project at FormulaFolios and was a collaborative project by multiple contributors. It was part of an ongoing project to better spot, fix, and improve accessibility issues across our sites and clients that we were serving. We made it an open source project as part of our Doing Good initiative as there weren’t as many other low cost options for spotting and fixing accessibility violations besides WAVE API.
It uses Dequeue Axe Core API to crawl and audit sites for accessibility violations.
The original repo can be found on https://github.com/formulafolios/ann-arbor but the old team is now defunct and I am the sole maintainer of the fork on https://github.com/bennpham/ann-arbor.

How It Works

The readme should do a good job explaining on the requirements and functionality of the tool, but ultimately it is a command-line tool that uses Python to crawl and audit a single page or entire site when given a URL or domain. Not all accessibility violations will be found by the tool, but this tool will show you which page have the most errors to allow auditors to priotize which pages to improve on first.
You’ll need to install Python and Chromedriver then you can audit the page via the following commands:
Organize by template (URL path):
python app.py audit --crawl httpbin.org

Organize by page:
python app.py audit --crawl --no-templates httpbin.org

Single page auditing:
python app.py audit httpbin.org

Specific report type (color contrast violations only):
python app.py audit httpbin.org --audit_type design

Specific report type (all violations EXCEPT color contrast):
python app.py audit httpbin.org --audit_type code

You’ll get a handful of json files and a csv file of all of the violations that you have in your audits/httpbin.org/ folder or whatever domain you’re auditing on.

My Contributions

I basically just kept this package up to date as I still use it myself here and there to help out some friends audit their sites for any accessibility violations on top of helping them with SEO related tasks.
Originally the latest version was on Python 3.6.0. The final security fix was Python 3.6.15 and Python 3.6 reached EOL on September 4, 2021.
The latest pull request I made was to update to Python 3.12 which should last until October 2028. The original test suite was nose which was long abandoned and the standard for Python testing is pytest.
Lastly, the original PR requires the internal teams of FormulaFolios to manually run their tests and linters in order to make sure that the code is working and coding best practices are adhere to. There isn’t a strict safeguard in case any test or linter rules fail. Back then, we did not have GitHub CI but there was TravisCI or CircleCI that you can use to handle merging rules. For a smaller project we didn’t utilize those. I added GitHub Actions CI if anyone else wants to contribute to the project. That’ll make it easier to follow a coding guideline to collaborate with multiple people when our linter rules and test pass rules are enforced.
Also a lot of thanks goes to Alicia Evans who was the site accessibility engineer during my time at FormulaFolios who made this project possible.

Future Ideas

As it is, Project Ann Arbor is nice enough as a dev internal use tool. For the average non-technical user, they probably wouldn’t know where to start using it as it’s a command line based tool with a few installation steps.
A nice idea could probably be a web interface that a user could go on, input their website, and get a quick list of what they need to improve on while Project Ann Arbor can generate all of the csv file and audits in the backgroudn while the web based front end can parse that and display it to an average user in a friendlier way to let them know what they’d need to audit similarly to typing in your email address on HaveIBeenPwned to check for data breaches.
Like this project
0

Posted Jan 15, 2025

Internal Python tool that utilizes web crawler and the deque axe Auditor API to crawl through a site for accessibility violations.

Likes

0

Views

0

Clients

FormulaFolios

Tags

Software Engineer

Digital Accessibility

Pytest

Python

Marketing Tag Managers Setup
Marketing Tag Managers Setup
Style Refresh / Redesign
Style Refresh / Redesign
FormulaFolios Data Processing
FormulaFolios Data Processing
Without Them Jewelry
Without Them Jewelry