Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/github/accessibilityjs

Client side accessibility error scanner.
https://github.com/github/accessibilityjs

accessibility

Last synced: 3 months ago
JSON representation

Client side accessibility error scanner.

Awesome Lists containing this project

README

        

# accessibilityjs ![build status](https://travis-ci.org/github/accessibilityjs.svg?branch=master)

Client side accessibility error scanner.

## Install

```
npm install accessibilityjs --save
```

## Usage

```javascript
import {scanForProblems} from 'accessibilityjs'

function logError(error) {
error.element.classList.add('accessibility-error')
error.element.addEventListener('click', function () {
alert(`${error.name}\n\n${error.message}`)
}, {once: true})
}

document.addEventListener('DOMContentLoaded', function() {
scanForProblems(document, logError)
})
```

List of errors:

- `ImageWithoutAltAttributeError`
- `ElementWithoutLabelError`
- `LinkWithoutLabelOrRoleError`
- `LabelMissingControlError`
- `InputMissingLabelError`
- `ButtonWithoutLabelError`
- `ARIAAttributeMissingError`

## Scenario

In GitHub we use this script to scan for inaccessible elements in development and production staff mode. We style the elements with red borders in the `logError` function passed in, and add a click handler explaining the reasons.

![Red borders are added to offending elements example](https://user-images.githubusercontent.com/1153134/31491689-bb8d8068-af0d-11e7-862b-01b059e13ba1.png)

![An alert pops up on clicking the elements](https://user-images.githubusercontent.com/1153134/31491972-c8547512-af0e-11e7-9d0d-db116eb7cf58.png)

## Browser support

- Chrome
- Firefox
- Safari 6+
- Internet Explorer 9+
- Microsoft Edge

Internet Explorer and Edge require a polyfill for [`closest`](https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill).

## Development

```bash
> npm install
> npm test
> npm run example
```