jarvis-ai-framework 2.1.0 → 3.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.
Files changed (303) hide show
  1. package/AGENTS.md +22 -122
  2. package/agents/AGENTS.md +20 -24
  3. package/agents/README.md +25 -129
  4. package/agents/engineering/data/eng.data-engineer.agent.md +12 -35
  5. package/agents/engineering/eng.agent.md +18 -30
  6. package/agents/engineering/eng.bug-hunter.md +9 -12
  7. package/agents/engineering/eng.dev-code-reviewer.md +5 -1
  8. package/agents/engineering/eng.docs-writer.md +3 -3
  9. package/agents/engineering/eng.frontend.agent.md +13 -8
  10. package/agents/engineering/eng.rpa.agent.md +5 -13
  11. package/agents/engineering/eng.ux-designer.agent.md +4 -0
  12. package/agents/engineering/qa/eng.qa.quality-champion-task-agent.md +4 -0
  13. package/agents/engineering/qa/eng.qa.quality-strategist.md +13 -8
  14. package/agents/engineering/qa/eng.qa.test-architect.md +16 -15
  15. package/agents/engineering/qa/eng.qa.test-planner.md +22 -17
  16. package/agents/engineering/qa/eng.qa.testing-engineer.md +99 -15
  17. package/agents/product/prod.discovery-interviewer.md +22 -3
  18. package/agents/product/prod.pm-checker.md +4 -0
  19. package/bin/README.md +142 -0
  20. package/bin/commands/docs-publish.js +105 -141
  21. package/bin/commands/docs-sync.js +66 -104
  22. package/bin/commands/info.js +7 -27
  23. package/bin/commands/init.js +23 -51
  24. package/bin/commands/install-rtk.js +9 -3
  25. package/bin/commands/list.js +5 -18
  26. package/bin/commands/map.js +58 -0
  27. package/bin/commands/qa-signoff.js +58 -55
  28. package/bin/commands/tokens.js +90 -0
  29. package/bin/commands/whoami.js +30 -26
  30. package/bin/jarvis.js +9 -153
  31. package/bin/lib/auth/session.js +20 -20
  32. package/bin/lib/cli/program.js +219 -0
  33. package/bin/lib/cli/shared-options.js +29 -0
  34. package/bin/lib/config/constants.js +70 -2
  35. package/bin/lib/config/ide-config.js +4 -8
  36. package/bin/lib/core/profile-filter.js +116 -0
  37. package/bin/lib/core/scanner.js +5 -31
  38. package/bin/lib/core/sync-engine.js +21 -14
  39. package/bin/lib/core/token-report.js +100 -0
  40. package/bin/lib/docs/fetch-file.js +39 -0
  41. package/bin/lib/docs/publish-file.js +194 -0
  42. package/bin/lib/docs/redis-cache.js +49 -0
  43. package/bin/lib/docs/validate-frontmatter.js +9 -39
  44. package/bin/lib/env-loader.js +11 -34
  45. package/bin/lib/flow-map/index.js +65 -0
  46. package/bin/lib/flow-map/parse.js +223 -0
  47. package/bin/lib/flow-map/render.js +89 -0
  48. package/bin/lib/flow-map/tree.js +248 -0
  49. package/bin/lib/tasks/comment.js +40 -35
  50. package/bin/lib/utils/frontmatter.js +57 -0
  51. package/bin/lib/utils/git-parser.js +4 -6
  52. package/bin/lib/utils/npmrc-parser.js +6 -13
  53. package/bin/lib/utils/paths.js +2 -4
  54. package/bin/lib/utils/ui.js +3 -9
  55. package/bin/lib/vcs/api.js +25 -41
  56. package/bin/lib/vcs/create-issue.js +49 -33
  57. package/bin/lib/vcs/create-merge.js +47 -31
  58. package/bin/lib/vcs/fetch-raw.js +35 -23
  59. package/members.md +1 -1
  60. package/package.json +15 -4
  61. package/rules/AGENTS.md +18 -7
  62. package/rules/engineering/eng-rules.md +3 -13
  63. package/rules/engineering/eng-security-rules.md +19 -18
  64. package/rules/engineering/eng.bump-rules.md +3 -2
  65. package/rules/engineering/eng.docs-scraping-rules.md +4 -4
  66. package/rules/engineering/eng.integrations-rules.md +3 -7
  67. package/rules/engineering/eng.skills-rules.md +1 -5
  68. package/rules/engineering/eng.specializations-rules.md +18 -8
  69. package/rules/engineering/frontend/eng.frontend-rules.md +1 -4
  70. package/rules/engineering/qa/eng.qa.cypress-standards-rules.md +1 -1
  71. package/rules/engineering/rpa/eng.rpa-rules.md +4 -9
  72. package/rules/product/README.md +1 -0
  73. package/rules/product/prod-rules.md +1 -4
  74. package/rules/product/prod.spec-rules.md +0 -4
  75. package/rules/rtk-rules.md +0 -1
  76. package/{rules → rules-on-demand}/engineering/eng.breakdown-subtasks-rules.md +0 -4
  77. package/{rules → rules-on-demand}/engineering/eng.plan-rules.md +0 -4
  78. package/{rules → rules-on-demand}/engineering/eng.pr-rules.md +0 -4
  79. package/{rules → rules-on-demand}/engineering/eng.pre-pr-rules.md +0 -4
  80. package/{rules → rules-on-demand}/engineering/eng.start-rules.md +0 -4
  81. package/{rules → rules-on-demand}/engineering/eng.tech-spec-rules.md +1 -2
  82. package/{rules → rules-on-demand}/engineering/eng.work-rules.md +0 -4
  83. package/skills/AGENTS.md +69 -106
  84. package/skills/SKILLS-ROADMAP.md +47 -132
  85. package/skills/eng-ai/SKILL.md +270 -0
  86. package/skills/eng-ai/references/1-fundamentos-ml.md +24 -0
  87. package/skills/eng-ai/references/10-arquitetura-solucoes-ia.md +24 -0
  88. package/skills/eng-ai/references/11-governanca-ia.md +24 -0
  89. package/skills/eng-ai/references/12-seguranca-ia-responsavel.md +25 -0
  90. package/skills/eng-ai/references/2-matematica-estatistica.md +24 -0
  91. package/skills/eng-ai/references/3-dados-para-ia.md +24 -0
  92. package/skills/eng-ai/references/4-deep-learning-fundacionais.md +24 -0
  93. package/skills/eng-ai/references/5-llms-chatbots-agentes-rag.md +25 -0
  94. package/skills/eng-ai/references/6-avaliacao-experimentacao.md +24 -0
  95. package/skills/eng-ai/references/7-engenharia-sistemas-ia.md +24 -0
  96. package/skills/eng-ai/references/8-mlops-plataforma.md +24 -0
  97. package/skills/eng-ai/references/9-produto-ia.md +24 -0
  98. package/skills/eng-ai/references/especializacoes.md +17 -0
  99. package/skills/eng-automation/SKILL.md +290 -0
  100. package/skills/eng-automation/references/1-fundamentos-automacao.md +25 -0
  101. package/skills/eng-automation/references/10-ingestao-dados.md +25 -0
  102. package/skills/eng-automation/references/11-captcha-antibot.md +25 -0
  103. package/skills/eng-automation/references/12-limites-taxa-sessoes.md +25 -0
  104. package/skills/eng-automation/references/13-agendamento-orquestracao.md +24 -0
  105. package/skills/eng-automation/references/14-retentativa-erros.md +25 -0
  106. package/skills/eng-automation/references/15-autenticacao-credenciais.md +24 -0
  107. package/skills/eng-automation/references/16-observabilidade-confiabilidade.md +24 -0
  108. package/skills/eng-automation/references/2-aquisicao-dados.md +25 -0
  109. package/skills/eng-automation/references/3-automacao-navegador.md +24 -0
  110. package/skills/eng-automation/references/4-scraping-crawling.md +25 -0
  111. package/skills/eng-automation/references/5-apis-rest-graphql-soap.md +26 -0
  112. package/skills/eng-automation/references/6-webhooks-integracao.md +25 -0
  113. package/skills/eng-automation/references/7-rpa.md +25 -0
  114. package/skills/eng-automation/references/8-extracao-estruturada.md +25 -0
  115. package/skills/eng-automation/references/9-extracao-documentos.md +25 -0
  116. package/skills/eng-automation/references/especializacoes.md +18 -0
  117. package/skills/eng-backend/SKILL.md +6 -0
  118. package/skills/eng-backend-arch-c4/SKILL.md +10 -4
  119. package/skills/eng-backend-microservices-trace/SKILL.md +6 -0
  120. package/skills/eng-backend-nestjs/SKILL.md +17 -462
  121. package/skills/eng-backend-nestjs/references/1-arquitetura-modulos.md +54 -0
  122. package/skills/eng-backend-nestjs/references/2-guards-autenticacao.md +118 -0
  123. package/skills/eng-backend-nestjs/references/3-interceptors-pipes-filters.md +113 -0
  124. package/skills/eng-backend-nestjs/references/4-config-logging.md +61 -0
  125. package/skills/eng-backend-nestjs/references/5-testes.md +83 -0
  126. package/skills/eng-backend-nestjs/references/6-problemas-comuns.md +53 -0
  127. package/skills/eng-backend-rabbitmq/SKILL.md +15 -298
  128. package/skills/eng-backend-rabbitmq/references/1-referencia-endpoints.md +28 -0
  129. package/skills/eng-backend-rabbitmq/references/2-codigo-consumer-producer.md +90 -0
  130. package/skills/eng-backend-rabbitmq/references/3-arquiteturas-comuns.md +101 -0
  131. package/skills/eng-backend-rabbitmq/references/4-troubleshooting.md +93 -0
  132. package/skills/eng-data/SKILL.md +271 -0
  133. package/skills/eng-data/references/1-fundamentos-dados.md +24 -0
  134. package/skills/eng-data/references/10-ciencia-dados.md +24 -0
  135. package/skills/eng-data/references/11-dataops-plataforma.md +24 -0
  136. package/skills/eng-data/references/12-seguranca-privacidade.md +24 -0
  137. package/skills/eng-data/references/2-modelagem-dados.md +24 -0
  138. package/skills/eng-data/references/3-bancos-dados.md +24 -0
  139. package/skills/eng-data/references/4-arquitetura-dados.md +24 -0
  140. package/skills/eng-data/references/5-pipelines-integracao.md +24 -0
  141. package/skills/eng-data/references/6-qualidade-dados.md +24 -0
  142. package/skills/eng-data/references/7-governanca-metadados.md +24 -0
  143. package/skills/eng-data/references/8-estatistica-analise.md +24 -0
  144. package/skills/eng-data/references/9-analytics-bi.md +24 -0
  145. package/skills/eng-data/references/especializacoes.md +20 -0
  146. package/skills/eng-frontend/SKILL.md +18 -5
  147. package/skills/eng-frontend/references/13-design-system.md +48 -0
  148. package/skills/eng-frontend/references/14-microfrontend.md +46 -0
  149. package/skills/eng-global-docs-write/SKILL.md +10 -5
  150. package/skills/eng-global-pr/SKILL.md +7 -1
  151. package/skills/eng-global-task-comment/SKILL.md +8 -2
  152. package/skills/eng-platform/SKILL.md +331 -0
  153. package/skills/eng-platform/references/1-fundamentos-sistemas.md +23 -0
  154. package/skills/eng-platform/references/10-resiliencia-arquitetura.md +24 -0
  155. package/skills/eng-platform/references/11-plataforma-devex.md +24 -0
  156. package/skills/eng-platform/references/12-finops-custos.md +24 -0
  157. package/skills/eng-platform/references/13-seguranca-fundamentos.md +26 -0
  158. package/skills/eng-platform/references/14-profiling-performance.md +23 -0
  159. package/skills/eng-platform/references/15-testes-carga-chaos.md +23 -0
  160. package/skills/eng-platform/references/16-cache-multicamada.md +22 -0
  161. package/skills/eng-platform/references/2-redes.md +23 -0
  162. package/skills/eng-platform/references/3-cloud.md +24 -0
  163. package/skills/eng-platform/references/4-iac-automacao.md +24 -0
  164. package/skills/eng-platform/references/5-containers-orquestracao.md +25 -0
  165. package/skills/eng-platform/references/6-cicd-entrega.md +24 -0
  166. package/skills/eng-platform/references/7-observabilidade.md +24 -0
  167. package/skills/eng-platform/references/8-confiabilidade-sre.md +24 -0
  168. package/skills/eng-platform/references/9-seguranca-infra.md +26 -0
  169. package/skills/eng-platform/references/especializacoes.md +34 -0
  170. package/skills/eng-qa/SKILL.md +283 -0
  171. package/skills/eng-qa/references/1-fundamentos-qualidade.md +25 -0
  172. package/skills/eng-qa/references/10-confiabilidade.md +25 -0
  173. package/skills/eng-qa/references/11-seguranca.md +24 -0
  174. package/skills/eng-qa/references/12-acessibilidade.md +24 -0
  175. package/skills/eng-qa/references/13-dados-testes.md +24 -0
  176. package/skills/eng-qa/references/14-gestao-testes-defeitos.md +25 -0
  177. package/skills/eng-qa/references/15-arquitetura-qa.md +25 -0
  178. package/skills/eng-qa/references/2-estrategia-planejamento.md +25 -0
  179. package/skills/eng-qa/references/3-design-testes.md +25 -0
  180. package/skills/eng-qa/references/4-manual-exploratorio.md +24 -0
  181. package/skills/eng-qa/references/5-automacao-testes.md +25 -0
  182. package/skills/eng-qa/references/6-api-integracao.md +25 -0
  183. package/skills/eng-qa/references/7-contrato.md +24 -0
  184. package/skills/eng-qa/references/8-interface-compat-mobile.md +24 -0
  185. package/skills/eng-qa/references/9-performance.md +24 -0
  186. package/skills/eng-qa/references/especializacoes.md +29 -0
  187. package/skills/eng-qa-planner/SKILL.md +264 -0
  188. package/skills/jarvis-context-detect/SKILL.md +7 -1
  189. package/skills/jarvis-context-detect/assets/context-profile-template.md +1 -1
  190. package/skills/jarvis-create-specialization/SKILL.md +14 -0
  191. package/skills/jarvis-docs-central/README.md +31 -28
  192. package/skills/jarvis-docs-central/SKILL.md +11 -5
  193. package/skills/jarvis-docs-index/SKILL.md +10 -2
  194. package/skills/jarvis-evolution-architect/SKILL.md +6 -0
  195. package/skills/jarvis-init/SKILL.md +22 -15
  196. package/skills/jarvis-init/assets/passo-adicionar-stacks.md +47 -18
  197. package/skills/jarvis-list-specializations/SKILL.md +36 -17
  198. package/skills/jarvis-report-issue/SKILL.md +7 -1
  199. package/skills/product-roadmap-report/SKILL.md +8 -0
  200. package/skills/product-specs/SKILL.md +9 -0
  201. package/skills/product-specs-update/SKILL.md +6 -0
  202. package/taxonomy.md +16 -28
  203. package/templates/AGENTS.md +2 -0
  204. package/templates/ENV-template.md +10 -2
  205. package/templates/engineering/qa/qa.sprint-plan-template.md +1 -1
  206. package/templates/engineering/tech-spec-delivery-template.md +179 -0
  207. package/workflows/AGENTS.md +14 -2
  208. package/workflows/README.md +8 -16
  209. package/workflows/all-tools.md +7 -1
  210. package/workflows/engineering/data/data.contract.md +8 -0
  211. package/workflows/engineering/data/data.new-pipeline.md +15 -4
  212. package/workflows/engineering/eng.breakdown-subtasks.md +9 -0
  213. package/workflows/engineering/eng.bug-audit.md +10 -13
  214. package/workflows/engineering/eng.build-tech-spec.md +17 -146
  215. package/workflows/engineering/eng.create-ard-from-code.md +8 -0
  216. package/workflows/engineering/eng.create-ard.md +8 -0
  217. package/workflows/engineering/eng.create-rfc.md +7 -0
  218. package/workflows/engineering/eng.debug.md +5 -21
  219. package/workflows/engineering/eng.docs.md +9 -0
  220. package/workflows/engineering/eng.light-arch.md +7 -0
  221. package/workflows/engineering/eng.plan.md +15 -2
  222. package/workflows/engineering/eng.pr.md +24 -30
  223. package/workflows/engineering/eng.pre-pr.md +33 -15
  224. package/workflows/engineering/eng.review.md +18 -11
  225. package/workflows/engineering/eng.rpa.robot.md +17 -7
  226. package/workflows/engineering/eng.start.md +33 -12
  227. package/workflows/engineering/eng.work.md +25 -17
  228. package/workflows/engineering/frontend/eng.frontend-component.md +7 -0
  229. package/workflows/engineering/frontend/eng.frontend-perf-audit.md +8 -0
  230. package/workflows/engineering/frontend/eng.frontend-review.md +8 -0
  231. package/workflows/engineering/qa/eng.qa-refinement-entry.md +7 -0
  232. package/workflows/engineering/qa/eng.qa-release-signoff.md +6 -0
  233. package/workflows/engineering/qa/eng.qa-sprint-planning.md +7 -1
  234. package/workflows/product/prod.roadmap.preview.md +9 -0
  235. package/workflows/product/prod.spec.ard.md +97 -0
  236. package/workflows/product/prod.spec.breakdown.md +10 -0
  237. package/workflows/product/prod.spec.clarify.md +8 -2
  238. package/workflows/product/prod.spec.discovery.md +11 -1
  239. package/workflows/product/prod.spec.epic.md +8 -0
  240. package/workflows/product/prod.spec.frd.md +7 -0
  241. package/workflows/product/prod.spec.issue.md +6 -0
  242. package/workflows/product/prod.spec.md +15 -1
  243. package/workflows/product/prod.spec.prd.md +7 -0
  244. package/workflows/taxonomy.md +58 -6
  245. package/workflows/warm-up.md +47 -60
  246. package/agents/engineering/eng.cybersecurity.agent.md +0 -488
  247. package/agents/engineering/qa/eng.qa.cypress-specialist.md +0 -109
  248. package/bin/lib/docs/fetch-file.sh +0 -41
  249. package/bin/lib/docs/publish-file.sh +0 -284
  250. package/rules/engineering/eng.downstream-flow-rules.md +0 -297
  251. package/rules/engineering/qa/eng.qa.exploratory-session-rules.md +0 -137
  252. package/rules/engineering/qa/eng.qa.quality-gate-scoring-rules.md +0 -181
  253. package/rules/engineering/qa/eng.qa.tech-spec-validation-criteria-rules.md +0 -120
  254. package/skills/eng-ai-engineer/SKILL.md +0 -297
  255. package/skills/eng-data-bi/SKILL.md +0 -200
  256. package/skills/eng-data-debug/SKILL.md +0 -308
  257. package/skills/eng-data-engineer/SKILL.md +0 -257
  258. package/skills/eng-data-onboard/SKILL.md +0 -311
  259. package/skills/eng-data-orchestrator/SKILL.md +0 -427
  260. package/skills/eng-devops-performance-engineer/SKILL.md +0 -313
  261. package/skills/eng-frontend-design-system/SKILL.md +0 -621
  262. package/skills/eng-frontend-microfrontend/SKILL.md +0 -604
  263. package/skills/eng-global-browser-extension-builder/SKILL.md +0 -386
  264. package/skills/eng-global-jira-comment/SKILL.md +0 -21
  265. package/skills/eng-qa-a11y-audit/SKILL.md +0 -270
  266. package/skills/eng-qa-bug-report/SKILL.md +0 -1089
  267. package/skills/eng-qa-bug-report/TASK_MANAGERS.md +0 -138
  268. package/skills/eng-qa-cypress-e2e/SKILL.md +0 -178
  269. package/skills/eng-qa-dev-guide/SKILL.md +0 -165
  270. package/skills/eng-qa-e2e/SKILL.md +0 -401
  271. package/skills/eng-qa-e2e-spec-writer/SKILL.md +0 -323
  272. package/skills/eng-qa-exploratory/SKILL.md +0 -189
  273. package/skills/eng-qa-gate/SKILL.md +0 -371
  274. package/skills/eng-qa-gate/assets/checklist-validacao.md +0 -291
  275. package/skills/eng-qa-graphql-contract/SKILL.md +0 -257
  276. package/skills/eng-qa-quality-report/SKILL.md +0 -413
  277. package/skills/eng-qa-test-plan/SKILL.md +0 -467
  278. package/skills/eng-qa-testsprite/SKILL.md +0 -326
  279. package/skills/eng-qa-testsprite/references/testsprite-mcp.md +0 -224
  280. package/skills/eng-qa-unit-test/SKILL.md +0 -472
  281. package/skills/eng-scraper/SKILL.md +0 -684
  282. package/skills/eng-scraper-robot-builder/SKILL.md +0 -371
  283. package/skills/eng-security-cybersecurity/SKILL.md +0 -646
  284. package/skills/eng-security-patch/SKILL.md +0 -382
  285. package/skills/eng-security-threat-model/SKILL.md +0 -165
  286. package/skills/eng-security-triage/SKILL.md +0 -270
  287. package/templates/engineering/qa/eng.qa.quality-gate-examples-template.md +0 -311
  288. package/templates/engineering/qa/eng.qa.quality-gate-report-template.md +0 -249
  289. package/templates/engineering/qa/qa.cypress-test-template.md +0 -172
  290. package/templates/engineering/qa/qa.exploratory-session-template.md +0 -148
  291. package/templates/engineering/qa/qa.quality-report-template.md +0 -130
  292. package/workflows/engineering/eng.security-audit.md +0 -312
  293. package/workflows/engineering/eng.security-incident.md +0 -275
  294. package/workflows/engineering/eng.security-pipeline.md +0 -210
  295. package/workflows/engineering/eng.security-review.md +0 -235
  296. package/workflows/engineering/qa/eng.qa-dev-quality-guide.md +0 -51
  297. package/workflows/engineering/qa/eng.qa-e2e-test-generation.md +0 -51
  298. package/workflows/engineering/qa/eng.qa-exploratory-session.md +0 -60
  299. package/workflows/engineering/qa/eng.qa-quality-gate-validation.md +0 -202
  300. package/workflows/engineering/qa/eng.qa-quality-report.md +0 -78
  301. /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-coverage-template.md +0 -0
  302. /package/skills/{eng-qa-test-plan → eng-qa-planner}/assets/test-patterns.md +0 -0
  303. /package/templates/{CDD aplicado a Prompts.md → cdd-aplicado-a-prompts.md} +0 -0
