agentic-qe 1.2.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/.claude/settings.json +44 -6
  2. package/.claude/skills/accessibility-testing/SKILL.md +777 -0
  3. package/.claude/skills/chaos-engineering-resilience/SKILL.md +109 -0
  4. package/.claude/skills/compatibility-testing/SKILL.md +101 -0
  5. package/.claude/skills/compliance-testing/SKILL.md +162 -0
  6. package/.claude/skills/contract-testing/SKILL.md +193 -0
  7. package/.claude/skills/database-testing/SKILL.md +243 -0
  8. package/.claude/skills/localization-testing/SKILL.md +115 -0
  9. package/.claude/skills/mobile-testing/SKILL.md +548 -0
  10. package/.claude/skills/mutation-testing/SKILL.md +129 -0
  11. package/.claude/skills/regression-testing/SKILL.md +1045 -0
  12. package/.claude/skills/shift-left-testing/SKILL.md +535 -0
  13. package/.claude/skills/shift-right-testing/SKILL.md +591 -0
  14. package/.claude/skills/skill-builder/SKILL.md +1 -1
  15. package/.claude/skills/test-data-management/SKILL.md +1067 -0
  16. package/.claude/skills/test-design-techniques/SKILL.md +160 -0
  17. package/.claude/skills/test-environment-management/SKILL.md +204 -0
  18. package/.claude/skills/test-reporting-analytics/SKILL.md +143 -0
  19. package/.claude/skills/visual-testing-advanced/SKILL.md +148 -0
  20. package/CHANGELOG.md +130 -511
  21. package/README.md +21 -10
  22. package/dist/agents/BaseAgent.d.ts.map +1 -1
  23. package/dist/agents/BaseAgent.js +5 -4
  24. package/dist/agents/BaseAgent.js.map +1 -1
  25. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  26. package/dist/agents/CoverageAnalyzerAgent.js +9 -8
  27. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  28. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  29. package/dist/agents/FlakyTestHunterAgent.js +3 -2
  30. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  31. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  32. package/dist/agents/FleetCommanderAgent.js +2 -1
  33. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  34. package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
  35. package/dist/agents/PerformanceTesterAgent.js +7 -6
  36. package/dist/agents/PerformanceTesterAgent.js.map +1 -1
  37. package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
  38. package/dist/agents/ProductionIntelligenceAgent.js +7 -6
  39. package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
  40. package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
  41. package/dist/agents/QualityAnalyzerAgent.js +37 -36
  42. package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
  43. package/dist/agents/QualityGateAgent.d.ts.map +1 -1
  44. package/dist/agents/QualityGateAgent.js +2 -1
  45. package/dist/agents/QualityGateAgent.js.map +1 -1
  46. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
  47. package/dist/agents/RegressionRiskAnalyzerAgent.js +15 -14
  48. package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
  49. package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
  50. package/dist/agents/SecurityScannerAgent.js +2 -1
  51. package/dist/agents/SecurityScannerAgent.js.map +1 -1
  52. package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
  53. package/dist/agents/TestDataArchitectAgent.js +12 -11
  54. package/dist/agents/TestDataArchitectAgent.js.map +1 -1
  55. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  56. package/dist/agents/TestExecutorAgent.js +17 -16
  57. package/dist/agents/TestExecutorAgent.js.map +1 -1
  58. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  59. package/dist/agents/TestGeneratorAgent.js +10 -9
  60. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  61. package/dist/agents/index.d.ts.map +1 -1
  62. package/dist/agents/index.js +2 -1
  63. package/dist/agents/index.js.map +1 -1
  64. package/dist/cli/commands/agent/benchmark.d.ts.map +1 -1
  65. package/dist/cli/commands/agent/benchmark.js +2 -1
  66. package/dist/cli/commands/agent/benchmark.js.map +1 -1
  67. package/dist/cli/commands/agent/spawn.d.ts.map +1 -1
  68. package/dist/cli/commands/agent/spawn.js +2 -1
  69. package/dist/cli/commands/agent/spawn.js.map +1 -1
  70. package/dist/cli/commands/analyze.d.ts.map +1 -1
  71. package/dist/cli/commands/analyze.js +2 -1
  72. package/dist/cli/commands/analyze.js.map +1 -1
  73. package/dist/cli/commands/config/list.d.ts.map +1 -1
  74. package/dist/cli/commands/config/list.js +2 -1
  75. package/dist/cli/commands/config/list.js.map +1 -1
  76. package/dist/cli/commands/config/set.d.ts +7 -0
  77. package/dist/cli/commands/config/set.d.ts.map +1 -1
  78. package/dist/cli/commands/config/set.js +35 -4
  79. package/dist/cli/commands/config/set.js.map +1 -1
  80. package/dist/cli/commands/fleet/logs.d.ts.map +1 -1
  81. package/dist/cli/commands/fleet/logs.js +2 -1
  82. package/dist/cli/commands/fleet/logs.js.map +1 -1
  83. package/dist/cli/commands/fleet/metrics.d.ts.map +1 -1
  84. package/dist/cli/commands/fleet/metrics.js +2 -1
  85. package/dist/cli/commands/fleet/metrics.js.map +1 -1
  86. package/dist/cli/commands/fleet/monitor.d.ts.map +1 -1
  87. package/dist/cli/commands/fleet/monitor.js +7 -5
  88. package/dist/cli/commands/fleet/monitor.js.map +1 -1
  89. package/dist/cli/commands/fleet.d.ts.map +1 -1
  90. package/dist/cli/commands/fleet.js +2 -1
  91. package/dist/cli/commands/fleet.js.map +1 -1
  92. package/dist/cli/commands/generate.d.ts.map +1 -1
  93. package/dist/cli/commands/generate.js +2 -1
  94. package/dist/cli/commands/generate.js.map +1 -1
  95. package/dist/cli/commands/improve/index.d.ts.map +1 -1
  96. package/dist/cli/commands/improve/index.js +12 -11
  97. package/dist/cli/commands/improve/index.js.map +1 -1
  98. package/dist/cli/commands/init.d.ts +1 -1
  99. package/dist/cli/commands/init.d.ts.map +1 -1
  100. package/dist/cli/commands/init.js +54 -27
  101. package/dist/cli/commands/init.js.map +1 -1
  102. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  103. package/dist/cli/commands/learn/index.js +13 -12
  104. package/dist/cli/commands/learn/index.js.map +1 -1
  105. package/dist/cli/commands/monitor/alerts.d.ts.map +1 -1
  106. package/dist/cli/commands/monitor/alerts.js +2 -1
  107. package/dist/cli/commands/monitor/alerts.js.map +1 -1
  108. package/dist/cli/commands/patterns/index.d.ts.map +1 -1
  109. package/dist/cli/commands/patterns/index.js +20 -19
  110. package/dist/cli/commands/patterns/index.js.map +1 -1
  111. package/dist/cli/commands/quality/decision.d.ts.map +1 -1
  112. package/dist/cli/commands/quality/decision.js +9 -7
  113. package/dist/cli/commands/quality/decision.js.map +1 -1
  114. package/dist/cli/commands/quality/gate.d.ts.map +1 -1
  115. package/dist/cli/commands/quality/gate.js +10 -8
  116. package/dist/cli/commands/quality/gate.js.map +1 -1
  117. package/dist/cli/commands/quality/policy.d.ts.map +1 -1
  118. package/dist/cli/commands/quality/policy.js +10 -8
  119. package/dist/cli/commands/quality/policy.js.map +1 -1
  120. package/dist/cli/commands/quality/risk.d.ts.map +1 -1
  121. package/dist/cli/commands/quality/risk.js +5 -3
  122. package/dist/cli/commands/quality/risk.js.map +1 -1
  123. package/dist/cli/commands/quality/validate.d.ts.map +1 -1
  124. package/dist/cli/commands/quality/validate.js +10 -8
  125. package/dist/cli/commands/quality/validate.js.map +1 -1
  126. package/dist/cli/commands/quantization.d.ts +6 -0
  127. package/dist/cli/commands/quantization.d.ts.map +1 -0
  128. package/dist/cli/commands/quantization.js +188 -0
  129. package/dist/cli/commands/quantization.js.map +1 -0
  130. package/dist/cli/commands/routing/index.d.ts +0 -6
  131. package/dist/cli/commands/routing/index.d.ts.map +1 -1
  132. package/dist/cli/commands/routing/index.js +17 -16
  133. package/dist/cli/commands/routing/index.js.map +1 -1
  134. package/dist/cli/commands/run.d.ts.map +1 -1
  135. package/dist/cli/commands/run.js +2 -1
  136. package/dist/cli/commands/run.js.map +1 -1
  137. package/dist/cli/commands/skills/index.d.ts.map +1 -1
  138. package/dist/cli/commands/skills/index.js +10 -9
  139. package/dist/cli/commands/skills/index.js.map +1 -1
  140. package/dist/cli/commands/test/debug.d.ts.map +1 -1
  141. package/dist/cli/commands/test/debug.js +2 -1
  142. package/dist/cli/commands/test/debug.js.map +1 -1
  143. package/dist/cli/commands/test/mutate.d.ts.map +1 -1
  144. package/dist/cli/commands/test/mutate.js +2 -1
  145. package/dist/cli/commands/test/mutate.js.map +1 -1
  146. package/dist/cli/commands/test/parallel.d.ts.map +1 -1
  147. package/dist/cli/commands/test/parallel.js +6 -4
  148. package/dist/cli/commands/test/parallel.js.map +1 -1
  149. package/dist/cli/commands/test/profile.d.ts.map +1 -1
  150. package/dist/cli/commands/test/profile.js +3 -2
  151. package/dist/cli/commands/test/profile.js.map +1 -1
  152. package/dist/cli/commands/test/queue.d.ts.map +1 -1
  153. package/dist/cli/commands/test/queue.js +2 -1
  154. package/dist/cli/commands/test/queue.js.map +1 -1
  155. package/dist/cli/commands/test/retry.d.ts.map +1 -1
  156. package/dist/cli/commands/test/retry.js +6 -4
  157. package/dist/cli/commands/test/retry.js.map +1 -1
  158. package/dist/cli/commands/test/trace.d.ts.map +1 -1
  159. package/dist/cli/commands/test/trace.js +2 -1
  160. package/dist/cli/commands/test/trace.js.map +1 -1
  161. package/dist/cli/commands/test/watch.d.ts.map +1 -1
  162. package/dist/cli/commands/test/watch.js +3 -2
  163. package/dist/cli/commands/test/watch.js.map +1 -1
  164. package/dist/cli/commands/workflow/cancel.d.ts.map +1 -1
  165. package/dist/cli/commands/workflow/cancel.js +2 -1
  166. package/dist/cli/commands/workflow/cancel.js.map +1 -1
  167. package/dist/cli/index-working.js +9 -8
  168. package/dist/cli/index-working.js.map +1 -1
  169. package/dist/cli/index.js +5 -0
  170. package/dist/cli/index.js.map +1 -1
  171. package/dist/core/coordination/OODACoordination.d.ts.map +1 -1
  172. package/dist/core/coordination/OODACoordination.js +2 -1
  173. package/dist/core/coordination/OODACoordination.js.map +1 -1
  174. package/dist/core/memory/AgentDBManager.d.ts.map +1 -1
  175. package/dist/core/memory/AgentDBManager.js +2 -19
  176. package/dist/core/memory/AgentDBManager.js.map +1 -1
  177. package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -1
  178. package/dist/core/memory/RealAgentDBAdapter.js +4 -3
  179. package/dist/core/memory/RealAgentDBAdapter.js.map +1 -1
  180. package/dist/core/memory/ReasoningBankAdapter.d.ts.map +1 -1
  181. package/dist/core/memory/ReasoningBankAdapter.js +2 -5
  182. package/dist/core/memory/ReasoningBankAdapter.js.map +1 -1
  183. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  184. package/dist/core/memory/SwarmMemoryManager.js +4 -3
  185. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  186. package/dist/core/neural/NeuralTrainer.d.ts.map +1 -1
  187. package/dist/core/neural/NeuralTrainer.js +3 -2
  188. package/dist/core/neural/NeuralTrainer.js.map +1 -1
  189. package/dist/core/quantization/QuantizationManager.d.ts +83 -0
  190. package/dist/core/quantization/QuantizationManager.d.ts.map +1 -0
  191. package/dist/core/quantization/QuantizationManager.js +264 -0
  192. package/dist/core/quantization/QuantizationManager.js.map +1 -0
  193. package/dist/core/quantization/index.d.ts +5 -0
  194. package/dist/core/quantization/index.d.ts.map +1 -0
  195. package/dist/core/quantization/index.js +9 -0
  196. package/dist/core/quantization/index.js.map +1 -0
  197. package/dist/learning/LearningEngine.d.ts.map +1 -1
  198. package/dist/learning/LearningEngine.js +4 -1
  199. package/dist/learning/LearningEngine.js.map +1 -1
  200. package/dist/mcp/handlers/advanced/mutation-test-execute.d.ts +3 -3
  201. package/dist/mcp/handlers/advanced/mutation-test-execute.d.ts.map +1 -1
  202. package/dist/mcp/handlers/advanced/mutation-test-execute.js +5 -4
  203. package/dist/mcp/handlers/advanced/mutation-test-execute.js.map +1 -1
  204. package/dist/mcp/handlers/agent-spawn.d.ts.map +1 -1
  205. package/dist/mcp/handlers/agent-spawn.js +2 -1
  206. package/dist/mcp/handlers/agent-spawn.js.map +1 -1
  207. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.d.ts.map +1 -1
  208. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js +9 -8
  209. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js.map +1 -1
  210. package/dist/mcp/handlers/analysis/coverageGapsDetect.d.ts.map +1 -1
  211. package/dist/mcp/handlers/analysis/coverageGapsDetect.js +6 -5
  212. package/dist/mcp/handlers/analysis/coverageGapsDetect.js.map +1 -1
  213. package/dist/mcp/handlers/analysis/performance-monitor-realtime-handler.d.ts.map +1 -1
  214. package/dist/mcp/handlers/analysis/performance-monitor-realtime-handler.js +5 -4
  215. package/dist/mcp/handlers/analysis/performance-monitor-realtime-handler.js.map +1 -1
  216. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts.map +1 -1
  217. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js +8 -7
  218. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js.map +1 -1
  219. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.d.ts.map +1 -1
  220. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js +7 -6
  221. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js.map +1 -1
  222. package/dist/mcp/handlers/analysis/securityScanComprehensive.d.ts.map +1 -1
  223. package/dist/mcp/handlers/analysis/securityScanComprehensive.js +18 -21
  224. package/dist/mcp/handlers/analysis/securityScanComprehensive.js.map +1 -1
  225. package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
  226. package/dist/mcp/handlers/base-handler.js +2 -9
  227. package/dist/mcp/handlers/base-handler.js.map +1 -1
  228. package/dist/mcp/handlers/chaos/chaos-inject-failure.d.ts.map +1 -1
  229. package/dist/mcp/handlers/chaos/chaos-inject-failure.js +4 -3
  230. package/dist/mcp/handlers/chaos/chaos-inject-failure.js.map +1 -1
  231. package/dist/mcp/handlers/chaos/chaos-inject-latency.d.ts.map +1 -1
  232. package/dist/mcp/handlers/chaos/chaos-inject-latency.js +6 -5
  233. package/dist/mcp/handlers/chaos/chaos-inject-latency.js.map +1 -1
  234. package/dist/mcp/handlers/coordination/event-emit.d.ts.map +1 -1
  235. package/dist/mcp/handlers/coordination/event-emit.js +2 -1
  236. package/dist/mcp/handlers/coordination/event-emit.js.map +1 -1
  237. package/dist/mcp/handlers/coordination/event-subscribe.d.ts.map +1 -1
  238. package/dist/mcp/handlers/coordination/event-subscribe.js +2 -1
  239. package/dist/mcp/handlers/coordination/event-subscribe.js.map +1 -1
  240. package/dist/mcp/handlers/coordination/workflow-checkpoint.d.ts.map +1 -1
  241. package/dist/mcp/handlers/coordination/workflow-checkpoint.js +2 -1
  242. package/dist/mcp/handlers/coordination/workflow-checkpoint.js.map +1 -1
  243. package/dist/mcp/handlers/coordination/workflow-create.d.ts.map +1 -1
  244. package/dist/mcp/handlers/coordination/workflow-create.js +2 -1
  245. package/dist/mcp/handlers/coordination/workflow-create.js.map +1 -1
  246. package/dist/mcp/handlers/coordination/workflow-execute.d.ts.map +1 -1
  247. package/dist/mcp/handlers/coordination/workflow-execute.js +2 -1
  248. package/dist/mcp/handlers/coordination/workflow-execute.js.map +1 -1
  249. package/dist/mcp/handlers/coordination/workflow-resume.d.ts.map +1 -1
  250. package/dist/mcp/handlers/coordination/workflow-resume.js +2 -1
  251. package/dist/mcp/handlers/coordination/workflow-resume.js.map +1 -1
  252. package/dist/mcp/handlers/fleet-init.d.ts.map +1 -1
  253. package/dist/mcp/handlers/fleet-init.js +2 -1
  254. package/dist/mcp/handlers/fleet-init.js.map +1 -1
  255. package/dist/mcp/handlers/fleet-status.d.ts.map +1 -1
  256. package/dist/mcp/handlers/fleet-status.js +31 -30
  257. package/dist/mcp/handlers/fleet-status.js.map +1 -1
  258. package/dist/mcp/handlers/integration/dependency-check.d.ts.map +1 -1
  259. package/dist/mcp/handlers/integration/dependency-check.js +3 -2
  260. package/dist/mcp/handlers/integration/dependency-check.js.map +1 -1
  261. package/dist/mcp/handlers/integration/integration-test-orchestrate.d.ts.map +1 -1
  262. package/dist/mcp/handlers/integration/integration-test-orchestrate.js +2 -1
  263. package/dist/mcp/handlers/integration/integration-test-orchestrate.js.map +1 -1
  264. package/dist/mcp/handlers/optimize-tests.d.ts.map +1 -1
  265. package/dist/mcp/handlers/optimize-tests.js +33 -32
  266. package/dist/mcp/handlers/optimize-tests.js.map +1 -1
  267. package/dist/mcp/handlers/predict-defects.d.ts.map +1 -1
  268. package/dist/mcp/handlers/predict-defects.js +46 -45
  269. package/dist/mcp/handlers/predict-defects.js.map +1 -1
  270. package/dist/mcp/handlers/prediction/deployment-readiness-check.d.ts.map +1 -1
  271. package/dist/mcp/handlers/prediction/deployment-readiness-check.js +24 -23
  272. package/dist/mcp/handlers/prediction/deployment-readiness-check.js.map +1 -1
  273. package/dist/mcp/handlers/prediction/predict-defects-ai.d.ts.map +1 -1
  274. package/dist/mcp/handlers/prediction/predict-defects-ai.js +10 -9
  275. package/dist/mcp/handlers/prediction/predict-defects-ai.js.map +1 -1
  276. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +1 -1
  277. package/dist/mcp/handlers/prediction/regression-risk-analyze.js +10 -9
  278. package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +1 -1
  279. package/dist/mcp/handlers/prediction/visual-test-regression.d.ts.map +1 -1
  280. package/dist/mcp/handlers/prediction/visual-test-regression.js +7 -6
  281. package/dist/mcp/handlers/prediction/visual-test-regression.js.map +1 -1
  282. package/dist/mcp/handlers/quality-analyze.d.ts.map +1 -1
  283. package/dist/mcp/handlers/quality-analyze.js +53 -52
  284. package/dist/mcp/handlers/quality-analyze.js.map +1 -1
  285. package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -1
  286. package/dist/mcp/handlers/task-orchestrate.js +19 -18
  287. package/dist/mcp/handlers/task-orchestrate.js.map +1 -1
  288. package/dist/mcp/handlers/test/test-execute-parallel.d.ts.map +1 -1
  289. package/dist/mcp/handlers/test/test-execute-parallel.js +7 -6
  290. package/dist/mcp/handlers/test/test-execute-parallel.js.map +1 -1
  291. package/dist/mcp/handlers/test/test-generate-enhanced.d.ts.map +1 -1
  292. package/dist/mcp/handlers/test/test-generate-enhanced.js +2 -1
  293. package/dist/mcp/handlers/test/test-generate-enhanced.js.map +1 -1
  294. package/dist/mcp/handlers/test/test-optimize-sublinear.d.ts.map +1 -1
  295. package/dist/mcp/handlers/test/test-optimize-sublinear.js +3 -2
  296. package/dist/mcp/handlers/test/test-optimize-sublinear.js.map +1 -1
  297. package/dist/mcp/handlers/test-execute.d.ts.map +1 -1
  298. package/dist/mcp/handlers/test-execute.js +11 -10
  299. package/dist/mcp/handlers/test-execute.js.map +1 -1
  300. package/dist/mcp/handlers/test-generate.d.ts.map +1 -1
  301. package/dist/mcp/handlers/test-generate.js +4 -3
  302. package/dist/mcp/handlers/test-generate.js.map +1 -1
  303. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  304. package/dist/mcp/services/AgentRegistry.js +2 -1
  305. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  306. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -1
  307. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +10 -9
  308. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -1
  309. package/dist/mcp/streaming/StreamingMCPTool.d.ts.map +1 -1
  310. package/dist/mcp/streaming/StreamingMCPTool.js +2 -1
  311. package/dist/mcp/streaming/StreamingMCPTool.js.map +1 -1
  312. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -1
  313. package/dist/mcp/streaming/TestExecuteStreamHandler.js +6 -5
  314. package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -1
  315. package/dist/reasoning/TestTemplateCreator.d.ts +10 -2
  316. package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -1
  317. package/dist/reasoning/TestTemplateCreator.js +81 -21
  318. package/dist/reasoning/TestTemplateCreator.js.map +1 -1
  319. package/dist/types/pattern.types.d.ts +39 -3
  320. package/dist/types/pattern.types.d.ts.map +1 -1
  321. package/dist/utils/Config.js +2 -2
  322. package/dist/utils/Config.js.map +1 -1
  323. package/dist/utils/ProcessExit.d.ts +23 -0
  324. package/dist/utils/ProcessExit.d.ts.map +1 -0
  325. package/dist/utils/ProcessExit.js +40 -0
  326. package/dist/utils/ProcessExit.js.map +1 -0
  327. package/dist/utils/SecureRandom.d.ts +171 -0
  328. package/dist/utils/SecureRandom.d.ts.map +1 -0
  329. package/dist/utils/SecureRandom.js +229 -0
  330. package/dist/utils/SecureRandom.js.map +1 -0
  331. package/dist/utils/SecureUrlValidator.d.ts +167 -0
  332. package/dist/utils/SecureUrlValidator.d.ts.map +1 -0
  333. package/dist/utils/SecureUrlValidator.js +306 -0
  334. package/dist/utils/SecureUrlValidator.js.map +1 -0
  335. package/dist/utils/SecureValidation.d.ts +131 -0
  336. package/dist/utils/SecureValidation.d.ts.map +1 -0
  337. package/dist/utils/SecureValidation.js +265 -0
  338. package/dist/utils/SecureValidation.js.map +1 -0
  339. package/dist/utils/validation.d.ts.map +1 -1
  340. package/dist/utils/validation.js +5 -4
  341. package/dist/utils/validation.js.map +1 -1
  342. package/package.json +3 -3
