Esta es la Parte 2 de la serie Mobile Testing

A fines de abril publiqué Mobile Testing: el elefante en la sala que la mayoría de QAs en LATAM ignoramos — la pieza opinión donde explico por qué este gap existe y por qué arrancar HOY es viable. Esta guía es la pieza hands-on que prometí ahí. Si no leíste el artículo, puedes saltar directo a los comandos, pero el contexto del problema te ayuda a entender por qué cada decisión técnica de esta guía está donde está.

Hoy bajamos a tierra. Pero antes del primer comando, te quiero contestar la pregunta honesta que cualquier QA se hace cuando ve “guía de mobile testing”: ¿esto va a funcionar el lunes en mi proyecto, o es teoría con app de juguete?

Spoiler: lo que vas a hacer en los próximos 30 minutos es testing real, sobre una app real (Wikipedia oficial, 4M downloads), con la sintaxis exacta que vas a escribir cuando un dev te pase el APK de tu producto. Lo único que cambia entre esta guía y tu trabajo del lunes son tres líneas. Te las marco al final.

¿Por qué mobile testing AHORA?

El dato que me sigue rompiendo la cabeza, lo digo otra vez porque hace falta:

70%+ del tráfico web global es mobile
80% de las suites automatizadas son desktop-only
10x más bugs reportados en mobile que en desktop por usuario
2 días es lo que tradicionalmente toma armar un setup mobile decente

Esa brecha entre cómo se usa el software hoy y cómo lo testeamos no se cerró sola en 15 años de disciplina QA. Tres razones se repiten en cada equipo con el que trabajé:

  1. Setup pesado — Java, Android Studio, certificados firmados, Xcode con sus 50 GB, simuladores que rompen al actualizar macOS.
  2. Stack fragmentado — Appium para enterprise legacy, Detox solo para React Native, Espresso solo para devs Android, XCUITest solo para devs iOS. Ninguno cross-platform real, ninguno apuntado al QA que no es dev mobile.
  3. Tooling pensado para devs, no para QAs — los frameworks asumen que sabes Kotlin o Swift. La curva de entrada es alta justo donde el QA debería poder agregar valor sin pelearse con compiladores.

Lo que cambió en 2026 — y por eso esta guía sale ahora y no hace dos años — es que apareció una herramienta que abstrae las tres barreras a la vez: Maestro. Declarativo, cross-platform, sin SDK que importar. Tú describes en YAML qué quiere el test (tap, scroll, assert), Maestro se encarga del cómo. Es la misma filosofía que Cypress aplicó a web hace 7 años — abstraer la fricción para que el QA dedique el tiempo a pensar, no a configurar.

Si todavía estás esperando “el momento ideal” para arrancar mobile testing en tu proyecto, ese momento es hoy. La barrera técnica que justificaba postergarlo se disolvió.

Maestro vs Appium vs Detox — la decisión rápida

No voy a hacer comparativa de 30 features porque la mayoría no las vas a usar nunca. Esta es la decisión real que tomas en 30 segundos:

HerramientaSetupCurvaCuándo elegirla
Maestro~5 minPlanaQuieres arrancar HOY. QAs que no son devs mobile. Cross-platform real (mismo flow Android + iOS).
Appium~2 horasEmpinadaTu equipo ya tiene tests Appium escritos. Necesitas features avanzadas que solo Appium tiene.
Detox~1 horaMediaTu app es React Native exclusivamente y quieres control programático en JS.

Regla práctica: si arrancas de cero en 2026, Maestro es la respuesta. Si ya tienes stack Appium funcionando, no migres por moda — Appium sigue siendo válido. Lo que NO hagas es elegir Detox para una app que no es React Native.

El resto de la guía es 100% Maestro. Si tu situación es distinta, las próximas guías de la serie van a cubrir Playwright para mobile web y Appium para casos enterprise.

1. Setup mínimo en 5 minutos

