Habilidad de pruebas móviles
Planes Jest + Maestro a partir de criterios de aceptación - una Agent Skill que convierte AC de producto en una prueba piramidal para aplicaciones Expo SDK 57.
Busca en todas las páginas de la documentación
Planes Jest + Maestro a partir de criterios de aceptación - una Agent Skill que convierte AC de producto en una prueba piramidal para aplicaciones Expo SDK 57.
A partir de criterios de aceptación escritos, produce:
jest-expo + RNTL)e2e-test| Entrada | Por qué |
|---|---|
| Criterios de aceptación | Fuente de casos de prueba |
appId / bundle ID | Campo appId de Maestro |
| Nombres de pantalla/ruta | Selectores estables y navegación |
Política testID | Convención de equipo para taps id: de Maestro |
| Perfil de compilación | Compilación APK / simulador e2e-test |
| Límites de mock | APIs, SecureStore, sensores |
*.test.ts(x) con queries RNTL (role/label primero).maestro/<journey>.ymljest.setup.ts si es necesarioeas.json e2e-testnpm run test:ci, maestro test .maestro/getByRole, getByLabelText antes de testID (RNTL).appId de Maestro coincidencia exacta - bundle ID ≠ nombre mostrado.Tarjeta de receta de referencia rápida - lista para copiar y pegar.
AC de entrada (ejemplo):
- El invitado puede agregar artículo al carrito desde la lista de productos
- El badge del carrito muestra el recuento de artículos
- El usuario que inició sesión ve la dirección guardada en el checkoutEsquema de salida de habilidad:
// src/features/cart/cart.test.ts
import { addToCart } from "./cart-logic";
describe("addToCart", () => {
it("increments quantity for existing sku", () => {
expect(addToCart({ sku: "A1", qty: 1 }, { sku: "A1", qty: 2 })).toEqual({
sku: "A1",
qty: 3,
});
});
});// src/features/cart/CartBadge.test.tsx
import { render, screen } from "@testing-library/react-native";
import { CartBadge } from "./CartBadge";
it("shows count when items present", () => {
render(<CartBadge count={3} />);
expect(screen.getByLabelText("Cart, 3 items")).toBeTruthy();
});# .maestro/add-to-cart.yml
appId: com.example.shop
---
- launchApp
- tapOn: "Products"
- tapOn:
id: "product-tile-A1"
- tapOn: "Add to cart"
- assertVisible:
id: "cart-badge"
text: "1"npm run test:ci
maestro test .maestro/add-to-cart.ymlCuándo usar esta habilidad:
| AC | Capa | Artefacto |
|---|---|---|
| Lógica agregar al carrito | Unitaria | cart-logic.test.ts |
| Badge visible | Componente | CartBadge.test.tsx |
| Lista - detalle - carrito | E2E | .maestro/add-to-cart.yml |
| Dirección guardada en checkout | Integración + E2E | test de API mock + flujo de checkout |
npx expo install jest-expo jest @types/jest @testing-library/react-native test-renderer --dev{
"jest": {
"preset": "jest-expo",
"transformIgnorePatterns": [
"node_modules/(?!((jest-)?react-native|@react-native(-community)?)|expo(nent)?|@expo(nent)?/.*|@expo-google-fonts/.*|react-navigation|@react-navigation/.*|@sentry/react-native|native-base|react-native-svg)"
],
"setupFilesAfterEnv": ["<rootDir>/jest.setup.ts"]
}
}Preset completo: Jest Setup for Expo.
// eas.json excerpt
{
"build": {
"e2e-test": {
"withoutCredentials": true,
"ios": { "simulator": true },
"android": { "buildType": "apk" }
}
}
}# .eas/workflows/e2e-test-android.yml
name: e2e-test-android
on:
pull_request:
branches: ["*"]
jobs:
build_android_for_e2e:
type: build
params:
platform: android
profile: e2e-test
maestro_test:
needs: [build_android_for_e2e]
type: maestro
params:
build_id: ${{ needs.build_android_for_e2e.outputs.build_id }}
flow_path: [".maestro/add-to-cart.yml"]assertVisible: "Welcome back.*"extendedWaitUntil para pantallas de red lentaUse Mobile Testing skill. SDK 57.
AC:
1. User can reset password via email link
2. Invalid code shows inline error
Deliver: Jest tests for validation + Maestro happy path only.
appId: com.example.auth. testID prefix: auth-Use Mobile Testing skill - review mode.
Existing tests attached. AC changed: cart supports quantity edit.
Diff test plan only - which Jest files to update, new Maestro flow or extend?Use Mobile Testing skill.
Add contract test stub for GET /v1/orders response shape.
Cross-link jest-expo setup. No Detox - Maestro only for E2E.- [ ] AC - tabla de trazabilidad de casos de prueba
- [ ] Tests unitarios para lógica pura
- [ ] Tests de componentes RNTL para comportamiento visible
- [ ] <= 2 flujos Maestro para rutas críticas
- [ ] Preset jest-expo confirmado
- [ ] appId coincide con bundle ID de app.config
- [ ] Comando CI: npm run test:ci
- [ ] Perfil de compilación E2E documentado
- [ ] AC enumerado explícitamente NO cubierto por E2E (con motivo)Predeterminado a Maestro para equipos de Expo SDK 57. Menciona Detox solo cuando AC requiera sincronización nativa en la que Detox destaca - ve Detox E2E.
Un flujo feliz + una ruta crítica de falla máximo por función. Lo demás pertenece a Jest.
Solo para componentes presentacionales pequeños - no pantallas completas. Prefiere aserciones role/label.
Versiones de stack: Esta página fue escrita para React 19.2.3, React Native 0.86.0, y Expo SDK 57 (
expo~57.0.4).
Revisado por Chris St. John·Última actualización: 16 jul 2026