agentic-qe 3.7.8 → 3.7.10

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 (569) hide show
  1. package/.claude/skills/.validation/README.md +111 -111
  2. package/.claude/skills/.validation/examples/chaos-engineering-output.example.json +530 -530
  3. package/.claude/skills/.validation/examples/performance-testing-output.example.json +252 -252
  4. package/.claude/skills/.validation/examples/security-testing-output.example.json +413 -413
  5. package/.claude/skills/.validation/examples/testability-scoring-output.example.json +350 -350
  6. package/.claude/skills/.validation/schemas/skill-eval.schema.json +462 -462
  7. package/.claude/skills/.validation/schemas/skill-frontmatter.schema.json +341 -341
  8. package/.claude/skills/.validation/schemas/skill-output-meta.schema.json +199 -199
  9. package/.claude/skills/.validation/schemas/skill-output.template.json +610 -610
  10. package/.claude/skills/.validation/skill-validation-mcp-integration.md +250 -250
  11. package/.claude/skills/.validation/templates/eval.template.yaml +366 -366
  12. package/.claude/skills/.validation/templates/schemas/output.json +145 -145
  13. package/.claude/skills/.validation/templates/security-testing-eval.template.yaml +725 -725
  14. package/.claude/skills/.validation/templates/skill-frontmatter.example.yaml +225 -225
  15. package/.claude/skills/.validation/test-data/invalid-output.json +5 -5
  16. package/.claude/skills/.validation/test-data/minimal-output.json +9 -9
  17. package/.claude/skills/.validation/test-data/sample-output.json +73 -73
  18. package/.claude/skills/a11y-ally/evals/a11y-ally.yaml +376 -376
  19. package/.claude/skills/a11y-ally/schemas/output.json +549 -549
  20. package/.claude/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -719
  21. package/.claude/skills/accessibility-testing/schemas/output.json +776 -776
  22. package/.claude/skills/accessibility-testing/test-data/sample-output.json +191 -191
  23. package/.claude/skills/agentic-quality-engineering/schemas/output.json +577 -577
  24. package/.claude/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -696
  25. package/.claude/skills/api-testing-patterns/schemas/output.json +845 -845
  26. package/.claude/skills/aqe-v2-v3-migration/schemas/output.json +513 -513
  27. package/.claude/skills/brutal-honesty-review/schemas/output.json +291 -291
  28. package/.claude/skills/bug-reporting-excellence/schemas/output.json +288 -288
  29. package/.claude/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -761
  30. package/.claude/skills/chaos-engineering-resilience/schemas/output.json +1205 -1205
  31. package/.claude/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -157
  32. package/.claude/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -542
  33. package/.claude/skills/code-review-quality/schemas/output.json +264 -264
  34. package/.claude/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -410
  35. package/.claude/skills/compatibility-testing/schemas/output.json +551 -551
  36. package/.claude/skills/compliance-testing/evals/compliance-testing.yaml +1107 -1107
  37. package/.claude/skills/compliance-testing/schemas/output.json +845 -845
  38. package/.claude/skills/consultancy-practices/schemas/output.json +282 -282
  39. package/.claude/skills/contract-testing/evals/contract-testing.yaml +748 -748
  40. package/.claude/skills/contract-testing/schemas/output.json +638 -638
  41. package/.claude/skills/database-testing/evals/database-testing.yaml +968 -968
  42. package/.claude/skills/database-testing/schemas/output.json +1446 -1446
  43. package/.claude/skills/debug-loop/SKILL.md +61 -61
  44. package/.claude/skills/enterprise-integration-testing/SKILL.md +735 -735
  45. package/.claude/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -0
  46. package/.claude/skills/enterprise-integration-testing/schemas/output.json +74 -0
  47. package/.claude/skills/enterprise-integration-testing/scripts/validate-config.json +25 -0
  48. package/.claude/skills/iterative-loop/SKILL.md +371 -371
  49. package/.claude/skills/localization-testing/evals/localization-testing.yaml +544 -544
  50. package/.claude/skills/localization-testing/schemas/output.json +325 -325
  51. package/.claude/skills/middleware-testing-patterns/SKILL.md +798 -798
  52. package/.claude/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -0
  53. package/.claude/skills/middleware-testing-patterns/schemas/output.json +58 -0
  54. package/.claude/skills/middleware-testing-patterns/scripts/validate-config.json +25 -0
  55. package/.claude/skills/mobile-testing/evals/mobile-testing.yaml +537 -537
  56. package/.claude/skills/mobile-testing/schemas/output.json +318 -318
  57. package/.claude/skills/mutation-testing/evals/mutation-testing.yaml +652 -652
  58. package/.claude/skills/mutation-testing/schemas/output.json +707 -707
  59. package/.claude/skills/mutation-testing/test-data/sample-output.json +295 -295
  60. package/.claude/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -450
  61. package/.claude/skills/n8n-expression-testing/schemas/output.json +369 -369
  62. package/.claude/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -522
  63. package/.claude/skills/n8n-integration-testing-patterns/schemas/output.json +291 -291
  64. package/.claude/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -493
  65. package/.claude/skills/n8n-security-testing/schemas/output.json +293 -293
  66. package/.claude/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -500
  67. package/.claude/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -295
  68. package/.claude/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -497
  69. package/.claude/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -254
  70. package/.claude/skills/observability-testing-patterns/SKILL.md +930 -930
  71. package/.claude/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -0
  72. package/.claude/skills/observability-testing-patterns/schemas/output.json +58 -0
  73. package/.claude/skills/observability-testing-patterns/scripts/validate-config.json +25 -0
  74. package/.claude/skills/pentest-validation/SKILL.md +268 -268
  75. package/.claude/skills/pentest-validation/evals/pentest-validation.yaml +708 -708
  76. package/.claude/skills/pentest-validation/schemas/output.json +281 -281
  77. package/.claude/skills/performance-analysis/evals/performance-analysis.yaml +144 -144
  78. package/.claude/skills/performance-analysis/schemas/output.json +588 -588
  79. package/.claude/skills/performance-testing/evals/performance-testing.yaml +772 -772
  80. package/.claude/skills/performance-testing/schemas/output.json +1184 -1184
  81. package/.claude/skills/pr-review/SKILL.md +61 -61
  82. package/.claude/skills/qcsd-cicd-swarm/SKILL.md +2206 -2206
  83. package/.claude/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -0
  84. package/.claude/skills/qcsd-cicd-swarm/schemas/output.json +86 -0
  85. package/.claude/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -0
  86. package/.claude/skills/qcsd-development-swarm/SKILL.md +2154 -2154
  87. package/.claude/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -0
  88. package/.claude/skills/qcsd-development-swarm/schemas/output.json +72 -0
  89. package/.claude/skills/qcsd-development-swarm/scripts/validate-config.json +25 -0
  90. package/.claude/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -138
  91. package/.claude/skills/qcsd-ideation-swarm/schemas/output.json +568 -568
  92. package/.claude/skills/qcsd-production-swarm/SKILL.md +2781 -2781
  93. package/.claude/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -246
  94. package/.claude/skills/qcsd-production-swarm/schemas/output.json +505 -505
  95. package/.claude/skills/qcsd-production-swarm/scripts/validate-config.json +25 -25
  96. package/.claude/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -443
  97. package/.claude/skills/qe-chaos-resilience/schemas/output.json +314 -314
  98. package/.claude/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -459
  99. package/.claude/skills/qe-code-intelligence/schemas/output.json +315 -315
  100. package/.claude/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -513
  101. package/.claude/skills/qe-contract-testing/schemas/output.json +295 -295
  102. package/.claude/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -494
  103. package/.claude/skills/qe-coverage-analysis/schemas/output.json +286 -286
  104. package/.claude/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -511
  105. package/.claude/skills/qe-defect-intelligence/schemas/output.json +283 -283
  106. package/.claude/skills/qe-iterative-loop/schemas/output.json +264 -264
  107. package/.claude/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -144
  108. package/.claude/skills/qe-learning-optimization/schemas/output.json +288 -288
  109. package/.claude/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -506
  110. package/.claude/skills/qe-quality-assessment/schemas/output.json +550 -550
  111. package/.claude/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -598
  112. package/.claude/skills/qe-requirements-validation/schemas/output.json +587 -587
  113. package/.claude/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -595
  114. package/.claude/skills/qe-security-compliance/schemas/output.json +498 -498
  115. package/.claude/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -607
  116. package/.claude/skills/qe-test-execution/schemas/output.json +529 -529
  117. package/.claude/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -148
  118. package/.claude/skills/qe-test-generation/schemas/output.json +439 -439
  119. package/.claude/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -142
  120. package/.claude/skills/qe-visual-accessibility/schemas/output.json +491 -491
  121. package/.claude/skills/quality-metrics/evals/quality-metrics.yaml +494 -494
  122. package/.claude/skills/quality-metrics/schemas/output.json +403 -403
  123. package/.claude/skills/refactoring-patterns/schemas/output.json +475 -475
  124. package/.claude/skills/regression-testing/evals/regression-testing.yaml +504 -504
  125. package/.claude/skills/regression-testing/schemas/output.json +311 -311
  126. package/.claude/skills/release/SKILL.md +347 -347
  127. package/.claude/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -141
  128. package/.claude/skills/risk-based-testing/schemas/output.json +480 -480
  129. package/.claude/skills/security-testing/evals/security-testing.yaml +789 -789
  130. package/.claude/skills/security-testing/schemas/output.json +879 -879
  131. package/.claude/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -163
  132. package/.claude/skills/security-visual-testing/schemas/output.json +486 -486
  133. package/.claude/skills/sfdipot-product-factors/SKILL.md +239 -239
  134. package/.claude/skills/sherlock-review/schemas/output.json +297 -297
  135. package/.claude/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -145
  136. package/.claude/skills/shift-left-testing/schemas/output.json +459 -459
  137. package/.claude/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -147
  138. package/.claude/skills/shift-right-testing/schemas/output.json +418 -418
  139. package/.claude/skills/skills-manifest.json +1 -1
  140. package/.claude/skills/tdd-london-chicago/schemas/output.json +444 -444
  141. package/.claude/skills/technical-writing/schemas/output.json +268 -268
  142. package/.claude/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -148
  143. package/.claude/skills/test-automation-strategy/schemas/output.json +444 -444
  144. package/.claude/skills/test-data-management/evals/test-data-management.yaml +504 -504
  145. package/.claude/skills/test-data-management/schemas/output.json +284 -284
  146. package/.claude/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -142
  147. package/.claude/skills/test-design-techniques/schemas/output.json +295 -295
  148. package/.claude/skills/test-environment-management/schemas/output.json +310 -310
  149. package/.claude/skills/test-idea-rewriting/SKILL.md +229 -229
  150. package/.claude/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -155
  151. package/.claude/skills/test-reporting-analytics/schemas/output.json +329 -329
  152. package/.claude/skills/testability-scoring/evals/testability-scoring.yaml +814 -814
  153. package/.claude/skills/testability-scoring/resources/templates/config.template.js +84 -84
  154. package/.claude/skills/testability-scoring/schemas/output.json +606 -606
  155. package/.claude/skills/testability-scoring/scripts/generate-html-report.js +1007 -1007
  156. package/.claude/skills/trust-tier-manifest.json +78 -7
  157. package/.claude/skills/verification-quality/evals/verification-quality.yaml +150 -150
  158. package/.claude/skills/verification-quality/schemas/output.json +432 -432
  159. package/.claude/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -154
  160. package/.claude/skills/visual-testing-advanced/schemas/output.json +294 -294
  161. package/.claude/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -165
  162. package/.claude/skills/wms-testing-patterns/schemas/output.json +150 -150
  163. package/.claude/skills/wms-testing-patterns/scripts/validate-config.json +51 -51
  164. package/CHANGELOG.md +34 -0
  165. package/README.md +169 -900
  166. package/assets/agents/v3/helpers/quality-criteria/evidence-classification.md +116 -116
  167. package/assets/agents/v3/helpers/quality-criteria/htsm-categories.md +139 -139
  168. package/assets/governance/constitution.md +202 -202
  169. package/assets/governance/shards/chaos-resilience.shard.md +221 -221
  170. package/assets/governance/shards/code-intelligence.shard.md +178 -178
  171. package/assets/governance/shards/contract-testing.shard.md +206 -206
  172. package/assets/governance/shards/coverage-analysis.shard.md +146 -146
  173. package/assets/governance/shards/defect-intelligence.shard.md +182 -182
  174. package/assets/governance/shards/learning-optimization.shard.md +248 -248
  175. package/assets/governance/shards/quality-assessment.shard.md +165 -165
  176. package/assets/governance/shards/requirements-validation.shard.md +177 -177
  177. package/assets/governance/shards/security-compliance.shard.md +196 -196
  178. package/assets/governance/shards/test-execution.shard.md +156 -156
  179. package/assets/governance/shards/test-generation.shard.md +128 -128
  180. package/assets/governance/shards/visual-accessibility.shard.md +209 -209
  181. package/assets/hooks/cross-phase-memory.yaml +253 -253
  182. package/assets/patterns/adr-051-booster-patterns.json +78 -78
  183. package/assets/patterns/adr-051-embedding-patterns.json +147 -147
  184. package/assets/patterns/adr-051-integration-summary.json +62 -62
  185. package/assets/patterns/adr-051-reasoning-patterns.json +166 -166
  186. package/assets/patterns/adr-051-router-patterns.json +113 -113
  187. package/assets/patterns/index.json +136 -136
  188. package/assets/skills/.validation/README.md +111 -111
  189. package/assets/skills/.validation/examples/chaos-engineering-output.example.json +530 -530
  190. package/assets/skills/.validation/examples/performance-testing-output.example.json +252 -252
  191. package/assets/skills/.validation/examples/security-testing-output.example.json +413 -413
  192. package/assets/skills/.validation/examples/testability-scoring-output.example.json +350 -350
  193. package/assets/skills/.validation/schemas/skill-eval.schema.json +462 -462
  194. package/assets/skills/.validation/schemas/skill-frontmatter.schema.json +341 -341
  195. package/assets/skills/.validation/schemas/skill-output-meta.schema.json +199 -199
  196. package/assets/skills/.validation/schemas/skill-output.template.json +610 -610
  197. package/assets/skills/.validation/skill-validation-mcp-integration.md +250 -250
  198. package/assets/skills/.validation/templates/eval.template.yaml +366 -366
  199. package/assets/skills/.validation/templates/schemas/output.json +145 -145
  200. package/assets/skills/.validation/templates/security-testing-eval.template.yaml +725 -725
  201. package/assets/skills/.validation/templates/skill-frontmatter.example.yaml +225 -225
  202. package/assets/skills/.validation/test-data/invalid-output.json +5 -5
  203. package/assets/skills/.validation/test-data/minimal-output.json +9 -9
  204. package/assets/skills/.validation/test-data/sample-output.json +73 -73
  205. package/assets/skills/a11y-ally/SKILL.md +1664 -1658
  206. package/assets/skills/a11y-ally/evals/a11y-ally.yaml +376 -0
  207. package/assets/skills/a11y-ally/schemas/output.json +549 -0
  208. package/assets/skills/a11y-ally/scripts/validate-config.json +42 -0
  209. package/assets/skills/accessibility-testing/evals/accessibility-testing.yaml +719 -719
  210. package/assets/skills/accessibility-testing/schemas/output.json +776 -776
  211. package/assets/skills/accessibility-testing/test-data/sample-output.json +191 -191
  212. package/assets/skills/agentic-quality-engineering/schemas/output.json +577 -577
  213. package/assets/skills/api-testing-patterns/evals/api-testing-patterns.yaml +696 -696
  214. package/assets/skills/api-testing-patterns/schemas/output.json +845 -845
  215. package/assets/skills/aqe-v2-v3-migration/schemas/output.json +513 -513
  216. package/assets/skills/brutal-honesty-review/SKILL.md +5 -0
  217. package/assets/skills/brutal-honesty-review/schemas/output.json +291 -0
  218. package/assets/skills/brutal-honesty-review/scripts/validate-config.json +34 -0
  219. package/assets/skills/bug-reporting-excellence/schemas/output.json +288 -288
  220. package/assets/skills/chaos-engineering-resilience/evals/chaos-engineering-resilience.yaml +761 -761
  221. package/assets/skills/chaos-engineering-resilience/schemas/output.json +1205 -1205
  222. package/assets/skills/cicd-pipeline-qe-orchestrator/README.md +1 -1
  223. package/assets/skills/cicd-pipeline-qe-orchestrator/SKILL.md +6 -0
  224. package/assets/skills/cicd-pipeline-qe-orchestrator/evals/cicd-pipeline-qe-orchestrator.yaml +157 -0
  225. package/assets/skills/cicd-pipeline-qe-orchestrator/schemas/output.json +542 -0
  226. package/assets/skills/cicd-pipeline-qe-orchestrator/scripts/validate-config.json +42 -0
  227. package/assets/skills/code-review-quality/schemas/output.json +264 -264
  228. package/assets/skills/compatibility-testing/evals/compatibility-testing.yaml +410 -410
  229. package/assets/skills/compatibility-testing/schemas/output.json +551 -551
  230. package/assets/skills/compliance-testing/evals/compliance-testing.yaml +1107 -1107
  231. package/assets/skills/compliance-testing/schemas/output.json +845 -845
  232. package/assets/skills/consultancy-practices/schemas/output.json +282 -282
  233. package/assets/skills/contract-testing/evals/contract-testing.yaml +748 -748
  234. package/assets/skills/contract-testing/schemas/output.json +638 -638
  235. package/assets/skills/database-testing/evals/database-testing.yaml +968 -968
  236. package/assets/skills/database-testing/schemas/output.json +1446 -1446
  237. package/assets/skills/debug-loop/SKILL.md +61 -61
  238. package/assets/skills/enterprise-integration-testing/SKILL.md +735 -735
  239. package/assets/skills/enterprise-integration-testing/evals/enterprise-integration-testing.yaml +158 -0
  240. package/assets/skills/enterprise-integration-testing/schemas/output.json +74 -0
  241. package/assets/skills/enterprise-integration-testing/scripts/validate-config.json +25 -0
  242. package/assets/skills/localization-testing/evals/localization-testing.yaml +544 -544
  243. package/assets/skills/localization-testing/schemas/output.json +325 -325
  244. package/assets/skills/middleware-testing-patterns/SKILL.md +798 -798
  245. package/assets/skills/middleware-testing-patterns/evals/middleware-testing-patterns.yaml +153 -0
  246. package/assets/skills/middleware-testing-patterns/schemas/output.json +58 -0
  247. package/assets/skills/middleware-testing-patterns/scripts/validate-config.json +25 -0
  248. package/assets/skills/mobile-testing/evals/mobile-testing.yaml +537 -537
  249. package/assets/skills/mobile-testing/schemas/output.json +318 -318
  250. package/assets/skills/mutation-testing/evals/mutation-testing.yaml +652 -652
  251. package/assets/skills/mutation-testing/schemas/output.json +707 -707
  252. package/assets/skills/mutation-testing/test-data/sample-output.json +295 -295
  253. package/assets/skills/n8n-expression-testing/SKILL.md +6 -0
  254. package/assets/skills/n8n-expression-testing/evals/n8n-expression-testing.yaml +450 -0
  255. package/assets/skills/n8n-expression-testing/schemas/output.json +369 -0
  256. package/assets/skills/n8n-expression-testing/scripts/validate-config.json +39 -0
  257. package/assets/skills/n8n-integration-testing-patterns/SKILL.md +6 -0
  258. package/assets/skills/n8n-integration-testing-patterns/evals/n8n-integration-testing-patterns.yaml +522 -0
  259. package/assets/skills/n8n-integration-testing-patterns/schemas/output.json +291 -0
  260. package/assets/skills/n8n-integration-testing-patterns/scripts/validate-config.json +34 -0
  261. package/assets/skills/n8n-security-testing/SKILL.md +6 -0
  262. package/assets/skills/n8n-security-testing/evals/n8n-security-testing.yaml +493 -0
  263. package/assets/skills/n8n-security-testing/schemas/output.json +293 -0
  264. package/assets/skills/n8n-security-testing/scripts/validate-config.json +34 -0
  265. package/assets/skills/n8n-trigger-testing-strategies/SKILL.md +6 -0
  266. package/assets/skills/n8n-trigger-testing-strategies/evals/n8n-trigger-testing-strategies.yaml +500 -0
  267. package/assets/skills/n8n-trigger-testing-strategies/schemas/output.json +295 -0
  268. package/assets/skills/n8n-trigger-testing-strategies/scripts/validate-config.json +34 -0
  269. package/assets/skills/n8n-workflow-testing-fundamentals/SKILL.md +6 -0
  270. package/assets/skills/n8n-workflow-testing-fundamentals/evals/n8n-workflow-testing-fundamentals.yaml +497 -0
  271. package/assets/skills/n8n-workflow-testing-fundamentals/schemas/output.json +254 -0
  272. package/assets/skills/n8n-workflow-testing-fundamentals/scripts/validate-config.json +35 -0
  273. package/assets/skills/observability-testing-patterns/SKILL.md +930 -930
  274. package/assets/skills/observability-testing-patterns/evals/observability-testing-patterns.yaml +157 -0
  275. package/assets/skills/observability-testing-patterns/schemas/output.json +58 -0
  276. package/assets/skills/observability-testing-patterns/scripts/validate-config.json +25 -0
  277. package/assets/skills/pentest-validation/SKILL.md +268 -268
  278. package/assets/skills/pentest-validation/evals/pentest-validation.yaml +708 -708
  279. package/assets/skills/pentest-validation/schemas/output.json +281 -281
  280. package/assets/skills/pentest-validation/scripts/validate-config.json +12 -0
  281. package/assets/skills/performance-testing/evals/performance-testing.yaml +772 -772
  282. package/assets/skills/performance-testing/schemas/output.json +1184 -1184
  283. package/assets/skills/pr-review/SKILL.md +61 -61
  284. package/assets/skills/qcsd-cicd-swarm/SKILL.md +2206 -2206
  285. package/assets/skills/qcsd-cicd-swarm/evals/qcsd-cicd-swarm.yaml +211 -0
  286. package/assets/skills/qcsd-cicd-swarm/schemas/output.json +86 -0
  287. package/assets/skills/qcsd-cicd-swarm/scripts/validate-config.json +30 -0
  288. package/assets/skills/qcsd-development-swarm/SKILL.md +2154 -2154
  289. package/assets/skills/qcsd-development-swarm/evals/qcsd-development-swarm.yaml +162 -0
  290. package/assets/skills/qcsd-development-swarm/schemas/output.json +72 -0
  291. package/assets/skills/qcsd-development-swarm/scripts/validate-config.json +25 -0
  292. package/assets/skills/qcsd-ideation-swarm/evals/qcsd-ideation-swarm.yaml +138 -0
  293. package/assets/skills/qcsd-ideation-swarm/schemas/output.json +568 -0
  294. package/assets/skills/qcsd-ideation-swarm/scripts/validate-config.json +25 -0
  295. package/assets/skills/qcsd-production-swarm/SKILL.md +2781 -0
  296. package/assets/skills/qcsd-production-swarm/evals/qcsd-production-swarm.yaml +246 -0
  297. package/assets/skills/qcsd-production-swarm/schemas/output.json +505 -0
  298. package/assets/skills/qcsd-production-swarm/scripts/validate-config.json +25 -0
  299. package/assets/skills/qcsd-refinement-swarm/evals/qcsd-refinement-swarm.yaml +139 -0
  300. package/assets/skills/qcsd-refinement-swarm/schemas/output.json +811 -0
  301. package/assets/skills/qcsd-refinement-swarm/scripts/validate-config.json +25 -0
  302. package/assets/skills/qe-chaos-resilience/evals/qe-chaos-resilience.yaml +443 -443
  303. package/assets/skills/qe-chaos-resilience/schemas/output.json +314 -314
  304. package/assets/skills/qe-code-intelligence/evals/qe-code-intelligence.yaml +459 -459
  305. package/assets/skills/qe-code-intelligence/schemas/output.json +315 -315
  306. package/assets/skills/qe-contract-testing/evals/qe-contract-testing.yaml +513 -513
  307. package/assets/skills/qe-contract-testing/schemas/output.json +295 -295
  308. package/assets/skills/qe-coverage-analysis/evals/qe-coverage-analysis.yaml +494 -494
  309. package/assets/skills/qe-coverage-analysis/schemas/output.json +286 -286
  310. package/assets/skills/qe-defect-intelligence/evals/qe-defect-intelligence.yaml +511 -511
  311. package/assets/skills/qe-defect-intelligence/schemas/output.json +283 -283
  312. package/assets/skills/qe-iterative-loop/schemas/output.json +264 -264
  313. package/assets/skills/qe-learning-optimization/evals/qe-learning-optimization.yaml +144 -144
  314. package/assets/skills/qe-learning-optimization/schemas/output.json +288 -288
  315. package/assets/skills/qe-quality-assessment/evals/qe-quality-assessment.yaml +506 -506
  316. package/assets/skills/qe-quality-assessment/schemas/output.json +550 -550
  317. package/assets/skills/qe-requirements-validation/evals/qe-requirements-validation.yaml +598 -598
  318. package/assets/skills/qe-requirements-validation/schemas/output.json +587 -587
  319. package/assets/skills/qe-security-compliance/evals/qe-security-compliance.yaml +595 -595
  320. package/assets/skills/qe-security-compliance/schemas/output.json +498 -498
  321. package/assets/skills/qe-test-execution/evals/qe-test-execution.yaml +607 -607
  322. package/assets/skills/qe-test-execution/schemas/output.json +529 -529
  323. package/assets/skills/qe-test-generation/evals/qe-test-generation.yaml +148 -148
  324. package/assets/skills/qe-test-generation/schemas/output.json +439 -439
  325. package/assets/skills/qe-visual-accessibility/evals/qe-visual-accessibility.yaml +142 -142
  326. package/assets/skills/qe-visual-accessibility/schemas/output.json +491 -491
  327. package/assets/skills/quality-metrics/evals/quality-metrics.yaml +494 -494
  328. package/assets/skills/quality-metrics/schemas/output.json +403 -403
  329. package/assets/skills/refactoring-patterns/schemas/output.json +475 -475
  330. package/assets/skills/regression-testing/evals/regression-testing.yaml +504 -504
  331. package/assets/skills/regression-testing/schemas/output.json +311 -311
  332. package/assets/skills/risk-based-testing/evals/risk-based-testing.yaml +141 -141
  333. package/assets/skills/risk-based-testing/schemas/output.json +480 -480
  334. package/assets/skills/security-testing/evals/security-testing.yaml +789 -789
  335. package/assets/skills/security-testing/schemas/output.json +879 -879
  336. package/assets/skills/security-visual-testing/evals/security-visual-testing.yaml +163 -163
  337. package/assets/skills/security-visual-testing/schemas/output.json +486 -486
  338. package/assets/skills/security-visual-testing/scripts/validate-config.json +45 -0
  339. package/assets/skills/sfdipot-product-factors/SKILL.md +239 -239
  340. package/assets/skills/sherlock-review/SKILL.md +5 -0
  341. package/assets/skills/sherlock-review/schemas/output.json +297 -0
  342. package/assets/skills/sherlock-review/scripts/validate-config.json +35 -0
  343. package/assets/skills/shift-left-testing/evals/shift-left-testing.yaml +145 -145
  344. package/assets/skills/shift-left-testing/schemas/output.json +459 -459
  345. package/assets/skills/shift-right-testing/evals/shift-right-testing.yaml +147 -147
  346. package/assets/skills/shift-right-testing/schemas/output.json +418 -418
  347. package/assets/skills/tdd-london-chicago/schemas/output.json +444 -444
  348. package/assets/skills/technical-writing/schemas/output.json +268 -268
  349. package/assets/skills/test-automation-strategy/evals/test-automation-strategy.yaml +148 -148
  350. package/assets/skills/test-automation-strategy/schemas/output.json +444 -444
  351. package/assets/skills/test-data-management/evals/test-data-management.yaml +504 -504
  352. package/assets/skills/test-data-management/schemas/output.json +284 -284
  353. package/assets/skills/test-design-techniques/evals/test-design-techniques.yaml +142 -142
  354. package/assets/skills/test-design-techniques/schemas/output.json +295 -295
  355. package/assets/skills/test-environment-management/schemas/output.json +310 -310
  356. package/assets/skills/test-idea-rewriting/SKILL.md +229 -229
  357. package/assets/skills/test-reporting-analytics/evals/test-reporting-analytics.yaml +155 -155
  358. package/assets/skills/test-reporting-analytics/schemas/output.json +329 -329
  359. package/assets/skills/testability-scoring/SKILL.md +5 -0
  360. package/assets/skills/testability-scoring/evals/testability-scoring.yaml +814 -0
  361. package/assets/skills/testability-scoring/resources/templates/config.template.js +84 -84
  362. package/assets/skills/testability-scoring/schemas/output.json +606 -0
  363. package/assets/skills/testability-scoring/scripts/generate-html-report.js +1007 -1007
  364. package/assets/skills/testability-scoring/scripts/validate-config.json +42 -0
  365. package/assets/skills/trust-tier-manifest.json +2404 -0
  366. package/assets/skills/verification-quality/evals/verification-quality.yaml +150 -150
  367. package/assets/skills/verification-quality/schemas/output.json +432 -432
  368. package/assets/skills/visual-testing-advanced/evals/visual-testing-advanced.yaml +154 -154
  369. package/assets/skills/visual-testing-advanced/schemas/output.json +294 -294
  370. package/assets/skills/wms-testing-patterns/evals/wms-testing-patterns.yaml +165 -0
  371. package/assets/skills/wms-testing-patterns/schemas/output.json +150 -0
  372. package/assets/skills/wms-testing-patterns/scripts/validate-config.json +51 -0
  373. package/assets/templates/validation-summary.json +56 -56
  374. package/dist/benchmarks/performance-benchmarks.js +1 -1
  375. package/dist/cli/bundle.js +9158 -2288
  376. package/dist/cli/commands/hooks.d.ts.map +1 -1
  377. package/dist/cli/commands/hooks.js +92 -0
  378. package/dist/cli/commands/hooks.js.map +1 -1
  379. package/dist/cli/commands/mcp.d.ts.map +1 -1
  380. package/dist/cli/commands/mcp.js +11 -9
  381. package/dist/cli/commands/mcp.js.map +1 -1
  382. package/dist/cli/commands/migrate.js +2 -2
  383. package/dist/coordination/constants.d.ts +1 -1
  384. package/dist/coordination/constants.js +1 -1
  385. package/dist/coordination/handlers/coverage-handlers.js +1 -1
  386. package/dist/coordination/handlers/coverage-handlers.js.map +1 -1
  387. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts +1 -1
  388. package/dist/domains/code-intelligence/services/semantic-analyzer.d.ts.map +1 -1
  389. package/dist/domains/code-intelligence/services/semantic-analyzer.js +1 -1
  390. package/dist/domains/code-intelligence/services/semantic-analyzer.js.map +1 -1
  391. package/dist/domains/coverage-analysis/coordinator.js +1 -1
  392. package/dist/domains/coverage-analysis/services/coverage-analyzer.js +1 -1
  393. package/dist/domains/coverage-analysis/services/coverage-embedder.d.ts +1 -1
  394. package/dist/domains/coverage-analysis/services/coverage-embedder.js +1 -1
  395. package/dist/domains/coverage-analysis/services/gap-detector.js +1 -1
  396. package/dist/domains/coverage-analysis/services/ghost-coverage-analyzer.js +1 -1
  397. package/dist/domains/coverage-analysis/services/hnsw-index.d.ts +2 -2
  398. package/dist/domains/coverage-analysis/services/hnsw-index.js +3 -3
  399. package/dist/domains/coverage-analysis/services/sublinear-analyzer.d.ts +1 -1
  400. package/dist/domains/coverage-analysis/services/sublinear-analyzer.js +1 -1
  401. package/dist/domains/test-execution/services/test-prioritizer.js +1 -1
  402. package/dist/domains/test-generation/context/rust-context-builder.d.ts +31 -0
  403. package/dist/domains/test-generation/context/rust-context-builder.d.ts.map +1 -0
  404. package/dist/domains/test-generation/context/rust-context-builder.js +27 -0
  405. package/dist/domains/test-generation/context/rust-context-builder.js.map +1 -0
  406. package/dist/domains/test-generation/coordinator.js +3 -3
  407. package/dist/domains/test-generation/coordinator.js.map +1 -1
  408. package/dist/domains/test-generation/detectors/mobile-detector.d.ts +41 -0
  409. package/dist/domains/test-generation/detectors/mobile-detector.d.ts.map +1 -0
  410. package/dist/domains/test-generation/detectors/mobile-detector.js +111 -0
  411. package/dist/domains/test-generation/detectors/mobile-detector.js.map +1 -0
  412. package/dist/domains/test-generation/detectors/spring-detector.d.ts +22 -0
  413. package/dist/domains/test-generation/detectors/spring-detector.d.ts.map +1 -0
  414. package/dist/domains/test-generation/detectors/spring-detector.js +37 -0
  415. package/dist/domains/test-generation/detectors/spring-detector.js.map +1 -0
  416. package/dist/domains/test-generation/factories/test-generator-factory.d.ts +2 -1
  417. package/dist/domains/test-generation/factories/test-generator-factory.d.ts.map +1 -1
  418. package/dist/domains/test-generation/factories/test-generator-factory.js +33 -13
  419. package/dist/domains/test-generation/factories/test-generator-factory.js.map +1 -1
  420. package/dist/domains/test-generation/generators/flutter-test-generator.d.ts +107 -0
  421. package/dist/domains/test-generation/generators/flutter-test-generator.d.ts.map +1 -0
  422. package/dist/domains/test-generation/generators/flutter-test-generator.js +590 -0
  423. package/dist/domains/test-generation/generators/flutter-test-generator.js.map +1 -0
  424. package/dist/domains/test-generation/generators/go-test-generator.d.ts +139 -0
  425. package/dist/domains/test-generation/generators/go-test-generator.d.ts.map +1 -0
  426. package/dist/domains/test-generation/generators/go-test-generator.js +654 -0
  427. package/dist/domains/test-generation/generators/go-test-generator.js.map +1 -0
  428. package/dist/domains/test-generation/generators/index.d.ts +8 -0
  429. package/dist/domains/test-generation/generators/index.d.ts.map +1 -1
  430. package/dist/domains/test-generation/generators/index.js +8 -0
  431. package/dist/domains/test-generation/generators/index.js.map +1 -1
  432. package/dist/domains/test-generation/generators/jest-rn-generator.d.ts +95 -0
  433. package/dist/domains/test-generation/generators/jest-rn-generator.d.ts.map +1 -0
  434. package/dist/domains/test-generation/generators/jest-rn-generator.js +591 -0
  435. package/dist/domains/test-generation/generators/jest-rn-generator.js.map +1 -0
  436. package/dist/domains/test-generation/generators/junit5-generator.d.ts +107 -0
  437. package/dist/domains/test-generation/generators/junit5-generator.d.ts.map +1 -0
  438. package/dist/domains/test-generation/generators/junit5-generator.js +588 -0
  439. package/dist/domains/test-generation/generators/junit5-generator.js.map +1 -0
  440. package/dist/domains/test-generation/generators/kotlin-junit-generator.d.ts +109 -0
  441. package/dist/domains/test-generation/generators/kotlin-junit-generator.d.ts.map +1 -0
  442. package/dist/domains/test-generation/generators/kotlin-junit-generator.js +588 -0
  443. package/dist/domains/test-generation/generators/kotlin-junit-generator.js.map +1 -0
  444. package/dist/domains/test-generation/generators/pytest-generator.d.ts +8 -1
  445. package/dist/domains/test-generation/generators/pytest-generator.d.ts.map +1 -1
  446. package/dist/domains/test-generation/generators/pytest-generator.js +57 -0
  447. package/dist/domains/test-generation/generators/pytest-generator.js.map +1 -1
  448. package/dist/domains/test-generation/generators/rust-test-generator.d.ts +80 -0
  449. package/dist/domains/test-generation/generators/rust-test-generator.d.ts.map +1 -0
  450. package/dist/domains/test-generation/generators/rust-test-generator.js +442 -0
  451. package/dist/domains/test-generation/generators/rust-test-generator.js.map +1 -0
  452. package/dist/domains/test-generation/generators/swift-testing-generator.d.ts +97 -0
  453. package/dist/domains/test-generation/generators/swift-testing-generator.d.ts.map +1 -0
  454. package/dist/domains/test-generation/generators/swift-testing-generator.js +482 -0
  455. package/dist/domains/test-generation/generators/swift-testing-generator.js.map +1 -0
  456. package/dist/domains/test-generation/generators/xunit-generator.d.ts +110 -0
  457. package/dist/domains/test-generation/generators/xunit-generator.d.ts.map +1 -0
  458. package/dist/domains/test-generation/generators/xunit-generator.js +611 -0
  459. package/dist/domains/test-generation/generators/xunit-generator.js.map +1 -0
  460. package/dist/domains/test-generation/interfaces.d.ts +11 -2
  461. package/dist/domains/test-generation/interfaces.d.ts.map +1 -1
  462. package/dist/domains/test-generation/prompts/language-prompts.d.ts +29 -0
  463. package/dist/domains/test-generation/prompts/language-prompts.d.ts.map +1 -0
  464. package/dist/domains/test-generation/prompts/language-prompts.js +135 -0
  465. package/dist/domains/test-generation/prompts/language-prompts.js.map +1 -0
  466. package/dist/domains/test-generation/services/compilation-validator.d.ts +43 -0
  467. package/dist/domains/test-generation/services/compilation-validator.d.ts.map +1 -0
  468. package/dist/domains/test-generation/services/compilation-validator.js +134 -0
  469. package/dist/domains/test-generation/services/compilation-validator.js.map +1 -0
  470. package/dist/domains/test-generation/services/index.d.ts +2 -1
  471. package/dist/domains/test-generation/services/index.d.ts.map +1 -1
  472. package/dist/domains/test-generation/services/index.js +3 -1
  473. package/dist/domains/test-generation/services/index.js.map +1 -1
  474. package/dist/domains/test-generation/services/test-file-resolver.d.ts +32 -0
  475. package/dist/domains/test-generation/services/test-file-resolver.d.ts.map +1 -0
  476. package/dist/domains/test-generation/services/test-file-resolver.js +159 -0
  477. package/dist/domains/test-generation/services/test-file-resolver.js.map +1 -0
  478. package/dist/domains/test-generation/services/test-generator.d.ts +10 -0
  479. package/dist/domains/test-generation/services/test-generator.d.ts.map +1 -1
  480. package/dist/domains/test-generation/services/test-generator.js +87 -10
  481. package/dist/domains/test-generation/services/test-generator.js.map +1 -1
  482. package/dist/governance/feature-flags.js +2 -2
  483. package/dist/governance/feature-flags.js.map +1 -1
  484. package/dist/governance/shard-embeddings.js +1 -1
  485. package/dist/init/init-wizard-hooks.d.ts.map +1 -1
  486. package/dist/init/init-wizard-hooks.js +0 -1
  487. package/dist/init/init-wizard-hooks.js.map +1 -1
  488. package/dist/init/phases/07-hooks.d.ts.map +1 -1
  489. package/dist/init/phases/07-hooks.js +0 -2
  490. package/dist/init/phases/07-hooks.js.map +1 -1
  491. package/dist/init/phases/08-mcp.d.ts +8 -4
  492. package/dist/init/phases/08-mcp.d.ts.map +1 -1
  493. package/dist/init/phases/08-mcp.js +13 -31
  494. package/dist/init/phases/08-mcp.js.map +1 -1
  495. package/dist/init/phases/10-workers.js +4 -4
  496. package/dist/init/phases/10-workers.js.map +1 -1
  497. package/dist/init/settings-merge.d.ts.map +1 -1
  498. package/dist/init/settings-merge.js +0 -2
  499. package/dist/init/settings-merge.js.map +1 -1
  500. package/dist/init/token-bootstrap.js +1 -1
  501. package/dist/init/token-bootstrap.js.map +1 -1
  502. package/dist/integrations/rl-suite/algorithms/decision-transformer.js +1 -1
  503. package/dist/kernel/constants.d.ts +2 -2
  504. package/dist/kernel/constants.js +2 -2
  505. package/dist/kernel/hnsw-adapter.js +1 -1
  506. package/dist/kernel/progressive-hnsw-backend.d.ts +2 -2
  507. package/dist/kernel/progressive-hnsw-backend.js +2 -2
  508. package/dist/learning/dream/concept-graph.d.ts +1 -1
  509. package/dist/learning/dream/concept-graph.js +1 -1
  510. package/dist/learning/dream/dream-engine.d.ts +1 -1
  511. package/dist/learning/dream/dream-engine.js +1 -1
  512. package/dist/learning/dream/index.d.ts +1 -1
  513. package/dist/learning/dream/index.js +1 -1
  514. package/dist/learning/dream/types.d.ts +1 -1
  515. package/dist/learning/dream/types.d.ts.map +1 -1
  516. package/dist/learning/dream/types.js +1 -1
  517. package/dist/learning/dream/types.js.map +1 -1
  518. package/dist/learning/token-tracker.js +1 -1
  519. package/dist/learning/token-tracker.js.map +1 -1
  520. package/dist/mcp/bundle.js +7538 -893
  521. package/dist/routing/qe-agent-registry.js +4 -4
  522. package/dist/routing/qe-agent-registry.js.map +1 -1
  523. package/dist/routing/types.d.ts +5 -8
  524. package/dist/routing/types.d.ts.map +1 -1
  525. package/dist/routing/types.js.map +1 -1
  526. package/dist/shared/embeddings/embedding-cache.js +2 -2
  527. package/dist/shared/embeddings/index.d.ts +2 -2
  528. package/dist/shared/embeddings/index.js +2 -2
  529. package/dist/shared/embeddings/nomic-embedder.d.ts +4 -4
  530. package/dist/shared/embeddings/nomic-embedder.js +2 -2
  531. package/dist/shared/embeddings/ollama-client.d.ts +1 -1
  532. package/dist/shared/embeddings/ollama-client.js +2 -2
  533. package/dist/shared/embeddings/ollama-client.js.map +1 -1
  534. package/dist/shared/embeddings/types.d.ts +2 -2
  535. package/dist/shared/embeddings/types.js +2 -2
  536. package/dist/shared/language-detector.d.ts +46 -0
  537. package/dist/shared/language-detector.d.ts.map +1 -0
  538. package/dist/shared/language-detector.js +183 -0
  539. package/dist/shared/language-detector.js.map +1 -0
  540. package/dist/shared/llm/providers/ollama.js +1 -1
  541. package/dist/shared/metrics/code-metrics.d.ts.map +1 -1
  542. package/dist/shared/metrics/code-metrics.js +24 -1
  543. package/dist/shared/metrics/code-metrics.js.map +1 -1
  544. package/dist/shared/parsers/index.d.ts +2 -0
  545. package/dist/shared/parsers/index.d.ts.map +1 -1
  546. package/dist/shared/parsers/index.js +2 -0
  547. package/dist/shared/parsers/index.js.map +1 -1
  548. package/dist/shared/parsers/interfaces.d.ts +81 -0
  549. package/dist/shared/parsers/interfaces.d.ts.map +1 -0
  550. package/dist/shared/parsers/interfaces.js +6 -0
  551. package/dist/shared/parsers/interfaces.js.map +1 -0
  552. package/dist/shared/parsers/multi-language-parser.d.ts +144 -0
  553. package/dist/shared/parsers/multi-language-parser.d.ts.map +1 -0
  554. package/dist/shared/parsers/multi-language-parser.js +1271 -0
  555. package/dist/shared/parsers/multi-language-parser.js.map +1 -0
  556. package/dist/shared/parsers/rust-ownership-analyzer.d.ts +45 -0
  557. package/dist/shared/parsers/rust-ownership-analyzer.d.ts.map +1 -0
  558. package/dist/shared/parsers/rust-ownership-analyzer.js +52 -0
  559. package/dist/shared/parsers/rust-ownership-analyzer.js.map +1 -0
  560. package/dist/shared/parsers/typescript-parser.d.ts +16 -0
  561. package/dist/shared/parsers/typescript-parser.d.ts.map +1 -1
  562. package/dist/shared/parsers/typescript-parser.js +85 -0
  563. package/dist/shared/parsers/typescript-parser.js.map +1 -1
  564. package/dist/shared/types/test-frameworks.d.ts +25 -0
  565. package/dist/shared/types/test-frameworks.d.ts.map +1 -0
  566. package/dist/shared/types/test-frameworks.js +111 -0
  567. package/dist/shared/types/test-frameworks.js.map +1 -0
  568. package/package.json +1 -1
  569. package/scripts/prepare-assets.sh +16 -2
