Un manual para GitHub Actions + plantillas de PR que requieren evidencia de prueba en dispositivo - así que "probado en simulador" no puede fusionarse con cambios de navegación nativa sin una ruta de QA en iPhone y Android real.
Tarjeta de referencia rápida - lista para copiar y pegar.
<!-- .github/pull_request_template.md -->## Resumen<!-- Qué cambió y por qué -->## Ticket<!-- SHIP-___ -->## Evidencia de prueba en dispositivo (requerida para UI / nativo / navegación)| Plataforma | Dispositivo / SO | Origen de compilación| Resultado ||------------|---------------------|---------------------|-----------|| iOS | p. ej. iPhone 14/17 | QR de vista previa de EAS | PASS || Android | p. ej. Pixel 7/14 | QR de vista previa de EAS | PASS |## Rutas de prueba ejercidas- [ ] Inicio frío / login- [ ] Pantalla(s) cambiada(s): ___- [ ] Enlace profundo / push (si aplica)## Capturas de pantalla / grabaciones<!-- Arrastra enlace de nube de Maestro, grabación de pantalla o captura de pantalla -->## CI- [ ] verificación de `quality` verde- [ ] ID de compilación de vista previa anotado: ___
<!-- .github/pull_request_template.md -->## Resumen## TicketSHIP-## Tipo de cambio- [ ] JS / solo copia (OTA-safe)- [ ] Diseño / estilo de UI- [ ] Navegación / gestos- [ ] Módulo nativo / plugin de configuración- [ ] Actualización de SDK## Evidencia de prueba en dispositivo> Requerido cuando se marca cualquier casilla anterior excepto "JS / solo copia".| Plataforma | Dispositivo / SO | Compilación (`build_id` o enlace de vista previa) | Resultado ||------------|-----------------|--------------------------------------------------|-----------|| iOS | | | PASS / FAIL || Android | | | PASS / FAIL |## Rutas de prueba ejercidas- [ ] Inicio frío- [ ] Restauración de auth / sesión- [ ] Función bajo cambio: ___## Automatización- [ ] Flujo de Maestro: `flows/smoke.yaml` (enlace o artefacto de CI)- [ ] Captura de pantalla / grabación de pantalla adjunta## Notas de reversión (si afecta a producción)<!-- Canal de OTA, bandera de característica o plan de rama de hotfix -->
# Crear etiquetas de GitHub (gh CLI)gh label create "needs-device-qa" --color B60205 --description "Requires device evidence in PR"gh label create "skip-device-qa" --color C5DEF5 --description "Docs or CI-only - no device matrix"
gh pr edit 42 --add-label needs-preview# CI publica QR - el autor instala en dispositivos físicos
# Ejecuta Maestro localmente contra el binario de vista previamaestro test flows/checkout-smoke.yaml# Adjunta grabación; pega build_id en la tabla de PR
Tabla de PR rellenada de ejemplo:
| Plataforma | Dispositivo / SO | Origen de compilación | Resultado ||------------|----------------------|------------------------------------------|-----------|| iOS | iPhone 14 / iOS 17.4 | build_id 8f3a2c (vista previa PR #42) | PASS || Android | Pixel 7 / API 34 | build_id 8f3a2c (vista previa PR #42) | PASS |
Paso 6 - Carga opcional de Maestro en caso de éxito de vista previa
Regex demasiado estricto en el formato de tabla - El espaciado de markdown menor falla en la verificación. Solución: Afloja la expresión regular o usa un pequeño script de validación con mensajes de error claros.
Flujo de trabajo de evidencia en PR de borrador - Los autores aún no pueden rellenar la plantilla. Solución:if: github.event.pull_request.draft == false.
Simulador solo "PASS" - Pierde skins de fabricante de Android y áreas seguras de iOS. Solución: Política: dispositivo físico para needs-device-qa.
Build_id de vista previa obsoleto - El autor rebasó pero la tabla hace referencia al binario antiguo. Solución: Vuelve a ejecutar la vista previa en synchronize; comentario de CI con el último build_id.
Omitir evidencia con resumen vacío - Etiqueta de mal uso skip-device-qa. Solución: Revisión de CODEOWNERS para eliminación de etiqueta.
¿Deberían las PR solo de docs ejecutar verificación de evidencia?
No. Usa la etiqueta skip-device-qa o filtros de ruta excluyendo docs/** y *.md. Mantén la verificación de quality para todas las PR.
¿Qué pasa si QA es dueño de las pruebas de dispositivo, no el autor?
Permite que QA edite el cuerpo de PR o comente con la tabla de evidencia; pull_request_target en edited vuelve a ejecutar la validación. Mejor: QA publica un comentario de plantilla que el autor copia al cuerpo.
¿Es Expo Go suficiente para la evidencia?
No para módulos nativos, plugins de configuración o actualizaciones de SDK. Registra vista previa de EAS o cliente de desarrollo build_id - Maestro E2E.
¿Cómo se relaciona esto con Jest en CI?
Jest prueba lógica; la evidencia de dispositivo prueba diseño, gestos y puentes nativos. Ambos requeridos para PR de UI - Conceptos básicos de pruebas móviles.
¿Puedo usar formularios de problemas en lugar de plantilla de markdown?
Sí - Los formularios de problemas de GitHub admiten campos requeridos. Convierte la tabla de dispositivos a entradas de formulario requeridas; Actions aún valida el cuerpo de PR si los colaboradores usan el vínculo Closes #.