@@ -0,0 +1,243 @@
1
+ ---
2
+ name: database-testing
3
+ description: Database schema validation, data integrity testing, migration testing, transaction isolation, and query performance. Use when testing data persistence, ensuring referential integrity, or validating database migrations.
4
+ version: 1.0.0
5
+ category: specialized-testing
6
+ tags: [database-testing, sql, schema-migration, data-integrity, transaction-testing, query-performance]
7
+ difficulty: intermediate
8
+ estimated_time: 75 minutes
9
+ author: agentic-qe
10
+ ---
11
+
12
+ # Database Testing
13
+
14
+ ## Core Principle
15
+
16
+ **Data is your most valuable asset. Database bugs cause data loss/corruption.**
17
+
18
+ Database testing ensures schema correctness, data integrity, transaction safety, and query performance. Critical for preventing catastrophic data issues.
19
+
20
+ ## Schema Testing
21
+
22
+ **Validate database structure:**
23
+ ```sql
24
+ -- Test schema exists
25
+ SELECT table_name FROM information_schema.tables
26
+ WHERE table_schema = 'public' AND table_name = 'users';
27
+
28
+ -- Test column types
29
+ SELECT column_name, data_type
30
+ FROM information_schema.columns
31
+ WHERE table_name = 'users';
32
+
33
+ -- Test constraints
34
+ SELECT constraint_name, constraint_type
35
+ FROM information_schema.table_constraints
36
+ WHERE table_name = 'users';
37
+ ```
38
+
39
+ **Test with code:**
40
+ ```javascript
41
+ test('users table has correct schema', async () => {
42
+ const schema = await db.raw(`
43
+ SELECT column_name, data_type, is_nullable
44
+ FROM information_schema.columns
45
+ WHERE table_name = 'users'
46
+ `);
47
+
48
+ expect(schema).toContainEqual({
49
+ column_name: 'id',
50
+ data_type: 'integer',
51
+ is_nullable: 'NO'
52
+ });
53
+
54
+ expect(schema).toContainEqual({
55
+ column_name: 'email',
56
+ data_type: 'character varying',
57
+ is_nullable: 'NO'
58
+ });
59
+ });
60
+ ```
61
+
62
+ ## Data Integrity Testing
63
+
64
+ **Test constraints:**
65
+ ```javascript
66
+ test('email must be unique', async () => {
67
+ await db.users.create({ email: 'test@example.com' });
68
+
69
+ // Duplicate should fail
70
+ await expect(
71
+ db.users.create({ email: 'test@example.com' })
72
+ ).rejects.toThrow('unique constraint violation');
73
+ });
74
+
75
+ test('foreign key prevents orphaned records', async () => {
76
+ const user = await db.users.create({ email: 'test@example.com' });
77
+ await db.orders.create({ userId: user.id, total: 100 });
78
+
79
+ // Cannot delete user with orders
80
+ await expect(
81
+ db.users.delete({ id: user.id })
82
+ ).rejects.toThrow('foreign key constraint');
83
+ });
84
+
85
+ test('check constraint validates data', async () => {
86
+ // Age must be ≥ 18
87
+ await expect(
88
+ db.users.create({ email: 'minor@example.com', age: 17 })
89
+ ).rejects.toThrow('check constraint violation');
90
+ });
91
+ ```
92
+
93
+ ## Migration Testing
94
+
95
+ **Test database migrations:**
96
+ ```javascript
97
+ import { migrate, rollback } from './migrations';
98
+
99
+ test('migration adds users table', async () => {
100
+ // Start fresh
101
+ await rollback();
102
+
103
+ // Run migration
104
+ await migrate();
105
+
106
+ // Verify table exists
107
+ const tables = await db.raw(`
108
+ SELECT table_name FROM information_schema.tables
109
+ WHERE table_schema = 'public'
110
+ `);
111
+
112
+ expect(tables.map(t => t.table_name)).toContain('users');
113
+ });
114
+
115
+ test('migration is reversible', async () => {
116
+ await migrate();
117
+ await rollback();
118
+
119
+ // Table should be gone
120
+ const tables = await db.raw(`
121
+ SELECT table_name FROM information_schema.tables
122
+ WHERE table_schema = 'public'
123
+ `);
124
+
125
+ expect(tables.map(t => t.table_name)).not.toContain('users');
126
+ });
127
+
128
+ test('migration preserves existing data', async () => {
129
+ // Create data before migration
130
+ await db.users.create({ email: 'test@example.com' });
131
+
132
+ // Run migration that adds 'age' column
133
+ await migrate('add-age-column');
134
+
135
+ // Data should still exist
136
+ const user = await db.users.findOne({ email: 'test@example.com' });
137
+ expect(user).toBeDefined();
138
+ expect(user.age).toBeNull(); // New column, null default
139
+ });
140
+ ```
141
+
142
+ ## Transaction Isolation Testing
143
+
144
+ **Test ACID properties:**
145
+ ```javascript
146
+ test('transaction rolls back on error', async () => {
147
+ const initialCount = await db.users.count();
148
+
149
+ try {
150
+ await db.transaction(async (trx) => {
151
+ await trx('users').insert({ email: 'user1@example.com' });
152
+ await trx('users').insert({ email: 'user2@example.com' });
153
+
154
+ // Force error
155
+ throw new Error('Rollback test');
156
+ });
157
+ } catch (error) {
158
+ // Expected
159
+ }
160
+
161
+ // No users should be inserted
162
+ const finalCount = await db.users.count();
163
+ expect(finalCount).toBe(initialCount);
164
+ });
165
+
166
+ test('concurrent transactions are isolated', async () => {
167
+ const user = await db.users.create({ email: 'test@example.com', balance: 100 });
168
+
169
+ // Two concurrent withdrawals
170
+ const withdraw1 = db.transaction(async (trx) => {
171
+ const current = await trx('users').where({ id: user.id }).first();
172
+ await sleep(100); // Simulate delay
173
+ await trx('users').where({ id: user.id }).update({
174
+ balance: current.balance - 50
175
+ });
176
+ });
177
+
178
+ const withdraw2 = db.transaction(async (trx) => {
179
+ const current = await trx('users').where({ id: user.id }).first();
180
+ await sleep(100);
181
+ await trx('users').where({ id: user.id }).update({
182
+ balance: current.balance - 50
183
+ });
184
+ });
185
+
186
+ await Promise.all([withdraw1, withdraw2]);
187
+
188
+ // With proper isolation, balance should be 0, not 50
189
+ const final = await db.users.findOne({ id: user.id });
190
+ expect(final.balance).toBe(0); // Not 50!
191
+ });
192
+ ```
193
+
194
+ ## Query Performance Testing
195
+
196
+ **Test slow queries:**
197
+ ```javascript
198
+ test('user lookup by email is fast', async () => {
199
+ // Seed 10,000 users
200
+ await seedUsers(10000);
201
+
202
+ const start = Date.now();
203
+ await db.users.findOne({ email: 'user5000@example.com' });
204
+ const duration = Date.now() - start;
205
+
206
+ // Should use index on email
207
+ expect(duration).toBeLessThan(10); // < 10ms
208
+ });
209
+
210
+ test('EXPLAIN shows index usage', async () => {
211
+ const explain = await db.raw(`
212
+ EXPLAIN SELECT * FROM users WHERE email = 'test@example.com'
213
+ `);
214
+
215
+ // Should show index scan, not sequential scan
216
+ const plan = explain.rows[0]['QUERY PLAN'];
217
+ expect(plan).toContain('Index Scan');
218
+ expect(plan).not.toContain('Seq Scan');
219
+ });
220
+ ```
221
+
222
+ ## Related Skills
223
+
224
+ - [test-data-management](../test-data-management/) - Generate test data for DB
225
+ - [performance-testing](../performance-testing/) - DB performance testing
226
+ - [test-automation-strategy](../test-automation-strategy/) - Automate DB tests
227
+
228
+ ## Remember
229
+
230
+ **Database bugs are catastrophic.**
231
+
232
+ - Data loss is unrecoverable
233
+ - Corruption spreads silently
234
+ - Performance issues compound
235
+ - Migrations must be reversible
236
+
237
+ **Test migrations before production:**
238
+ - Forward migration works
239
+ - Backward rollback works
240
+ - Data preserved/migrated correctly
241
+ - Performance acceptable
242
+
243
+ **With Agents:** `qe-test-data-architect` generates realistic test data with referential integrity. `qe-test-executor` runs DB migration tests automatically in CI/CD.
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: localization-testing
3
+ description: Internationalization (i18n) and localization (l10n) testing for global products including translations, locale formats, RTL languages, and cultural appropriateness. Use when launching in new markets or building multi-language products.
4
+ version: 1.0.0
5
+ category: specialized-testing
6
+ tags: [i18n, l10n, localization, internationalization, translations, rtl, locale]
7
+ difficulty: intermediate
8
+ estimated_time: 60 minutes
9
+ author: agentic-qe
10
+ ---
11
+
12
+ # Localization & Internationalization Testing
13
+
14
+ ## Core Principle
15
+
16
+ **Global products must work globally.**
17
+
18
+ i18n testing ensures software supports multiple languages, regions, and cultures without code changes.
19
+
20
+ ## i18n vs l10n
21
+
22
+ **Internationalization (i18n):** Building software to support localization
23
+ **Localization (l10n):** Adapting software for specific locale
24
+
25
+ ## Testing Translation Coverage
26
+
27
+ ```javascript
28
+ test('all strings are translated', () => {
29
+ const enKeys = Object.keys(translations.en);
30
+ const frKeys = Object.keys(translations.fr);
31
+ const esKeys = Object.keys(translations.es);
32
+
33
+ // All locales have same keys
34
+ expect(frKeys).toEqual(enKeys);
35
+ expect(esKeys).toEqual(enKeys);
36
+ });
37
+
38
+ test('no missing translation placeholders', () => {
39
+ const text = await page.locator('button').textContent();
40
+
41
+ // Should not see placeholder keys
42
+ expect(text).not.toContain('translation.missing');
43
+ expect(text).not.toMatch(/\{\{.*\}\}/); // {{key}} format
44
+ });
45
+ ```
46
+
47
+ ## Date/Time/Currency Formats
48
+
49
+ ```javascript
50
+ test('date formats by locale', () => {
51
+ const date = new Date('2025-10-24');
52
+
53
+ expect(formatDate(date, 'en-US')).toBe('10/24/2025');
54
+ expect(formatDate(date, 'en-GB')).toBe('24/10/2025');
55
+ expect(formatDate(date, 'ja-JP')).toBe('2025/10/24');
56
+ });
57
+
58
+ test('currency formats by locale', () => {
59
+ const amount = 1234.56;
60
+
61
+ expect(formatCurrency(amount, 'USD')).toBe('$1,234.56');
62
+ expect(formatCurrency(amount, 'EUR')).toBe('€1.234,56');
63
+ expect(formatCurrency(amount, 'JPY')).toBe('¥1,235'); // No decimals
64
+ });
65
+ ```
66
+
67
+ ## RTL (Right-to-Left) Testing
68
+
69
+ ```javascript
70
+ test('layout flips for RTL languages', async () => {
71
+ await page.goto('/?lang=ar'); // Arabic
72
+
73
+ const dir = await page.locator('html').getAttribute('dir');
74
+ expect(dir).toBe('rtl');
75
+
76
+ // Navigation should be on right
77
+ const nav = await page.locator('nav');
78
+ const styles = await nav.evaluate((el) =>
79
+ window.getComputedStyle(el)
80
+ );
81
+ expect(styles.direction).toBe('rtl');
82
+ });
83
+ ```
84
+
85
+ ## Character Encoding
86
+
87
+ ```javascript
88
+ test('supports unicode characters', async () => {
89
+ // Japanese
90
+ await page.fill('#name', '山田太郎');
91
+
92
+ // Arabic
93
+ await page.fill('#name', 'محمد');
94
+
95
+ // Emoji
96
+ await page.fill('#name', '👋🌍');
97
+
98
+ // Verify saved correctly
99
+ const saved = await db.users.findOne({ id: userId });
100
+ expect(saved.name).toBe('👋🌍');
101
+ });
102
+ ```
103
+
104
+ ## Remember
105
+
106
+ **Don't hardcode. Externalize all user-facing strings.**
107
+
108
+ Test:
109
+ - Translation completeness
110
+ - Locale-specific formats (date, time, currency)
111
+ - RTL layout (Arabic, Hebrew)
112
+ - Character encoding (UTF-8)
113
+ - Cultural appropriateness
114
+
115
+ **With Agents:** Agents validate translation coverage, detect hardcoded strings, and test locale-specific formatting automatically across all supported languages.