Maestro tiene dos componentes que se instalan por separado y vas a usar ambos:

  • Maestro CLI — el motor que corre los tests. Es lo que te hace falta para que maestro test mi-flow.yaml funcione.
  • Maestro Studio Desktop — la GUI nativa para inspeccionar elementos visualmente. La instalamos en la sección 5.

Por ahora, el CLI.

Cuidado: hay tres productos llamados “Maestro”. El que quieres es el de mobile-dev-inc. NO uses brew install maestro para instalarlo — ese cask de brew es OTRO producto distinto (un orquestador de agentes IA sin relación a mobile testing). El comando correcto está abajo.

Instala la CLI

Terminal window
curl -fsSL "https://get.maestro.mobile.dev" | bash

El instalador descarga el binario a ~/.maestro/bin/maestro. Cuando termina te pide que agregues esa ruta a tu PATH. Hazlo persistente:

Terminal window
echo 'export PATH="$HOME/.maestro/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

Verifica:

Terminal window
maestro --version

Esperas algo tipo 2.5.1 (la versión al momento de escribir esta guía). Anótala — la usamos al final como referencia de stack.

Levanta un emulador con Maestro

Acá viene el primer truco que cambia tu vida si nunca trabajaste con Android nativo. El camino tradicional para tener un emulador funcionando es:

  1. Instalar Android Studio (~5 GB)
  2. Abrir el AVD Manager
  3. Crear un Virtual Device eligiendo entre 30 opciones de hardware
  4. Descargar una System Image específica (~1-2 GB por API level)
  5. Configurar el AVD
  6. Lanzarlo

Con Maestro, todo eso se reduce a un comando:

Terminal window
maestro start-device --platform android

Si tienes Android SDK instalado en tu Mac (lo más probable si trabajaste en QA antes), Maestro detecta lo que tienes, te avisa qué falta, te pregunta si quieres instalarlo, y lo descarga solo. Te crea un Pixel 6 con API 33 con defaults sensatos. Tiempo total: 2-3 minutos la primera vez (mayoría es download de la system image), 30 segundos las siguientes.

Si NO tienes Android SDK instalado, Maestro te va a tirar un error claro indicando que necesitás Android Studio primero. Bájalo de developer.android.com/studio , instálalo con defaults, y vuelve a correr el comando. Es la única dependencia pesada de toda esta guía.

Cuando el emulador termina de bootear, vas a tener una ventana flotando con un Pixel 6 mostrando la pantalla principal de Android. Eso es tu device de testing — todos los flows que escribas a partir de ahora corren ahí.

Baja los samples oficiales

Maestro publica un set de apps + flows de ejemplo que vamos a usar como punto de partida. Bájalos:

Terminal window
maestro download-samples

Eso crea una carpeta samples/ en tu directorio actual con:

  • sample.apk y wikipedia.apk — la app oficial de Wikipedia (sí, vamos a usar Wikipedia real para testear)
  • android-flow.yaml — el flow más mínimo posible (5 líneas)
  • android-advanced-flow.yaml — un flow con selectores avanzados, scripts, subflows
  • subflows/ — flujos modulares reutilizables (onboarding, cleanup)
  • Sus equivalentes para iOS

Por qué Maestro usa Wikipedia y no una app demo de juguete: Wikipedia es real, open source, tiene 4M+ downloads, y resuelve casos comunes (búsqueda, navegación, scroll, idioma). Practicas contra una app que de verdad existe en producción. Eso ya separa esta guía de los tutoriales que te hacen testear “TodoApp” inventada.

2. Tu primer flow — 5 líneas que ya son testing real

Antes de escribir el tuyo, lee el más simple que Maestro te bajó:

Terminal window
cat samples/android-flow.yaml

Vas a ver esto, literal:

appId: org.wikipedia
tags:
- android
- passing
---
- launchApp

Eso es todo el archivo. Cinco líneas. Anatomía:

