Drop the accessibility tooling that never ran #225

Merged
robbertbos merged 1 commit from chore/drop-unused-axe-tooling into main 2026-08-05 20:08:50 +00:00
Owner

@axe-core/cli, jest-axe and @types/jest-axe are declared in frontend/package.json but nothing imports or invokes them - no source file, no npm script, no CI step. Verified by grep over frontend/src, frontend/tests, the scripts block and .forgejo/workflows/: zero hits.

A safety net that exists only in the dependency list is worse than having none, because it reads as covered.

What removing them buys

Before (main) After
Packages in the lockfile 636 502
High-severity npm audit findings 6 2

@axe-core/cli pulled in chromedriver, which pulled in adm-zip - that chain accounted for four of the six findings. What remains is brace-expansion and undici, both transitive under other dev tooling.

Not an argument against accessibility testing

Issue #223 tracks a real WCAG 2.4.1 level A failure (no skip link, so keyboard users cannot bypass TopNav). Automated checking is worth having - but it should be wired into an npm script and a CI job deliberately, not left as three dependencies that look like they run.

Verification

vue-tsc typecheck, eslint (0 errors), vitest 651 passed in 89 files, vite build, Playwright e2e 64 passed / 3 skipped, pre-commit run --all-files.

`@axe-core/cli`, `jest-axe` and `@types/jest-axe` are declared in `frontend/package.json` but nothing imports or invokes them - no source file, no npm script, no CI step. Verified by grep over `frontend/src`, `frontend/tests`, the `scripts` block and `.forgejo/workflows/`: zero hits. A safety net that exists only in the dependency list is worse than having none, because it reads as covered. ## What removing them buys | | Before (main) | After | |---|---|---| | Packages in the lockfile | 636 | 502 | | High-severity `npm audit` findings | 6 | 2 | `@axe-core/cli` pulled in `chromedriver`, which pulled in `adm-zip` - that chain accounted for four of the six findings. What remains is `brace-expansion` and `undici`, both transitive under other dev tooling. ## Not an argument against accessibility testing Issue #223 tracks a real WCAG 2.4.1 level A failure (no skip link, so keyboard users cannot bypass `TopNav`). Automated checking is worth having - but it should be wired into an npm script and a CI job deliberately, not left as three dependencies that look like they run. ## Verification `vue-tsc` typecheck, eslint (0 errors), vitest 651 passed in 89 files, `vite build`, Playwright e2e 64 passed / 3 skipped, `pre-commit run --all-files`.
Drop the accessibility tooling that never ran
All checks were successful
CI / release-scripts (push) Successful in 6s
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 10s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 12s
security-scan / JS SCA (npm audit) (pull_request) Successful in 17s
security-scan / Python SAST (bandit) (pull_request) Successful in 20s
CI / pre-commit (pull_request) Successful in 29s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 40s
CI / backend-test (pull_request) Successful in 53s
test-build / build (backend) (pull_request) Successful in 59s
test-build / build (frontend) (pull_request) Successful in 1m0s
test-build / build (pull_request) Successful in 0s
CI / frontend-test (pull_request) Successful in 1m8s
CI / e2e (pull_request) Successful in 3m47s
CI / backend-test-postgres (pull_request) Successful in 4m34s
security-scan / SBOM (trivy) (push) Successful in 9s
security-scan / Filesystem scan (trivy fs) (push) Successful in 12s
security-scan / JS SCA (npm audit) (push) Successful in 14s
security-scan / Python SAST (bandit) (push) Successful in 19s
CI / pre-commit (push) Successful in 28s
security-scan / Python SCA (pip-audit) (push) Successful in 39s
CI / backend-test (push) Successful in 53s
publish-main / build (backend) (push) Successful in 1m4s
publish-main / build (frontend) (push) Successful in 1m4s
publish-main / build (push) Successful in 0s
CI / frontend-test (push) Successful in 1m8s
CI / e2e (push) Successful in 4m10s
CI / backend-test-postgres (push) Successful in 4m16s
1f198dc855
@axe-core/cli, jest-axe and @types/jest-axe are declared in frontend/package.json
but nothing imports or invokes them: no source file, no npm script, no CI step.
A safety net that exists only in the dependency list is worse than none, because
it reads as covered.

Removing them takes 134 packages out of the tree and four of the six
high-severity npm audit findings with them: @axe-core/cli pulled in chromedriver,
which pulled in adm-zip. What remains is brace-expansion and undici.

Automated accessibility checking is still wanted - issue #223 tracks a real
WCAG 2.4.1 failure. When it is set up it should be wired into a script and CI
deliberately, rather than left as a dependency that looks like it runs.
robbertbos deleted branch chore/drop-unused-axe-tooling 2026-08-05 20:08:50 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
robbertbos/waggle!225
No description provided.