jarvis-ai-framework 1.0.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 +416 -0
- package/LICENSE +21 -0
- package/README.md +190 -0
- package/agents/AGENTS.md +234 -0
- package/agents/README.md +309 -0
- package/agents/engineering/data/eng.data-engineer.agent.md +309 -0
- package/agents/engineering/eng.agent.md +303 -0
- package/agents/engineering/eng.bug-hunter.md +386 -0
- package/agents/engineering/eng.cybersecurity.agent.md +503 -0
- package/agents/engineering/eng.dev-code-reviewer.md +148 -0
- package/agents/engineering/eng.docs-writer.md +152 -0
- package/agents/engineering/eng.frontend.agent.md +117 -0
- package/agents/engineering/eng.rpa.agent.md +215 -0
- package/agents/engineering/eng.tech-analyst.agent.md +102 -0
- package/agents/engineering/eng.ux-designer.agent.md +193 -0
- package/agents/engineering/qa/eng.qa.cypress-specialist.md +109 -0
- package/agents/engineering/qa/eng.qa.quality-champion-task-agent.md +85 -0
- package/agents/engineering/qa/eng.qa.quality-strategist.md +111 -0
- package/agents/engineering/qa/eng.qa.test-architect.md +400 -0
- package/agents/engineering/qa/eng.qa.test-planner.md +477 -0
- package/agents/engineering/qa/eng.qa.testing-engineer.md +339 -0
- package/agents/product/prod.pm-checker.md +52 -0
- package/bin/commands/docs-publish.js +184 -0
- package/bin/commands/docs-sync.js +139 -0
- package/bin/commands/info.js +87 -0
- package/bin/commands/init.js +237 -0
- package/bin/commands/install-rtk.js +90 -0
- package/bin/commands/list.js +48 -0
- package/bin/commands/qa-signoff.js +112 -0
- package/bin/commands/whoami.js +43 -0
- package/bin/jarvis.js +159 -0
- package/bin/lib/auth/session.js +56 -0
- package/bin/lib/config/constants.js +123 -0
- package/bin/lib/config/ide-config.js +233 -0
- package/bin/lib/core/scanner.js +124 -0
- package/bin/lib/core/sync-engine.js +551 -0
- package/bin/lib/docs/fetch-file.sh +41 -0
- package/bin/lib/docs/publish-file.sh +284 -0
- package/bin/lib/docs/validate-frontmatter.js +157 -0
- package/bin/lib/env-loader.js +198 -0
- package/bin/lib/tasks/comment.js +131 -0
- package/bin/lib/utils/git-parser.js +145 -0
- package/bin/lib/utils/logger.js +104 -0
- package/bin/lib/utils/npmrc-parser.js +106 -0
- package/bin/lib/utils/paths.js +55 -0
- package/bin/lib/utils/ui.js +59 -0
- package/bin/lib/vcs/api.js +312 -0
- package/bin/lib/vcs/create-issue.js +43 -0
- package/bin/lib/vcs/create-merge.js +43 -0
- package/bin/lib/vcs/fetch-raw.js +30 -0
- package/bin/postinstall.js +41 -0
- package/members.md +25 -0
- package/package.json +55 -0
- package/rules/AGENTS.md +205 -0
- package/rules/engineering/data/data-rules.md +200 -0
- package/rules/engineering/eng-rules.md +243 -0
- package/rules/engineering/eng-security-rules.md +186 -0
- package/rules/engineering/eng.breakdown-subtasks-rules.md +585 -0
- package/rules/engineering/eng.bump-rules.md +27 -0
- package/rules/engineering/eng.docs-scraping-rules.md +64 -0
- package/rules/engineering/eng.downstream-flow-rules.md +297 -0
- package/rules/engineering/eng.integrations-rules.md +73 -0
- package/rules/engineering/eng.plan-rules.md +333 -0
- package/rules/engineering/eng.pr-rules.md +359 -0
- package/rules/engineering/eng.pre-pr-rules.md +103 -0
- package/rules/engineering/eng.start-rules.md +246 -0
- package/rules/engineering/eng.tech-spec-rules.md +968 -0
- package/rules/engineering/eng.work-rules.md +312 -0
- package/rules/engineering/frontend/eng.frontend-rules.md +147 -0
- package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +259 -0
- package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +137 -0
- package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +181 -0
- package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +120 -0
- package/rules/engineering/rpa/eng.rpa-rules.md +230 -0
- package/rules/product/README.md +24 -0
- package/rules/product/prod-rules.md +151 -0
- package/rules/rtk-rules.md +68 -0
- package/skills/AGENTS.md +290 -0
- package/skills/SKILLS-ROADMAP.md +333 -0
- package/skills/churn-audit/SKILL.md +385 -0
- package/skills/context-detect/SKILL.md +399 -0
- package/skills/context-detect/assets/context-profile-template.md +127 -0
- package/skills/docs-central/README.md +310 -0
- package/skills/docs-central/SKILL.md +423 -0
- package/skills/docs-index/SKILL.md +377 -0
- package/skills/eng-ai-engineer/SKILL.md +296 -0
- package/skills/eng-arch-c4/SKILL.md +358 -0
- package/skills/eng-arch-c4/assets/example-code.md +189 -0
- package/skills/eng-arch-c4/assets/example-component.md +105 -0
- package/skills/eng-arch-c4/assets/example-container.md +104 -0
- package/skills/eng-arch-c4/assets/example-context.md +81 -0
- package/skills/eng-backend/SKILL.md +776 -0
- package/skills/eng-browser-extension-builder/SKILL.md +385 -0
- package/skills/eng-cybersecurity/SKILL.md +645 -0
- package/skills/eng-data-bi/SKILL.md +199 -0
- package/skills/eng-data-debug/SKILL.md +307 -0
- package/skills/eng-data-engineer/SKILL.md +256 -0
- package/skills/eng-data-onboard/SKILL.md +310 -0
- package/skills/eng-data-orchestrator/SKILL.md +426 -0
- package/skills/eng-design-system/SKILL.md +619 -0
- package/skills/eng-docs-write/SKILL.md +312 -0
- package/skills/eng-frontend/SKILL.md +913 -0
- package/skills/eng-jira-comment/SKILL.md +17 -0
- package/skills/eng-microfrontend/SKILL.md +602 -0
- package/skills/eng-ms-trace/SKILL.md +469 -0
- package/skills/eng-nestjs/SKILL.md +791 -0
- package/skills/eng-performance-engineer/SKILL.md +312 -0
- package/skills/eng-pr/SKILL.md +339 -0
- package/skills/eng-qa-a11y-audit/SKILL.md +269 -0
- package/skills/eng-qa-bug-report/SKILL.md +1088 -0
- package/skills/eng-qa-bug-report/TASK_MANAGERS.md +138 -0
- package/skills/eng-qa-cypress-e2e/SKILL.md +177 -0
- package/skills/eng-qa-dev-guide/SKILL.md +164 -0
- package/skills/eng-qa-e2e/SKILL.md +400 -0
- package/skills/eng-qa-e2e-spec-writer/SKILL.md +322 -0
- package/skills/eng-qa-exploratory/SKILL.md +188 -0
- package/skills/eng-qa-gate/SKILL.md +370 -0
- package/skills/eng-qa-gate/assets/checklist-validacao.md +291 -0
- package/skills/eng-qa-graphql-contract/SKILL.md +256 -0
- package/skills/eng-qa-quality-report/SKILL.md +412 -0
- package/skills/eng-qa-test-plan/SKILL.md +466 -0
- package/skills/eng-qa-test-plan/assets/test-coverage-template.md +92 -0
- package/skills/eng-qa-test-plan/assets/test-patterns.md +178 -0
- package/skills/eng-qa-testsprite/SKILL.md +325 -0
- package/skills/eng-qa-testsprite/references/testsprite-mcp.md +224 -0
- package/skills/eng-qa-unit-test/SKILL.md +471 -0
- package/skills/eng-rabbitmq/SKILL.md +661 -0
- package/skills/eng-scraper/SKILL.md +683 -0
- package/skills/eng-scraper-robot-builder/SKILL.md +370 -0
- package/skills/eng-security-patch/SKILL.md +378 -0
- package/skills/eng-security-triage/SKILL.md +266 -0
- package/skills/eng-task-comment/SKILL.md +60 -0
- package/skills/eng-tech-analyst/SKILL.md +529 -0
- package/skills/eng-threat-model/SKILL.md +161 -0
- package/skills/init-jarvis/SKILL.md +1304 -0
- package/skills/init-jarvis/assets/mcp-configs.md +389 -0
- package/skills/init-jarvis/assets/onboarding-checklist.md +104 -0
- package/skills/init-jarvis/assets/setup-guide.md +360 -0
- package/skills/lovable-prompt-generator/SKILL.md +304 -0
- package/skills/prod-roadmap-report/README.md +303 -0
- package/skills/prod-roadmap-report/SKILL.md +198 -0
- package/skills/prod-roadmap-report/commands/status.compiled.single.team.md +23 -0
- package/skills/prod-roadmap-report/commands/status.list.projects.md +17 -0
- package/skills/prod-roadmap-report/commands/status.memory.md +192 -0
- package/skills/prod-roadmap-report/commands/status.roadmap.preview.md +94 -0
- package/skills/prod-roadmap-report/references/detailed-guide.md +236 -0
- package/skills/prod-roadmap-report/rules/detailed-guide.md +237 -0
- package/skills/prod-roadmap-report/rules/status-report-rules.md +44 -0
- package/skills/prod-roadmap-report/templates/template-multiple-teams-compiled-status.md +53 -0
- package/skills/prod-roadmap-report/templates/template-projects-list.md +23 -0
- package/skills/prod-roadmap-report/templates/template-single-team-compiled-status.md +60 -0
- package/skills/prod-roadmap-report/templates/template-single-team-status.md +49 -0
- package/skills/prod-specs/SKILL.md +108 -0
- package/skills/prod-specs/references/prod.spec.clarify.md +176 -0
- package/skills/prod-specs/references/prod.spec.epic.md +107 -0
- package/skills/prod-specs/references/prod.spec.frd.md +135 -0
- package/skills/prod-specs/references/prod.spec.issue.md +145 -0
- package/skills/prod-specs/references/prod.spec.prd.md +118 -0
- package/skills/prod-specs/rules/prod-spec-rules.md +186 -0
- package/skills/prod-specs/templates/prod-breakdown-template.md +136 -0
- package/skills/prod-specs/templates/prod-epic-template.md +76 -0
- package/skills/prod-specs/templates/prod-frd-template.md +172 -0
- package/skills/prod-specs/templates/prod-issue-template.md +68 -0
- package/skills/prod-specs/templates/prod-prd-full-template.md +159 -0
- package/skills/prod-specs/templates/prod-prd-template.md +173 -0
- package/skills/prod-specs-update/SKILL.md +272 -0
- package/skills/report-issue/SKILL.md +156 -0
- package/taxonomy.md +270 -0
- package/templates/AGENTS.md +189 -0
- package/templates/CDD aplicado a Prompts.md +182 -0
- package/templates/ENV-template.md +187 -0
- package/templates/engineering/AGENTS-template.md +71 -0
- package/templates/engineering/ARD-template.md +193 -0
- package/templates/engineering/CONTACTS-template.md +135 -0
- package/templates/engineering/PR-template.md +40 -0
- package/templates/engineering/RFC-Playbook.md +325 -0
- package/templates/engineering/RFC-template.md +199 -0
- package/templates/engineering/architecture-template.md +277 -0
- package/templates/engineering/breakdown-subtasks-template.md +582 -0
- package/templates/engineering/c4-model-template.md +516 -0
- package/templates/engineering/data-contract-template.md +135 -0
- package/templates/engineering/data-pipeline-template.md +163 -0
- package/templates/engineering/plan-template.md +255 -0
- package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +311 -0
- package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +249 -0
- package/templates/engineering/qa/qa.cypress-test-template.md +172 -0
- package/templates/engineering/qa/qa.exploratory-session-template.md +148 -0
- package/templates/engineering/qa/qa.quality-report-template.md +130 -0
- package/templates/engineering/qa/qa.release-signoff-template.md +54 -0
- package/templates/engineering/qa/qa.sprint-plan-template.md +49 -0
- package/templates/engineering/swagger-template.md +145 -0
- package/templates/engineering/tech-spec-template.md +497 -0
- package/templates/engineering/work-progress-template.md +155 -0
- package/workflows/AGENTS.md +240 -0
- package/workflows/README.md +160 -0
- package/workflows/all-tools.md +11 -0
- package/workflows/engineering/data/data.contract.md +202 -0
- package/workflows/engineering/data/data.new-pipeline.md +234 -0
- package/workflows/engineering/eng.breakdown-subtasks.md +420 -0
- package/workflows/engineering/eng.bug-audit.md +591 -0
- package/workflows/engineering/eng.build-tech-spec.md +1116 -0
- package/workflows/engineering/eng.create-ard-from-code.md +259 -0
- package/workflows/engineering/eng.create-ard.md +382 -0
- package/workflows/engineering/eng.create-rfc.md +245 -0
- package/workflows/engineering/eng.debug.md +479 -0
- package/workflows/engineering/eng.docs.md +40 -0
- package/workflows/engineering/eng.light-arch.md +84 -0
- package/workflows/engineering/eng.plan.md +213 -0
- package/workflows/engineering/eng.pr.md +466 -0
- package/workflows/engineering/eng.pre-pr.md +167 -0
- package/workflows/engineering/eng.review.md +185 -0
- package/workflows/engineering/eng.rpa.robot.md +342 -0
- package/workflows/engineering/eng.security-audit.md +312 -0
- package/workflows/engineering/eng.security-incident.md +275 -0
- package/workflows/engineering/eng.security-pipeline.md +210 -0
- package/workflows/engineering/eng.security-review.md +235 -0
- package/workflows/engineering/eng.start.md +494 -0
- package/workflows/engineering/eng.work.md +558 -0
- package/workflows/engineering/frontend/eng.frontend-component.md +190 -0
- package/workflows/engineering/frontend/eng.frontend-perf-audit.md +375 -0
- package/workflows/engineering/frontend/eng.frontend-review.md +185 -0
- package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +51 -0
- package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +51 -0
- package/workflows/engineering/qa/eng.qa-exploratory-session.md +60 -0
- package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +202 -0
- package/workflows/engineering/qa/eng.qa-quality-report.md +83 -0
- package/workflows/engineering/qa/eng.qa-refinement-entry.md +83 -0
- package/workflows/engineering/qa/eng.qa-release-signoff.md +170 -0
- package/workflows/engineering/qa/eng.qa-sprint-planning.md +100 -0
- package/workflows/engineering/ta/eng.ta.atendimento.md +93 -0
- package/workflows/product/prod.roadmap.preview.md +110 -0
- package/workflows/product/prod.spec.breakdown.md +163 -0
- package/workflows/product/prod.spec.clarify.md +178 -0
- package/workflows/product/prod.spec.epic.md +154 -0
- package/workflows/product/prod.spec.frd.md +96 -0
- package/workflows/product/prod.spec.issue.md +145 -0
- package/workflows/product/prod.spec.md +60 -0
- package/workflows/product/prod.spec.prd.md +100 -0
- package/workflows/taxonomy.md +92 -0
- package/workflows/warm-up.md +574 -0
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
# Regras de Padrões Cypress — QA Engineering
|
|
2
|
+
|
|
3
|
+
> **Applies to:** HUB: QA | POSITION: all | AREA: ENGINEERING | SQUAD: all
|
|
4
|
+
|
|
5
|
+
Convenções obrigatórias para a escrita e manutenção da suíte de testes E2E em Cypress + TypeScript.
|
|
6
|
+
Estas regras são carregadas automaticamente pelo `warm-up` quando `HUB=QA`.
|
|
7
|
+
|
|
8
|
+
> **Fonte de verdade**: este arquivo define o padrão para toda a sessão.
|
|
9
|
+
> A skill `eng-qa-cypress-e2e` assume que estas regras foram carregadas — não as redescobre.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Estrutura de Pastas
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
$TEST_FOLDER/
|
|
17
|
+
├── e2e/ ← specs organizados por domínio/feature
|
|
18
|
+
│ ├── {dominio}/
|
|
19
|
+
│ │ └── {feature}.cy.ts
|
|
20
|
+
├── fixtures/ ← dados de teste tipados
|
|
21
|
+
│ └── {dominio}/
|
|
22
|
+
│ └── {entidade}.json
|
|
23
|
+
├── support/
|
|
24
|
+
│ ├── commands/ ← custom commands por domínio
|
|
25
|
+
│ │ └── {dominio}.commands.ts
|
|
26
|
+
│ ├── pages/ ← Page Objects
|
|
27
|
+
│ │ └── {Dominio}Page.ts
|
|
28
|
+
│ ├── commands.ts ← barrel de imports dos commands
|
|
29
|
+
│ └── e2e.ts ← configuração global
|
|
30
|
+
└── cypress.config.ts
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
> `$TEST_FOLDER` é definido no `ENV.md` do projeto.
|
|
34
|
+
> Se não definido, inferir do `cypress.config.ts` na raiz.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## 2. Nomenclatura de Arquivos
|
|
39
|
+
|
|
40
|
+
| Tipo | Padrão | Exemplo |
|
|
41
|
+
|------|--------|---------|
|
|
42
|
+
| Spec | `{feature}.cy.ts` | `login.cy.ts` |
|
|
43
|
+
| Page Object | `{Dominio}Page.ts` (PascalCase) | `LoginPage.ts` |
|
|
44
|
+
| Custom command | `{dominio}.commands.ts` | `auth.commands.ts` |
|
|
45
|
+
| Fixture | `{entidade}.json` | `usuario.json` |
|
|
46
|
+
| Intercept fixture | `{endpoint}-{metodo}.json` | `usuarios-get.json` |
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 3. Estrutura de Spec (describe/it)
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
describe('{Domínio} — {Feature}', () => {
|
|
54
|
+
beforeEach(() => {
|
|
55
|
+
// setup comum: autenticação, navegação inicial
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
afterEach(() => {
|
|
59
|
+
// limpeza se necessário
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
context('quando {condição}', () => {
|
|
63
|
+
it('deve {comportamento esperado}', () => {
|
|
64
|
+
// Arrange → Act → Assert
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
})
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Regras de nomenclatura:**
|
|
71
|
+
- `describe`: `{Domínio} — {Feature}` (domínio sempre em PascalCase)
|
|
72
|
+
- `context`: `quando {condição}` — descreve o estado/pré-condição
|
|
73
|
+
- `it`: `deve {comportamento}` — verifica um único comportamento
|
|
74
|
+
- Nunca usar `it('test 1')`, `it('cenário A')` ou nomes vagos
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 4. Page Object Pattern
|
|
79
|
+
|
|
80
|
+
```typescript
|
|
81
|
+
// support/pages/LoginPage.ts
|
|
82
|
+
export class LoginPage {
|
|
83
|
+
visit() {
|
|
84
|
+
cy.visit('/login')
|
|
85
|
+
return this
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
fillEmail(email: string) {
|
|
89
|
+
cy.get('[data-testid="input-email"]').type(email)
|
|
90
|
+
return this
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
fillPassword(password: string) {
|
|
94
|
+
cy.get('[data-testid="input-password"]').type(password)
|
|
95
|
+
return this
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
submit() {
|
|
99
|
+
cy.get('[data-testid="btn-submit"]').click()
|
|
100
|
+
return this
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Asserções ficam no Page Object quando são reutilizáveis
|
|
104
|
+
shouldShowError(message: string) {
|
|
105
|
+
cy.get('[data-testid="alert-error"]').should('contain', message)
|
|
106
|
+
return this
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Regras do Page Object:**
|
|
112
|
+
- Retornar `this` em todos os métodos de ação (fluent interface)
|
|
113
|
+
- Métodos de asserção começam com `should`
|
|
114
|
+
- Nunca colocar lógica de negócio — apenas interação com a UI
|
|
115
|
+
- Um Page Object por página ou componente de alto nível
|
|
116
|
+
- Importar e instanciar no topo da spec: `const page = new LoginPage()`
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 5. Seletores — Uso de `data-testid`
|
|
121
|
+
|
|
122
|
+
**Hierarquia de preferência de seletores:**
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
1. cy.get('[data-testid="..."]') ← PADRÃO — sempre preferir
|
|
126
|
+
2. cy.get('[aria-label="..."]') ← acessibilidade — segundo recurso
|
|
127
|
+
3. cy.get('[role="..."]') ← semântico — terceiro recurso
|
|
128
|
+
4. cy.contains('Texto visível') ← apenas para elementos de texto
|
|
129
|
+
5. cy.get('.classe') / cy.get('#id') ← PROIBIDO em specs novas
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Convenção de nomes para `data-testid`:**
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
{tipo}-{dominio}-{identificador}
|
|
136
|
+
|
|
137
|
+
Exemplos:
|
|
138
|
+
btn-auth-login
|
|
139
|
+
input-form-email
|
|
140
|
+
table-users-list
|
|
141
|
+
row-users-{id} ← para listas dinâmicas
|
|
142
|
+
modal-confirm-delete
|
|
143
|
+
alert-error-message
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 6. Interceptação de API com `cy.intercept`
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
// Padrão de intercept com fixture tipada
|
|
152
|
+
cy.intercept('GET', '**/api/usuarios', { fixture: 'usuarios/usuarios-get.json' })
|
|
153
|
+
.as('getUsuarios')
|
|
154
|
+
|
|
155
|
+
// Aguardar antes de asserção
|
|
156
|
+
cy.wait('@getUsuarios')
|
|
157
|
+
cy.get('[data-testid="table-users-list"]').should('be.visible')
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Regras de intercept:**
|
|
161
|
+
- Sempre usar `.as('{verbo}{Recurso}')` — ex: `@getUsuarios`, `@postPagamento`
|
|
162
|
+
- Sempre usar `cy.wait('@alias')` antes de asserções que dependem da resposta
|
|
163
|
+
- Fixtures de intercept ficam em `fixtures/{dominio}/{endpoint}-{metodo}.json`
|
|
164
|
+
- Para erros: passar `{ statusCode: 422, body: { message: '...' } }` diretamente (não fixture)
|
|
165
|
+
- Nunca depender do estado real da API em testes E2E — sempre interceptar chamadas externas
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 7. Fixtures Tipadas
|
|
170
|
+
|
|
171
|
+
```typescript
|
|
172
|
+
// cypress/fixtures/usuarios/usuario.json
|
|
173
|
+
{
|
|
174
|
+
"id": "usr-001",
|
|
175
|
+
"nome": "Dev Teste",
|
|
176
|
+
"email": "dev@example.com",
|
|
177
|
+
"perfil": "admin"
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Uso na spec com tipo
|
|
181
|
+
import type { Usuario } from '../../src/types/usuario'
|
|
182
|
+
|
|
183
|
+
cy.fixture<Usuario>('usuarios/usuario').then((usuario) => {
|
|
184
|
+
cy.get('[data-testid="input-email"]').type(usuario.email)
|
|
185
|
+
})
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**Regras de fixtures:**
|
|
189
|
+
- Dados sensíveis (senhas, tokens) nunca em fixtures — usar `Cypress.env()`
|
|
190
|
+
- Fixtures refletem contratos reais de API — atualizá-las quando a API muda
|
|
191
|
+
- Usar tipos do projeto (`import type`) para garantir sincronia com o código
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## 8. Custom Commands
|
|
196
|
+
|
|
197
|
+
```typescript
|
|
198
|
+
// support/commands/auth.commands.ts
|
|
199
|
+
Cypress.Commands.add('loginAs', (perfil: 'admin' | 'viewer' | 'editor') => {
|
|
200
|
+
cy.fixture(`usuarios/${perfil}`).then((usuario) => {
|
|
201
|
+
cy.request('POST', '/api/auth/login', {
|
|
202
|
+
email: usuario.email,
|
|
203
|
+
password: Cypress.env('DEFAULT_PASSWORD'),
|
|
204
|
+
}).then(({ body }) => {
|
|
205
|
+
window.localStorage.setItem('auth_token', body.token)
|
|
206
|
+
})
|
|
207
|
+
})
|
|
208
|
+
})
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**Regras de custom commands:**
|
|
212
|
+
- Prefixo do domínio no nome: `loginAs`, `selectCompany`, `fillAddress`
|
|
213
|
+
- Login/autenticação sempre via `cy.request` (não via UI) — mais rápido e estável
|
|
214
|
+
- Tipar os parâmetros com union types quando há opções fixas
|
|
215
|
+
- Registrar em `support/commands.ts` e declarar tipo em `support/index.d.ts`
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
## 9. Cenários Obrigatórios por Spec
|
|
220
|
+
|
|
221
|
+
Toda spec deve cobrir no mínimo:
|
|
222
|
+
|
|
223
|
+
| Cenário | Obrigatório? |
|
|
224
|
+
|---------|-------------|
|
|
225
|
+
| Happy Path — fluxo principal com dados válidos | ✅ Sempre |
|
|
226
|
+
| Edge Case — dados limite, campos opcionais | ✅ Se aplicável |
|
|
227
|
+
| Negative Test — dados inválidos, erros esperados | ✅ Se há validação |
|
|
228
|
+
| Estado vazio — lista sem itens, tela inicial | ⚠️ Quando relevante |
|
|
229
|
+
| Permissão — comportamento por perfil de usuário | ⚠️ Quando há controle de acesso |
|
|
230
|
+
|
|
231
|
+
---
|
|
232
|
+
|
|
233
|
+
## 10. Antipadrões — Nunca Fazer
|
|
234
|
+
|
|
235
|
+
```typescript
|
|
236
|
+
// ❌ Seletor frágil
|
|
237
|
+
cy.get('.btn-primary').click()
|
|
238
|
+
cy.get('#submit').click()
|
|
239
|
+
|
|
240
|
+
// ✅ Correto
|
|
241
|
+
cy.get('[data-testid="btn-auth-submit"]').click()
|
|
242
|
+
|
|
243
|
+
// ❌ Sleep hardcoded
|
|
244
|
+
cy.wait(3000)
|
|
245
|
+
|
|
246
|
+
// ✅ Correto — aguardar elemento ou intercept
|
|
247
|
+
cy.wait('@postLogin')
|
|
248
|
+
cy.get('[data-testid="dashboard-title"]').should('be.visible')
|
|
249
|
+
|
|
250
|
+
// ❌ Lógica condicional no teste
|
|
251
|
+
if (Cypress.env('USE_MOCK')) { ... }
|
|
252
|
+
|
|
253
|
+
// ✅ Correto — sempre interceptar, nunca depender de flag
|
|
254
|
+
|
|
255
|
+
// ❌ Dependência entre testes
|
|
256
|
+
// Teste 2 só funciona se Teste 1 rodou antes
|
|
257
|
+
|
|
258
|
+
// ✅ Correto — cada `it` deve ser independente (usar beforeEach para setup)
|
|
259
|
+
```
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
# Regras de Sessão de Teste Exploratório — QA Engineering
|
|
2
|
+
|
|
3
|
+
> **Applies to:** HUB: QA | POSITION: all | AREA: ENGINEERING | SQUAD: all
|
|
4
|
+
|
|
5
|
+
Convenções para planejamento, execução e documentação de sessões de teste exploratório estruturado.
|
|
6
|
+
Carregadas automaticamente pelo `warm-up` quando `HUB=QA`.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. Estrutura de Charter
|
|
11
|
+
|
|
12
|
+
Todo teste exploratório começa com um **charter** — a declaração do objetivo da sessão.
|
|
13
|
+
|
|
14
|
+
**Formato obrigatório:**
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
Explorar {área/feature/fluxo}
|
|
18
|
+
para descobrir {tipo de informação / riscos a validar}
|
|
19
|
+
com foco em {dimensão de qualidade}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Exemplos:**
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Explorar o fluxo de cadastro de veículos
|
|
26
|
+
para descobrir comportamentos inesperados em campos opcionais e limites de dados
|
|
27
|
+
com foco em robustez e validação de formulário
|
|
28
|
+
|
|
29
|
+
Explorar a integração de pagamentos após alteração de plano
|
|
30
|
+
para descobrir regressões introduzidas pela última release
|
|
31
|
+
com foco em consistência de estado e mensagens ao usuário
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
**Regras do charter:**
|
|
35
|
+
- Máximo 3 linhas — objetivo claro, não um roteiro detalhado
|
|
36
|
+
- Não listar passos no charter — exploração decide o caminho
|
|
37
|
+
- Um charter por sessão (sessões paralelas têm charters independentes)
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 2. Time-box Padrão
|
|
42
|
+
|
|
43
|
+
| Tipo de sessão | Duração | Quando usar |
|
|
44
|
+
|----------------|---------|-------------|
|
|
45
|
+
| Rápida (spot check) | 30 min | Verificação pontual, pós-fix rápido |
|
|
46
|
+
| Padrão | 60 min | Feature nova, área de risco moderado |
|
|
47
|
+
| Profunda | 90 min | Feature crítica, área de alto risco, pré-release |
|
|
48
|
+
|
|
49
|
+
**Regras de time-box:**
|
|
50
|
+
- Nunca estender uma sessão além do tempo definido — iniciar nova sessão se necessário
|
|
51
|
+
- Os primeiros 10 min são de setup e entendimento — não contam como execução
|
|
52
|
+
- Registrar hora de início e fim no documento de sessão
|
|
53
|
+
- Pausa obrigatória de 15 min entre sessões consecutivas
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 3. Classificação de Severidade de Bugs
|
|
58
|
+
|
|
59
|
+
| Severidade | Label | Critério | Ação imediata |
|
|
60
|
+
|------------|-------|----------|---------------|
|
|
61
|
+
| **Crítico** | `S1` | Sistema inutilizável, perda de dados, falha de segurança | Reportar imediatamente — não esperar fim da sessão |
|
|
62
|
+
| **Alto** | `S2` | Feature principal quebrada, sem workaround óbvio | Reportar ao final da sessão, com evidência |
|
|
63
|
+
| **Médio** | `S3` | Feature funciona mas com comportamento incorreto ou inconsistente | Registrar no doc da sessão, criar card após |
|
|
64
|
+
| **Baixo** | `S4` | UI incorreta, texto errado, comportamento subótimo mas funcional | Registrar no doc da sessão, agrupar em batch |
|
|
65
|
+
| **Melhoria** | `S5` | Não é bug — sugestão de UX ou comportamento melhor | Separar claramente de bugs reais |
|
|
66
|
+
|
|
67
|
+
**Regras de severidade:**
|
|
68
|
+
- Nunca sub-reportar para "não incomodar" — severidade é objetiva, não subjetiva
|
|
69
|
+
- Um bug S1 interrompe a sessão e é reportado via canal direto ao time
|
|
70
|
+
- Bugs S4 e S5 podem ser agrupados em um card único "ajustes UI/UX — {área}"
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 4. Critérios de Parada de Sessão
|
|
75
|
+
|
|
76
|
+
Encerrar a sessão antes do time-box quando:
|
|
77
|
+
|
|
78
|
+
| Critério | Ação |
|
|
79
|
+
|----------|------|
|
|
80
|
+
| Bug S1 encontrado | Interromper, reportar imediatamente, documentar contexto |
|
|
81
|
+
| Ambiente instável (falhas de infra, não de software) | Encerrar, registrar causa, reagendar |
|
|
82
|
+
| Charter atingido antes do tempo | Encerrar normalmente, registrar cobertura atingida |
|
|
83
|
+
| Descoberta muda completamente o escopo | Encerrar, definir novo charter para próxima sessão |
|
|
84
|
+
|
|
85
|
+
**Nunca encerrar uma sessão sem:**
|
|
86
|
+
- Registrar o que foi explorado (mesmo que parcialmente)
|
|
87
|
+
- Classificar cada achado com severidade
|
|
88
|
+
- Marcar se o charter foi atingido (`completo`, `parcial`, `bloqueado`)
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 5. Dimensões de Qualidade para Foco
|
|
93
|
+
|
|
94
|
+
Ao definir o charter, escolher no máximo 2 dimensões de qualidade:
|
|
95
|
+
|
|
96
|
+
| Dimensão | O que verificar |
|
|
97
|
+
|----------|----------------|
|
|
98
|
+
| **Funcionalidade** | O comportamento faz o que a spec diz? |
|
|
99
|
+
| **Robustez** | Reage bem a entradas inesperadas, limites, dados faltantes? |
|
|
100
|
+
| **Consistência** | Estado do sistema permanece coerente após a ação? |
|
|
101
|
+
| **Performance percebida** | Tempos de resposta aceitáveis para o usuário? |
|
|
102
|
+
| **Acessibilidade** | Navegação por teclado, leitores de tela, contraste? |
|
|
103
|
+
| **Segurança superficial** | Dados expostos indevidamente, autorização correta? |
|
|
104
|
+
| **Integração** | Comunicação correta com outros módulos/serviços? |
|
|
105
|
+
| **Regressão** | Funcionalidades existentes ainda funcionam após mudança? |
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 6. Evidências Obrigatórias
|
|
110
|
+
|
|
111
|
+
Para cada bug reportado:
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
- Severidade: S{1-5}
|
|
115
|
+
- Passos para reproduzir: numerados, a partir do estado inicial
|
|
116
|
+
- Comportamento observado: o que aconteceu
|
|
117
|
+
- Comportamento esperado: o que deveria acontecer
|
|
118
|
+
- Evidência: screenshot, vídeo ou log (obrigatório para S1/S2)
|
|
119
|
+
- Ambiente: URL/versão/dados usados no momento do bug
|
|
120
|
+
- Reprodutível?: sim / às vezes / não consegui reproduzir novamente
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
## 7. Integração com `eng-qa-bug-report`
|
|
126
|
+
|
|
127
|
+
Ao final de cada sessão, para cada achado S1–S4, acionar o skill `eng-qa-bug-report`:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
/eng-qa-bug-report create
|
|
131
|
+
--title="{descrição concisa}"
|
|
132
|
+
--severity="S{1-4}"
|
|
133
|
+
--session="{id da sessão}"
|
|
134
|
+
--passos="{passos reproduzidos}"
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Achados S5 (melhorias) são registrados apenas no doc da sessão — não viram card automaticamente.
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
> **Applies to:** HUB: QA | POSITION: QA-ENGINEER, SPECIALIST | AREA: ENGINEERING | SQUAD: all
|
|
2
|
+
|
|
3
|
+
# Regras de Classificação de Score
|
|
4
|
+
|
|
5
|
+
Sistema de pontuação e bloqueio para quality gates de tech specs.
|
|
6
|
+
|
|
7
|
+
## Faixas de Score
|
|
8
|
+
|
|
9
|
+
### 🚫 BLOQUEANTE - Score < 50%
|
|
10
|
+
|
|
11
|
+
**Status**: Não conforme
|
|
12
|
+
**Label**: `QualityGate::Bloqueado`
|
|
13
|
+
**Ação**: Card **NÃO PODE** prosseguir para breakdown. Deve retornar para refinamento.
|
|
14
|
+
|
|
15
|
+
#### Quando bloquear:
|
|
16
|
+
- Faltam 3 ou mais critérios obrigatórios
|
|
17
|
+
- Descrição completamente vazia ou genérica
|
|
18
|
+
- SPIKE sem referências de discovery
|
|
19
|
+
- Critérios de aceitação ausentes ou muito vagos
|
|
20
|
+
- Bug sem passos para reproduzir
|
|
21
|
+
- Análise técnica inexistente ou incompleta
|
|
22
|
+
- Subtarefas propostas são fatias horizontais (só enum, só repository, só factory, só DTO, só contratos sem implementação funcional) ou não passam no Teste de Validação de independência
|
|
23
|
+
|
|
24
|
+
#### Mensagem ao time:
|
|
25
|
+
> ⚠️ **Card bloqueado para breakdown**. Tech spec não atende aos critérios mínimos de qualidade. Refine conforme recomendações e solicite nova análise.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
### ⚠️ PARCIAL - Score 50-99%
|
|
30
|
+
|
|
31
|
+
**Status**: Parcialmente conforme
|
|
32
|
+
**Label**: `QualityGate::Parcial`
|
|
33
|
+
**Ação**: Card **PODE** prosseguir, mas com ressalvas. Recomenda-se refinamento antes.
|
|
34
|
+
|
|
35
|
+
#### Quando classificar como parcial:
|
|
36
|
+
- 1-2 critérios obrigatórios faltando
|
|
37
|
+
- Critérios presentes mas podem ser melhorados
|
|
38
|
+
- Faltam alguns cenários de teste
|
|
39
|
+
- Análise técnica superficial
|
|
40
|
+
- Dependências parcialmente mapeadas
|
|
41
|
+
|
|
42
|
+
#### Mensagem ao time:
|
|
43
|
+
> ℹ️ **Card pode prosseguir com ressalvas**. A tech spec está funcional mas pode ser melhorada. Considere as recomendações para aumentar qualidade.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
### ✅ CONFORME - Score 100%
|
|
48
|
+
|
|
49
|
+
**Status**: Conforme
|
|
50
|
+
**Label**: `QualityGate::Conforme`
|
|
51
|
+
**Ação**: Card está **PRONTO** para breakdown de subtarefas.
|
|
52
|
+
|
|
53
|
+
#### Quando aprovar:
|
|
54
|
+
- Todos os critérios obrigatórios atendidos
|
|
55
|
+
- Tech spec clara, completa e acionável
|
|
56
|
+
- Equipe pode iniciar implementação sem dúvidas
|
|
57
|
+
- Critérios de aceitação mensuráveis
|
|
58
|
+
- Cenários de teste identificados
|
|
59
|
+
- Análise técnica detalhada
|
|
60
|
+
- Dependências mapeadas
|
|
61
|
+
|
|
62
|
+
#### Mensagem ao time:
|
|
63
|
+
> ✅ **Tech spec aprovada!** Todos os critérios de qualidade atendidos. Card pronto para breakdown de subtarefas.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Cálculo de Score
|
|
68
|
+
|
|
69
|
+
### Metodologia
|
|
70
|
+
|
|
71
|
+
1. **Identificar critérios obrigatórios** do tipo de card (Task/Spike/Bug)
|
|
72
|
+
2. **Verificar cada critério**: Atendido = 1 ponto, Não atendido = 0 pontos
|
|
73
|
+
3. **Calcular percentual**: (Critérios atendidos / Total critérios) × 100
|
|
74
|
+
|
|
75
|
+
### Exemplo: Task
|
|
76
|
+
|
|
77
|
+
| Critério | Atendido? | Peso |
|
|
78
|
+
|----------|-----------|------|
|
|
79
|
+
| Descrição Clara | ✅ Sim | 15% |
|
|
80
|
+
| Critérios de Aceitação | ✅ Sim | 20% |
|
|
81
|
+
| Cenários de Teste | ❌ Não | 15% |
|
|
82
|
+
| Análise Técnica | ✅ Sim | 15% |
|
|
83
|
+
| Dependências | ⚠️ Parcial | 10% |
|
|
84
|
+
| **Valor Unitário (fatia vertical)** | ✅ Sim | **25%** |
|
|
85
|
+
|
|
86
|
+
**Score**: 80/100 → **Parcial**
|
|
87
|
+
|
|
88
|
+
> **Critério 6 — Valor Unitário (fatia vertical)** é o critério de maior peso. Avalia se as subtarefas propostas são **entregáveis completos e independentes** (endpoint inteiro, modal inteiro, tela inteira) e **não** fatias horizontais (só enum, só repository, só factory, só DTO). Uma subtarefa só é válida se, mergeada isoladamente, a aplicação continua funcionando e a entrega é observável.
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Matriz de Decisão
|
|
93
|
+
|
|
94
|
+
| Score | Status | Label | Pode prosseguir? | Ação requerida |
|
|
95
|
+
|-------|--------|-------|------------------|----------------|
|
|
96
|
+
| 0-49% | 🚫 Não conforme | `QualityGate::Bloqueado` | ❌ Não | Refinamento obrigatório |
|
|
97
|
+
| 50-99% | ⚠️ Parcial | `QualityGate::Parcial` | ⚠️ Com ressalvas | Refinamento recomendado |
|
|
98
|
+
| 100% | ✅ Conforme | `QualityGate::Conforme` | ✅ Sim | Prosseguir para breakdown |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## Regras Especiais
|
|
103
|
+
|
|
104
|
+
### Critérios Críticos (Bloqueantes Automáticos)
|
|
105
|
+
|
|
106
|
+
Mesmo com score > 50%, o card é **automaticamente bloqueado** se:
|
|
107
|
+
|
|
108
|
+
#### Para SPIKE:
|
|
109
|
+
- ❌ Ausência completa de referências de discovery
|
|
110
|
+
|
|
111
|
+
#### Para BUG:
|
|
112
|
+
- ❌ Ausência de passos para reproduzir
|
|
113
|
+
- ❌ Ausência de análise técnica
|
|
114
|
+
|
|
115
|
+
#### Para TASK:
|
|
116
|
+
- ❌ Ausência de critérios de aceitação
|
|
117
|
+
- ❌ Descrição vazia ou extremamente genérica (< 50 caracteres)
|
|
118
|
+
- ❌ Subtarefas propostas são fatias horizontais (split por camada) — ex: cards separados para "criar enum", "criar repository", "criar factory", "criar DTO", "criar contratos/interfaces" sem implementação funcional
|
|
119
|
+
- ❌ Subtarefas não passam no Teste de Validação de independência (não mergeáveis isoladamente sem quebrar o sistema)
|
|
120
|
+
|
|
121
|
+
### Exemplo:
|
|
122
|
+
```
|
|
123
|
+
Score calculado: 60% (Parcial)
|
|
124
|
+
Mas: Task sem critérios de aceitação
|
|
125
|
+
Resultado final: BLOQUEADO (critério crítico não atendido)
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Processo de Reavaliação
|
|
131
|
+
|
|
132
|
+
### Após Correções
|
|
133
|
+
|
|
134
|
+
1. Desenvolvedor corrige problemas apontados
|
|
135
|
+
2. Solicita nova análise (comentário mencionando Quality Champion)
|
|
136
|
+
3. Nova validação é realizada
|
|
137
|
+
4. Score é recalculado
|
|
138
|
+
5. Label é atualizada
|
|
139
|
+
|
|
140
|
+
### Histórico de Validações
|
|
141
|
+
|
|
142
|
+
Cada validação deve incluir:
|
|
143
|
+
- Data/hora da análise
|
|
144
|
+
- Score obtido
|
|
145
|
+
- Status resultante
|
|
146
|
+
- Principais gaps identificados
|
|
147
|
+
|
|
148
|
+
Isso permite rastreabilidade e melhoria contínua do processo.
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Exceções e Escalação
|
|
153
|
+
|
|
154
|
+
### Quando Escalar
|
|
155
|
+
|
|
156
|
+
Em casos excepcionais, pode-se solicitar aprovação manual:
|
|
157
|
+
|
|
158
|
+
- Urgência crítica (produção parada)
|
|
159
|
+
- Contexto especial conhecido pelo time
|
|
160
|
+
- Tech spec de spike exploratório inicial
|
|
161
|
+
|
|
162
|
+
**Processo**:
|
|
163
|
+
1. Adicionar comentário justificando exceção
|
|
164
|
+
2. Mencionar tech lead ou arquiteto
|
|
165
|
+
3. Obter aprovação explícita
|
|
166
|
+
4. Documentar decisão no card
|
|
167
|
+
|
|
168
|
+
**Label**: `QualityGate::Exceção` (substitui label automática)
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Métricas de Qualidade
|
|
173
|
+
|
|
174
|
+
### KPIs Sugeridos
|
|
175
|
+
|
|
176
|
+
- **Taxa de conformidade**: % de cards com score 100%
|
|
177
|
+
- **Taxa de bloqueio**: % de cards < 50%
|
|
178
|
+
- **Tempo médio de refinamento**: Tempo entre bloqueio e aprovação
|
|
179
|
+
- **Reincidência**: Cards bloqueados > 1 vez
|
|
180
|
+
|
|
181
|
+
Essas métricas ajudam a identificar gaps de processo e melhorar qualidade geral das tech specs.
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
> **Applies to:** HUB: QA | POSITION: QA-ENGINEER, SPECIALIST | AREA: ENGINEERING | SQUAD: all
|
|
2
|
+
|
|
3
|
+
# Critérios de Validação de Tech Spec
|
|
4
|
+
|
|
5
|
+
Critérios objetivos para validação de especificações técnicas, organizados por tipo de card.
|
|
6
|
+
|
|
7
|
+
## Para TASKS Normais
|
|
8
|
+
|
|
9
|
+
### ✅ Obrigatório (Bloqueante)
|
|
10
|
+
|
|
11
|
+
#### 1. Descrição Clara e Objetiva
|
|
12
|
+
- Contexto do problema/necessidade
|
|
13
|
+
- Objetivo da tarefa bem definido
|
|
14
|
+
- Escopo delimitado
|
|
15
|
+
|
|
16
|
+
#### 2. Critérios de Aceitação
|
|
17
|
+
- Pelo menos 3 critérios bem definidos
|
|
18
|
+
- Critérios específicos e mensuráveis
|
|
19
|
+
- Formato: "O sistema deve..." ou "Quando... então..."
|
|
20
|
+
|
|
21
|
+
#### 3. Cenários de Teste
|
|
22
|
+
- Pelo menos 2 cenários identificados
|
|
23
|
+
- Casos de sucesso definidos
|
|
24
|
+
- Casos de erro/exceção identificados
|
|
25
|
+
|
|
26
|
+
#### 4. Análise Técnica
|
|
27
|
+
- Abordagem técnica documentada
|
|
28
|
+
- Tecnologias/bibliotecas a serem utilizadas
|
|
29
|
+
- Impactos em outras partes do sistema identificados
|
|
30
|
+
|
|
31
|
+
#### 5. Dependências
|
|
32
|
+
- Dependências técnicas mapeadas
|
|
33
|
+
- Dependências de outros cards identificadas (se houver)
|
|
34
|
+
|
|
35
|
+
### ⚡ Desejável (Não Bloqueante)
|
|
36
|
+
|
|
37
|
+
- Estimativa de complexidade (P, M, G)
|
|
38
|
+
- Riscos identificados
|
|
39
|
+
- Alternativas de implementação consideradas
|
|
40
|
+
- Diagrama ou fluxo (quando aplicável)
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## Para SPIKE (Discovery)
|
|
45
|
+
|
|
46
|
+
### ✅ Obrigatório (Bloqueante)
|
|
47
|
+
|
|
48
|
+
#### 1. Objetivo do Spike
|
|
49
|
+
- O que precisa ser investigado/descoberto
|
|
50
|
+
- Perguntas que precisam ser respondidas
|
|
51
|
+
- Escopo bem definido
|
|
52
|
+
|
|
53
|
+
#### 2. Referência de Discovery
|
|
54
|
+
- **CRÍTICO**: Local onde será realizado o discovery
|
|
55
|
+
- Links para documentação oficial
|
|
56
|
+
- APIs, SDKs ou ferramentas a serem investigadas
|
|
57
|
+
- Exemplo: "Banco Rendimento - https://desenvolvedores.rendimento.com.br/api-portal/"
|
|
58
|
+
|
|
59
|
+
#### 3. Critérios de Conclusão
|
|
60
|
+
- O que define o spike como concluído
|
|
61
|
+
- Entregáveis esperados (POC, documento, análise comparativa, etc.)
|
|
62
|
+
- Tempo máximo estimado
|
|
63
|
+
|
|
64
|
+
#### 4. Contexto e Justificativa
|
|
65
|
+
- Por que este spike é necessário
|
|
66
|
+
- Qual decisão depende deste discovery
|
|
67
|
+
|
|
68
|
+
### ⚡ Desejável (Não Bloqueante)
|
|
69
|
+
|
|
70
|
+
- Alternativas a serem comparadas
|
|
71
|
+
- Critérios de avaliação
|
|
72
|
+
- Impacto da decisão no projeto
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Para BUG
|
|
77
|
+
|
|
78
|
+
### ✅ Obrigatório (Bloqueante)
|
|
79
|
+
|
|
80
|
+
#### 1. Descrição do Bug
|
|
81
|
+
- Comportamento esperado
|
|
82
|
+
- Comportamento atual (incorreto)
|
|
83
|
+
- Impacto do bug
|
|
84
|
+
|
|
85
|
+
#### 2. Passos para Reproduzir
|
|
86
|
+
- Lista numerada e clara
|
|
87
|
+
- Dados de teste necessários
|
|
88
|
+
- Ambiente onde ocorre
|
|
89
|
+
|
|
90
|
+
#### 3. Análise Técnica
|
|
91
|
+
- Causa raiz identificada (ou hipótese)
|
|
92
|
+
- Arquivos/componentes afetados
|
|
93
|
+
- Solução proposta
|
|
94
|
+
|
|
95
|
+
#### 4. Severidade e Prioridade
|
|
96
|
+
- Classificação de severidade
|
|
97
|
+
- Justificativa da prioridade
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Checklist Rápido por Tipo
|
|
102
|
+
|
|
103
|
+
### Task
|
|
104
|
+
- [ ] Descrição com contexto, objetivo e escopo
|
|
105
|
+
- [ ] Mínimo 3 critérios de aceitação mensuráveis
|
|
106
|
+
- [ ] Mínimo 2 cenários de teste (sucesso + erro)
|
|
107
|
+
- [ ] Análise técnica com stack e impactos
|
|
108
|
+
- [ ] Dependências mapeadas
|
|
109
|
+
|
|
110
|
+
### Spike
|
|
111
|
+
- [ ] Objetivo e perguntas definidas
|
|
112
|
+
- [ ] **Referências de discovery** (docs, APIs, SDKs)
|
|
113
|
+
- [ ] Critérios de conclusão e entregáveis
|
|
114
|
+
- [ ] Contexto e justificativa do spike
|
|
115
|
+
|
|
116
|
+
### Bug
|
|
117
|
+
- [ ] Comportamento esperado vs atual
|
|
118
|
+
- [ ] Passos para reproduzir numerados
|
|
119
|
+
- [ ] Causa raiz e arquivos afetados
|
|
120
|
+
- [ ] Severidade e prioridade justificadas
|