Habilidade de Teste Mobile
Jest + Maestro planejam a partir de critérios de aceitação - uma Habilidade de Agente que transforma AC de produto em uma fatia da pirâmide de testes para aplicativos Expo SDK 57.
Busque em todas as páginas da documentação
Jest + Maestro planejam a partir de critérios de aceitação - uma Habilidade de Agente que transforma AC de produto em uma fatia da pirâmide de testes para aplicativos Expo SDK 57.
A partir de critérios de aceitação escritos, produz:
jest-expo + RNTL)e2e-test do EAS| Entrada | Por quê |
|---|---|
| Critérios de aceitação | Fonte dos casos de teste |
appId / ID do pacote | Campo appId do Maestro |
| Nomes de tela/rota | Seletores e navegação estáveis |
Política de testID | Convenção da equipe para toques id: do Maestro |
| Perfil de build | APK / simulador de build e2e-test |
| Limites de mock | APIs, SecureStore, sensores |
*.test.ts(x) com consultas RNTL (role/label primeiro).maestro/<jornada>.ymljest.setup.ts se necessárioe2e-test em eas.jsonnpm run test:ci, maestro test .maestro/getByRole, getByLabelText antes de testID (RNTL).appId do Maestro correspondência exata - ID do pacote ≠ nome de exibição.Cartão de receita de referência rápida - pronto para copiar e colar.
AC de Entrada (exemplo):
- Convidado pode adicionar item ao carrinho a partir da lista de produtos
- O selo do carrinho mostra a contagem de itens
- Usuário conectado vê o endereço salvo no checkoutEsqueleto da saída da habilidade:
// 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.ymlQuando recorrer a esta habilidade:
| AC | Camada | Artefato |
|---|---|---|
| Lógica de adicionar ao carrinho | Unitária | cart-logic.test.ts |
| Selo visível | Componente | CartBadge.test.tsx |
| Lista → detalhe → carrinho | E2E | .maestro/add-to-cart.yml |
| Endereço salvo no checkout | Integração + E2E | teste de API mockado + fluxo 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: Configuração do Jest para Expo.
// trecho do eas.json
{
"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 telas de rede lentaUse a habilidade Mobile Testing. SDK 57.
AC:
1. Usuário pode redefinir senha via link de e-mail
2. Código inválido mostra erro inline
Entregar: Testes Jest para validação + apenas caminho feliz do Maestro.
appId: com.example.auth. Prefixo testID: auth-Use a habilidade Mobile Testing - modo de revisão.
Testes existentes anexados. AC alterado: carrinho suporta edição de quantidade.
Apenas plano de teste diff - quais arquivos Jest atualizar, novo fluxo Maestro ou estender?Use a habilidade Mobile Testing.
Adicionar stub de teste de contrato para a forma da resposta GET /v1/orders.
Link cruzado com a configuração jest-expo. Sem Detox - apenas Maestro para E2E.- [ ] Rastreabilidade AC → caso de teste tabela
- [ ] Testes unitários para lógica pura
- [ ] Testes de componentes RNTL para comportamento visível
- [ ] ≤ 2 fluxos Maestro para caminhos críticos
- [ ] Preset jest-expo confirmado
- [ ] appId corresponde ao ID do pacote de app.config
- [ ] Comando CI: npm run test:ci
- [ ] Perfil de build E2E documentado
- [ ] AC listado explicitamente NÃO coberto por E2E (com motivo)Prefira Maestro para equipes Expo SDK 57. Mencione Detox apenas quando o AC exigir sincronização nativa em que o Detox se destaca - veja Detox E2E.
No máximo um caminho feliz + um caminho de falha crítica por funcionalidade. Mais pertence ao Jest.
Apenas para pequenos componentes de apresentação - não telas inteiras. Prefira asserções de role/label.
Versões da Stack: Esta página foi escrita para React 19.2.3, React Native 0.86.0 e Expo SDK 57 (
expo~57.0.4).
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026