LíneaQué significa
appId: org.wikipediaEl package name de la app a testear. Wikipedia oficial. Maestro usa esto para identificar qué app abrir.
tags:Etiquetas para organizar/filtrar tests. Cuando tu suite crece, puedes correr maestro test --include-tags=passing.
---Separador YAML estándar entre metadata y steps.
- launchAppLa ÚNICA instrucción: abre la app. Es el smoke test más básico del mundo: ¿la app abre sin crashear?

Comparalo mentalmente con cómo sería esto en Appium: 50 líneas de Java, page objects, drivers, capabilities, before/after hooks. Esa diferencia es la promesa de Maestro hecha texto.

Corre el smoke test

Terminal window
maestro test samples/android-flow.yaml

Mantén visible la ventana del emulador mientras corre. Vas a ver Wikipedia abrirse sola. La terminal te muestra:

Running on Maestro_ANDROID_pixel_6_android-33
> Flow: android-flow
✅ Launch app "org.wikipedia"
Flow Passed

Ese check verde + la app booteada en simultáneo es el momento “ah, ENTIENDO Maestro”. Escribiste cinco líneas, le diste una orden, el emulador la ejecutó. Sin SDK, sin código, sin compilar nada.

Escribe tu propio flow — caso real

Un smoke test no enseña selectores ni gestos. Vamos a escribir uno que ejerza la API real de Maestro: búsqueda + tap en resultado + scroll + assert.

Crea mi-flow.yaml en la carpeta samples/:

appId: org.wikipedia
tags:
- android
- mi-primer-flow
---
# 1. Skip onboarding (subflow oficial Maestro)
- runFlow: subflows/onboarding-android.yaml
# 2. Screenshot post-onboarding
- takeScreenshot: 01-home
# 3. Tap en search bar — ID estable a i18n y redesigns
- tapOn:
id: "org.wikipedia:id/search_container"
# 4. Screenshot del buscador abierto
- takeScreenshot: 02-search-open
# 5. Query — "Software testing" porque la app está en inglés
- inputText: "Software testing"
# 6. Espera explícita — la lista de resultados tiene animación de entrada
- waitForAnimationToEnd
# 7. Screenshot con resultados
- takeScreenshot: 03-search-results
# 8. Tap en el TÍTULO del primer resultado, NO en la search bar
- tapOn:
id: "org.wikipedia:id/page_list_item_title"
index: 0
# 9. Espera a que cargue el artículo
- waitForAnimationToEnd
# 10. Valida que el artículo cargó (título visible en el body)
- assertVisible: "Software testing"
# 11. Screenshot del artículo cargado
- takeScreenshot: 04-article-loaded
# 12. Scroll para mostrar más contenido
- scroll
# 13. Screenshot post-scroll
- takeScreenshot: 05-article-scrolled

Corre:

Terminal window
maestro test samples/mi-flow.yaml

Y mientras corre, mira el emulador. Vas a ver:

  1. La app se relanza al estado inicial
  2. El subflow de onboarding salta solo
  3. Tap en el buscador → se abre el panel
  4. “Software testing” se tipea letra por letra
  5. Aparece la lista de resultados
  6. Tap en el primer resultado → carga el artículo
  7. Scroll → ves el contenido bajando

Y en HOME aparecen 5 archivos PNG numerados — tus screenshots automáticos. Esa automatización del capture es lo que cambia el workflow del QA: en lugar de screenshotear manual durante la corrida, le pides a Maestro que lo haga. Asset libre.

Acá los tienes en secuencia — la salida exacta que produjo el flow que acabas de correr:

Pantalla inicial de Wikipedia en el emulador — paso 01 launchApp

01 · launchApp

Panel de búsqueda abierto con cursor — paso 02 tapOn search

02 · tapOn search

Lista de resultados de búsqueda 'Software testing' — paso 03 inputText

03 · inputText

Artículo 'Software testing' cargado en Wikipedia — paso 04 tapOn primer resultado

04 · artículo cargado

