All Projects → dequelabs → React Axe

dequelabs / React Axe

Licence: other
[DEPRECATED] Accessibility auditing for React.js applications

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to React Axe

Tgcameraviewcontroller
Custom camera with AVFoundation. Beautiful, light and easy to integrate with iOS projects.
Stars: ✭ 1,432 (+19.23%)
Mutual labels:  deprecated, unmaintained
cleverbot
Deprecated/unmaintained. See https://www.cleverbot.com/api/
Stars: ✭ 23 (-98.08%)
Mutual labels:  deprecated, unmaintained
Cudlr
⛔️ [DEPRECATED] Console for Unity Debugging and Logging Remotely
Stars: ✭ 167 (-86.09%)
Mutual labels:  deprecated, unmaintained
django-snow
ServiceNow Ticket Management App for Django based projects
Stars: ✭ 16 (-98.67%)
Mutual labels:  deprecated, unmaintained
React Heatpack
A 'heatpack' command for quick React development with webpack hot reloading
Stars: ✭ 354 (-70.52%)
Mutual labels:  deprecated, unmaintained
Framework7 With Angularjs Demo App
⛔️ Unmaintained and deprecated!
Stars: ✭ 81 (-93.26%)
Mutual labels:  deprecated, unmaintained
passion
An object-oriented LÖVE game engine
Stars: ✭ 35 (-97.09%)
Mutual labels:  deprecated, unmaintained
Vagrant Librarian Chef
*UNMAINTAINED* A Vagrant plugin to install Chef cookbooks using Librarian-Chef.
Stars: ✭ 80 (-93.34%)
Mutual labels:  deprecated, unmaintained
Deprecated Mapbox Ios Sdk
REPLACED – use https://www.mapbox.com/ios-sdk instead
Stars: ✭ 325 (-72.94%)
Mutual labels:  deprecated, unmaintained
addon-sdk-content-scripts
DEPRECATED | Use WebExtensions instead | Add-ons demonstrating how to use content scripts in the Add-on SDK.
Stars: ✭ 23 (-98.08%)
Mutual labels:  deprecated, unmaintained
jade-babel
Jade plugin for Babel
Stars: ✭ 39 (-96.75%)
Mutual labels:  deprecated, unmaintained
Axe Cli
[Deprecated] A command-line interface for the aXe accessibility testing engine
Stars: ✭ 419 (-65.11%)
Mutual labels:  deprecated, unmaintained
Msx
JSX for Mithril.js 0.x
Stars: ✭ 370 (-69.19%)
Mutual labels:  deprecated, unmaintained
Miniproxy
🚨⚠️ UNMAINTAINED! ⚠️🚨 A simple PHP web proxy.
Stars: ✭ 810 (-32.56%)
Mutual labels:  deprecated, unmaintained
Twoot
An open source light-weight OS X twitter client based on jQuery and Fluid (deprecated!)
Stars: ✭ 61 (-94.92%)
Mutual labels:  deprecated
Knife Role Spaghetti
Knife plugin for Chef to draw dependency graphs for roles. Cut through the spaghetti with a knife.
Stars: ✭ 68 (-94.34%)
Mutual labels:  unmaintained
System
A full-stack framework built from Aura library packages.
Stars: ✭ 61 (-94.92%)
Mutual labels:  deprecated
Anatine
[DEPRECATED] 🐦 Pristine Twitter app
Stars: ✭ 1,102 (-8.24%)
Mutual labels:  deprecated
Sphero Mac Sdk
🚫 DEPRECATED: Sphero SDK for the Mac platform.
Stars: ✭ 70 (-94.17%)
Mutual labels:  deprecated
Onedrive Fuse Fs
Script to mount Microsoft OneDrive (formerly known as SkyDrive) folder as a FUSE filesystem
Stars: ✭ 68 (-94.34%)
Mutual labels:  deprecated

[DEPRECATED] react-axe

No Maintenance Intended

This repository has been deprecated. The package has been moved to axe-core-npm. The package will be available via NPM as @axe-core/react.


React-axe

Test your React application with the axe-core accessibility testing library. Results will show in the Chrome DevTools console.

Usage

Greenkeeper badge

Install the module from NPM or elsewhere

npm install --save-dev react-axe

Initialize the module

Call the exported function passing in the React and ReactDOM objects as well as a timing delay in milliseconds that will be observed between each component change and the time the analysis starts.

var React = require('react');
var ReactDOM = require('react-dom');

if (process.env.NODE_ENV !== 'production') {
  var axe = require('react-axe');
  axe(React, ReactDOM, 1000);
}

Be sure to only run the module in your development environment (as shown in the code above) or else your application will use more resources than necessary when in production. You can use envify to do this as is shown in the example.

Once initialized, the module will output accessibility defect information to the Chrome Devtools console every time a component updates.

Deduplicating

react-axe will deduplicate violations using the rule that raised the violation and the CSS selector and the failureSummary of the specific node. This will ensure that each unique issue will only be printed to the console once.

Debouncing

The third argument to the exported function is the number of milliseconds to wait for component updates to cease before performing an analysis of all the changes. The changes will be batched and analyzed from the closest common ancestor of all the components that changed within the batch. This generally leads to the first analysis for a dynamic application, analyzing the entire page (which is what you want), while subsequent updates will only analyze a portion of the page (which is probably also what you want).

Shadow DOM

With version 3.0.0, react-axe now runs accessibility tests inside of open Shadow DOM. You don't have to do anything special other than run react-axe on an component encapsulated with open Shadow DOM (as opposed to closed). For more information, see the axe-core repo.

Configuration

There is a fourth optional argument that is a configuration object for axe-core. Read about the object here: https://github.com/dequelabs/axe-core/blob/master/doc/API.md#api-name-axeconfigure

var config = {
  rules: [
    {
      id: 'skip-link',
      enabled: true
    }
  ]
};

axe(React, ReactDOM, 1000, config);

Axe-core's context object can be given as a fifth optional argument to specify which element should (and which should not) be tested. Read more from the Axe-core documentation: https://github.com/dequelabs/axe-core/blob/master/doc/API.md#context-parameter

var context = {
  include: [['#preview']]
};

axe(React, ReactDOM, 1000, undefined, context);

Run the example

Run a build in the example directory and start a server to see React-aXe in action in the Chrome Devtools console (opens on localhost:8888):

npm install
cd example
npm install
npm install -g http-server
npm start

Run the tests

Install dependencies in the root directory (which also installs them in the example directory) and then run the tests:

npm install
npm test

To debug tests in the Cypress application:

npm run test:debug

Compatibility

react-axe uses advanced console logging features and works best in the Chrome browser, with limited functionality in Safari and Firefox.

Advantages

I have been asked how this is different from modules like react-a11y which test the jsx.

The main difference is that react-axe tests the accessibility of the rendered DOM. This is important because many accessibility issues exist at the intersection of the DOM and the CSS and unless you have a fully rendered DOM, you will get two sorts of inaccuracies:

  1. False negatives because of lacking information. Example is in order to test color contrast you must know the foreground and background colors, and
  2. False positives because the element being evaluated is not in its final state and the information to communicate this to the testing algorithm is not available. Example is an inert piece of code that will be augmented once it becomes active.

If you have nice clean code, number 2 will be negligible but number 1 will always be a concern.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].