Skip to content

Add AccessLint scan engine - #241

Merged
kzhou314 merged 16 commits into
mainfrom
accesslint-engine-prototype
Jul 6, 2026
Merged

Add AccessLint scan engine#241
kzhou314 merged 16 commits into
mainfrom
accesslint-engine-prototype

Conversation

@kzhou314

Copy link
Copy Markdown
Contributor

Closes https://github.com/github/accessibility/issues/10666

Adds AccessLint as a built-in scan engine alongside Axe. Opt in via the scans input, e.g. ["axe", "accesslint"]. With no scans input the default stays axe-only.

Copilot AI review requested due to automatic review settings June 24, 2026 20:27
@kzhou314
kzhou314 requested a review from a team as a code owner June 24, 2026 20:27
GitHub Advanced Security started work on behalf of kzhou314 June 24, 2026 20:27 View session
GitHub Advanced Security finished work on behalf of kzhou314 June 24, 2026 20:28

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds AccessLint as an additional built-in scan engine in the find GitHub Action, alongside Axe, with selection controlled via the scans input while preserving the default behavior (Axe-only when scans is omitted).

Changes:

  • Introduces an AccessLint scan path (runAccesslintScan) and wires it into findForUrl based on a new scans context flag.
  • Updates scans parsing logic to treat axe and accesslint as core engines and everything else as plugin names.
  • Adds dependencies and test coverage for the new scan engine, plus updates action input documentation.
Show a summary per file
File Description
.github/actions/find/tests/findForUrl.test.ts Adds tests ensuring AccessLint runs when selected and composes with Axe/plugins.
.github/actions/find/src/scansContextProvider.ts Extends scan-selection context to include AccessLint and adjusts plugin detection.
.github/actions/find/src/findForUrl.ts Adds AccessLint scan execution and maps AccessLint violations into findings.
.github/actions/find/package.json Adds @accesslint/playwright and @playwright/test dependencies.
.github/actions/find/package-lock.json Locks new dependencies and updates Playwright resolution.
.github/actions/find/action.yml Documents new core engine behavior for the scans input.

Copilot's findings

Tip

Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Files not reviewed (1)
  • .github/actions/find/package-lock.json: Generated file
  • Files reviewed: 5/6 changed files
  • Comments generated: 5

Comment thread .github/actions/find/src/scansContextProvider.ts
Comment thread .github/actions/find/src/findForUrl.ts Outdated
Comment thread .github/actions/find/tests/findForUrl.test.ts Outdated
Comment thread .github/actions/find/tests/findForUrl.test.ts Outdated
Comment thread .github/actions/find/tests/findForUrl.test.ts Outdated
GitHub Advanced Security started work on behalf of kzhou314 June 24, 2026 20:40 View session
GitHub Advanced Security finished work on behalf of kzhou314 June 24, 2026 20:40
…nd pass UrlConfig in tests)

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
GitHub Advanced Security started work on behalf of kzhou314 June 24, 2026 20:50 View session
@kzhou314
kzhou314 requested a review from JoyceZhu June 24, 2026 20:50
GitHub Advanced Security finished work on behalf of kzhou314 June 24, 2026 20:50
GitHub Advanced Security started work on behalf of kzhou314 June 24, 2026 20:55 View session
GitHub Advanced Security finished work on behalf of kzhou314 June 24, 2026 20:56
GitHub Advanced Security started work on behalf of kzhou314 June 24, 2026 23:08 View session
GitHub Advanced Security finished work on behalf of kzhou314 June 24, 2026 23:08
…totype

