Construir una interfaz en Android que se vea impecable en miles de dispositivos es, por sí solo, un desafío considerable. Pero garantizar que, además, cada evento de analítica y cada interacción interna se registre exactamente cuando debe es una tarea aún más compleja. En ese contexto, surge la necesidad de una herramienta que no solo verifique cómo se ve la aplicación, sino también cómo se comporta bajo el capó y ahí es donde entra en juego Android Snaptesting.
La librería Android Snaptesting, desarrollada por Telefónica, proporciona dos potentes enfoques de snapshot testing para Android: pruebas de capturas de pantalla y pruebas de logs. Permite capturar y comparar instantáneas visuales de la interfaz de usuario para detectar regresiones inesperadas en el diseño. Además, ofrece la capacidad de capturar y comparar eventos de analítica o logs de la aplicación para asegurar la consistencia del tracking en diferentes ejecuciones de tests. Ambos enfoques siguen el mismo concepto de ‘snapshot’: grabar un baseline inicial y verificarlo automáticamente en tests posteriores.
La librería está diseñada para integrarse fácilmente con suites de tests existentes y soporta ejecución tanto desde IDE como desde línea de comandos, manteniendo un comportamiento consistente en todos los entornos.
Un punto importante a su favor es que, a diferencia de otras librerías de screenshot testing, permite su uso combinado con Marathon, un conocido ejecutor de tests que permite paralelizar la ejecución de los tests entre otras funcionalidades. Esto lo consigue gracias a que no es necesario ejecutar una tarea nueva de Gradle, sino que es suficiente con ejecutar la tarea por defecto con la que se lanzan los tests de UI “connectedDebugAndroidTest”. Toda la comparación tanto de imágenes como de logs se realiza durante la ejecución del test, dentro del dispositivo donde están corriendo los tests.
Cuando se quiere generar un nuevo baseline, simplemente es necesario pasarle como argumento “-Pandroid.testInstrumentationRunnerArguments.record=true” a la tarea de Gradle.
La integración es sencilla, basta con añadir el plugin «com.telefonica.androidsnaptesting-plugin» y la librería “com.telefonica:androidsnaptesting” al proyecto Gradle para poder utilizar las reglas correspondientes en los tests de instrumentación[PB2] . Para pruebas de interfaz se usa `ScreenshotsRule`, que permite capturar y comparar la UI. Para pruebas de logs se utiliza `LogsRule`, que compara la salida generada por el recolector de logs configurado.
Una vez ejecutados los tests, la librería genera un reporte propio en HTML en el que ver los errores que ha habido, incluyendo la diferencia entre lo que se espera y lo que se ha encontrado.
Hacer que una interfaz de Android se vea perfecta en miles de dispositivos es un reto. Pero asegurar que, además de verse bien, los eventos de analítica y los logs se disparen cuando deben, es otro nivel de dificultad.

Puedes consultar toda la documentación detallada en el repositorio de la librería en GitHub.