Mismo artículo scrolleado mostrando sección 'History' — paso 05 scroll

05 · scroll

Cinco PNG generados sin escribir una sola línea de captura manual. Y cuando algo falla mañana en CI, esos screenshots son la primera evidencia que vas a leer antes de abrir el log.

Cuando un test verde te miente

Acá viene la sección estrella de la guía — la lección que NINGÚN tutorial en inglés te va a dar porque nadie se permite mostrar un bug en el camino.

La primera versión de este flow que escribí tenía un query distinto: "Pruebas de software" (en español) en lugar de "Software testing" (en inglés). Y el tapOn del paso 8 era por texto: tapOn: "Pruebas de software".

El test pasó. Verde 13/13. Pero los screenshots NO mostraban un artículo de Wikipedia — mostraban una página de resultados de búsqueda con artículos sin relación: “Fluid Attacks”, “Colombia”, “Karina Milei”, “Pengo (video game)”. El artículo nunca cargó.

Tres bugs en uno, vivientes en el mismo flow:

Bug #1 — i18n: el app está en inglés, el query en español. Wikipedia hizo fuzzy match porque 'Pruebas de software' no existe como artículo en EN, y devolvió resultados aleatorios.
Bug #2 — Selector ambiguo: el texto 'Pruebas de software' aparecía en DOS lugares (la search bar como input + cualquier resultado que lo contuviera). Maestro tapeó la search bar (donde estaba el texto recién tipeado), no el resultado.
Bug #3 — Assertion débil: 'assertVisible: "Pruebas de software"' pasó porque el texto seguía visible en la search bar. NO validó que el artículo correcto hubiera cargado.
Cuando un test verde te miente

Un test que pasa NO es un test que funciona. Si tu tapOn: "X" matchea el texto en el lugar equivocado, el assertion siguiente puede pasar y el test queda verde — pero NO está validando lo que crees. El primer indicador de este bug: comparar el screenshot final con lo que debería haber pasado. Si el screenshot está mal, el test está mintiendo, aunque la terminal diga verde.

La fix está incorporada en el flow de arriba — usé id: "org.wikipedia:id/page_list_item_title" con index: 0 para tapear específicamente el TÍTULO del primer resultado, no cualquier texto que coincida. Y cambié el query a inglés para que matchee con el contenido real de Wikipedia EN.

La regla para mobile testing que va a cambiar cómo escribes flows el resto de tu carrera: prioriza selectores en este orden, siempre.

  1. ID Android nativo (com.empresa.app:id/login_btn) — sobrevive a i18n, redesigns, A/B tests
  2. Accessibility ID — semánticamente significativo, también estable
  3. Texto único en pantalla — solo si garantizas que NO se repite en otro lugar
  4. NUNCA coordenadas, filenames, o “el texto del botón en el idioma del momento”

Tu trabajo como QA en mobile testing no es escribir flows que pasen. Es escribir flows que VALIDEN — y la diferencia entre las dos cosas es donde vive el 90% de los bugs sutiles que llegan a producción.

3. Maestro Studio Desktop — tu copiloto QA

Si llegaste hasta acá, ya escribiste YAML a mano y entiendes cada línea. Ahora podemos meter una herramienta que ACELERA esa escritura sin reemplazarla: Maestro Studio Desktop.

Studio es una app nativa con cuatro funciones que cambian el aprendizaje:

  1. Inspeccionar elementos visualmente — clickeas un botón en el mirror del emulador y Studio te tira los selectores disponibles (ID, accessibility ID, text, coordenadas)
  2. Click-to-insert — posicionas el cursor en tu YAML, clickeas el elemento, Studio te inserta el step con el selector correcto
  3. Run desde la app — corres tests sin volver a la terminal
  4. MaestroGPT — autocomplete inteligente que conoce la jerarquía de tu app
Atención: hay versiones deprecadas