# Conflicts:
#	.github/actions/find/src/findForUrl.ts
#	README.md
GitHub Advanced Security started work on behalf of kzhou314 June 26, 2026 18:36 View session
GitHub Advanced Security finished work on behalf of kzhou314 June 26, 2026 18:37
GitHub Advanced Security started work on behalf of kzhou314 June 27, 2026 00:12 View session
GitHub Advanced Security finished work on behalf of kzhou314 June 27, 2026 00:13
GitHub Advanced Security started work on behalf of kzhou314 June 27, 2026 01:05 View session
GitHub Advanced Security finished work on behalf of kzhou314 June 27, 2026 01:06
GitHub Advanced Security finished work on behalf of kzhou314 June 29, 2026 17:01
GitHub Advanced Security started work on behalf of kzhou314 June 29, 2026 17:15 View session
GitHub Advanced Security finished work on behalf of kzhou314 June 29, 2026 17:15
GitHub Advanced Security started work on behalf of kzhou314 June 29, 2026 17:29 View session
GitHub Advanced Security finished work on behalf of kzhou314 June 29, 2026 17:29
GitHub Advanced Security started work on behalf of kzhou314 June 29, 2026 21:16 View session
GitHub Advanced Security finished work on behalf of kzhou314 June 29, 2026 21:16
Comment thread AXE_VS_ACCESSLINT.md Outdated
Co-authored-by: Joyce Zhu <joycezhu@github.com>
GitHub Advanced Security started work on behalf of kzhou314 June 29, 2026 23:13 View session
GitHub Advanced Security finished work on behalf of kzhou314 June 29, 2026 23:13
Comment thread AXE_VS_ACCESSLINT.md Outdated
Co-authored-by: Joyce Zhu <joycezhu@github.com>
GitHub Advanced Security started work on behalf of kzhou314 July 1, 2026 19:50 View session
GitHub Advanced Security finished work on behalf of kzhou314 July 1, 2026 19:51
Comment thread AXE_VS_ACCESSLINT.md Outdated
GitHub Advanced Security started work on behalf of kzhou314 July 1, 2026 19:58 View session
GitHub Advanced Security finished work on behalf of kzhou314 July 1, 2026 19:58
# Conflicts:
#	.github/actions/find/action.yml
#	.github/actions/find/src/scansContextProvider.ts
GitHub Advanced Security started work on behalf of kzhou314 July 2, 2026 20:50 View session
GitHub Advanced Security finished work on behalf of kzhou314 July 2, 2026 20:50
@kzhou314
kzhou314 merged commit c018ad2 into main Jul 6, 2026
7 checks passed
@kzhou314
kzhou314 deleted the accesslint-engine-prototype branch July 6, 2026 18:08
@taarikashenafi taarikashenafi mentioned this pull request Jul 24, 2026
taarikashenafi added a commit that referenced this pull request Jul 24, 2026
## Summary

Cuts the v3.4.0 minor release by merging the reviewed changes on `main`
since immutable release `v3.3.0` into the stable `v3` action branch.

### What's new

- **NPM scanner plugins** — object entries in `scans` can install and
load allowlisted first-party packages at runtime, including a pinned
version
([#242](#242)).
- **AccessLint engine** — `accesslint` is available as a built-in
alternative or complement to Axe, with comparison and selection guidance
([#241](#241)).
- **Alt-text plugin documentation** — documents
`@github/accessibility-scanner-alt-text-plugin` and the object `scans`
configuration
([#247](#247)).

### Maintenance

- Update `ruby/setup-ruby`
([#246](#246),
[#248](#248)).
- Update `actions/setup-node` and patched `brace-expansion`
([#248](#248),
[#249](#249)).

## Upgrade notes

This is additive and backward-compatible. Existing workflows using
`github/accessibility-scanner@v3` need no configuration changes. Axe
remains the default when `scans` is omitted.

To pin the currently published alt-text plugin:

```yaml
scans: |
  ["axe", {"name": "alt-text-scan", "package": "@github/accessibility-scanner-alt-text-plugin", "version": "1.0.0"}]
```

Only allowlisted first-party NPM plugins are loaded. Package lifecycle
scripts are disabled during installation.

## Validation

- `npm run lint` — passed on `main` at `096ac67`
- `npm run format:check` — passed
- Action unit tests — 81 passed
- `.github/actions/find` TypeScript build — passed
- Repository `Test` workflow — passed:
https://github.com/github/accessibility-scanner/actions/runs/30118540795
- Manual local integration using
`@github/accessibility-scanner-alt-text-plugin@1.0.0` with object
`scans` syntax — package installed and loaded through the scanner plugin
manager; a local page with `alt="image.jpg"` produced the expected
`filename-alt-text` finding
- Root production dependency audit — 0 vulnerabilities

## Release procedure after approval

1. Merge this PR using a merge commit, preserving the established `main`
→ `v3` release history.
2. Validate the resulting `v3` commit.
3. Publish immutable GitHub release/tag `v3.4.0` from `v3` and verify
`github/accessibility-scanner@v3` and `v3.4.0` contain #242 and the
intended release delta.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants