up-cc 0.3.3 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +259 -49
- package/agents/up-api-tester.md +405 -0
- package/agents/up-arquiteto.md +461 -0
- package/agents/up-backend-specialist.md +158 -0
- package/agents/up-blind-validator.md +259 -0
- package/agents/up-clone-crawler.md +234 -0
- package/agents/up-clone-design-extractor.md +227 -0
- package/agents/up-clone-feature-mapper.md +225 -0
- package/agents/up-clone-prd-writer.md +169 -0
- package/agents/up-clone-verifier.md +227 -0
- package/agents/up-code-reviewer.md +225 -0
- package/agents/up-database-specialist.md +152 -0
- package/agents/up-devops-agent.md +203 -0
- package/agents/up-executor.md +45 -5
- package/agents/up-exhaustive-tester.md +348 -0
- package/agents/up-frontend-specialist.md +135 -0
- package/agents/up-product-analyst.md +192 -0
- package/agents/up-qa-agent.md +171 -0
- package/agents/up-requirements-validator.md +230 -0
- package/agents/up-security-reviewer.md +137 -0
- package/agents/up-system-designer.md +332 -0
- package/agents/up-technical-writer.md +188 -0
- package/agents/up-visual-critic.md +358 -0
- package/bin/up-tools.cjs +84 -2
- package/commands/clone-builder.md +67 -0
- package/commands/dashboard.md +48 -0
- package/commands/depurar.md +1 -1
- package/commands/mobile-first.md +71 -0
- package/commands/modo-builder.md +178 -0
- package/commands/ux-tester.md +63 -0
- package/package.json +1 -1
- package/references/blueprints/audit.md +29 -0
- package/references/blueprints/booking.md +49 -0
- package/references/blueprints/community.md +48 -0
- package/references/blueprints/crm.md +40 -0
- package/references/blueprints/dashboard.md +48 -0
- package/references/blueprints/data-management.md +42 -0
- package/references/blueprints/ecommerce.md +51 -0
- package/references/blueprints/marketplace.md +48 -0
- package/references/blueprints/notifications.md +32 -0
- package/references/blueprints/saas-users.md +50 -0
- package/references/blueprints/settings.md +31 -0
- package/references/engineering-principles.md +205 -0
- package/references/production-requirements.md +106 -0
- package/references/state-persistence.md +74 -0
- package/templates/builder-defaults.md +73 -0
- package/templates/delivery.md +279 -0
- package/templates/design-tokens.md +151 -0
- package/workflows/builder-e2e.md +501 -0
- package/workflows/builder.md +2248 -0
- package/workflows/clone-builder.md +320 -0
- package/workflows/executar-fase.md +28 -2
- package/workflows/executar-plano.md +404 -6
- package/workflows/mobile-first.md +692 -0
- package/workflows/novo-projeto.md +22 -0
- package/workflows/rapido.md +1 -1
- package/workflows/ux-tester.md +500 -0
|
@@ -0,0 +1,501 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Teste E2E via Playwright MCP para o modo builder. Abre o browser real, navega pelas funcionalidades, interage com a UI, tira screenshots e registra bugs encontrados.
|
|
3
|
+
|
|
4
|
+
Usado em dois momentos:
|
|
5
|
+
1. **Por fase** (Estagio 3): Testa funcionalidades da fase recem-executada
|
|
6
|
+
2. **Final completo** (Estagio 5): Smoke test de todas as rotas + fluxos E2E principais
|
|
7
|
+
|
|
8
|
+
Autonomo: NAO pergunta ao usuario. Se encontra bug, tenta corrigir (max 1 tentativa por bug).
|
|
9
|
+
</purpose>
|
|
10
|
+
|
|
11
|
+
<tools_available>
|
|
12
|
+
Ferramentas Playwright MCP disponiveis:
|
|
13
|
+
- `browser_navigate` — navegar para URL
|
|
14
|
+
- `browser_snapshot` — capturar acessibilidade da pagina (melhor que screenshot para acoes)
|
|
15
|
+
- `browser_take_screenshot` — capturar imagem da pagina (evidencia visual)
|
|
16
|
+
- `browser_click` — clicar em elemento (por ref do snapshot)
|
|
17
|
+
- `browser_type` — digitar texto em campo
|
|
18
|
+
- `browser_fill_form` — preencher multiplos campos de formulario
|
|
19
|
+
- `browser_select_option` — selecionar opcao em dropdown
|
|
20
|
+
- `browser_press_key` — pressionar tecla
|
|
21
|
+
- `browser_hover` — hover em elemento
|
|
22
|
+
- `browser_navigate_back` — voltar pagina
|
|
23
|
+
- `browser_console_messages` — ver logs do console (erros JS)
|
|
24
|
+
- `browser_network_requests` — ver requisicoes de rede (APIs falhando)
|
|
25
|
+
- `browser_evaluate` — executar JS na pagina
|
|
26
|
+
- `browser_run_code` — executar snippet Playwright completo
|
|
27
|
+
- `browser_tabs` — gerenciar abas
|
|
28
|
+
- `browser_resize` — redimensionar browser
|
|
29
|
+
- `browser_close` — fechar browser
|
|
30
|
+
</tools_available>
|
|
31
|
+
|
|
32
|
+
<process>
|
|
33
|
+
|
|
34
|
+
## Passo 1: Subir Dev Server
|
|
35
|
+
|
|
36
|
+
Detectar como subir o servidor baseado na stack:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Detectar comando de dev
|
|
40
|
+
if [ -f package.json ]; then
|
|
41
|
+
# Checar scripts disponiveis
|
|
42
|
+
node -e "const p=require('./package.json'); console.log(JSON.stringify(p.scripts||{}))"
|
|
43
|
+
fi
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
| Stack | Comando | Porta tipica |
|
|
47
|
+
|-------|---------|-------------|
|
|
48
|
+
| Next.js | `pnpm dev` ou `npm run dev` | 3000 |
|
|
49
|
+
| Vite/React | `pnpm dev` ou `npm run dev` | 5173 |
|
|
50
|
+
| Python/FastAPI | `uvicorn main:app --reload` | 8000 |
|
|
51
|
+
| Python/Flask | `flask run` | 5000 |
|
|
52
|
+
|
|
53
|
+
Subir servidor em background:
|
|
54
|
+
```bash
|
|
55
|
+
# Rodar em background e esperar ficar pronto
|
|
56
|
+
cd [project_dir]
|
|
57
|
+
[DEV_COMMAND] &
|
|
58
|
+
DEV_PID=$!
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Esperar servidor estar pronto:
|
|
62
|
+
```bash
|
|
63
|
+
# Tentar ate 30 segundos
|
|
64
|
+
for i in $(seq 1 30); do
|
|
65
|
+
curl -s http://localhost:[PORT] > /dev/null 2>&1 && break
|
|
66
|
+
sleep 1
|
|
67
|
+
done
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Se nao subir em 30s: registrar como falha, pular testes E2E.
|
|
71
|
+
|
|
72
|
+
Definir `$BASE_URL` = `http://localhost:[PORT]`
|
|
73
|
+
|
|
74
|
+
## Passo 2: Descobrir Rotas/Paginas
|
|
75
|
+
|
|
76
|
+
**Opcao A — Inferir de PLANs/SUMMARYs (preferido):**
|
|
77
|
+
|
|
78
|
+
Ler SUMMARYs da fase e extrair rotas criadas:
|
|
79
|
+
- Procurar padroes: `route.ts`, `page.tsx`, `/api/`, `router.get`, `app.get`
|
|
80
|
+
- Montar lista de rotas a testar
|
|
81
|
+
|
|
82
|
+
**Opcao B — Inferir de arquivos (fallback):**
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Next.js App Router
|
|
86
|
+
find app -name "page.tsx" -o -name "page.ts" 2>/dev/null | head -20
|
|
87
|
+
|
|
88
|
+
# Next.js Pages Router
|
|
89
|
+
find pages -name "*.tsx" -o -name "*.ts" 2>/dev/null | grep -v "_app\|_document\|api/" | head -20
|
|
90
|
+
|
|
91
|
+
# Vite/React (checar react-router)
|
|
92
|
+
grep -r "path:" src/ --include="*.tsx" --include="*.ts" 2>/dev/null | head -20
|
|
93
|
+
|
|
94
|
+
# API routes
|
|
95
|
+
find . -path "*/api/*" -name "*.ts" -o -name "*.py" 2>/dev/null | head -20
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Montar `$ROUTES` = lista de URLs a visitar.
|
|
99
|
+
|
|
100
|
+
## Passo 3: Teste por Fase (chamado do Estagio 3)
|
|
101
|
+
|
|
102
|
+
Para a fase recem-completada, testar as funcionalidades especificas.
|
|
103
|
+
|
|
104
|
+
### 3.1 Extrair Testes da Fase
|
|
105
|
+
|
|
106
|
+
Ler os must_haves dos PLANs da fase:
|
|
107
|
+
```yaml
|
|
108
|
+
must_haves:
|
|
109
|
+
truths:
|
|
110
|
+
- "Usuario pode ver lista de transacoes"
|
|
111
|
+
- "Usuario pode adicionar nova transacao"
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Cada truth vira um teste E2E:
|
|
115
|
+
- Traduzir truth em acoes concretas no browser
|
|
116
|
+
- Ex: "Usuario pode ver lista" → navegar → snapshot → verificar se lista existe
|
|
117
|
+
|
|
118
|
+
### 3.2 Executar Testes
|
|
119
|
+
|
|
120
|
+
Para cada teste:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
1. Navegar para a pagina relevante
|
|
124
|
+
mcp__plugin_playwright_playwright__browser_navigate(url: "$BASE_URL/[rota]")
|
|
125
|
+
|
|
126
|
+
2. Capturar snapshot (para obter refs dos elementos)
|
|
127
|
+
mcp__plugin_playwright_playwright__browser_snapshot()
|
|
128
|
+
|
|
129
|
+
3. Verificar que elementos esperados existem
|
|
130
|
+
- Procurar refs no snapshot que correspondem ao esperado
|
|
131
|
+
- Se nao encontrou: BUG — funcionalidade ausente
|
|
132
|
+
|
|
133
|
+
4. Interagir (se o teste requer)
|
|
134
|
+
- Clicar: browser_click(ref: "[ref]")
|
|
135
|
+
- Preencher: browser_fill_form(fields: [...])
|
|
136
|
+
- Submeter: browser_press_key(key: "Enter") ou browser_click no botao
|
|
137
|
+
|
|
138
|
+
5. Verificar resultado da interacao
|
|
139
|
+
- Novo snapshot apos acao
|
|
140
|
+
- Verificar mudanca esperada (novo item na lista, mensagem de sucesso, redirect)
|
|
141
|
+
|
|
142
|
+
6. Tirar screenshot como evidencia
|
|
143
|
+
mcp__plugin_playwright_playwright__browser_take_screenshot(
|
|
144
|
+
type: "png",
|
|
145
|
+
filename: ".plano/fases/[fase]/screenshots/teste-[N].png"
|
|
146
|
+
)
|
|
147
|
+
|
|
148
|
+
7. Checar console por erros
|
|
149
|
+
mcp__plugin_playwright_playwright__browser_console_messages(level: "error")
|
|
150
|
+
- Se ha erros JS: registrar como BUG
|
|
151
|
+
|
|
152
|
+
8. Checar network por falhas
|
|
153
|
+
mcp__plugin_playwright_playwright__browser_network_requests(static: false, requestBody: false, requestHeaders: false)
|
|
154
|
+
- Filtrar por status >= 400
|
|
155
|
+
- Se ha falhas de API: registrar como BUG
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### 3.3 Registrar Resultados
|
|
159
|
+
|
|
160
|
+
Criar `.plano/fases/[fase]/E2E-RESULTS.md`:
|
|
161
|
+
|
|
162
|
+
```markdown
|
|
163
|
+
---
|
|
164
|
+
phase: [fase]
|
|
165
|
+
tested: [timestamp]
|
|
166
|
+
server: [dev command] @ [port]
|
|
167
|
+
total: [N]
|
|
168
|
+
passed: [N]
|
|
169
|
+
failed: [N]
|
|
170
|
+
bugs: [N]
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
# Testes E2E — Fase [X]: [Nome]
|
|
174
|
+
|
|
175
|
+
## Resultados
|
|
176
|
+
|
|
177
|
+
### Teste 1: [Nome do teste]
|
|
178
|
+
**Must-have:** [truth original]
|
|
179
|
+
**Rota:** [URL testada]
|
|
180
|
+
**Acoes:** [O que foi feito]
|
|
181
|
+
**Resultado:** PASSOU | FALHOU
|
|
182
|
+
**Screenshot:** screenshots/teste-1.png
|
|
183
|
+
[Se falhou:]
|
|
184
|
+
**Bug:** [Descricao do que deu errado]
|
|
185
|
+
**Console:** [Erros JS, se houver]
|
|
186
|
+
**Network:** [Falhas de API, se houver]
|
|
187
|
+
|
|
188
|
+
### Teste 2: [Nome do teste]
|
|
189
|
+
...
|
|
190
|
+
|
|
191
|
+
## Erros de Console (Globais)
|
|
192
|
+
[Lista de erros JS encontrados durante todos os testes]
|
|
193
|
+
|
|
194
|
+
## Resumo
|
|
195
|
+
- Total: [N] testes
|
|
196
|
+
- Passou: [N]
|
|
197
|
+
- Falhou: [N]
|
|
198
|
+
- Bugs encontrados: [N]
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
### 3.4 Tentar Corrigir Bugs
|
|
202
|
+
|
|
203
|
+
Se bugs foram encontrados:
|
|
204
|
+
|
|
205
|
+
Para cada bug:
|
|
206
|
+
|
|
207
|
+
**Loop de correcao (max 5 tentativas por bug):**
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
tentativa = 1
|
|
211
|
+
enquanto tentativa <= 5 E bug nao corrigido:
|
|
212
|
+
1. Analisar o bug (screenshot + console + network + codigo)
|
|
213
|
+
2. Se tentativa > 1: analisar POR QUE a correcao anterior nao funcionou
|
|
214
|
+
3. Localizar arquivo provavel (`grep` pela rota/componente/erro)
|
|
215
|
+
4. Corrigir inline (Edit tool)
|
|
216
|
+
5. Commit atomico: `fix(fase-X): [descricao do bug] (tentativa {tentativa})`
|
|
217
|
+
6. Re-testar apenas o teste que falhou
|
|
218
|
+
7. Se passou: marcar como corrigido, sair do loop
|
|
219
|
+
8. Se ainda falha: tentativa += 1, voltar ao passo 1 com novo contexto
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Apos 5 tentativas sem correcao: registrar no E2E-RESULTS.md como "nao corrigido apos 5 tentativas" com descricao de cada tentativa feita.
|
|
223
|
+
|
|
224
|
+
## Passo 4: Teste Final Completo (chamado do Estagio 5)
|
|
225
|
+
|
|
226
|
+
Apos TODAS as fases completarem, fazer teste completo:
|
|
227
|
+
|
|
228
|
+
### 4.1 Smoke Test de Rotas
|
|
229
|
+
|
|
230
|
+
Visitar TODAS as rotas descobertas no Passo 2:
|
|
231
|
+
|
|
232
|
+
Para cada rota:
|
|
233
|
+
```
|
|
234
|
+
1. browser_navigate(url: rota)
|
|
235
|
+
2. Esperar 2 segundos (conteudo carregar)
|
|
236
|
+
3. browser_take_screenshot(filename: ".plano/e2e/smoke/[rota-slug].png")
|
|
237
|
+
4. browser_console_messages(level: "error") — checar erros
|
|
238
|
+
5. Registrar: rota acessivel (200) ou quebrada (erro/blank/404)
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### 4.2 Fluxos E2E Principais
|
|
242
|
+
|
|
243
|
+
Identificar 3-5 fluxos criticos do projeto (baseado em REQUIREMENTS.md):
|
|
244
|
+
|
|
245
|
+
**Exemplos de fluxos por dominio:**
|
|
246
|
+
|
|
247
|
+
| Dominio | Fluxos tipicos |
|
|
248
|
+
|---------|---------------|
|
|
249
|
+
| SaaS | Signup → Login → Dashboard → Criar item → Ver item |
|
|
250
|
+
| E-commerce | Browse → Add to cart → Checkout → Confirmar |
|
|
251
|
+
| Dashboard | Login → Ver graficos → Filtrar → Exportar |
|
|
252
|
+
| Social | Signup → Criar post → Feed → Comentar |
|
|
253
|
+
| Financeiro | Login → Ver transacoes → Adicionar → Categorizar → Relatorio |
|
|
254
|
+
|
|
255
|
+
Para cada fluxo:
|
|
256
|
+
|
|
257
|
+
```
|
|
258
|
+
1. Navegar para inicio do fluxo
|
|
259
|
+
2. Para cada passo do fluxo:
|
|
260
|
+
a. Snapshot (obter refs)
|
|
261
|
+
b. Interagir (clicar, preencher, submeter)
|
|
262
|
+
c. Verificar resultado esperado
|
|
263
|
+
d. Screenshot de evidencia
|
|
264
|
+
e. Checar console/network
|
|
265
|
+
3. Verificar estado final do fluxo
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### 4.3 Teste de Responsividade
|
|
269
|
+
|
|
270
|
+
Se o projeto tem UI web:
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
# Desktop (1920x1080)
|
|
274
|
+
browser_resize(width: 1920, height: 1080)
|
|
275
|
+
browser_navigate(url: $BASE_URL)
|
|
276
|
+
browser_take_screenshot(filename: ".plano/e2e/responsive/desktop.png")
|
|
277
|
+
|
|
278
|
+
# Tablet (768x1024)
|
|
279
|
+
browser_resize(width: 768, height: 1024)
|
|
280
|
+
browser_take_screenshot(filename: ".plano/e2e/responsive/tablet.png")
|
|
281
|
+
|
|
282
|
+
# Mobile (375x812)
|
|
283
|
+
browser_resize(width: 375, height: 812)
|
|
284
|
+
browser_take_screenshot(filename: ".plano/e2e/responsive/mobile.png")
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### 4.4 Gerar Relatorio Final E2E
|
|
288
|
+
|
|
289
|
+
Criar `.plano/e2e/E2E-REPORT.md`:
|
|
290
|
+
|
|
291
|
+
```markdown
|
|
292
|
+
---
|
|
293
|
+
tested: [timestamp]
|
|
294
|
+
server: [dev command] @ [port]
|
|
295
|
+
routes_total: [N]
|
|
296
|
+
routes_ok: [N]
|
|
297
|
+
routes_broken: [N]
|
|
298
|
+
flows_total: [N]
|
|
299
|
+
flows_passed: [N]
|
|
300
|
+
flows_failed: [N]
|
|
301
|
+
bugs_found: [N]
|
|
302
|
+
bugs_fixed: [N]
|
|
303
|
+
---
|
|
304
|
+
|
|
305
|
+
# Relatorio de Testes E2E
|
|
306
|
+
|
|
307
|
+
## Smoke Test de Rotas
|
|
308
|
+
|
|
309
|
+
| Rota | Status | Erros Console | Screenshot |
|
|
310
|
+
|------|--------|---------------|------------|
|
|
311
|
+
| / | OK | 0 | smoke/index.png |
|
|
312
|
+
| /dashboard | OK | 0 | smoke/dashboard.png |
|
|
313
|
+
| /settings | ERRO | 1 | smoke/settings.png |
|
|
314
|
+
|
|
315
|
+
**Rotas acessiveis:** [N]/[M]
|
|
316
|
+
|
|
317
|
+
## Fluxos E2E
|
|
318
|
+
|
|
319
|
+
### Fluxo 1: [Nome]
|
|
320
|
+
**Passos:** [N]
|
|
321
|
+
**Resultado:** PASSOU | FALHOU no passo [X]
|
|
322
|
+
**Screenshots:** [lista]
|
|
323
|
+
[Se falhou: descricao do bug]
|
|
324
|
+
|
|
325
|
+
### Fluxo 2: [Nome]
|
|
326
|
+
...
|
|
327
|
+
|
|
328
|
+
## Responsividade
|
|
329
|
+
|
|
330
|
+
| Viewport | Screenshot | Problemas |
|
|
331
|
+
|----------|-----------|-----------|
|
|
332
|
+
| Desktop (1920x1080) | responsive/desktop.png | Nenhum |
|
|
333
|
+
| Tablet (768x1024) | responsive/tablet.png | [problemas] |
|
|
334
|
+
| Mobile (375x812) | responsive/mobile.png | [problemas] |
|
|
335
|
+
|
|
336
|
+
## Bugs Encontrados
|
|
337
|
+
|
|
338
|
+
| # | Descricao | Severidade | Rota | Corrigido? |
|
|
339
|
+
|---|-----------|-----------|------|-----------|
|
|
340
|
+
| 1 | [bug] | [alta/media/baixa] | [rota] | Sim/Nao |
|
|
341
|
+
|
|
342
|
+
## Erros de Console (Todos)
|
|
343
|
+
|
|
344
|
+
[Lista agregada de todos erros JS encontrados]
|
|
345
|
+
|
|
346
|
+
## Metricas
|
|
347
|
+
|
|
348
|
+
| Metrica | Valor |
|
|
349
|
+
|---------|-------|
|
|
350
|
+
| Rotas testadas | [N] |
|
|
351
|
+
| Rotas OK | [N] |
|
|
352
|
+
| Fluxos testados | [N] |
|
|
353
|
+
| Fluxos OK | [N] |
|
|
354
|
+
| Bugs encontrados | [N] |
|
|
355
|
+
| Bugs corrigidos | [N] |
|
|
356
|
+
| Screenshots gerados | [N] |
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
## Passo 5: Cleanup
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
# Matar dev server
|
|
363
|
+
kill $DEV_PID 2>/dev/null
|
|
364
|
+
|
|
365
|
+
# Fechar browser
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
mcp__plugin_playwright_playwright__browser_close()
|
|
369
|
+
|
|
370
|
+
</process>
|
|
371
|
+
|
|
372
|
+
<smart_testing>
|
|
373
|
+
## Testes Inteligentes — Adaptar ao Dominio
|
|
374
|
+
|
|
375
|
+
O builder NAO executa testes genericos. Cada teste e derivado dos REQUIREMENTS e must_haves do projeto.
|
|
376
|
+
|
|
377
|
+
**Como derivar testes dos must_haves:**
|
|
378
|
+
|
|
379
|
+
```yaml
|
|
380
|
+
# must_have original:
|
|
381
|
+
truths:
|
|
382
|
+
- "Usuario pode ver lista de transacoes"
|
|
383
|
+
|
|
384
|
+
# Teste E2E derivado:
|
|
385
|
+
1. Navegar para /transactions (ou rota equivalente)
|
|
386
|
+
2. Snapshot: verificar que existe uma lista/tabela
|
|
387
|
+
3. Verificar que tem pelo menos headers/colunas esperadas
|
|
388
|
+
4. Screenshot de evidencia
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
```yaml
|
|
392
|
+
# must_have original:
|
|
393
|
+
truths:
|
|
394
|
+
- "Usuario pode criar nova transacao"
|
|
395
|
+
|
|
396
|
+
# Teste E2E derivado:
|
|
397
|
+
1. Navegar para /transactions/new (ou clicar em botao "Nova")
|
|
398
|
+
2. Snapshot: verificar que existe formulario
|
|
399
|
+
3. Preencher campos obrigatorios com dados de teste
|
|
400
|
+
4. Submeter formulario
|
|
401
|
+
5. Verificar redirect ou mensagem de sucesso
|
|
402
|
+
6. Navegar para lista: verificar que novo item aparece
|
|
403
|
+
7. Screenshots em cada passo
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
**Dados de teste:**
|
|
407
|
+
|
|
408
|
+
Usar dados realistas mas falsos:
|
|
409
|
+
- Email: `teste@example.com`
|
|
410
|
+
- Nome: `Usuario Teste`
|
|
411
|
+
- Valores: numeros redondos (100, 250, 1000)
|
|
412
|
+
- Datas: data atual ou proxima semana
|
|
413
|
+
- Textos: "Teste automatico - [timestamp]"
|
|
414
|
+
|
|
415
|
+
**Interacoes com auth:**
|
|
416
|
+
|
|
417
|
+
Se o projeto tem autenticacao:
|
|
418
|
+
1. Primeiro: tentar acessar pagina protegida (deve redirecionar para login)
|
|
419
|
+
2. Se Supabase Auth: criar usuario de teste via API
|
|
420
|
+
3. Se custom auth: usar formulario de signup
|
|
421
|
+
4. Fazer login antes dos testes
|
|
422
|
+
5. Manter sessao para todos os testes seguintes
|
|
423
|
+
|
|
424
|
+
```bash
|
|
425
|
+
# Criar usuario de teste via Supabase (se aplicavel)
|
|
426
|
+
# O executor ja deve ter criado um seed/migration com dados de teste
|
|
427
|
+
# Se nao: usar signup form
|
|
428
|
+
```
|
|
429
|
+
</smart_testing>
|
|
430
|
+
|
|
431
|
+
<failure_handling>
|
|
432
|
+
## Tratamento de Falhas
|
|
433
|
+
|
|
434
|
+
**Dev server nao sobe:**
|
|
435
|
+
- Checar se porta ja esta em uso: `lsof -i :[PORT]`
|
|
436
|
+
- Tentar porta alternativa
|
|
437
|
+
- Se nao resolver: pular E2E, registrar no DELIVERY.md
|
|
438
|
+
|
|
439
|
+
**Pagina em branco:**
|
|
440
|
+
- Checar console_messages por erros
|
|
441
|
+
- Pode ser hydration error, missing env var, build error
|
|
442
|
+
- Registrar como bug critico
|
|
443
|
+
|
|
444
|
+
**Elemento nao encontrado no snapshot:**
|
|
445
|
+
- Pode ser loading state — esperar 2s e re-snapshot
|
|
446
|
+
- Pode ser rota errada — verificar SUMMARY para rota correta
|
|
447
|
+
- Se persiste: registrar como bug
|
|
448
|
+
|
|
449
|
+
**Timeout em interacao:**
|
|
450
|
+
- Re-tentar ate 3 vezes com espera crescente (1s, 3s, 5s)
|
|
451
|
+
- Se persiste: registrar como bug e seguir pro proximo teste
|
|
452
|
+
|
|
453
|
+
**Principio:** Testes E2E nunca bloqueiam o builder. Falhas sao registradas e contornadas.
|
|
454
|
+
</failure_handling>
|
|
455
|
+
|
|
456
|
+
<directories>
|
|
457
|
+
## Estrutura de Arquivos
|
|
458
|
+
|
|
459
|
+
```
|
|
460
|
+
.plano/
|
|
461
|
+
fases/
|
|
462
|
+
XX-nome/
|
|
463
|
+
screenshots/ # Screenshots por fase
|
|
464
|
+
teste-1.png
|
|
465
|
+
teste-2.png
|
|
466
|
+
E2E-RESULTS.md # Resultados da fase
|
|
467
|
+
e2e/ # Teste final completo
|
|
468
|
+
smoke/ # Screenshots do smoke test
|
|
469
|
+
index.png
|
|
470
|
+
dashboard.png
|
|
471
|
+
responsive/ # Screenshots de responsividade
|
|
472
|
+
desktop.png
|
|
473
|
+
tablet.png
|
|
474
|
+
mobile.png
|
|
475
|
+
flows/ # Screenshots dos fluxos E2E
|
|
476
|
+
flow-1-step-1.png
|
|
477
|
+
flow-1-step-2.png
|
|
478
|
+
E2E-REPORT.md # Relatorio final completo
|
|
479
|
+
```
|
|
480
|
+
</directories>
|
|
481
|
+
|
|
482
|
+
<success_criteria>
|
|
483
|
+
**Teste por fase:**
|
|
484
|
+
- [ ] Dev server subiu
|
|
485
|
+
- [ ] Must-haves da fase traduzidos em testes
|
|
486
|
+
- [ ] Cada teste executado (navegar + interagir + verificar)
|
|
487
|
+
- [ ] Screenshots tirados como evidencia
|
|
488
|
+
- [ ] Console e network checados
|
|
489
|
+
- [ ] Bugs registrados com descricao
|
|
490
|
+
- [ ] Tentativa de correcao (max 1x por bug)
|
|
491
|
+
- [ ] E2E-RESULTS.md criado na pasta da fase
|
|
492
|
+
|
|
493
|
+
**Teste final:**
|
|
494
|
+
- [ ] Todas rotas visitadas (smoke test)
|
|
495
|
+
- [ ] 3-5 fluxos E2E principais testados
|
|
496
|
+
- [ ] Responsividade verificada (desktop/tablet/mobile)
|
|
497
|
+
- [ ] Bugs agregados e priorizados
|
|
498
|
+
- [ ] E2E-REPORT.md gerado em .plano/e2e/
|
|
499
|
+
- [ ] Dev server fechado
|
|
500
|
+
- [ ] Browser fechado
|
|
501
|
+
</success_criteria>
|