Fastlane es un conjunto de utilidades para acelerar y automatizar las tareas más tediosas del desarrollo de aplicaciones móviles. Incluye una utilidad llamada snapshot para hacer capturas de pantalla en diferentes idiomas y dispositivos usando los tests de UI de Xcode.
Lo primero de todo es crear un nuevo UI Test target en el proyecto de Xcode. Esto se hace desde File > New > Target...
En la ventana que aparece a continuación hay que buscar UI Testing Bundle.
Una vez creado el target hay que ir al terminal y correr el comando fastlane snapshot init en la carpeta del proyecto. Este comando creará un directorio fastlane en la raíz del proyecto.
Dentro del directorio hay varios ficheros. Hay que añadir ./SnapshotHelper.swift al target que acabamos de crear.
En este ejemplo la aplicación se llama peliculas y el target que he creado más arriba es peliculasUITests.
El siguiente paso es crear un scheme nuevo. Se hace desde Product > Scheme > New Scheme...
En la ventana que se abre hay que darle un nombre y seleccionar el target. Seleccionamos el que hemos creado anteriormente para los tests.
A continuación hay que editar el scheme y marchar la casilla Run. Este paso se me olvidó y pasé un buen rato tratando de averiguar por qué Fastlane estaba fallando.
El siguiente paso es escribir tests y decirle a Fastlane en qué momentos hacer las capturas.
Usando el test de ejemplo que nos ha creado Xcode solo tenemos que añadir setupSnapshot(app) para terminar la configuración. Ahora toca escribir tests de UI y en el punto en que queramos hacer una captura de pantalla llamar a snapshot("NombreDeLaCaptura")
Lo primero de todo es crear un nuevo UI Test target en el proyecto de Xcode. Esto se hace desde File > New > Target...
En la ventana que aparece a continuación hay que buscar UI Testing Bundle.
Una vez creado el target hay que ir al terminal y correr el comando fastlane snapshot init en la carpeta del proyecto. Este comando creará un directorio fastlane en la raíz del proyecto.
Dentro del directorio hay varios ficheros. Hay que añadir ./SnapshotHelper.swift al target que acabamos de crear.
En este ejemplo la aplicación se llama peliculas y el target que he creado más arriba es peliculasUITests.
El siguiente paso es crear un scheme nuevo. Se hace desde Product > Scheme > New Scheme...
En la ventana que se abre hay que darle un nombre y seleccionar el target. Seleccionamos el que hemos creado anteriormente para los tests.
A continuación hay que editar el scheme y marchar la casilla Run. Este paso se me olvidó y pasé un buen rato tratando de averiguar por qué Fastlane estaba fallando.
El siguiente paso es escribir tests y decirle a Fastlane en qué momentos hacer las capturas.
Usando el test de ejemplo que nos ha creado Xcode solo tenemos que añadir setupSnapshot(app) para terminar la configuración. Ahora toca escribir tests de UI y en el punto en que queramos hacer una captura de pantalla llamar a snapshot("NombreDeLaCaptura")
func testExample() throws { let app = XCUIApplication() setupSnapshot(app) app.launch() // Views list let tabViews = app.buttons["tabViews"] tabViews.tap() XCTAssertTrue(tabViews.exists) snapshot("Views") }
Una vez los tests pasen solo queda ir a la consola y ejecutar el comando fastlane snapshot.
En el directorio fastlane que se ha creado al principio hay un fichero Snapfile en el que se pueden configurar un montón de cosas, como los dispositivos a usar para hacer las capturas o los idiomas.
De momento esto es todo. Estoy peleándome un poco para escribir unos buenos tests. Sobre todo me estoy peleando con los selectores. Escribiré sobre el tema en cuanto lo domine un poco más.