@@ -0,0 +1,590 @@
1
+ /**
2
+ * Agentic QE v3 - Flutter Test Generator
3
+ * Strategy implementation for Flutter/Dart test framework
4
+ *
5
+ * Generates test code using:
6
+ * - flutter_test package (group, test, testWidgets, expect)
7
+ * - mockito package (@GenerateMocks, when/verify/thenReturn)
8
+ * - setUp / tearDown lifecycle hooks
9
+ * - async/await with Future<T> handling
10
+ * - Dart null safety (T? types)
11
+ * - WidgetTester for widget tests
12
+ *
13
+ * @module test-generation/generators
14
+ */
15
+ import { BaseTestGenerator } from './base-test-generator.js';
16
+ /**
17
+ * FlutterTestGenerator - Test generator for Flutter/Dart test framework
18
+ *
19
+ * Produces idiomatic Dart test files using flutter_test and mockito,
20
+ * with support for widget tests, async Future handling, and null safety.
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const generator = new FlutterTestGenerator();
25
+ * const testCode = generator.generateTests({
26
+ * moduleName: 'UserService',
27
+ * importPath: 'package:my_app/services/user_service.dart',
28
+ * testType: 'unit',
29
+ * patterns: [],
30
+ * analysis: { functions: [...], classes: [...] }
31
+ * });
32
+ * ```
33
+ */
34
+ export class FlutterTestGenerator extends BaseTestGenerator {
35
+ framework = 'flutter-test';
36
+ /**
37
+ * Dart primitive types for type-aware value generation
38
+ */
39
+ static DART_TYPE_DEFAULTS = [
40
+ ['string', "'test_value'"],
41
+ ['int', '42'],
42
+ ['double', '3.14'],
43
+ ['num', '42'],
44
+ ['bool', 'true'],
45
+ ['list', '[]'],
46
+ ['map', '{}'],
47
+ ['set', '{}'],
48
+ ['dynamic', "'test'"],
49
+ ['void', ''],
50
+ ];
51
+ // ============================================================================
52
+ // Public API
53
+ // ============================================================================
54
+ /**
55
+ * Generate complete Dart test file from analysis
56
+ */
57
+ generateTests(context) {
58
+ const { moduleName, importPath, testType, patterns, analysis } = context;
59
+ const exportedFns = analysis ? analysis.functions.filter(fn => fn.isExported) : [];
60
+ const exportedClasses = analysis ? analysis.classes.filter(cls => cls.isExported) : [];
61
+ if (!analysis || (exportedFns.length === 0 && exportedClasses.length === 0)) {
62
+ return this.generateStubTests(context);
63
+ }
64
+ const patternComment = this.generatePatternComment(patterns);
65
+ const mockClasses = this.collectMockClasses(analysis);
66
+ const hasWidgetTests = this.hasWidgetLikeClasses(analysis);
67
+ let code = `${patternComment}`;
68
+ code += this.generateDartImports(importPath, mockClasses, hasWidgetTests);
69
+ code += '\n';
70
+ if (mockClasses.length > 0) {
71
+ code += `@GenerateMocks([${mockClasses.join(', ')}])\n`;
72
+ }
73
+ code += `void main() {\n`;
74
+ // Generate tests for exported functions
75
+ for (const fn of exportedFns) {
76
+ code += this.indentBlock(this.generateFunctionTests(fn, testType), 2);
77
+ }
78
+ // Generate tests for exported classes
79
+ for (const cls of exportedClasses) {
80
+ code += this.indentBlock(this.generateClassTests(cls, testType), 2);
81
+ }
82
+ code += `}\n`;
83
+ return code;
84
+ }
85
+ /**
86
+ * Generate tests for a standalone function
87
+ */
88
+ generateFunctionTests(fn, _testType) {
89
+ const testCases = this.generateDartTestCases(fn);
90
+ let code = `group('${fn.name}', () {\n`;
91
+ for (const tc of testCases) {
92
+ const asyncKeyword = fn.isAsync ? ' async' : '';
93
+ code += ` test('${tc.description}', ()${asyncKeyword} {\n`;
94
+ code += ` ${tc.action}\n`;
95
+ if (tc.assertion) {
96
+ code += ` ${tc.assertion}\n`;
97
+ }
98
+ code += ` });\n\n`;
99
+ }
100
+ code += `});\n\n`;
101
+ return code;
102
+ }
103
+ /**
104
+ * Generate tests for a class, including dependency injection via Mockito
105
+ */
106
+ generateClassTests(cls, testType) {
107
+ const isWidget = this.isWidgetClass(cls);
108
+ const mockDeps = this.extractMockDependencies(cls);
109
+ let code = `group('${cls.name}', () {\n`;
110
+ // Declare mock variables
111
+ for (const dep of mockDeps) {
112
+ code += ` late Mock${dep.type} mock${dep.type};\n`;
113
+ }
114
+ if (!isWidget) {
115
+ code += ` late ${cls.name} subject;\n`;
116
+ }
117
+ code += `\n`;
118
+ // setUp block
119
+ code += ` setUp(() {\n`;
120
+ for (const dep of mockDeps) {
121
+ code += ` mock${dep.type} = Mock${dep.type}();\n`;
122
+ }
123
+ if (!isWidget) {
124
+ if (cls.hasConstructor && cls.constructorParams && cls.constructorParams.length > 0) {
125
+ const args = cls.constructorParams
126
+ .map(p => {
127
+ const mockDep = mockDeps.find(d => d.name === p.name);
128
+ if (mockDep) {
129
+ return `mock${mockDep.type}`;
130
+ }
131
+ return this.generateDartValue(p.name, p.type);
132
+ })
133
+ .join(', ');
134
+ code += ` subject = ${cls.name}(${args});\n`;
135
+ }
136
+ else {
137
+ code += ` subject = ${cls.name}();\n`;
138
+ }
139
+ }
140
+ code += ` });\n\n`;
141
+ // Instantiation test
142
+ if (!isWidget) {
143
+ code += ` test('should instantiate correctly', () {\n`;
144
+ code += ` expect(subject, isNotNull);\n`;
145
+ code += ` });\n\n`;
146
+ }
147
+ // Method tests
148
+ for (const method of cls.methods) {
149
+ if (!method.name.startsWith('_')) {
150
+ code += this.generateMethodTests(method, cls.name, isWidget, mockDeps, testType);
151
+ }
152
+ }
153
+ code += `});\n\n`;
154
+ return code;
155
+ }
156
+ /**
157
+ * Generate stub tests when no AST analysis is available
158
+ */
159
+ generateStubTests(context) {
160
+ const { moduleName, importPath, patterns } = context;
161
+ const patternComment = this.generatePatternComment(patterns);
162
+ return `${patternComment}import 'package:flutter_test/flutter_test.dart';
163
+ import '${importPath}';
164
+
165
+ void main() {
166
+ group('${moduleName}', () {
167
+ test('should be defined', () {
168
+ // Verify module is importable and accessible
169
+ expect(true, isTrue);
170
+ });
171
+
172
+ test('should handle basic operations', () {
173
+ // TODO: Add specific tests for ${moduleName}
174
+ expect(true, isTrue);
175
+ });
176
+
177
+ test('should handle edge cases', () {
178
+ // TODO: Test boundary conditions
179
+ expect(true, isTrue);
180
+ });
181
+
182
+ test('should handle error conditions', () {
183
+ // TODO: Test error handling
184
+ expect(true, isTrue);
185
+ });
186
+ });
187
+ }
188
+ `;
189
+ }
190
+ /**
191
+ * Generate coverage-focused tests for specific lines
192
+ */
193
+ generateCoverageTests(moduleName, importPath, lines) {
194
+ const funcName = this.camelCase(moduleName);
195
+ const lineRange = this.formatLineRange(lines);
196
+ return `// Coverage test for ${lineRange} in ${moduleName}
197
+ import 'package:flutter_test/flutter_test.dart';
198
+ import '${importPath}';
199
+
200
+ void main() {
201
+ group('${moduleName} coverage', () {
202
+ group('${lineRange}', () {
203
+ test('should execute code path covering ${lineRange}', () {
204
+ // Arrange: Set up test inputs to reach uncovered lines
205
+ // ignore: unnecessary_type_check
206
+ final result = ${funcName}();
207
+
208
+ // Assert: Verify the code was reached and behaves correctly
209
+ expect(result, isNotNull);
210
+ });
211
+
212
+ test('should handle edge case for ${lineRange}', () {
213
+ // Arrange: Set up edge case input
214
+ // Act & Assert: Verify edge case handling
215
+ expect(() => ${funcName}(), returnsNormally);
216
+ });
217
+ });
218
+ });
219
+ }
220
+ `;
221
+ }
222
+ /**
223
+ * Convert a ParsedFile (language-agnostic) to ICodeAnalysis for this generator
224
+ */
225
+ static convertParsedFile(parsed) {
226
+ return {
227
+ functions: parsed.functions.map(f => ({
228
+ name: f.name,
229
+ parameters: f.parameters.map(p => ({
230
+ name: p.name,
231
+ type: p.type,
232
+ optional: p.isOptional,
233
+ defaultValue: p.defaultValue,
234
+ })),
235
+ returnType: f.returnType,
236
+ isAsync: f.isAsync,
237
+ isExported: f.isPublic,
238
+ complexity: f.complexity,
239
+ startLine: f.startLine,
240
+ endLine: f.endLine,
241
+ body: f.body,
242
+ })),
243
+ classes: parsed.classes.map(c => ({
244
+ name: c.name,
245
+ methods: c.methods.map(m => ({
246
+ name: m.name,
247
+ parameters: m.parameters.map(p => ({
248
+ name: p.name,
249
+ type: p.type,
250
+ optional: p.isOptional,
251
+ defaultValue: p.defaultValue,
252
+ })),
253
+ returnType: m.returnType,
254
+ isAsync: m.isAsync,
255
+ isExported: m.isPublic,
256
+ complexity: m.complexity,
257
+ startLine: m.startLine,
258
+ endLine: m.endLine,
259
+ body: m.body,
260
+ })),
261
+ properties: c.properties.map(p => ({
262
+ name: p.name,
263
+ type: p.type,
264
+ isPrivate: !p.isPublic,
265
+ isReadonly: p.isReadonly,
266
+ })),
267
+ isExported: c.isPublic,
268
+ hasConstructor: c.methods.some(m => m.name === 'constructor' || m.name === c.name),
269
+ constructorParams: c.methods
270
+ .find(m => m.name === 'constructor' || m.name === c.name)
271
+ ?.parameters.map(p => ({
272
+ name: p.name,
273
+ type: p.type,
274
+ optional: p.isOptional,
275
+ defaultValue: p.defaultValue,
276
+ })),
277
+ })),
278
+ };
279
+ }
280
+ // ============================================================================
281
+ // Private Helpers
282
+ // ============================================================================
283
+ /**
284
+ * Generate Dart import statements for a test file
285
+ */
286
+ generateDartImports(importPath, mockClasses, hasWidgetTests) {
287
+ let imports = '';
288
+ if (hasWidgetTests) {
289
+ imports += `import 'package:flutter/material.dart';\n`;
290
+ }
291
+ imports += `import 'package:flutter_test/flutter_test.dart';\n`;
292
+ if (mockClasses.length > 0) {
293
+ imports += `import 'package:mockito/mockito.dart';\n`;
294
+ imports += `import 'package:mockito/annotations.dart';\n`;
295
+ }
296
+ imports += `import '${importPath}';\n`;
297
+ // Generate .mocks.dart import if using mockito
298
+ if (mockClasses.length > 0) {
299
+ // Derive the .mocks.dart filename from importPath
300
+ const testFileName = importPath
301
+ .replace(/\.dart$/, '_test.mocks.dart')
302
+ .replace(/.*\//, '');
303
+ imports += `import '${testFileName}';\n`;
304
+ }
305
+ return imports;
306
+ }
307
+ /**
308
+ * Collect all types that need @GenerateMocks
309
+ */
310
+ collectMockClasses(analysis) {
311
+ const mockTypes = new Set();
312
+ for (const cls of analysis.classes) {
313
+ if (cls.constructorParams) {
314
+ for (const p of cls.constructorParams) {
315
+ if (p.type && this.isDartServiceType(p.type)) {
316
+ mockTypes.add(p.type.replace(/\?$/, ''));
317
+ }
318
+ }
319
+ }
320
+ }
321
+ return Array.from(mockTypes);
322
+ }
323
+ /**
324
+ * Determine if a type looks like a service/repository (should be mocked)
325
+ */
326
+ isDartServiceType(type) {
327
+ const cleanType = type.replace(/\?$/, '');
328
+ // Primitive and collection types should not be mocked
329
+ const nonMockable = [
330
+ 'string', 'int', 'double', 'num', 'bool', 'dynamic',
331
+ 'list', 'map', 'set', 'void', 'object', 'future',
332
+ ];
333
+ if (nonMockable.includes(cleanType.toLowerCase()))
334
+ return false;
335
+ if (/^(List|Map|Set|Future|Stream)</.test(cleanType))
336
+ return false;
337
+ // PascalCase custom types are likely services
338
+ return /^[A-Z]/.test(cleanType);
339
+ }
340
+ /**
341
+ * Check if any class in the analysis looks like a Flutter Widget
342
+ */
343
+ hasWidgetLikeClasses(analysis) {
344
+ return analysis.classes.some(cls => this.isWidgetClass(cls));
345
+ }
346
+ /**
347
+ * Determine if a class is a Widget (by name convention or methods)
348
+ */
349
+ isWidgetClass(cls) {
350
+ const name = cls.name.toLowerCase();
351
+ return (name.endsWith('widget') ||
352
+ name.endsWith('page') ||
353
+ name.endsWith('screen') ||
354
+ name.endsWith('view') ||
355
+ cls.methods.some(m => m.name === 'build'));
356
+ }
357
+ /**
358
+ * Extract constructor dependencies that should be mocked
359
+ */
360
+ extractMockDependencies(cls) {
361
+ if (!cls.hasConstructor || !cls.constructorParams)
362
+ return [];
363
+ return cls.constructorParams
364
+ .filter(p => p.type && this.isDartServiceType(p.type))
365
+ .map(p => ({
366
+ name: p.name,
367
+ type: p.type.replace(/\?$/, ''),
368
+ }));
369
+ }
370
+ /**
371
+ * Generate tests for a class method
372
+ */
373
+ generateMethodTests(method, className, isWidget, mockDeps, _testType) {
374
+ let code = '';
375
+ if (isWidget && method.name === 'build') {
376
+ // Widget test using testWidgets
377
+ code += ` testWidgets('should render ${className} widget', (WidgetTester tester) async {\n`;
378
+ code += ` await tester.pumpWidget(\n`;
379
+ code += ` MaterialApp(\n`;
380
+ code += ` home: ${className}(),\n`;
381
+ code += ` ),\n`;
382
+ code += ` );\n\n`;
383
+ code += ` expect(find.byType(${className}), findsOneWidget);\n`;
384
+ code += ` });\n\n`;
385
+ return code;
386
+ }
387
+ const asyncKeyword = method.isAsync ? ' async' : '';
388
+ const awaitPrefix = method.isAsync ? 'await ' : '';
389
+ const isVoid = method.returnType === 'void' || method.returnType === 'Future<void>';
390
+ // Happy path test
391
+ const validParams = method.parameters
392
+ .map(p => this.generateDartValue(p.name, p.type))
393
+ .join(', ');
394
+ const methodCall = `${awaitPrefix}subject.${method.name}(${validParams})`;
395
+ code += ` test('${method.name} should execute successfully', ()${asyncKeyword} {\n`;
396
+ // Add mock stubs if needed
397
+ for (const dep of mockDeps) {
398
+ if (method.returnType && method.isAsync) {
399
+ code += ` // Configure mock behavior as needed\n`;
400
+ break;
401
+ }
402
+ }
403
+ if (isVoid) {
404
+ code += ` ${methodCall};\n`;
405
+ code += ` // void return - verify no exceptions thrown\n`;
406
+ }
407
+ else {
408
+ code += ` final result = ${methodCall};\n`;
409
+ code += ` expect(result, isNotNull);\n`;
410
+ }
411
+ code += ` });\n\n`;
412
+ // Null parameter tests for required params
413
+ const bodyText = method.body || '';
414
+ const hasExplicitThrow = /\bthrow\b/.test(bodyText);
415
+ for (const param of method.parameters) {
416
+ if (!param.optional) {
417
+ const isNullable = param.type?.endsWith('?') ?? false;
418
+ if (!isNullable) {
419
+ code += ` test('${method.name} should handle null ${param.name}', ()${asyncKeyword} {\n`;
420
+ if (hasExplicitThrow) {
421
+ code += ` expect(\n`;
422
+ code += ` () ${method.isAsync ? 'async ' : ''}=> subject.${method.name}(`;
423
+ const nullParams = method.parameters
424
+ .map(p => p.name === param.name ? 'null' : this.generateDartValue(p.name, p.type))
425
+ .join(', ');
426
+ code += `${nullParams}),\n`;
427
+ code += ` throwsA(isA<Exception>()),\n`;
428
+ code += ` );\n`;
429
+ }
430
+ else {
431
+ code += ` // Function may or may not accept null - verify graceful handling\n`;
432
+ code += ` try {\n`;
433
+ const nullParams = method.parameters
434
+ .map(p => p.name === param.name ? 'null' : this.generateDartValue(p.name, p.type))
435
+ .join(', ');
436
+ code += ` ${awaitPrefix}subject.${method.name}(${nullParams});\n`;
437
+ code += ` } catch (e) {\n`;
438
+ code += ` expect(e, isA<Error>());\n`;
439
+ code += ` }\n`;
440
+ }
441
+ code += ` });\n\n`;
442
+ }
443
+ }
444
+ }
445
+ return code;
446
+ }
447
+ /**
448
+ * Generate Dart-idiomatic test cases for a function
449
+ */
450
+ generateDartTestCases(fn) {
451
+ const cases = [];
452
+ // Happy path
453
+ const validParams = fn.parameters
454
+ .map(p => this.generateDartValue(p.name, p.type))
455
+ .join(', ');
456
+ const awaitPrefix = fn.isAsync ? 'await ' : '';
457
+ const fnCall = `${awaitPrefix}${fn.name}(${validParams})`;
458
+ const isVoid = fn.returnType === 'void' || fn.returnType === 'Future<void>';
459
+ let assertion = 'expect(result, isNotNull);';
460
+ if (!isVoid && fn.returnType) {
461
+ const rt = fn.returnType.toLowerCase().replace(/future<(.+)>/, '$1');
462
+ if (rt === 'bool')
463
+ assertion = 'expect(result, isA<bool>());';
464
+ else if (rt === 'int' || rt === 'double' || rt === 'num')
465
+ assertion = 'expect(result, isA<num>());';
466
+ else if (rt === 'string')
467
+ assertion = 'expect(result, isA<String>());';
468
+ else if (rt.startsWith('list'))
469
+ assertion = 'expect(result, isA<List>());';
470
+ else if (rt.startsWith('map'))
471
+ assertion = 'expect(result, isA<Map>());';
472
+ }
473
+ if (isVoid) {
474
+ cases.push({
475
+ description: 'should handle valid input correctly',
476
+ action: `${fnCall};`,
477
+ assertion: '// void function - no return value to assert',
478
+ });
479
+ }
480
+ else {
481
+ cases.push({
482
+ description: 'should handle valid input correctly',
483
+ action: `final result = ${fnCall};`,
484
+ assertion,
485
+ });
486
+ }
487
+ // Null parameter tests
488
+ const bodyText = fn.body || '';
489
+ const hasExplicitThrow = /\bthrow\b/.test(bodyText);
490
+ for (const param of fn.parameters) {
491
+ if (!param.optional) {
492
+ const isNullable = param.type?.endsWith('?') ?? false;
493
+ if (!isNullable) {
494
+ const nullParams = fn.parameters
495
+ .map(p => p.name === param.name ? 'null' : this.generateDartValue(p.name, p.type))
496
+ .join(', ');
497
+ if (hasExplicitThrow) {
498
+ cases.push({
499
+ description: `should throw on null ${param.name}`,
500
+ action: `expect(\n () ${fn.isAsync ? 'async ' : ''}=> ${fn.name}(${nullParams}),\n throwsA(isA<Exception>()),\n );`,
501
+ assertion: '',
502
+ });
503
+ }
504
+ else {
505
+ cases.push({
506
+ description: `should handle null ${param.name}`,
507
+ action: `try {\n ${awaitPrefix}${fn.name}(${nullParams});\n } catch (e) {\n expect(e, isA<Error>());\n }`,
508
+ assertion: '',
509
+ });
510
+ }
511
+ }
512
+ }
513
+ }
514
+ // Boundary tests for string params
515
+ for (const param of fn.parameters) {
516
+ const type = param.type?.toLowerCase() ?? '';
517
+ if (type === 'string' || type === 'string?') {
518
+ const emptyParams = fn.parameters
519
+ .map(p => p.name === param.name ? "''" : this.generateDartValue(p.name, p.type))
520
+ .join(', ');
521
+ cases.push({
522
+ description: `should handle empty string for ${param.name}`,
523
+ action: `try {\n ${awaitPrefix}${fn.name}(${emptyParams});\n } catch (e) {\n expect(e, isA<Error>());\n }`,
524
+ assertion: '',
525
+ });
526
+ }
527
+ if (type === 'int' || type === 'double' || type === 'num') {
528
+ const zeroParams = fn.parameters
529
+ .map(p => p.name === param.name ? '0' : this.generateDartValue(p.name, p.type))
530
+ .join(', ');
531
+ cases.push({
532
+ description: `should handle zero for ${param.name}`,
533
+ action: `try {\n ${awaitPrefix}${fn.name}(${zeroParams});\n } catch (e) {\n expect(e, isA<Error>());\n }`,
534
+ assertion: '',
535
+ });
536
+ }
537
+ }
538
+ return cases;
539
+ }
540
+ /**
541
+ * Generate a Dart test value based on parameter name and type
542
+ */
543
+ generateDartValue(name, type) {
544
+ if (!type)
545
+ return "'test'";
546
+ const cleanType = type.replace(/\?$/, '').toLowerCase();
547
+ // Check name-based hints first
548
+ const nameLower = name.toLowerCase();
549
+ if (nameLower.includes('id'))
550
+ return "'test-id-123'";
551
+ if (nameLower.includes('email'))
552
+ return "'test@example.com'";
553
+ if (nameLower.includes('name'))
554
+ return "'Test Name'";
555
+ if (nameLower.includes('url'))
556
+ return "'https://example.com'";
557
+ // Type-based defaults
558
+ for (const [typeKey, value] of FlutterTestGenerator.DART_TYPE_DEFAULTS) {
559
+ if (cleanType.includes(typeKey))
560
+ return value;
561
+ }
562
+ // Collection types
563
+ if (cleanType.startsWith('list'))
564
+ return '<${extractGenericType(type)}>[]';
565
+ if (cleanType.startsWith('map'))
566
+ return '<String, dynamic>{}';
567
+ if (cleanType.startsWith('set'))
568
+ return '<${extractGenericType(type)}>{}';
569
+ if (cleanType.startsWith('future'))
570
+ return "Future.value('test')";
571
+ if (cleanType.startsWith('stream'))
572
+ return "Stream.value('test')";
573
+ // Custom type - return a mock or placeholder
574
+ if (/^[A-Z]/.test(type.replace(/\?$/, ''))) {
575
+ return `Mock${type.replace(/\?$/, '')}()`;
576
+ }
577
+ return "'test'";
578
+ }
579
+ /**
580
+ * Indent a block of code by a given number of spaces
581
+ */
582
+ indentBlock(code, spaces) {
583
+ const indent = ' '.repeat(spaces);
584
+ return code
585
+ .split('\n')
586
+ .map(line => (line.trim() ? `${indent}${line}` : line))
587
+ .join('\n');
588
+ }
589
+ }
590
+ //# sourceMappingURL=flutter-test-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flutter-test-generator.js","sourceRoot":"","sources":["../../../../src/domains/test-generation/generators/flutter-test-generator.ts"],"names":[],"mappings":"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"}