Existió una versión web de Maestro Studio que se lanzaba con maestro studio — esa versión está deprecada al día de hoy. La que te recomiendo es la Desktop (nativa, soportada activamente, en Beta pero estable). Algunos tutoriales en inglés todavía documentan la web — ignóralos en este punto y usa Desktop.

Instala Maestro Studio Desktop

Otra vez: NO con brew. El cask maestro de brew es un producto distinto sin relación. Bájalo del sitio oficial:

Terminal window
curl -fLo ~/Downloads/MaestroStudio.dmg https://studio.maestro.dev/MaestroStudio.dmg
open ~/Downloads/MaestroStudio.dmg

En Finder, arrastra Maestro Studio a Applications. Lánzala:

Terminal window
open -a "Maestro Studio"

Primer touch UX: la primera vez te va a pedir login (vía browser, OAuth) y un mini-survey de “cómo te enteraste de Maestro”. 30 segundos extra que no estaban en la web version. Es free aunque Studio no es open source.

Anatomía de Studio Desktop

Cuando abre, vas a ver:

  • Dropdown “Select device” arriba a la izquierda — lista los emuladores/devices disponibles
  • Mirror del emulador en el panel izquierdo (después de seleccionar device)
  • Editor central — tus flows YAML abiertos como pestañas
  • File tree derecho — los archivos del workspace
  • Botones inferiores — Local/Cloud toggle, Run Test, Run All Tests

A diferencia de la web, Studio Desktop NO autodetecta el device automáticamente — tienes que abrir el dropdown y seleccionarlo manualmente la primera vez. Pequeña regresión UX que se compensa con todo lo que viene después.

El click-to-insert workflow

Esto es lo que vale la app:

  1. Abre tu flow en el editor central. Posiciona el cursor en la línea donde quieres insertar un step nuevo.
  2. Clickeá un elemento en el mirror del emulador (un botón, una imagen, un texto).
  3. Studio te muestra un popup con 3+ opciones de selector + un menú de acciones (Insert, Insert & Run, Copy, View Docs).
  4. Click en Insert → te pega el step en el cursor con el selector que elegiste.
  5. Click en Insert & Run → lo pega Y lo corre en el emulador inmediatamente para validar.

Ese loop “veo elemento → click → step generado → run inmediato” es el momento donde Maestro deja de ser una CLI y se vuelve un IDE de mobile testing.

Comparación que justifica todo: Web vs Desktop

Mismo elemento — la imagen de portada del artículo Software testing en Wikipedia. Selectores que cada versión de Studio sugiere:

VersiónSelector #1Selector #2Selector #3
Web (deprecada)tapOn: "1280px-TestingCup-Polish-Championship..." ← filenametapOn: { point: "50%, 16%" } ← coordenadas(no había)
Desktop (recomendada)tapOn: { id: "view_page_header_image" } ← ID semánticoassertVisible: { id: "view_page_header_image" }scrollUntilVisible: { element: { id: "view_page_header_image" }}

La web te ofrecía los DOS peores selectores que existen — un filename largo y coordenadas porcentuales. Cualquiera de los dos rompe tu test al primer cambio de imagen o de pantalla.

La Desktop te tira el ID Android real y semántico que Wikipedia usa internamente (view_page_header_image). Ese ID está hardcoded en el código fuente de Wikipedia — sobrevive a redesigns, a updates, a cambios de contenido.

Maestro Studio Desktop te tira selectores SEMÁNTICOS por default. La web (deprecada) te ofrecía filename y coordenadas — los dos peores selectores que existen. Misma imagen, dos productos, dos calidades distintas. Vale los 30 segundos extra de auth + survey.

Cuándo Studio te miente — sí, también la Desktop

Studio Desktop es buenísima, pero NO es magia. Si la app que testeás no expuso IDs semánticos en sus elementos (te puede pasar con apps legacy o con ProGuard activado), Studio Desktop también te va a sugerir coordenadas. Tu cerebro QA sigue siendo el filtro final.

