¿Cómo usar Espresso UI Testing for React Native?

Estoy tratando de hacer algunas pruebas de interfaz de usuario con Espresso en mi aplicación React Native Android para usar Screengrab de Fastlane.

He seguido este tutorial para integrar React Native en una aplicación existente para poder escribir una prueba. Pero cuando empecé a escribir mi prueba de interfaz de usuario no pude encontrar qué escribir y cómo orientar un componente y realizar un clic en él, por ejemplo.

Encontré este post donde alguien da un ejemplo de cómo escribir Espresso Test para React Native pero no funciona para mí … Ninguno de mi componente tiene resource-id establecido así que no sé cómo realizar alguna acción en mi aplicación.

Si alguien me podría ayudar a escribir una prueba de interfaz de usuario con Espresso en una aplicación React Native o darme otra solución para tomar captura de pantalla automática de mi aplicación de Android que va a ser impresionante.

Si tiene alguna pregunta déjeme saber.

Café exprés

En la actualidad no hay manera de establecer resource-id con reactivo-nativo, por lo que, para realizar acciones complejas que necesita para escribir algún código (como esperar elementos), otras cosas parece funcionar bastante bien a través de android estudio 'registro de espresso test' botón.

  1. Use accessibilityLabel accesorioLabel como id para elementos (por ejemplo, "elementId")
  2. onView(allOf(withContentDescription("elementId"), isDisplayed())) para obtener el elemento
  3. Peform acciones en ese elemento (como element.perform(click()) )

Aquí puede encontrar la prueba completa https://gist.github.com/cybergrind/0a2ad855352a5cd47cb5fb6a486c5eaa

Appium

Si sólo desea realizar acciones y capturar capturas de pantalla, puede hacerlo con appium:

  1. Use accessibilityLabel accesorioLabel como id para elementos
  2. En el uso del controlador web waitForElementByAccessibilityId
  3. Capturar capturas de pantalla con saveScreenshot ('out.png') -> esto creará el archivo 'out.png' en el directorio donde has ejecutado las pruebas

En appium finalmente tendrás algo como (ejemplo js):

 driver.waitForElementByAccessibilityId('searchInputAcc', 5000) .type('bold\n') .sleep(5000) .saveScreenshot('out.png') 

IOS vs accesibilidad de Android

Parece que para Android eres libre de usar accessibiltyLabel en cualquier elemento (como Texto, Vista y así sucesivamente), pero iOS no establecerá accesibilidad en todos los elementos como Adnroid.

Si establece la etiqueta en Text no será igual a su etiqueta

 <Text accessibilityLabel="my_text">content</Text> 

Le dará etiqueta de content igual en iOS, por lo que básicamente sólo puede establecer el atributo accessible en sus nodos de texto para esta plataforma

 <Text accessible>content</Text> 

Lo mismo para View – iOS ignorará sus etiquetas.

Hasta ahora, no hay muchos elementos en iOS que funcionen con las etiquetas personalizadas de accesibilidad.

A continuación se muestra una lista de elementos que se pueden utilizar para probar la aplicación para pruebas cruzadas de reactancia

Puedes usar:

  • TouchableHighlight – funcionará igual en iOS y Android, sólo puede establecer accessibilityLabel
  • Text – accessibilityLabel debe ser el mismo que inner test + tienes que establecer el atributo accesible

No funciona (para ambas plataformas por completo):

  • View

PS No hemos probado todos los elementos posibles todavía, así que agrega tus resultados para otros elementos o espera nuestros resultados

Depuración

Puede obtener la fuente del elemento raíz, imprimirla y leerla como xml para propósitos de depuración (para webdriver.io: http://webdriver.io/api/property/getSource.html )

Tengo un RP contra react-nativo para añadir soporte adecuado para resource-id . Compruébelo y vote por favor: https://github.com/facebook/react-native/pull/9942

Una vez que se ha fusionado en testID se añadirá resource-id siempre y cuando la Id se define en res/values/ids.xml .

  • Prueba de centrifugadoras dinámicas espresso
  • La ejecución falló para la tarea 'app: prepareDebugAndroidTestDependencies'
  • Prueba de interfaz de usuario de Espresso para Android: falla en la ejecución de la prueba: Error en la ejecución de la instrumentación debido a 'java.lang.IllegalAccessError'
  • Cómo rotar la actividad, quiero decir: el cambio de orientación de la pantalla con Espresso?
  • Cómo detectar si la aplicación de Android está ejecutando la prueba de interfaz de usuario con Espresso
  • No se puede ejecutar Robotium en Android Studio con sólo APK
  • Android: Robotium vs marco de prueba de Android
  • Espresso Nested Recycler Vistas Prueba de interfaz de usuario
  • Tiempo de espera de espera para el resultado de ClearAppData2 al ejecutar Xamarin UI Tests for Android
  • Configuración de gradiente y maven espresso para Android
  • ¿Es posible tomar una captura de pantalla y probar valores de píxeles con espresso?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.