@@ -1,401 +0,0 @@
1
- ---
2
- name: eng-qa-e2e
3
- description: >
4
- Especialista em testes E2E (End-to-End) escritos em linguagem natural para QA.
5
- Usa Stagehand para criar testes resilientes a mudanças de UI, sem seletores hardcoded.
6
- Suporta exportação para Cypress quando necessário para produção/CI.
7
- Trigger: Use quando o QA precisar criar testes de sistema E2E em linguagem natural,
8
- validar fluxos de usuário completos, ou converter cenários de teste em código executável.
9
- license: AGPL-3.0
10
- compatibility: Designed for Claude Code (or similar products)
11
- allowed-tools: Read Write Edit Grep Glob Bash
12
- metadata:
13
- author: jarvis-team
14
- version: "1.0"
15
- area: qa
16
- # Campos Claude Code-specific (não fazem parte da spec oficial agentskills.io):
17
- argument-hint: "[cenário ou caminho do arquivo de cenários]"
18
- disable-model-invocation: false
19
- ---
20
-
21
- # QA E2E - Testes End-to-End em Linguagem Natural
22
-
23
- Você é um **especialista em testes E2E** que ajuda o QA a criar testes de sistema resilientes usando linguagem natural com Stagehand — sem precisar conhecer seletores CSS, XPath ou a estrutura interna do HTML.
24
-
25
- ## Objetivo
26
-
27
- Transformar cenários de teste descritos em linguagem natural (português ou inglês) em testes E2E executáveis, resilientes a mudanças de UI. Quando necessário para CI/CD ou produção, exportar para Cypress.
28
-
29
- ## Entrada
30
-
31
- - `$ARGUMENTS` - Cenário de teste em linguagem natural ou caminho para arquivo `.feature` / `.md` com cenários
32
- - Exemplo direto: `"usuário faz login, adiciona produto ao carrinho, finaliza compra e recebe confirmação"`
33
- - Exemplo arquivo: `tests/e2e/checkout.feature`
34
-
35
- ## Recursos
36
-
37
- - **Referência**: https://docs.stagehand.dev
38
- - **Saída**: `tests/e2e/{nome-do-cenario}.spec.ts`
39
-
40
- ---
41
-
42
- ## Pré-requisito
43
-
44
- ### Dependências
45
-
46
- ```bash
47
- npm install @browserbasehq/stagehand playwright zod dotenv --save-dev
48
- # Para exportação Cypress (opcional):
49
- npm install cypress --save-dev
50
- ```
51
-
52
- ### Variáveis de ambiente
53
-
54
- ```bash
55
- # .env
56
- BROWSERBASE_API_KEY=... # Opcional — usar env: "LOCAL" sem conta
57
- BROWSERBASE_PROJECT_ID=...
58
- OPENAI_API_KEY=... # ou ANTHROPIC_API_KEY
59
- APP_URL=https://app.exemplo.com # URL base da aplicação
60
- ```
61
-
62
- ---
63
-
64
- ## Quando Usar
65
-
66
- Use este skill quando:
67
- - QA precisa criar testes E2E sem conhecer seletores ou estrutura do HTML
68
- - Quiser testar fluxos completos de usuário (login → ação → validação)
69
- - Precisar de testes de regressão que sobrevivam a redesigns de UI
70
- - Smoke tests pós-deploy descritos em linguagem natural
71
- - Cenários de aceitação do produto precisam virar testes executáveis
72
-
73
- **NÃO usar quando:**
74
- - Testes unitários ou de integração → usar `qa-unit-test`
75
- - Testes com TestSprite MCP → usar `qa-testsprite`
76
- - O projeto já tem Cypress configurado com boa cobertura → manter Cypress
77
- - Ambiente sem Node.js ou sem acesso a browser headless
78
-
79
- ---
80
-
81
- ## Validação de Entrada
82
-
83
- ```
84
- Se $ARGUMENTS está vazio:
85
- → Solicitar ao QA: "Descreva o cenário de teste. Exemplo:
86
- 'Usuário acessa a home, clica em login, preenche email e senha,
87
- navega para o dashboard e vê seus pedidos recentes.'"
88
-
89
- Se $ARGUMENTS é um caminho de arquivo:
90
- → Ler o arquivo e extrair os cenários listados
91
- → Cada cenário vira um describe/it separado no teste
92
- ```
93
-
94
- ---
95
-
96
- ## Padrões Críticos
97
-
98
- ### Padrão 1: Linguagem natural → estrutura de teste
99
-
100
- Cada cenário descrito pelo QA deve virar um `it()` com steps claros:
101
-
102
- ```typescript
103
- // QA descreveu: "usuário faz login com credenciais válidas e vê o dashboard"
104
- it("deve fazer login e exibir o dashboard", async () => {
105
- // Arrange
106
- await page.goto(process.env.APP_URL!);
107
-
108
- // Act — linguagem natural, resiliente a mudanças de UI
109
- await stagehand.act("preencha o campo de email com o usuário de teste");
110
- await stagehand.act("preencha o campo de senha com a senha de teste");
111
- await stagehand.act("clique no botão de entrar");
112
-
113
- // Assert — extract() para validar o estado da página
114
- const dashboard = await stagehand.extract(
115
- "verifique se o dashboard do usuário está visível com seus dados",
116
- z.object({
117
- visible: z.boolean(),
118
- userName: z.string().optional(),
119
- })
120
- );
121
- expect(dashboard.visible).toBe(true);
122
- });
123
- ```
124
-
125
- ### Padrão 2: Separar execução de asserção
126
-
127
- Sempre separar o `act()` (executar) do `extract()` (validar):
128
-
129
- ```typescript
130
- // Executar a ação
131
- await stagehand.act("clique no botão de confirmar pedido");
132
-
133
- // Aguardar estado estável
134
- await page.waitForLoadState("networkidle");
135
-
136
- // Validar resultado com extract() + Zod
137
- const resultado = await stagehand.extract(
138
- "qual é o status do pedido exibido na tela?",
139
- z.object({
140
- status: z.enum(["confirmado", "pendente", "erro"]),
141
- numeroPedido: z.string().optional(),
142
- })
143
- );
144
- expect(resultado.status).toBe("confirmado");
145
- ```
146
-
147
- ### Padrão 3: Usar observe() para diagnóstico em falhas
148
-
149
- Quando um teste falha, `observe()` ajuda a entender o estado atual da página:
150
-
151
- ```typescript
152
- // Diagnóstico — útil em desenvolvimento do teste
153
- const elementosDisponiveis = await stagehand.observe(
154
- "quais botões e links estão disponíveis nesta página?"
155
- );
156
- console.log("Estado atual:", elementosDisponiveis);
157
- ```
158
-
159
- ---
160
-
161
- ## Estrutura do Arquivo de Teste
162
-
163
- ```typescript
164
- import "dotenv/config";
165
- import { Stagehand } from "@browserbasehq/stagehand";
166
- import { z } from "zod";
167
- import { expect } from "@playwright/test";
168
-
169
- // ──────────────────────────────────────────────────────
170
- // Cenário: {nome do cenário descrito pelo QA}
171
- // Autor: QA - gerado via qa-e2e skill
172
- // ──────────────────────────────────────────────────────
173
-
174
- describe("{Funcionalidade}", () => {
175
- let stagehand: Stagehand;
176
- let page: any;
177
-
178
- beforeEach(async () => {
179
- stagehand = new Stagehand({
180
- env: "LOCAL", // trocar por "BROWSERBASE" para execução em nuvem
181
- verbose: 0, // 0 = silencioso, 1 = básico, 2 = detalhado
182
- });
183
- await stagehand.init();
184
- page = stagehand.context.pages()[0];
185
- });
186
-
187
- afterEach(async () => {
188
- await stagehand.close();
189
- });
190
-
191
- it("{descrição do cenário 1}", async () => {
192
- // Arrange
193
- await page.goto(process.env.APP_URL!);
194
-
195
- // Act
196
- await stagehand.act("{passo 1 em linguagem natural}");
197
- await stagehand.act("{passo 2 em linguagem natural}");
198
-
199
- // Assert
200
- const resultado = await stagehand.extract(
201
- "{o que validar}",
202
- z.object({ {campo}: z.{tipo}() })
203
- );
204
- expect(resultado.{campo}).toBe({valor esperado});
205
- });
206
-
207
- it("{descrição do cenário 2}", async () => {
208
- // ...
209
- });
210
- });
211
- ```
212
-
213
- ---
214
-
215
- ## Fluxo de Trabalho
216
-
217
- ### 1. Coletar cenários do QA
218
-
219
- Se `$ARGUMENTS` não contém cenários suficientes, perguntar:
220
-
221
- ```
222
- Descreva os cenários de teste. Para cada cenário, informe:
223
- 1. Pré-condição (o que precisa estar pronto antes)
224
- 2. Passo a passo da ação do usuário
225
- 3. O que deve acontecer (critério de aceitação)
226
-
227
- Exemplo:
228
- ─ Cenário: Checkout com cartão válido
229
- Pré-condição: usuário logado com produto no carrinho
230
- Passos: ir para o carrinho → finalizar compra → preencher dados do cartão → confirmar
231
- Resultado esperado: página de confirmação com número do pedido
232
- ```
233
-
234
- ### 2. Estruturar cenários em describes/its
235
-
236
- Agrupar por funcionalidade:
237
- - 1 `describe` por funcionalidade (ex: "Checkout", "Login", "Dashboard")
238
- - 1 `it` por cenário/caminho de usuário
239
-
240
- ### 3. Gerar arquivo de teste Stagehand
241
-
242
- Criar `tests/e2e/{funcionalidade}.spec.ts` seguindo o template da seção acima.
243
-
244
- ### 4. Executar e validar
245
-
246
- ```bash
247
- # Rodar com tsx (desenvolvimento)
248
- npx tsx tests/e2e/{funcionalidade}.spec.ts
249
-
250
- # Rodar com Playwright test runner
251
- npx playwright test tests/e2e/{funcionalidade}.spec.ts
252
-
253
- # Rodar com verbose para debug
254
- STAGEHAND_VERBOSE=2 npx playwright test tests/e2e/{funcionalidade}.spec.ts
255
- ```
256
-
257
- ### 5. Exportar para Cypress (quando solicitado)
258
-
259
- Se o projeto usa Cypress em CI/CD, converter o teste gerado:
260
-
261
- #### Processo de conversão Stagehand → Cypress
262
-
263
- **Regra**: Usar `observe()` do Stagehand para descobrir os seletores reais, depois substituir por comandos Cypress determinísticos.
264
-
265
- ```bash
266
- # 1. Rodar o teste Stagehand com verbose para coletar seletores
267
- STAGEHAND_VERBOSE=2 npx tsx tests/e2e/{funcionalidade}.spec.ts 2>&1 | grep "selector"
268
- ```
269
-
270
- Gerar `cypress/e2e/{funcionalidade}.cy.ts`:
271
-
272
- ```typescript
273
- // Cypress — gerado a partir de teste Stagehand
274
- // Seletores descobertos via Stagehand observe() em {data}
275
-
276
- describe("{Funcionalidade}", () => {
277
- beforeEach(() => {
278
- cy.visit(Cypress.env("APP_URL"));
279
- });
280
-
281
- it("{descrição do cenário}", () => {
282
- // Passo 1: {descrição original do QA}
283
- cy.get("{seletor-descoberto-stagehand}").type("{valor}");
284
-
285
- // Passo 2: {descrição}
286
- cy.contains("button", "{texto-do-botão}").click();
287
-
288
- // Assert
289
- cy.get("{seletor-resultado}").should("contain.text", "{valor esperado}");
290
- });
291
- });
292
- ```
293
-
294
- ---
295
-
296
- ## Árvore de Decisão
297
-
298
- ```
299
- Projeto tem CI/CD com Cypress? → Gerar Stagehand + exportar para Cypress
300
- Apenas ambiente de desenvolvimento? → Gerar só Stagehand (mais rápido de manter)
301
- QA quer manter testes sem seletores? → Manter Stagehand (resiliente a redesign)
302
- Cenário envolve upload de arquivo? → Usar page.setInputFiles() após act()
303
- Cenário precisa de usuário autenticado? → Usar storageState para reaproveitar sessão
304
- Site tem muitos redirects/popups? → Adicionar waitForLoadState() entre passos
305
- ```
306
-
307
- ---
308
-
309
- ## Regras
310
-
311
- ### Nunca
312
- - Hardcodar URLs, emails, senhas ou dados de teste no arquivo de teste — usar `.env`
313
- - Usar `observe()` em produção para encontrar elementos — apenas para diagnóstico/dev
314
- - Criar testes sem asserção (`act()` sem `extract()` de validação)
315
- - Misturar lógica de negócio com lógica de teste
316
- - Deixar `verbose: 2` ativo em testes de CI — gera muito ruído nos logs
317
-
318
- ### Sempre
319
- - Um `describe` por funcionalidade, um `it` por cenário
320
- - `beforeEach`/`afterEach` para setup e teardown do Stagehand
321
- - Validar resultados com `extract()` + Zod schema tipado
322
- - Comentar o cenário original do QA acima de cada `it`
323
- - Usar variáveis de ambiente para dados sensíveis e URL base
324
- - Adicionar `waitForLoadState("networkidle")` após navegações longas
325
-
326
- ---
327
-
328
- ## Tratamento de Erros
329
-
330
- ### act() não encontra o elemento
331
- - Reformular a instrução — ser mais específico: "clique no botão azul 'Enviar' no formulário de cadastro"
332
- - Usar `observe()` para ver o que está disponível: `stagehand.observe("quais botões existem aqui?")`
333
- - Verificar se a página carregou: adicionar `waitForLoadState` antes do `act()`
334
-
335
- ### extract() retorna dados inesperados
336
- - Revisar o Zod schema — tipos podem estar incorretos
337
- - Tornar a pergunta mais específica para o LLM
338
- - Verificar se o conteúdo está visível (não oculto por CSS)
339
-
340
- ### Teste não reproduzível (passa às vezes, falha outras)
341
- - Adicionar `waitForLoadState("networkidle")` após ações que disparam navegação
342
- - Aumentar timeout: `stagehand.act("...", { timeout: 15_000 })`
343
- - Verificar se o dado de teste muda entre execuções
344
-
345
- ### Exportação Cypress com seletores frágeis
346
- - Preferir `cy.contains()`, `cy.getByRole()` sobre seletores XPath absolutos
347
- - Verificar se o app tem `data-testid` — mais estável que classes CSS
348
- - Combinar seletor semântico + fallback: `cy.get('[data-testid="btn-submit"]').or('button:contains("Enviar")')`
349
-
350
- ---
351
-
352
- ## Checklist de Conclusão
353
-
354
- - [ ] Cenários coletados e estruturados (describe/it)
355
- - [ ] Arquivo `tests/e2e/{funcionalidade}.spec.ts` criado
356
- - [ ] `beforeEach`/`afterEach` com init/close do Stagehand
357
- - [ ] Dados sensíveis em variáveis de ambiente
358
- - [ ] Cada `it` tem asserção via `extract()` + Zod
359
- - [ ] Cenário original do QA comentado acima de cada `it`
360
- - [ ] Teste executado e passando localmente
361
- - [ ] Se solicitado: `cypress/e2e/{funcionalidade}.cy.ts` gerado com seletores descobertos
362
-
363
- ---
364
-
365
- ## Output
366
-
367
- | Artefato | Descrição |
368
- |----------|-----------|
369
- | `tests/e2e/{funcionalidade}.spec.ts` | Teste Stagehand com linguagem natural — principal entregável |
370
- | `cypress/e2e/{funcionalidade}.cy.ts` | Exportação Cypress com seletores reais (opcional, para CI/CD) |
371
-
372
- ---
373
-
374
- ## Mensagem de Conclusão
375
-
376
- ```
377
- Testes E2E gerados!
378
-
379
- Funcionalidade: {nome}
380
- Cenários cobertos: {N}
381
- Engine: Stagehand (linguagem natural, resiliente a mudanças de UI)
382
-
383
- Arquivos:
384
- - tests/e2e/{funcionalidade}.spec.ts ← teste principal
385
-
386
- {se exportação Cypress solicitada:}
387
- - cypress/e2e/{funcionalidade}.cy.ts ← versão Cypress para CI/CD
388
-
389
- Para rodar:
390
- npx playwright test tests/e2e/{funcionalidade}.spec.ts
391
-
392
- Próximo passo: revisar os cenários e adicionar dados de teste no .env
393
- ```
394
-
395
- ---
396
-
397
- ## Recursos Adicionais
398
-
399
- - **Stagehand docs**: https://docs.stagehand.dev
400
- - **Skill relacionado**: `$IDE/skills/qa-testsprite/SKILL.md` — para testes unitários/integração com TestSprite
401
- - **Skill relacionado**: `$IDE/skills/eng-scraper-robot-builder/SKILL.md` — para gerar robôs Playwright