¿Cómo tomo capturas de pantalla de mi interfaz de usuario con Xcode 7 durante las testings de interfaz de usuario?

Así que descargué la versión beta de XCode 7 y he creado algunas testings de interfaz de usuario, pero no puedo encontrar la funcionalidad de cómo tomar capturas de pantalla de mi aplicación / interfaz de usuario durante la testing.

¿Puede ayudarme alguien, por favor?

La testing de interfaz de usuario en Xcode toma automáticamente capturas de pantalla de su aplicación después de cada paso.

Simplemente vaya a una de las testings que ya se ha ejecutado (Informe Navegador> elija una Prueba), luego comience a expandir sus testings. Cuando desplace el mouse sobre los pasos, verá íconos cercanos a cada paso que tiene una captura de pantalla.

Aquí hay un ejemplo … en este caso, observe el ícono del ojo al final de la fila gris. Si tuviera que tocar en él, vería una captura de pantalla de la aplicación justo cuando el button en mi aplicación fue tocado (ya que el paso es tocar el button "Botón" ).

introduzca la descripción de la imagen aquí

Si desea generar capturas de pantalla, también puede usar instantánea , que describe cómo activar capturas de pantalla en las testings de la interfaz de usuario: https://github.com/fastlane/fastlane/tree/master/snapshot#how-does-it-work

Básicamente, gira el dispositivo a .Unknown ( Source ), que activa una instantánea sin modificar el estado de su aplicación.

La comparación de la salida con el file Plist generado le permite incluso nombrar correctamente la captura de pantalla

El ios-snapshot-test-case de Facebook y KIF se ejecutan como testings de unidad y, por lo tanto, están en el mismo process que la aplicación. Como tal, pueden acceder directamente a las vistas y usar algo como renderView: o snapshotViewAfterScreenUpdates . Xcode UI Testing se ejecuta en un process separado y, por lo tanto, no puede acceder directamente a las vistas.

UI Automation, la biblioteca de testings de interfaz de usuario de JavaScript ahora desaprobada de Apple, tenía una function llamada captureScreenWithName .

Desafortunadamente, la nueva testing de UI de Xcode carece de una function similar en su biblioteca de testings, lo que para mí parece una omisión flagrante y te animo a enviar un radar para ello, ya que tomar capturas de pantalla es fundamental para las testings de diferencia perceptual (que suena como tú estoy tratando de hacer). Espero (y espero) que puedan abordar esta deficiencia en actualizaciones posteriores de Xcode.

Mientras tanto, hay enfoques más creativos para tomar capturas de pantalla. Vea esta respuesta de desbordamiento de stack para una solución que incluye tomar la captura de pantalla en la aplicación misma y luego enviarla al process de testing.

He creado una herramienta que guarda las últimas testings de las capturas de pantalla y genera el informe de resultados de las testings de JUnit, parsing el file de testing de Suma de Pruebas de los loggings de testing. https://github.com/nacuteodor/ProcessTestSummaries

Quizás eso te ayude.

La FBSnapshotTestCase de Facebook puede ser una solución alternativa:

https://github.com/facebook/ios-snapshot-test-case