A11y: Mejora de la accesibilidad de las aplicaciones con ESLint
Tags: a11y, frontend, javascript, reactnative
Published: 2023-08-10 20:41:31

[Descargar ESLint React Native A11y](https://github.com/FormidableLabs/eslint-plugin-react-native-a11y)

Cuando se trata de desarrollar aplicaciones en React Native, garantizar la accesibilidad es un aspecto esencial para crear experiencias inclusivas y fáciles de usar.

Aquí es donde entra en juego el plugin ESLint React Native A11y. Es un plugin diseñado para mejorar la accesibilidad en aplicaciones React Native y React mediante el uso de ESLint, una herramienta de análisis de código JavaScript.

Vamos a desglosar esto: mientras que muchos de nosotros estamos familiarizados con el poder de un verificador de código, hay mucho más por descubrir con este plugin.

El plugin ESLint React Native A11y es una herramienta que va más allá de la simple comprobación de sintaxis. Está diseñada para ayudar a que tus aplicaciones React Native sean más accesibles durante la escritura de código e incluso cuando se crean acciones que se ejecutan en el pipeline del repositorio.

Esta herramienta puede ofrecerte ideas sobre cómo corregir tu código y también recordarte que las propiedades deben tener los tipos correctos.

## ¿Cómo funciona?

1. Instalación: Primero, necesitas instalar el paquete del plugin, que es `eslint-plugin-react-native-a11y`. Esto se puede hacer usando el gestor de paquetes node.

2. Configuración: Una vez instalado, debes configurar el plugin en el archivo `.eslintrc` de tu proyecto. Esto implica incluir el plugin en la sección de plugins y definir las reglas que quieres habilitar.

3. Con el plugin configurado, ESLint empezará a analizar tu código durante el proceso de desarrollo. Aplicará las reglas específicas del plugin para comprobar la accesibilidad de tu código.

4. Cuando ESLint identifica problemas de accesibilidad en su código, genera mensajes de error o advertencia, dependiendo de la gravedad del problema. Estos mensajes suelen incluir detalles sobre el problema específico y, en algunos casos, sugerencias sobre cómo solucionarlo.

5. Puede configurar ESLint para que se ejecute automáticamente cada vez que guarde un archivo o antes de confirmar los cambios en el sistema de control de versiones. Esto ayuda a identificar y rectificar los problemas de accesibilidad desde el principio del desarrollo.

Para implementar esto en su repositorio, siga los siguientes pasos.

En el archivo `.eslintrc.js`, añada el siguiente fragmento:

```json
module.exports = {
  root: true,
  extends: [
    '@react-native-community',
    'plugin:react-native-a11y/ios'
  ]
};
```

En el mismo archivo `.eslintrc.js`, añade las reglas dentro del objeto rules:

```json
rules: {
  'react-native-a11y/has-accessibility-hint': 2,
  'react-native-a11y/has-valid-accessibility-role': 2,
  'react-native-a11y/has-valid-accessibility-state': 2,
  'react-native-a11y/has-valid-accessibility-states': 2,
  'react-native-a11y/has-valid-accessibility-component-type': 2,
  'react-native-a11y/has-valid-accessibility-traits': 2,
  'react-native-a11y/has-valid-accessibility-value': 2,
  'react-native-a11y/no-nested-touchables': 2,
  'react-native-a11y/has-valid-accessibility-descriptors': 2,
  'react-native-a11y/has-valid-accessibility-ignores-invert-colors': 2,
  'react-native-a11y/exhaustive-deps': 2,
  'react-native-a11y/has-valid-accessibility-actions': 2,
  'react-native-a11y/has-accessibility-props': [
    'error',
    {
      touchables: [
        'TouchableOpacity',
        'TouchableHighlight',
        'TouchableWithoutFeedback',
        'TouchableNativeFeedback',
        'TouchableBounce',
        'Pressable',
        'Button',
      ],
    },
  ],
}
```

Una vez que hayas terminado, ejecuta el linter tal y como está instalado en tu proyecto, y descubrirás todos los errores relacionados con la accesibilidad que puedes rectificar.

En resumen, ESLint React Native A11y es una potente herramienta que ayuda a garantizar que tus aplicaciones React Native sean accesibles para un público más amplio, promoviendo prácticas inclusivas y experiencias mejoradas para todos los usuarios.

Si encuentras problemas o inconsistencias en el artículo, no dudes en comentarlo.