I’ve been studying different strategies to help Frontity users maintain accessibility and I think we can help in two ways:
- Add eslint to npx frontity create, including theeslint-plugin-jsx-a11yplugin.
- Add react-axeto Frontity.
jsx-a11y is useful while in the editor. It alerts when you are forgetting something. For example, here I forgot the alt attribute of an <img> tag:
If we don’t install it by default, jsx-a11y can be easily installed by the developers. We could help with instructions.
react-axe analyzes the DOM instead of the React components, and outputs warnings in the Chrome console:
It’s smarter because it looks at the 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.
There’s a great Chrome extension that does pretty much the same although it is opt-in (you need to open its tab and click analyze, whereas with react-axe the warnings always appear in the console).
The questions here are:
- Should we only have instructions on how to install jsx-a11yor add it by default?
- Should we only have instructions on how to install the aXe extension or add react-axeby default?
- If added, should they be opt-in or opt-out?
 
            
              
              
              1 Like
            
            
                
                
              
           
          
            
            
              Of course more ideas on how to help/ensure accessibility on Frontity themes are welcomed 
             
            
              
              
              
            
            
                
                
              
           
          
            
            
              I’m embarking on my first Frontity project to redevelop an existing WordPress site with and am excited at the potential! I wonder if eslint, eslint-plugin-jsx-ally and react-axe are included by default as you suggested they might be? If not, can I ask for your guidance in configuring them in my project?  I followed the Frontity tutorial for setting up a theme and the Frontity tutorial for retrieving a wp menu. Now, as I start to develop, I want to ensure that menu will be accessible. Looking at the eslint-plugin-jsx-ally repo page, they recommend installing plugins and then including plugins in a .eslintrc configuration file.  Can I just add an .eslintrc file to my theme folder?  I am using Atom as my IDE… do you know if I need certain packages installed there too? Please forgive my ignorance, I am new to React as well as Frontity.
             
            
              
              
              
            
            
                
                
              
           
          
            
            
              hi @chrys3136 
I think you should be able to configure both just fine.
The eslint plugin has nothing to do with Frontity so you can just go ahead and install it.
react-axe is a bit different, but I think you can create a new Frontity package (npx frontity create-package) and add it to the init action (actions.yourPackageName.init), like this:
code: @axe-core/react - npm
// packages/my-package-name/src/index.js
import React from "react";
import ReactDOM from "react-dom";
const myPackageName = {
  actions: {
    myPackageName: {
      init: () => {
        if (process.env.NODE_ENV !== "production") {
          const axe = require("@axe-core/react");
          axe(React, ReactDOM, 1000);
        }
      },
    },
  },
};
export default myPackageName;
Let me know if that works for you 