Tres preguntas para evaluar cualquier sugerencia de Studio:

  1. ¿Este selector va a sobrevivir al próximo refactor de UI?
  2. ¿Este selector tiene sentido semántico (ID legible) o es un accidente (:id/a, :id/b)?
  3. Si NO hay buen selector, ¿estoy testeando el elemento correcto, o debería testear otro elemento más estable cerca?

A veces la respuesta correcta es NO escribir el assert sobre ese elemento y elegir uno mejor. Studio te ofrece todas las formas de tapear lo que clickeaste — tú eliges cuál sobrevive.

4. Llevarlo al CI — la próxima guía

Hasta acá tu loop es escribir flow → correr local → ver verde. Eso te alcanza para usar Maestro el lunes en tu máquina. Pero el valor real aparece cuando esos tests corren solos en cada PR, sin que tengas que abrir un emulador a mano.

CI mobile tiene su propio set de trampas — emulador headless en GitHub Actions, timeouts agresivos por boot lento, cómo subir screenshots como artifacts cuando un test falla, cuándo conviene pagar Maestro Cloud en lugar de pelearse con runners propios — y por eso merece su propia guía dedicada, no un anexo apurado acá.

Ya publicada — la pieza que cierra la serie

“Maestro en CI con GitHub Actions — del editor a producción sin tocar emuladores manuales nunca más”. Cubre workflow.yml de ~52 líneas verificado (con KVM + JDK + artifacts on failure), emulador headless, los 4 triggers (push / PR / scheduled / workflow_dispatch), artifacts con auto-screenshot del momento exacto del fallo, y Maestro Cloud como alternativa paid. Validada con 3 runs reales sobre un repo público forkeable que dejo enlazado. Ve directo — el siguiente nivel ya te está esperando.

Mientras tanto, lo de la sección 5 te alcanza para arrancar mañana mismo con la app de tu proyecto. CI ya tiene su propia guía (link arriba), pero el smoke test funcionando local es el prerequisito — no te saltees el local para correr al CI.

5. De Wikipedia a TU app — el bridge profesional

Lo más importante de esta guía no es que sepas testear Wikipedia. Es que el patrón que aprendiste se transfiere 1:1 a la app real que un dev te va a pasar el lunes. Para que no te quedes paralizado cuando llegue ese momento, te dejo el workflow exacto.

Lo que cambia, lo que NO

Cuando recibes un APK de tu equipo dev, comparado con lo que hicimos hoy, solo cambian tres cosas:

PiezaEn tu test de WikipediaEn tu app real
appId:org.wikipediacom.empresa.tuapp
Selectores (IDs)org.wikipedia:id/search_containercom.empresa.tuapp:id/login_btn
Cómo el APK llega al emuladorYa estaba (lo bajó download-samples)Lo instalas tú con adb install

Todo lo demás es exactamente lo mismo. YAML, Studio Desktop, gestos, assertions, screenshots, scroll — idéntico.

Los 5 pasos del workflow real

Paso 1 — Recibes el archivo. Te llega app-debug.apk por Slack, mail, link de Drive, o como artifact del CI. Guárdalo en una carpeta limpia: ~/Proyectos/qa-tu-app/builds/.

Paso 2 — Identifica el appId (package name).

Terminal window
# Opción A: preguntale al dev (más rápido)
# Opción B: leelo del APK
aapt dump badging app-debug.apk | grep package
# Te tira: package: name='com.empresa.tuapp' versionCode='42'

Paso 3 — Instala el APK en el emulador.

Terminal window
adb install app-debug.apk

Si te tira INSTALL_FAILED_INSUFFICIENT_STORAGE, borra apps innecesarias. Si te tira INSTALL_FAILED_VERSION_DOWNGRADE, primero adb uninstall com.empresa.tuapp.

Paso 4 — Descubre los selectores con Studio Desktop. Abres Maestro Studio, seleccionas tu device, tu app, haces hover sobre los elementos del flow que vas a testear, y copias los selectores que te sugiere. La parte que en Wikipedia adivinábamos por convención (org.wikipedia:id/search_container), acá la inspeccionas directo.

