jarvis-ai-framework 2.1.1 → 3.2.0
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/AGENTS.md +14 -115
- package/agents/AGENTS.md +11 -23
- package/agents/README.md +27 -129
- package/agents/engineering/data/eng.data-engineer.agent.md +11 -34
- package/agents/engineering/eng.advisor.agent.md +56 -0
- package/agents/engineering/eng.agent.md +14 -24
- package/agents/engineering/eng.bug-hunter.md +7 -15
- package/agents/engineering/eng.dev-code-reviewer.md +1 -1
- package/agents/engineering/eng.frontend.agent.md +3 -7
- package/agents/engineering/eng.rpa.agent.md +2 -8
- package/agents/engineering/qa/eng.qa.quality-strategist.md +6 -11
- package/agents/engineering/qa/eng.qa.test-architect.md +8 -18
- package/agents/engineering/qa/eng.qa.test-planner.md +10 -14
- package/agents/engineering/qa/eng.qa.testing-engineer.md +91 -24
- package/agents/product/prod.discovery-interviewer.md +3 -3
- package/bin/README.md +142 -0
- package/bin/commands/docs-publish.js +105 -141
- package/bin/commands/docs-sync.js +66 -104
- package/bin/commands/info.js +7 -27
- package/bin/commands/init.js +23 -51
- package/bin/commands/install-rtk.js +9 -3
- package/bin/commands/list.js +5 -18
- package/bin/commands/map.js +20 -5
- package/bin/commands/qa-signoff.js +58 -55
- package/bin/commands/tokens.js +14 -17
- package/bin/commands/whoami.js +30 -26
- package/bin/jarvis.js +9 -163
- package/bin/lib/auth/session.js +20 -20
- package/bin/lib/cli/program.js +219 -0
- package/bin/lib/cli/shared-options.js +29 -0
- package/bin/lib/config/constants.js +59 -2
- package/bin/lib/config/ide-config.js +4 -8
- package/bin/lib/core/profile-filter.js +4 -1
- package/bin/lib/core/scanner.js +3 -29
- package/bin/lib/core/sync-engine.js +21 -14
- package/bin/lib/core/token-report.js +12 -2
- package/bin/lib/docs/fetch-file.js +39 -0
- package/bin/lib/docs/publish-file.js +194 -0
- package/bin/lib/docs/redis-cache.js +49 -0
- package/bin/lib/docs/validate-frontmatter.js +9 -39
- package/bin/lib/env-loader.js +11 -34
- package/bin/lib/flow-map/parse.js +11 -5
- package/bin/lib/flow-map/render.js +5 -2
- package/bin/lib/flow-map/tree.js +59 -10
- package/bin/lib/tasks/comment.js +40 -35
- package/bin/lib/utils/frontmatter.js +57 -0
- package/bin/lib/utils/git-parser.js +4 -6
- package/bin/lib/utils/npmrc-parser.js +6 -13
- package/bin/lib/utils/paths.js +2 -4
- package/bin/lib/utils/ui.js +3 -9
- package/bin/lib/vcs/api.js +25 -41
- package/bin/lib/vcs/create-issue.js +49 -33
- package/bin/lib/vcs/create-merge.js +47 -31
- package/bin/lib/vcs/fetch-raw.js +35 -23
- package/package.json +14 -5
- package/rules/engineering/eng-rules.md +1 -1
- package/rules/engineering/eng-security-rules.md +18 -16
- package/rules/engineering/eng.bump-rules.md +3 -2
- package/rules/engineering/eng.docs-scraping-rules.md +4 -4
- package/rules/engineering/eng.integrations-rules.md +6 -4
- package/rules/engineering/eng.skills-rules.md +1 -1
- package/rules/engineering/eng.specializations-rules.md +18 -4
- package/rules/engineering/frontend/eng.frontend-rules.md +1 -4
- package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +1 -1
- package/rules/engineering/rpa/eng.rpa-rules.md +4 -9
- package/rules-on-demand/engineering/eng.pre-pr-rules.md +1 -1
- package/rules-on-demand/engineering/eng.start-rules.md +2 -0
- package/skills/AGENTS.md +52 -87
- package/skills/SKILLS-ROADMAP.md +47 -128
- package/skills/eng-ai/SKILL.md +270 -0
- package/skills/eng-ai/references/1-fundamentos-ml.md +24 -0
- package/skills/eng-ai/references/10-arquitetura-solucoes-ia.md +24 -0
- package/skills/eng-ai/references/11-governanca-ia.md +24 -0
- package/skills/eng-ai/references/12-seguranca-ia-responsavel.md +25 -0
- package/skills/eng-ai/references/2-matematica-estatistica.md +24 -0
- package/skills/eng-ai/references/3-dados-para-ia.md +24 -0
- package/skills/eng-ai/references/4-deep-learning-fundacionais.md +24 -0
- package/skills/eng-ai/references/5-llms-chatbots-agentes-rag.md +25 -0
- package/skills/eng-ai/references/6-avaliacao-experimentacao.md +24 -0
- package/skills/eng-ai/references/7-engenharia-sistemas-ia.md +24 -0
- package/skills/eng-ai/references/8-mlops-plataforma.md +24 -0
- package/skills/eng-ai/references/9-produto-ia.md +24 -0
- package/skills/eng-ai/references/especializacoes.md +17 -0
- package/skills/eng-automation/SKILL.md +290 -0
- package/skills/eng-automation/references/1-fundamentos-automacao.md +25 -0
- package/skills/eng-automation/references/10-ingestao-dados.md +25 -0
- package/skills/eng-automation/references/11-captcha-antibot.md +25 -0
- package/skills/eng-automation/references/12-limites-taxa-sessoes.md +25 -0
- package/skills/eng-automation/references/13-agendamento-orquestracao.md +24 -0
- package/skills/eng-automation/references/14-retentativa-erros.md +25 -0
- package/skills/eng-automation/references/15-autenticacao-credenciais.md +24 -0
- package/skills/eng-automation/references/16-observabilidade-confiabilidade.md +24 -0
- package/skills/eng-automation/references/2-aquisicao-dados.md +25 -0
- package/skills/eng-automation/references/3-automacao-navegador.md +24 -0
- package/skills/eng-automation/references/4-scraping-crawling.md +25 -0
- package/skills/eng-automation/references/5-apis-rest-graphql-soap.md +26 -0
- package/skills/eng-automation/references/6-webhooks-integracao.md +25 -0
- package/skills/eng-automation/references/7-rpa.md +25 -0
- package/skills/eng-automation/references/8-extracao-estruturada.md +25 -0
- package/skills/eng-automation/references/9-extracao-documentos.md +25 -0
- package/skills/eng-automation/references/especializacoes.md +18 -0
- package/skills/eng-backend-nestjs/SKILL.md +1 -1
- package/skills/eng-data/SKILL.md +271 -0
- package/skills/eng-data/references/1-fundamentos-dados.md +24 -0
- package/skills/eng-data/references/10-ciencia-dados.md +24 -0
- package/skills/eng-data/references/11-dataops-plataforma.md +24 -0
- package/skills/eng-data/references/12-seguranca-privacidade.md +24 -0
- package/skills/eng-data/references/2-modelagem-dados.md +24 -0
- package/skills/eng-data/references/3-bancos-dados.md +24 -0
- package/skills/eng-data/references/4-arquitetura-dados.md +24 -0
- package/skills/eng-data/references/5-pipelines-integracao.md +24 -0
- package/skills/eng-data/references/6-qualidade-dados.md +24 -0
- package/skills/eng-data/references/7-governanca-metadados.md +24 -0
- package/skills/eng-data/references/8-estatistica-analise.md +24 -0
- package/skills/eng-data/references/9-analytics-bi.md +24 -0
- package/skills/eng-data/references/especializacoes.md +20 -0
- package/skills/eng-frontend/SKILL.md +12 -5
- package/skills/eng-frontend/references/13-design-system.md +48 -0
- package/skills/eng-frontend/references/14-microfrontend.md +46 -0
- package/skills/eng-global-task-comment/SKILL.md +3 -3
- package/skills/eng-platform/SKILL.md +331 -0
- package/skills/eng-platform/references/1-fundamentos-sistemas.md +23 -0
- package/skills/eng-platform/references/10-resiliencia-arquitetura.md +24 -0
- package/skills/eng-platform/references/11-plataforma-devex.md +24 -0
- package/skills/eng-platform/references/12-finops-custos.md +24 -0
- package/skills/eng-platform/references/13-seguranca-fundamentos.md +26 -0
- package/skills/eng-platform/references/14-profiling-performance.md +23 -0
- package/skills/eng-platform/references/15-testes-carga-chaos.md +23 -0
- package/skills/eng-platform/references/16-cache-multicamada.md +22 -0
- package/skills/eng-platform/references/2-redes.md +23 -0
- package/skills/eng-platform/references/3-cloud.md +24 -0
- package/skills/eng-platform/references/4-iac-automacao.md +24 -0
- package/skills/eng-platform/references/5-containers-orquestracao.md +25 -0
- package/skills/eng-platform/references/6-cicd-entrega.md +24 -0
- package/skills/eng-platform/references/7-observabilidade.md +24 -0
- package/skills/eng-platform/references/8-confiabilidade-sre.md +24 -0
- package/skills/eng-platform/references/9-seguranca-infra.md +26 -0
- package/skills/eng-platform/references/especializacoes.md +34 -0
- package/skills/eng-qa/SKILL.md +283 -0
- package/skills/eng-qa/references/1-fundamentos-qualidade.md +25 -0
- package/skills/eng-qa/references/10-confiabilidade.md +25 -0
- package/skills/eng-qa/references/11-seguranca.md +24 -0
- package/skills/eng-qa/references/12-acessibilidade.md +24 -0
- package/skills/eng-qa/references/13-dados-testes.md +24 -0
- package/skills/eng-qa/references/14-gestao-testes-defeitos.md +25 -0
- package/skills/eng-qa/references/15-arquitetura-qa.md +25 -0
- package/skills/eng-qa/references/2-estrategia-planejamento.md +25 -0
- package/skills/eng-qa/references/3-design-testes.md +25 -0
- package/skills/eng-qa/references/4-manual-exploratorio.md +24 -0
- package/skills/eng-qa/references/5-automacao-testes.md +25 -0
- package/skills/eng-qa/references/6-api-integracao.md +25 -0
- package/skills/eng-qa/references/7-contrato.md +24 -0
- package/skills/eng-qa/references/8-interface-compat-mobile.md +24 -0
- package/skills/eng-qa/references/9-performance.md +24 -0
- package/skills/eng-qa/references/especializacoes.md +29 -0
- package/skills/eng-qa-planner/SKILL.md +264 -0
- package/skills/jarvis-context-detect/SKILL.md +1 -1
- package/skills/jarvis-context-detect/assets/context-profile-template.md +1 -1
- package/skills/jarvis-create-specialization/SKILL.md +8 -0
- package/skills/jarvis-docs-central/README.md +31 -28
- package/skills/jarvis-docs-central/SKILL.md +5 -5
- package/skills/jarvis-init/SKILL.md +9 -8
- package/skills/jarvis-init/assets/passo-adicionar-stacks.md +47 -18
- package/skills/jarvis-list-specializations/SKILL.md +30 -17
- package/skills/jarvis-report-issue/SKILL.md +1 -1
- package/taxonomy.md +4 -16
- package/templates/AGENTS.md +2 -0
- package/templates/ENV-template.md +20 -2
- package/templates/engineering/advisor-template.md +65 -0
- package/templates/engineering/architecture-template.md +52 -4
- package/templates/engineering/qa/qa.sprint-plan-template.md +1 -1
- package/workflows/AGENTS.md +3 -1
- package/workflows/README.md +0 -10
- package/workflows/engineering/data/data.new-pipeline.md +6 -5
- package/workflows/engineering/eng.bug-audit.md +4 -14
- package/workflows/engineering/eng.debug.md +4 -20
- package/workflows/engineering/eng.plan.md +4 -26
- package/workflows/engineering/eng.pr.md +13 -63
- package/workflows/engineering/eng.pre-pr.md +14 -51
- package/workflows/engineering/eng.review.md +7 -13
- package/workflows/engineering/eng.rpa.robot.md +3 -9
- package/workflows/engineering/eng.start.md +37 -32
- package/workflows/engineering/eng.work.md +17 -40
- package/workflows/engineering/qa/eng.qa-sprint-planning.md +1 -1
- package/workflows/product/prod.spec.discovery.md +2 -2
- package/workflows/warm-up.md +35 -63
- package/agents/engineering/eng.cybersecurity.agent.md +0 -486
- package/agents/engineering/qa/eng.qa.cypress-specialist.md +0 -112
- package/bin/lib/docs/fetch-file.sh +0 -41
- package/bin/lib/docs/publish-file.sh +0 -284
- package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +0 -137
- package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +0 -181
- package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +0 -120
- package/skills/eng-ai-engineer/SKILL.md +0 -303
- package/skills/eng-data-bi/SKILL.md +0 -206
- package/skills/eng-data-debug/SKILL.md +0 -314
- package/skills/eng-data-engineer/SKILL.md +0 -266
- package/skills/eng-data-onboard/SKILL.md +0 -317
- package/skills/eng-data-orchestrator/SKILL.md +0 -433
- package/skills/eng-devops-performance-engineer/SKILL.md +0 -319
- package/skills/eng-frontend-design-system/SKILL.md +0 -155
- package/skills/eng-frontend-design-system/references/1-estrutura-pacote.md +0 -57
- package/skills/eng-frontend-design-system/references/2-tokens.md +0 -116
- package/skills/eng-frontend-design-system/references/3-componentes.md +0 -165
- package/skills/eng-frontend-design-system/references/4-storybook.md +0 -85
- package/skills/eng-frontend-design-system/references/5-auditoria-versionamento.md +0 -76
- package/skills/eng-frontend-microfrontend/SKILL.md +0 -164
- package/skills/eng-frontend-microfrontend/references/1-criando-remote.md +0 -109
- package/skills/eng-frontend-microfrontend/references/2-configurando-shell.md +0 -70
- package/skills/eng-frontend-microfrontend/references/3-contratos-interface.md +0 -73
- package/skills/eng-frontend-microfrontend/references/4-shared-dependencies.md +0 -48
- package/skills/eng-frontend-microfrontend/references/5-event-bus.md +0 -59
- package/skills/eng-frontend-microfrontend/references/6-monorepo-deploy.md +0 -77
- package/skills/eng-frontend-microfrontend/references/7-troubleshooting.md +0 -45
- package/skills/eng-global-browser-extension-builder/SKILL.md +0 -392
- package/skills/eng-global-jira-comment/SKILL.md +0 -27
- package/skills/eng-qa-a11y-audit/SKILL.md +0 -276
- package/skills/eng-qa-bug-report/SKILL.md +0 -877
- package/skills/eng-qa-bug-report/TASK_MANAGERS.md +0 -138
- package/skills/eng-qa-bug-report/references/1-integracao-task-managers.md +0 -148
- package/skills/eng-qa-bug-report/references/2-exemplos-de-uso.md +0 -46
- package/skills/eng-qa-bug-report/references/3-bug-to-test.md +0 -45
- package/skills/eng-qa-cypress-e2e/SKILL.md +0 -184
- package/skills/eng-qa-dev-guide/SKILL.md +0 -173
- package/skills/eng-qa-e2e/SKILL.md +0 -407
- package/skills/eng-qa-e2e-spec-writer/SKILL.md +0 -329
- package/skills/eng-qa-exploratory/SKILL.md +0 -196
- package/skills/eng-qa-gate/SKILL.md +0 -377
- package/skills/eng-qa-gate/assets/checklist-validacao.md +0 -291
- package/skills/eng-qa-graphql-contract/SKILL.md +0 -263
- package/skills/eng-qa-quality-report/SKILL.md +0 -419
- package/skills/eng-qa-test-plan/SKILL.md +0 -473
- package/skills/eng-qa-testsprite/SKILL.md +0 -332
- package/skills/eng-qa-testsprite/references/testsprite-mcp.md +0 -224
- package/skills/eng-qa-unit-test/SKILL.md +0 -478
- package/skills/eng-scraper/SKILL.md +0 -260
- package/skills/eng-scraper/references/1-puppeteer.md +0 -140
- package/skills/eng-scraper/references/2-playwright-cheerio-pdf.md +0 -82
- package/skills/eng-scraper/references/3-anti-bot.md +0 -94
- package/skills/eng-scraper/references/4-resiliencia-etl-monitoramento.md +0 -137
- package/skills/eng-scraper-robot-builder/SKILL.md +0 -377
- package/skills/eng-security-cybersecurity/SKILL.md +0 -250
- package/skills/eng-security-cybersecurity/references/1-owasp-top-10.md +0 -331
- package/skills/eng-security-cybersecurity/references/2-secrets-management.md +0 -31
- package/skills/eng-security-cybersecurity/references/3-input-validation.md +0 -43
- package/skills/eng-security-cybersecurity/references/4-compliance.md +0 -20
- package/skills/eng-security-patch/SKILL.md +0 -388
- package/skills/eng-security-threat-model/SKILL.md +0 -171
- package/skills/eng-security-triage/SKILL.md +0 -276
- package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +0 -311
- package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +0 -249
- package/templates/engineering/qa/qa.cypress-test-template.md +0 -172
- package/templates/engineering/qa/qa.exploratory-session-template.md +0 -148
- package/templates/engineering/qa/qa.quality-report-template.md +0 -130
- package/workflows/engineering/eng.security-audit.md +0 -319
- package/workflows/engineering/eng.security-incident.md +0 -281
- package/workflows/engineering/eng.security-pipeline.md +0 -219
- package/workflows/engineering/eng.security-review.md +0 -241
- package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +0 -57
- package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +0 -57
- package/workflows/engineering/qa/eng.qa-exploratory-session.md +0 -68
- package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +0 -209
- package/workflows/engineering/qa/eng.qa-quality-report.md +0 -85
- /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-coverage-template.md +0 -0
- /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-patterns.md +0 -0
- /package/templates/{CDD aplicado a Prompts.md → cdd-aplicado-a-prompts.md} +0 -0
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
# Task Managers - Guia de Configuração
|
|
2
|
-
|
|
3
|
-
Configuração dos vendors alinhados ao `templates/ENV-template.md` para o skill `eng-qa-bug-report`.
|
|
4
|
-
|
|
5
|
-
Valores de `TASK_MANAGER` são **minúsculos**: `jira` | `linear` | `github` | `asana` | *(vazio = freelance/local)*.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Arquitetura
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
┌─────────────────────────────────────┐
|
|
13
|
-
│ eng-qa-bug-report │
|
|
14
|
-
│ (lógica agnóstica do board) │
|
|
15
|
-
└──────────────┬──────────────────────┘
|
|
16
|
-
│
|
|
17
|
-
[Adapter Layer]
|
|
18
|
-
│
|
|
19
|
-
┌──────────────┴───────────────────────┐
|
|
20
|
-
│ jira │ linear │ github │ asana │ local │
|
|
21
|
-
└──────────────────────────────────────┘
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
- Trocar board = só mudar `TASK_MANAGER` no ENV.md
|
|
25
|
-
- Vazio / local → cards em `$SESSIONS_DIR/qa/bug-reports/`
|
|
26
|
-
- Não documentar ClickUp/Trello/Notion aqui — fora do ENV-template
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## Vendors suportados
|
|
31
|
-
|
|
32
|
-
| `TASK_MANAGER` | Método | Requer |
|
|
33
|
-
|----------------|--------|--------|
|
|
34
|
-
| `jira` | MCP Atlassian e/ou token | MCP ou `TOKEN_TASK_MANAGER` + `PROJECT_KEY` |
|
|
35
|
-
| `linear` | CLI / API | `linear` CLI ou `TOKEN_TASK_MANAGER` + `LINEAR_TEAM_ID` |
|
|
36
|
-
| `github` | `gh` CLI | `gh auth` / `GITHUB_TOKEN` |
|
|
37
|
-
| `asana` | API | `TOKEN_TASK_MANAGER` (+ workspace/project conforme API) |
|
|
38
|
-
| *(vazio)* / `local` | Arquivo markdown | Nenhum |
|
|
39
|
-
|
|
40
|
-
Opcional: `TASK_MANAGER_URL_BASE` para links nos relatórios.
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Configuração por vendor
|
|
45
|
-
|
|
46
|
-
### 1. Jira — `TASK_MANAGER=jira`
|
|
47
|
-
|
|
48
|
-
**MCP (preferido):**
|
|
49
|
-
```bash
|
|
50
|
-
TASK_MANAGER=jira
|
|
51
|
-
PROJECT_KEY=PROJ
|
|
52
|
-
TASK_MANAGER_URL_BASE=https://sua-org.atlassian.net
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
**Token:**
|
|
56
|
-
```bash
|
|
57
|
-
TASK_MANAGER=jira
|
|
58
|
-
TOKEN_TASK_MANAGER=seu_api_token
|
|
59
|
-
TASK_MANAGER_URL_BASE=https://sua-org.atlassian.net
|
|
60
|
-
PROJECT_KEY=PROJ
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
Token: https://id.atlassian.com/manage-profile/security/api-tokens
|
|
64
|
-
|
|
65
|
-
---
|
|
66
|
-
|
|
67
|
-
### 2. Linear — `TASK_MANAGER=linear`
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
TASK_MANAGER=linear
|
|
71
|
-
TOKEN_TASK_MANAGER=lin_api_... # ou auth via `linear` CLI
|
|
72
|
-
LINEAR_TEAM_ID=team-id
|
|
73
|
-
TASK_MANAGER_URL_BASE=https://linear.app/sua-org
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
---
|
|
77
|
-
|
|
78
|
-
### 3. GitHub Issues — `TASK_MANAGER=github`
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
TASK_MANAGER=github
|
|
82
|
-
TASK_MANAGER_URL_BASE=https://github.com/org/repo
|
|
83
|
-
# Token: gh auth login ou GITHUB_TOKEN
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
gh auth status
|
|
88
|
-
gh issue create --title "teste" --body "ok"
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
### 4. Asana — `TASK_MANAGER=asana`
|
|
94
|
-
|
|
95
|
-
```bash
|
|
96
|
-
TASK_MANAGER=asana
|
|
97
|
-
TOKEN_TASK_MANAGER=seu_pat
|
|
98
|
-
TASK_MANAGER_URL_BASE=https://app.asana.com/...
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
Se o adapter de criação automática não estiver completo, salve localmente e registre o GID como `TASK_MANAGER_KEY`.
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
### 5. Freelance / local — `TASK_MANAGER=` (vazio)
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
TASK_MANAGER=
|
|
109
|
-
# Cards em:
|
|
110
|
-
# $SESSIONS_DIR/qa/bug-reports/bug-{timestamp}.md
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
Workflows pedem `TASK_MANAGER_KEY` como controle próprio (número/slug).
|
|
114
|
-
|
|
115
|
-
---
|
|
116
|
-
|
|
117
|
-
## Detecção no skill
|
|
118
|
-
|
|
119
|
-
O skill normaliza para minúsculas. Se vazio ou placeholder `[jira, linear, github, asana]` → modo `local`.
|
|
120
|
-
|
|
121
|
-
---
|
|
122
|
-
|
|
123
|
-
## Troubleshooting
|
|
124
|
-
|
|
125
|
-
| Sintoma | Ação |
|
|
126
|
-
|---------|------|
|
|
127
|
-
| Cards só locais | Confira `TASK_MANAGER=` minúsculo e token/MCP |
|
|
128
|
-
| `jira` não cria | MCP Atlassian ou `TOKEN_TASK_MANAGER` + `PROJECT_KEY` |
|
|
129
|
-
| `github` falha | `gh auth status` |
|
|
130
|
-
| Freelance | Deixe `TASK_MANAGER=` vazio — esperado |
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
## Ver também
|
|
135
|
-
|
|
136
|
-
- `templates/ENV-template.md` — fonte de verdade das chaves
|
|
137
|
-
- `skills/eng-global-task-comment/SKILL.md` — comentar no card
|
|
138
|
-
- `bin/lib/tasks/comment.js` — adapter CLI
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
# Integração com Task Managers (Adapter Pattern)
|
|
2
|
-
|
|
3
|
-
> Parte do skill `eng-qa-bug-report`. Leia este arquivo quando a tarefa configurar ou implementar o adapter de um task manager (Jira, Linear, GitHub, Asana), mapear prioridades, usar o fallback local ou adicionar um task manager novo.
|
|
4
|
-
|
|
5
|
-
## Integração com Task Managers (Adapter Pattern)
|
|
6
|
-
|
|
7
|
-
### Arquitetura de Adapters
|
|
8
|
-
|
|
9
|
-
O skill usa **Adapter Pattern** para suportar múltiplos task managers de forma desacoplada.
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
bug-report skill
|
|
13
|
-
↓
|
|
14
|
-
[Adapter Layer]
|
|
15
|
-
↓
|
|
16
|
-
┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐
|
|
17
|
-
│ JIRA │ ClickUp │ Linear │ Trello │ GitHub │ GitLab │
|
|
18
|
-
└─────────┴─────────┴─────────┴─────────┴─────────┴─────────┘
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
### Task Managers alinhados ao ENV-template
|
|
22
|
-
|
|
23
|
-
| Task Manager | Método | Requer |
|
|
24
|
-
|--------------|--------|--------|
|
|
25
|
-
| **jira** | MCP Atlassian | MCP ou `TOKEN_TASK_MANAGER` + `PROJECT_KEY` |
|
|
26
|
-
| **linear** | CLI | `linear` CLI + `LINEAR_TEAM_ID` |
|
|
27
|
-
| **github** | gh CLI | `gh` autenticado |
|
|
28
|
-
| **asana** | token | `TOKEN_TASK_MANAGER` (criação manual se adapter incompleto) |
|
|
29
|
-
| **(vazio) / local** | Arquivo local | Freelance — `$SESSIONS_DIR/qa/bug-reports/` |
|
|
30
|
-
|
|
31
|
-
Valores no ENV.md são **minúsculos** (`jira`, não `JIRA`).
|
|
32
|
-
|
|
33
|
-
### Configuração no ENV.md
|
|
34
|
-
|
|
35
|
-
#### Jira
|
|
36
|
-
```bash
|
|
37
|
-
TASK_MANAGER=jira
|
|
38
|
-
TOKEN_TASK_MANAGER=your_jira_token # Opcional se usar MCP
|
|
39
|
-
PROJECT_KEY=PROJ
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
#### Linear
|
|
43
|
-
```bash
|
|
44
|
-
TASK_MANAGER=linear
|
|
45
|
-
TOKEN_TASK_MANAGER=lin_api_your_token
|
|
46
|
-
LINEAR_TEAM_ID=team-id
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
#### GitHub
|
|
50
|
-
```bash
|
|
51
|
-
TASK_MANAGER=github
|
|
52
|
-
# Token via gh auth / GITHUB_TOKEN
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
#### Freelance / local
|
|
56
|
-
```bash
|
|
57
|
-
TASK_MANAGER=
|
|
58
|
-
# Cards em $SESSIONS_DIR/qa/bug-reports/
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
#### GitLab
|
|
62
|
-
```bash
|
|
63
|
-
TASK_MANAGER=GITLAB
|
|
64
|
-
GITLAB_REPO=group/project
|
|
65
|
-
# Token via glab CLI (glab auth login)
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Implementação de Adapter
|
|
69
|
-
|
|
70
|
-
Cada adapter implementa a interface:
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
create_task_card() {
|
|
74
|
-
# Input:
|
|
75
|
-
# $1 - title (string)
|
|
76
|
-
# $2 - description (markdown/text)
|
|
77
|
-
# $3 - priority (P0/P1/P2/P3)
|
|
78
|
-
# $4 - category (string)
|
|
79
|
-
# $5 - labels (comma-separated)
|
|
80
|
-
|
|
81
|
-
# Output:
|
|
82
|
-
# Card ID/Key (string) ou caminho do arquivo local
|
|
83
|
-
|
|
84
|
-
# Return:
|
|
85
|
-
# 0 - Sucesso
|
|
86
|
-
# 1 - Falha
|
|
87
|
-
}
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
### Mapeamento de Prioridades
|
|
91
|
-
|
|
92
|
-
Diferentes task managers usam sistemas de prioridade diferentes:
|
|
93
|
-
|
|
94
|
-
| Framework | P0 | P1 | P2 | P3 |
|
|
95
|
-
|-----------|----|----|----|----|
|
|
96
|
-
| **Jira** | Highest | High | Medium | Low |
|
|
97
|
-
| **ClickUp** | 1 | 2 | 3 | 4 |
|
|
98
|
-
| **Linear** | 1 | 2 | 3 | 4 |
|
|
99
|
-
| **Trello** | Label:P0 | Label:P1 | Label:P2 | Label:P3 |
|
|
100
|
-
| **GitHub** | Label:priority-critical | Label:priority-high | Label:priority-medium | Label:priority-low |
|
|
101
|
-
| **GitLab** | Label:priority::1 | Label:priority::2 | Label:priority::3 | Label:priority::4 |
|
|
102
|
-
|
|
103
|
-
### Fallback Local
|
|
104
|
-
|
|
105
|
-
Se task manager indisponível ou não configurado:
|
|
106
|
-
1. Card salvo em `$SESSIONS_DIR/qa/bug-reports/bug-{timestamp}.md`
|
|
107
|
-
2. Arquivo contém todas as informações necessárias
|
|
108
|
-
3. Usuário pode criar card manualmente ou configurar integração
|
|
109
|
-
|
|
110
|
-
### Como Adicionar Novo Task Manager
|
|
111
|
-
|
|
112
|
-
Para adicionar suporte a um novo task manager:
|
|
113
|
-
|
|
114
|
-
1. **Adicionar detecção** na seção de pré-requisitos:
|
|
115
|
-
```bash
|
|
116
|
-
NOTION)
|
|
117
|
-
if [ -n "$TOKEN_TASK_MANAGER" ]; then
|
|
118
|
-
TASK_MANAGER_ENABLED=true
|
|
119
|
-
echo "✅ Integração Notion disponível"
|
|
120
|
-
fi
|
|
121
|
-
;;
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
2. **Implementar adapter** na função `create_task_card()`:
|
|
125
|
-
```bash
|
|
126
|
-
NOTION)
|
|
127
|
-
CARD_ID=$(curl -s -X POST "https://api.notion.com/v1/pages" \
|
|
128
|
-
-H "Authorization: Bearer $TOKEN_TASK_MANAGER" \
|
|
129
|
-
-H "Content-Type: application/json" \
|
|
130
|
-
-d '{
|
|
131
|
-
"parent": {"database_id": "'$(grep '^NOTION_DATABASE_ID=' "$IDE/ENV.md" | cut -d= -f2)'"},
|
|
132
|
-
"properties": {
|
|
133
|
-
"Name": {"title": [{"text": {"content": "'"$title"'"}}]},
|
|
134
|
-
"Priority": {"select": {"name": "'"$priority"'"}},
|
|
135
|
-
"Category": {"select": {"name": "'"$category"'"}}
|
|
136
|
-
}
|
|
137
|
-
}' | jq -r '.id')
|
|
138
|
-
|
|
139
|
-
echo "✅ Card criado no Notion: $CARD_ID"
|
|
140
|
-
echo "$CARD_ID"
|
|
141
|
-
;;
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
3. **Documentar configuração** na seção acima
|
|
145
|
-
|
|
146
|
-
4. **Adicionar teste** para validar funcionamento
|
|
147
|
-
|
|
148
|
-
---
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
# Exemplos de Uso
|
|
2
|
-
|
|
3
|
-
> Parte do skill `eng-qa-bug-report`. Leia este arquivo quando precisar de um exemplo completo dos modos create, batch ou generate-report.
|
|
4
|
-
|
|
5
|
-
## Exemplos de Uso
|
|
6
|
-
|
|
7
|
-
### Exemplo 1: Criar card único (BUG-ALTO — todos os campos P1 obrigatórios)
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
/eng-qa-bug-report create \
|
|
11
|
-
--title="[auth] Token expirado retorna 500 ao invés de 401" \
|
|
12
|
-
--category="BUG-ALTO" \
|
|
13
|
-
--severity="P1" \
|
|
14
|
-
--environment="prod" \
|
|
15
|
-
--location="src/auth/token-validator.ts:67" \
|
|
16
|
-
--description="Quando o token JWT expira durante uma requisição autenticada, o serviço retorna HTTP 500 ao invés de 401. Ocorre de forma recorrente em produção para todos os usuários com sessão ativa há mais de 24h." \
|
|
17
|
-
--behavior-actual="POST /auth/validate retorna 500 Internal Server Error quando token está expirado" \
|
|
18
|
-
--behavior-expected="POST /auth/validate retorna 401 Unauthorized com body {error: 'token_expired'}" \
|
|
19
|
-
--reproduction="Pré-condição: usuário com token expirado (criado há >24h). Passos: 1. Fazer qualquer requisição autenticada. 2. Observar resposta. Resultado atual: HTTP 500." \
|
|
20
|
-
--impact="Todos os usuários com sessão ativa há mais de 24h — estimativa de 30% da base ativa. App client não consegue tratar 500 como sessão expirada, causando loop de erro sem logout automático." \
|
|
21
|
-
--entry-endpoint="POST /auth/validate" \
|
|
22
|
-
--affected-services="account,auth" \
|
|
23
|
-
--correlation-id="req-a1b2c3d4" \
|
|
24
|
-
--frequency="recorrente" \
|
|
25
|
-
--linked-to="PROJ-999" \
|
|
26
|
-
--suggestion="Adicionar catch específico para TokenExpiredError antes do handler genérico de erros"
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
### Exemplo 2: Criar cards em batch
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
/eng-qa-bug-report batch \
|
|
33
|
-
--from-audit="./sessions/bug-audit-20260208/bug-audit-report.md" \
|
|
34
|
-
--priority-filter="P0,P1"
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
### Exemplo 3: Gerar relatório
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
/eng-qa-bug-report generate-report \
|
|
41
|
-
--bugs="./sessions/bugs-found.json" \
|
|
42
|
-
--output="./sessions/consolidated-bug-report.md" \
|
|
43
|
-
--format="markdown"
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
---
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# Bug-to-Test (pós-criação)
|
|
2
|
-
|
|
3
|
-
> Parte do skill `eng-qa-bug-report`. Leia este arquivo quando depois de criar o card, a pessoa quiser gerar o teste que reproduz o bug.
|
|
4
|
-
|
|
5
|
-
## Bug-to-Test (pós-criação)
|
|
6
|
-
|
|
7
|
-
Após criar o card no $TASK_MANAGER, sempre perguntar:
|
|
8
|
-
|
|
9
|
-
```
|
|
10
|
-
Bug registrado: {TASK-ID} — {título}
|
|
11
|
-
|
|
12
|
-
Deseja gerar um teste de regressão Cypress para este bug?
|
|
13
|
-
Recomendado: previne que o bug retorne após o fix.
|
|
14
|
-
|
|
15
|
-
[S] Gerar agora
|
|
16
|
-
[N] Registrar no backlog de cobertura
|
|
17
|
-
[P] Pular
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
### Se "Gerar agora"
|
|
21
|
-
|
|
22
|
-
Invocar Skill tool: `eng-qa-cypress-e2e` passando como entrada:
|
|
23
|
-
- Título do bug como nome do fluxo
|
|
24
|
-
- Passos de reprodução como sequência de ações
|
|
25
|
-
- Comportamento esperado vs. atual como asserções
|
|
26
|
-
|
|
27
|
-
Nomear o spec: `{dominio}/{TASK-ID}-regression.cy.ts`
|
|
28
|
-
|
|
29
|
-
Após gerar o teste, adicionar comentário no card do bug com o caminho do arquivo criado.
|
|
30
|
-
|
|
31
|
-
### Se "Registrar no backlog"
|
|
32
|
-
|
|
33
|
-
Append em `$DOCS_FOLDER/engineering/qa/test-backlog.md` (criar se não existir):
|
|
34
|
-
|
|
35
|
-
```markdown
|
|
36
|
-
| {TASK-ID} | {título} | {domínio} | {dominio}/{TASK-ID}-regression.cy.ts |
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Cabeçalho da tabela (inserir apenas se o arquivo for novo):
|
|
40
|
-
```markdown
|
|
41
|
-
# Test Backlog — Testes de Regressão Pendentes
|
|
42
|
-
|
|
43
|
-
| Bug ID | Título | Domínio | Spec sugerida |
|
|
44
|
-
|--------|--------|---------|---------------|
|
|
45
|
-
```
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: eng-qa-cypress-e2e
|
|
3
|
-
description: >
|
|
4
|
-
Gera testes E2E em Cypress + TypeScript a partir de uma spec, task ou descrição de fluxo.
|
|
5
|
-
Segue os padrões do projeto (Page Objects, data-testid, cy.intercept, fixtures tipadas).
|
|
6
|
-
Pressupõe que o warm-up (HUB=QA) já carregou as cypress-standards-rules e contexto Cypress via context7.
|
|
7
|
-
Trigger: Use quando o QA precisar gerar ou revisar testes E2E Cypress para uma feature específica.
|
|
8
|
-
license: AGPL-3.0
|
|
9
|
-
compatibility: Designed for Claude Code (or similar products)
|
|
10
|
-
allowed-tools: Read Write Edit Grep Glob Bash
|
|
11
|
-
metadata:
|
|
12
|
-
author: jarvis-framework
|
|
13
|
-
version: "1.0"
|
|
14
|
-
area: qa
|
|
15
|
-
argument-hint: "[caminho da spec / ID da task / descrição do fluxo]"
|
|
16
|
-
disable-model-invocation: false
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
# QA Cypress E2E — Geração de Testes
|
|
20
|
-
|
|
21
|
-
Você é um **QA Engineer especialista em Cypress + TypeScript**, responsável por gerar testes
|
|
22
|
-
E2E de alta qualidade que seguem os padrões do projeto.
|
|
23
|
-
|
|
24
|
-
> ⚠️ **Pré-condição de sessão**: esta skill assume que o warm-up (HUB=QA) já executou e:
|
|
25
|
-
> - `$RULES_FOLDER/engineering/qa/eng.qa.cypress-standards-rules.md` está carregado
|
|
26
|
-
> - Documentação Cypress foi carregada via context7
|
|
27
|
-
> Se não foi feito, orientar o usuário a executar `/warm-up` antes de continuar.
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## Entrada
|
|
32
|
-
|
|
33
|
-
Aceita qualquer um dos seguintes:
|
|
34
|
-
- Caminho para arquivo de spec/task (`.md`, `.txt`, `.yaml`)
|
|
35
|
-
- ID de task no $TASK_MANAGER (ex: `TASK-123`)
|
|
36
|
-
- Descrição do fluxo em linguagem natural
|
|
37
|
-
|
|
38
|
-
---
|
|
39
|
-
|
|
40
|
-
## Fase 0 — Reconhecimento do Projeto
|
|
41
|
-
|
|
42
|
-
Antes de gerar qualquer código, mapear o projeto de testes:
|
|
43
|
-
|
|
44
|
-
```bash
|
|
45
|
-
# 1. Localizar configuração Cypress
|
|
46
|
-
cat cypress.config.ts 2>/dev/null || cat cypress.config.js 2>/dev/null
|
|
47
|
-
|
|
48
|
-
# 2. Localizar TEST_FOLDER do ENV.md
|
|
49
|
-
grep "^TEST_FOLDER=" $IDE/ENV.md 2>/dev/null
|
|
50
|
-
|
|
51
|
-
# 3. Mapear estrutura existente
|
|
52
|
-
ls {TEST_FOLDER}/e2e/ 2>/dev/null
|
|
53
|
-
ls {TEST_FOLDER}/support/pages/ 2>/dev/null
|
|
54
|
-
ls {TEST_FOLDER}/support/commands/ 2>/dev/null
|
|
55
|
-
ls {TEST_FOLDER}/fixtures/ 2>/dev/null
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
**Invariante**: nunca inventar estrutura — trabalhar com o que existe.
|
|
59
|
-
Se `TEST_FOLDER` não estiver definido, perguntar antes de prosseguir.
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
## Fase 1 — Análise do Fluxo
|
|
64
|
-
|
|
65
|
-
A partir da entrada fornecida:
|
|
66
|
-
|
|
67
|
-
1. **Identificar o fluxo de usuário principal** — sequência de ações do happy path
|
|
68
|
-
2. **Identificar edge cases relevantes** — dados limite, campos opcionais, paginação
|
|
69
|
-
3. **Identificar negative tests necessários** — validações de formulário, erros de API, permissões
|
|
70
|
-
4. **Mapear endpoints de API envolvidos** — para definir quais intercepts serão necessários
|
|
71
|
-
5. **Identificar perfil(s) de usuário** — quais perfis participam do fluxo?
|
|
72
|
-
|
|
73
|
-
Apresentar o mapeamento ao usuário antes de gerar código:
|
|
74
|
-
|
|
75
|
-
```
|
|
76
|
-
Fluxo mapeado: {nome do fluxo}
|
|
77
|
-
Cenários a cobrir:
|
|
78
|
-
✅ Happy Path: {descrição}
|
|
79
|
-
✅ Edge Case: {descrição}
|
|
80
|
-
✅ Negative: {descrição}
|
|
81
|
-
Endpoints: {lista de APIs envolvidas}
|
|
82
|
-
Perfil: {perfil de usuário}
|
|
83
|
-
|
|
84
|
-
Posso prosseguir com a geração?
|
|
85
|
-
```
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## Fase 2 — Verificação de Page Objects Existentes
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
# Verificar se já existe Page Object para o domínio
|
|
93
|
-
ls {TEST_FOLDER}/support/pages/ | grep -i {dominio}
|
|
94
|
-
|
|
95
|
-
# Ler Page Object existente se houver
|
|
96
|
-
cat {TEST_FOLDER}/support/pages/{Dominio}Page.ts 2>/dev/null
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
- Se Page Object existe: **reutilizar e estender** — nunca criar duplicata
|
|
100
|
-
- Se não existe: **criar novo** seguindo o template em `$TEMPLATES_FOLDER/engineering/qa/qa.cypress-test-template.md`
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## Fase 3 — Geração
|
|
105
|
-
|
|
106
|
-
### 3.1 — Page Object (criar ou estender)
|
|
107
|
-
|
|
108
|
-
Seguir rigorosamente:
|
|
109
|
-
- Métodos de ação retornam `this` (fluent)
|
|
110
|
-
- Seletores exclusivamente via `data-testid`
|
|
111
|
-
- Métodos de asserção prefixados com `should`
|
|
112
|
-
- Sem lógica de negócio — apenas interação com UI
|
|
113
|
-
|
|
114
|
-
### 3.2 — Fixtures
|
|
115
|
-
|
|
116
|
-
Para cada endpoint interceptado, criar fixture em `fixtures/{dominio}/{recurso}-{metodo}.json`:
|
|
117
|
-
- Dados realistas mas sem informação sensível
|
|
118
|
-
- Estrutura compatível com o contrato real da API (verificar se há type/interface no projeto)
|
|
119
|
-
- Casos de erro inline no teste (não em fixture separada)
|
|
120
|
-
|
|
121
|
-
### 3.3 — Spec `.cy.ts`
|
|
122
|
-
|
|
123
|
-
Estrutura obrigatória:
|
|
124
|
-
```typescript
|
|
125
|
-
describe('{Domínio} — {Feature}', () => {
|
|
126
|
-
// beforeEach com auth + navegação
|
|
127
|
-
// context/it por cenário
|
|
128
|
-
// cy.intercept em cada context que depende de API
|
|
129
|
-
// cy.wait antes de asserções
|
|
130
|
-
})
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### 3.4 — Custom Commands (se necessário)
|
|
134
|
-
|
|
135
|
-
Se um padrão de ação se repete em mais de um test file ou é complexo:
|
|
136
|
-
- Criar em `support/commands/{dominio}.commands.ts`
|
|
137
|
-
- Registrar em `support/commands.ts`
|
|
138
|
-
- Tipar em `support/index.d.ts`
|
|
139
|
-
|
|
140
|
-
### Skills invocados durante a execução do skill
|
|
141
|
-
|
|
142
|
-
| Passo | Skill | Condição |
|
|
143
|
-
|-------|-------|----------|
|
|
144
|
-
| — | Nenhuma — skill autocontida | — |
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## Fase 4 — Output
|
|
149
|
-
|
|
150
|
-
Entregar os arquivos em ordem:
|
|
151
|
-
|
|
152
|
-
1. **Page Object** — `support/pages/{Dominio}Page.ts` (novo ou diff se existente)
|
|
153
|
-
2. **Fixtures** — `fixtures/{dominio}/*.json`
|
|
154
|
-
3. **Custom Commands** — `support/commands/{dominio}.commands.ts` (se novos)
|
|
155
|
-
4. **Spec** — `e2e/{dominio}/{feature}.cy.ts`
|
|
156
|
-
|
|
157
|
-
Ao final, exibir checklist de validação:
|
|
158
|
-
|
|
159
|
-
```
|
|
160
|
-
Checklist gerado:
|
|
161
|
-
✅ Seletores: apenas data-testid
|
|
162
|
-
✅ API: todos os endpoints interceptados
|
|
163
|
-
✅ Cenários: happy path + {N} edge cases + {N} negative tests
|
|
164
|
-
✅ Page Object: {novo criado / existente estendido}
|
|
165
|
-
⚠️ data-testid ausentes no código: {lista de elementos que precisam do atributo adicionado}
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
---
|
|
169
|
-
|
|
170
|
-
## Regras
|
|
171
|
-
|
|
172
|
-
### Nunca
|
|
173
|
-
- Gerar código sem mapear a estrutura existente do projeto primeiro
|
|
174
|
-
- Usar seletores por classe CSS ou id HTML em specs novas
|
|
175
|
-
- Criar `cy.wait({número})` hardcoded — sempre usar alias de intercept
|
|
176
|
-
- Duplicar Page Objects existentes
|
|
177
|
-
- Inventar estrutura de resposta de API — verificar types ou fixtures existentes
|
|
178
|
-
|
|
179
|
-
### Sempre
|
|
180
|
-
- Verificar `TEST_FOLDER` no ENV.md antes de qualquer operação de arquivo
|
|
181
|
-
- Reutilizar custom commands existentes (`ls support/commands/` antes de criar novos)
|
|
182
|
-
- Sinalizar ao QA quais `data-testid` precisam ser adicionados ao código da aplicação
|
|
183
|
-
- Cada `it` testa exatamente um comportamento
|
|
184
|
-
- `beforeEach` garante estado limpo e independente entre testes
|