Conceptos y la implementación de Jetpack Compose
Las pruebas de accesibilidad te permiten experimentar tu app desde la perspectiva del usuario y encontrar problemas de usabilidad que podrías pasar por alto. Las pruebas de accesibilidad pueden revelar oportunidades para que tu app sea más potente y versátil para todos los usuarios, incluidos los que tienen discapacidades.
En este documento, se describen los siguientes enfoques:
- Pruebas con herramientas de análisis: Usa herramientas para descubrir oportunidades y mejorar la accesibilidad de la app.
- Pruebas automatizadas: Activa las pruebas de accesibilidad en Espresso y Robolectric.
Pruebas con las herramientas de análisis
Las herramientas de análisis permiten detectar oportunidades para mejorar la accesibilidad que quizás pases por alto con las pruebas manuales.
Prueba de accesibilidad
La app de Prueba de accesibilidad analiza la pantalla y proporciona sugerencias para mejorar la accesibilidad de tu app. Además, usa el framework de Prueba de accesibilidad y proporciona sugerencias específicas después de examinar las etiquetas de contenido, los elementos en los que se puede hacer clic, el contraste y mucho más.
El framework de pruebas de accesibilidad de Android está integrado en Android Studio para ayudarte a encontrar problemas de accesibilidad en tus diseños. Para iniciar el panel, haz clic en el botón de informe de errores ! en el editor de diseño.
Figura 1: Demostración de la Prueba de accesibilidad
Para obtener más información, consulta los siguientes recursos:
Visor UI Automator
La herramienta uiautomatorviewer proporciona una GUI conveniente para escanear y analizar los componentes de la IU que se muestran actualmente en un dispositivo Android. Puedes usar UI Automator para inspeccionar la jerarquía de diseño y ver las propiedades de los componentes de la IU que están visibles en el primer plano del dispositivo. Esta información te permite crear pruebas más precisas, ya que, por ejemplo, puedes desarrollar un selector de IU que coincida con una propiedad visible específica. La herramienta se encuentra en el directorio tools del SDK de Android.
En las pruebas de accesibilidad, esta herramienta es útil para depurar problemas que se encontraron con otros métodos de prueba. Por ejemplo, si las pruebas manuales revelan que una vista debería tener texto hablado y no lo tiene, o una vista que recibe el foco y no debería recibirlo, puedes usar la herramienta para ayudar a encontrar la fuente del error.
Para obtener más información sobre el visor UI Automator, consulta Cómo escribir pruebas automatizadas con UI Automator.
Lint
Android Studio muestra advertencias de lint para distintos problemas de accesibilidad y proporciona vínculos a los lugares relevantes de tu código fuente. En el siguiente ejemplo, a una imagen le falta un atributo contentDescription. La descripción de contenido que falta da como resultado el siguiente mensaje:
[Accessibility] Missing 'contentDescription' attribute on image
En la figura 2, se muestra un ejemplo de cómo aparece este mensaje en Android Studio:
contentDescription que falta.Pruebas automáticas
La plataforma de Android admite varios frameworks de prueba, como Espresso, que te permite crear y ejecutar pruebas automatizadas que evalúan la accesibilidad de la app.
Espresso
Espresso es una biblioteca de pruebas de Android diseñada para hacer que las pruebas de IU sean rápidas y fáciles. Te permite interactuar con los componentes de la IU que se están probando en tu app y afirmar que se producen ciertos comportamientos o se cumplen ciertas condiciones.
Para ver una descripción general de las pruebas de accesibilidad con Espresso, mira desde el minuto 31:54 hasta el minuto 34:19 del video Diseño inclusivo y pruebas: Cómo hacer que tu app sea más accesible. Google I/O 2016.
En esta sección, se describe cómo ejecutar verificaciones de accesibilidad con Espresso.
Habilita las comprobaciones
Puedes habilitar y configurar la prueba de accesibilidad con la clase AccessibilityChecks:
Kotlin
import androidx.test.espresso.accessibility.AccessibilityChecks
@RunWith(AndroidJUnit4::class)
@LargeTest
class MyWelcomeWorkflowIntegrationTest {
init {
AccessibilityChecks.enable()
}
}
Java
import androidx.test.espresso.accessibility.AccessibilityChecks;
@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyWelcomeWorkflowIntegrationTest {
@BeforeClass
public void enableAccessibilityChecks() {
AccessibilityChecks.enable();
}
}
De manera predeterminada, las comprobaciones se ejecutan cuando realizas cualquier acción de vista definida en ViewActions. Cada verificación incluye la vista en la que se realiza la acción, así como todas las vistas descendentes. Puedes evaluar toda la jerarquía de vistas de una pantalla durante cada verificación si pasas true a setRunChecksFromRootView(), como se muestra en el siguiente fragmento de código:
Kotlin
AccessibilityChecks.enable().setRunChecksFromRootView(true)
Java
AccessibilityChecks.enable().setRunChecksFromRootView(true);
Cómo suprimir subconjuntos de resultados
Después de que Espresso ejecute verificaciones de accesibilidad en tu app, es posible que encuentres varias oportunidades para mejorar la accesibilidad que no puedas abordar de inmediato. Para evitar que las pruebas de Espresso fallen continuamente debido a estos resultados, puedes ignorarlas de manera temporal. El framework de prueba de accesibilidad (ATF) proporciona esta funcionalidad con el método setSuppressingResultMatcher(), que le indica a Espresso que suprima todos los resultados que satisfacen la expresión del comparador dado.
Cuando haces cambios en tu app que abordan un aspecto de la accesibilidad, es conveniente que Espresso muestre resultados para tantos otros aspectos de la accesibilidad como sea posible. Por este motivo, lo mejor es suprimir solo las oportunidades de mejora específicas.
Cuando suprimes temporalmente los resultados de la prueba de accesibilidad que planeas abordar más adelante, es importante no suprimir de manera accidental resultados similares. Por este motivo, usa comparadores que tengan un alcance limitado. Para ello, elige un comparador para que Espresso suprima un resultado determinado solo si cumple con cada una de las siguientes verificaciones de accesibilidad:
- Verificaciones de accesibilidad de un tipo determinado, como las que comprueban el tamaño de la orientación táctil
- Verificaciones de accesibilidad que evalúan un elemento de la IU en particular, como un botón
El ATF define varios comparadores para ayudarte a definir qué resultados mostrar en tus pruebas de Espresso. En el siguiente ejemplo, se suprimen los resultados de las verificaciones que se relacionan con el contraste de color de un solo elemento TextView. El ID del elemento es countTV.
Kotlin
AccessibilityChecks.enable().apply {
setSuppressingResultMatcher(
allOf(
matchesCheck(TextContrastCheck::class.java),
matchesViews(withId(R.id.countTV))
)
)
}
Java
AccessibilityValidator myChecksValidator =
AccessibilityChecks.enable()
.setSuppressingResultMatcher(
allOf(
matchesCheck(TextContrastCheck.class),
matchesViews(withId(R.id.countTV))));