Paso 5 — Escribe el flow con la MISMA plantilla que ya conocés:

appId: com.empresa.tuapp
---
- launchApp
- tapOn:
id: "com.empresa.tuapp:id/login_btn"
- inputText: "test@empresa.com"
- tapOn:
id: "com.empresa.tuapp:id/password_field"
- inputText: "password123"
- tapOn:
id: "com.empresa.tuapp:id/submit"
- assertVisible: "Bienvenido"

Y corres maestro test mi-flow.yaml. Mismo runner, misma terminal, mismo verde.

Las 3 trampas reales cuando recibas el APK de tu equipo

AAB en lugar de APK — Si el dev te pasa un .aab (Android App Bundle), Maestro no lo instala directo. Necesitas bundletool para extraer APKs, o pídele al dev el debug APK. La mayoría de equipos publican AABs a Play Store pero generan APKs para QA — pídelos.

Apps con obfuscación (ProGuard/R8) — En release builds, los IDs de recursos quedan obfuscados (com.empresa:id/a, :id/b). Los IDs Android no sirven ahí. Solución: pídele al equipo dev una debug build sin obfuscation (es la práctica estándar para QA). Si no se puede, los selectores por accessibility ID sobreviven a la obfuscación — coordina con dev que los pongan en los elementos críticos.

iOS en lugar de Android — Los pasos cambian: en lugar de .apk recibes .app bundle (para Simulator) o .ipa (para device). En lugar de adb install usas xcrun simctl install. El resto del flow YAML es 95% idéntico — esa es la ventaja de Maestro cross-platform.

Cierre — qué tienes ahora

Si seguiste la guía completa, en estos 30 minutos pasaste de cero a:

  • ✅ Maestro CLI instalado y verificado
  • ✅ Un emulador Android funcionando, manejado por Maestro (sin abrir Android Studio)
  • ✅ Tu primer flow YAML corriendo (smoke test + flow custom de 13 pasos)
  • ✅ Maestro Studio Desktop con click-to-insert para inspeccionar selectores semánticos
  • ✅ El workflow profesional para cuando recibas un APK de tu equipo dev
  • ✅ La regla de selectores que va a guiarte el resto de tu carrera mobile QA

Lo más importante: tienes un patrón repetible. La próxima feature mobile de tu proyecto sale por exactamente los mismos pasos. Y los bugs sutiles que estabas dejando pasar en mobile (selectores ambiguos, falsos positivos por i18n, screenshots mintiendo en CI) ahora los puedes cazar antes de que lleguen a producción.

Mobile testing dejó de ser difícil. Lo que sigue siendo difícil es elegir las cosas correctas para testear, escribir asserts que validen y no que solo pasen, y desarrollar el ojo crítico para distinguir un selector estable de uno frágil. Eso último — donde tu rol QA agrega valor real — Maestro no te lo regala. Te lo deja libre el tiempo para hacerlo.

Qué leer / hacer después

  1. Aplícalo el lunes — ve con el APK debug de tu producto. La sección 5 te dice exactamente cómo. Si te trabas, escríbeme.
  2. Siguiente pieza de la serie (ya publicada): “Maestro en CI con GitHub Actions — del editor a producción sin tocar emuladores manuales nunca más”. Workflow.yml verificado con 3 runs reales sobre un repo público forkeable. Cierra la serie Mobile Testing.
  3. Para mobile WEB (no nativo) — Playwright tiene mobile emulation cero-fricción. Esa es otra guía pendiente: cómo testear sitios web y PWAs en vista mobile sin levantar emulador nativo.
¿Estás aplicándolo en tu equipo y te trabas?

Escríbeme. Leo todas las respuestas, y los bloqueos reales me sirven para escribir las próximas guías. Tu pregunta puede destrabarle el camino a 100 QAs más.