agentic-qe 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/.claude/agents/qe-coverage-analyzer.md +8 -0
  2. package/.claude/agents/qe-flaky-test-hunter.md +9 -1
  3. package/.claude/agents/qe-test-generator.md +7 -0
  4. package/.claude/agents/reasoning/agent.md +816 -0
  5. package/.claude/agents/reasoning/goal-planner.md +73 -0
  6. package/.claude/settings.json +64 -25
  7. package/.claude/skills/README.md +124 -0
  8. package/.claude/skills/accessibility-testing/SKILL.md +777 -0
  9. package/.claude/skills/agentdb-advanced/SKILL.md +550 -0
  10. package/.claude/skills/agentdb-learning/SKILL.md +545 -0
  11. package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -0
  12. package/.claude/skills/agentdb-optimization/SKILL.md +509 -0
  13. package/.claude/skills/agentdb-vector-search/SKILL.md +339 -0
  14. package/.claude/skills/agentic-quality-engineering/SKILL.md +604 -0
  15. package/.claude/skills/api-testing-patterns/SKILL.md +686 -0
  16. package/.claude/skills/bug-reporting-excellence/SKILL.md +632 -0
  17. package/.claude/skills/chaos-engineering-resilience/SKILL.md +109 -0
  18. package/.claude/skills/code-review-quality/SKILL.md +683 -0
  19. package/.claude/skills/compatibility-testing/SKILL.md +101 -0
  20. package/.claude/skills/compliance-testing/SKILL.md +162 -0
  21. package/.claude/skills/consultancy-practices/SKILL.md +540 -0
  22. package/.claude/skills/context-driven-testing/SKILL.md +466 -0
  23. package/.claude/skills/contract-testing/SKILL.md +193 -0
  24. package/.claude/skills/database-testing/SKILL.md +243 -0
  25. package/.claude/skills/exploratory-testing-advanced/SKILL.md +676 -0
  26. package/.claude/skills/flow-nexus-neural/SKILL.md +738 -0
  27. package/.claude/skills/flow-nexus-platform/SKILL.md +1157 -0
  28. package/.claude/skills/flow-nexus-swarm/SKILL.md +610 -0
  29. package/.claude/skills/github-code-review/SKILL.md +1140 -0
  30. package/.claude/skills/github-multi-repo/SKILL.md +874 -0
  31. package/.claude/skills/github-project-management/SKILL.md +1277 -0
  32. package/.claude/skills/github-release-management/SKILL.md +1081 -0
  33. package/.claude/skills/github-workflow-automation/SKILL.md +1065 -0
  34. package/.claude/skills/hive-mind-advanced/SKILL.md +712 -0
  35. package/.claude/skills/holistic-testing-pact/SKILL.md +225 -0
  36. package/.claude/skills/hooks-automation/SKILL.md +1201 -0
  37. package/.claude/skills/localization-testing/SKILL.md +115 -0
  38. package/.claude/skills/mobile-testing/SKILL.md +548 -0
  39. package/.claude/skills/mutation-testing/SKILL.md +129 -0
  40. package/.claude/skills/pair-programming/SKILL.md +1202 -0
  41. package/.claude/skills/performance-analysis/SKILL.md +563 -0
  42. package/.claude/skills/performance-testing/SKILL.md +662 -0
  43. package/.claude/skills/quality-metrics/SKILL.md +592 -0
  44. package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -0
  45. package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -0
  46. package/.claude/skills/refactoring-patterns/SKILL.md +778 -0
  47. package/.claude/skills/regression-testing/SKILL.md +1045 -0
  48. package/.claude/skills/risk-based-testing/SKILL.md +721 -0
  49. package/.claude/skills/security-testing/SKILL.md +651 -0
  50. package/.claude/skills/shift-left-testing/SKILL.md +535 -0
  51. package/.claude/skills/shift-right-testing/SKILL.md +591 -0
  52. package/.claude/skills/skill-builder/SKILL.md +910 -0
  53. package/.claude/skills/sparc-methodology/SKILL.md +1115 -0
  54. package/.claude/skills/stream-chain/SKILL.md +563 -0
  55. package/.claude/skills/swarm-advanced/SKILL.md +973 -0
  56. package/.claude/skills/swarm-orchestration/SKILL.md +179 -0
  57. package/.claude/skills/tdd-london-chicago/SKILL.md +567 -0
  58. package/.claude/skills/technical-writing/SKILL.md +235 -0
  59. package/.claude/skills/test-automation-strategy/SKILL.md +842 -0
  60. package/.claude/skills/test-data-management/SKILL.md +1067 -0
  61. package/.claude/skills/test-design-techniques/SKILL.md +160 -0
  62. package/.claude/skills/test-environment-management/SKILL.md +204 -0
  63. package/.claude/skills/test-reporting-analytics/SKILL.md +143 -0
  64. package/.claude/skills/verification-quality/SKILL.md +649 -0
  65. package/.claude/skills/visual-testing-advanced/SKILL.md +148 -0
  66. package/.claude/skills/xp-practices/SKILL.md +671 -0
  67. package/.claude/statusline-command.sh +176 -0
  68. package/CHANGELOG.md +623 -6
  69. package/README.md +101 -5
  70. package/config/improvement-loop.config.ts +323 -0
  71. package/config/neural-agent.config.ts +197 -0
  72. package/dist/adapters/MemoryStoreAdapter.d.ts +16 -16
  73. package/dist/adapters/MemoryStoreAdapter.d.ts.map +1 -1
  74. package/dist/adapters/MemoryStoreAdapter.js +16 -16
  75. package/dist/adapters/MemoryStoreAdapter.js.map +1 -1
  76. package/dist/agents/BaseAgent.d.ts +69 -0
  77. package/dist/agents/BaseAgent.d.ts.map +1 -1
  78. package/dist/agents/BaseAgent.js +387 -5
  79. package/dist/agents/BaseAgent.js.map +1 -1
  80. package/dist/agents/CoverageAnalyzerAgent.d.ts +13 -2
  81. package/dist/agents/CoverageAnalyzerAgent.d.ts.map +1 -1
  82. package/dist/agents/CoverageAnalyzerAgent.js +112 -12
  83. package/dist/agents/CoverageAnalyzerAgent.js.map +1 -1
  84. package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
  85. package/dist/agents/DeploymentReadinessAgent.js +13 -13
  86. package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
  87. package/dist/agents/FlakyTestHunterAgent.d.ts +28 -0
  88. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  89. package/dist/agents/FlakyTestHunterAgent.js +160 -4
  90. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  91. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  92. package/dist/agents/FleetCommanderAgent.js +4 -3
  93. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  94. package/dist/agents/LearningAgent.d.ts +14 -5
  95. package/dist/agents/LearningAgent.d.ts.map +1 -1
  96. package/dist/agents/LearningAgent.js +36 -16
  97. package/dist/agents/LearningAgent.js.map +1 -1
  98. package/dist/agents/NeuralAgentExtension.d.ts +117 -0
  99. package/dist/agents/NeuralAgentExtension.d.ts.map +1 -0
  100. package/dist/agents/NeuralAgentExtension.js +288 -0
  101. package/dist/agents/NeuralAgentExtension.js.map +1 -0
  102. package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
  103. package/dist/agents/PerformanceTesterAgent.js +11 -9
  104. package/dist/agents/PerformanceTesterAgent.js.map +1 -1
  105. package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
  106. package/dist/agents/ProductionIntelligenceAgent.js +14 -13
  107. package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
  108. package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
  109. package/dist/agents/QualityAnalyzerAgent.js +39 -38
  110. package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
  111. package/dist/agents/QualityGateAgent.d.ts.map +1 -1
  112. package/dist/agents/QualityGateAgent.js +7 -6
  113. package/dist/agents/QualityGateAgent.js.map +1 -1
  114. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
  115. package/dist/agents/RegressionRiskAnalyzerAgent.js +22 -21
  116. package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
  117. package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
  118. package/dist/agents/RequirementsValidatorAgent.js +1 -1
  119. package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
  120. package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
  121. package/dist/agents/SecurityScannerAgent.js +8 -7
  122. package/dist/agents/SecurityScannerAgent.js.map +1 -1
  123. package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
  124. package/dist/agents/TestDataArchitectAgent.js +12 -11
  125. package/dist/agents/TestDataArchitectAgent.js.map +1 -1
  126. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  127. package/dist/agents/TestExecutorAgent.js +18 -19
  128. package/dist/agents/TestExecutorAgent.js.map +1 -1
  129. package/dist/agents/TestGeneratorAgent.d.ts +15 -4
  130. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  131. package/dist/agents/TestGeneratorAgent.js +172 -49
  132. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  133. package/dist/agents/index.d.ts.map +1 -1
  134. package/dist/agents/index.js +2 -1
  135. package/dist/agents/index.js.map +1 -1
  136. package/dist/agents/mixins/NeuralCapableMixin.d.ts +130 -0
  137. package/dist/agents/mixins/NeuralCapableMixin.d.ts.map +1 -0
  138. package/dist/agents/mixins/NeuralCapableMixin.js +358 -0
  139. package/dist/agents/mixins/NeuralCapableMixin.js.map +1 -0
  140. package/dist/agents/mixins/QUICCapableMixin.d.ts +34 -0
  141. package/dist/agents/mixins/QUICCapableMixin.d.ts.map +1 -0
  142. package/dist/agents/mixins/QUICCapableMixin.js +346 -0
  143. package/dist/agents/mixins/QUICCapableMixin.js.map +1 -0
  144. package/dist/cli/commands/agent/benchmark.d.ts.map +1 -1
  145. package/dist/cli/commands/agent/benchmark.js +2 -1
  146. package/dist/cli/commands/agent/benchmark.js.map +1 -1
  147. package/dist/cli/commands/agent/index.d.ts +5 -0
  148. package/dist/cli/commands/agent/index.d.ts.map +1 -1
  149. package/dist/cli/commands/agent/index.js +11 -6
  150. package/dist/cli/commands/agent/index.js.map +1 -1
  151. package/dist/cli/commands/agent/kill.d.ts +13 -0
  152. package/dist/cli/commands/agent/kill.d.ts.map +1 -0
  153. package/dist/cli/commands/agent/kill.js +65 -0
  154. package/dist/cli/commands/agent/kill.js.map +1 -0
  155. package/dist/cli/commands/agent/list.d.ts +19 -0
  156. package/dist/cli/commands/agent/list.d.ts.map +1 -0
  157. package/dist/cli/commands/agent/list.js +92 -0
  158. package/dist/cli/commands/agent/list.js.map +1 -0
  159. package/dist/cli/commands/agent/logs.d.ts +14 -0
  160. package/dist/cli/commands/agent/logs.d.ts.map +1 -0
  161. package/dist/cli/commands/agent/logs.js +77 -0
  162. package/dist/cli/commands/agent/logs.js.map +1 -0
  163. package/dist/cli/commands/agent/metrics.d.ts +21 -0
  164. package/dist/cli/commands/agent/metrics.d.ts.map +1 -0
  165. package/dist/cli/commands/agent/metrics.js +87 -0
  166. package/dist/cli/commands/agent/metrics.js.map +1 -0
  167. package/dist/cli/commands/agent/spawn.d.ts +28 -0
  168. package/dist/cli/commands/agent/spawn.d.ts.map +1 -0
  169. package/dist/cli/commands/agent/spawn.js +84 -0
  170. package/dist/cli/commands/agent/spawn.js.map +1 -0
  171. package/dist/cli/commands/analyze.d.ts.map +1 -1
  172. package/dist/cli/commands/analyze.js +2 -1
  173. package/dist/cli/commands/analyze.js.map +1 -1
  174. package/dist/cli/commands/config/list.d.ts.map +1 -1
  175. package/dist/cli/commands/config/list.js +2 -1
  176. package/dist/cli/commands/config/list.js.map +1 -1
  177. package/dist/cli/commands/config/set.d.ts +7 -0
  178. package/dist/cli/commands/config/set.d.ts.map +1 -1
  179. package/dist/cli/commands/config/set.js +35 -4
  180. package/dist/cli/commands/config/set.js.map +1 -1
  181. package/dist/cli/commands/fleet/logs.d.ts.map +1 -1
  182. package/dist/cli/commands/fleet/logs.js +2 -1
  183. package/dist/cli/commands/fleet/logs.js.map +1 -1
  184. package/dist/cli/commands/fleet/metrics.d.ts.map +1 -1
  185. package/dist/cli/commands/fleet/metrics.js +2 -1
  186. package/dist/cli/commands/fleet/metrics.js.map +1 -1
  187. package/dist/cli/commands/fleet/monitor.d.ts.map +1 -1
  188. package/dist/cli/commands/fleet/monitor.js +7 -5
  189. package/dist/cli/commands/fleet/monitor.js.map +1 -1
  190. package/dist/cli/commands/fleet.d.ts.map +1 -1
  191. package/dist/cli/commands/fleet.js +2 -1
  192. package/dist/cli/commands/fleet.js.map +1 -1
  193. package/dist/cli/commands/generate.d.ts.map +1 -1
  194. package/dist/cli/commands/generate.js +2 -1
  195. package/dist/cli/commands/generate.js.map +1 -1
  196. package/dist/cli/commands/improve/index.d.ts.map +1 -1
  197. package/dist/cli/commands/improve/index.js +12 -11
  198. package/dist/cli/commands/improve/index.js.map +1 -1
  199. package/dist/cli/commands/init.d.ts +24 -0
  200. package/dist/cli/commands/init.d.ts.map +1 -1
  201. package/dist/cli/commands/init.js +503 -11
  202. package/dist/cli/commands/init.js.map +1 -1
  203. package/dist/cli/commands/learn/index.d.ts.map +1 -1
  204. package/dist/cli/commands/learn/index.js +13 -12
  205. package/dist/cli/commands/learn/index.js.map +1 -1
  206. package/dist/cli/commands/monitor/alerts.d.ts.map +1 -1
  207. package/dist/cli/commands/monitor/alerts.js +2 -1
  208. package/dist/cli/commands/monitor/alerts.js.map +1 -1
  209. package/dist/cli/commands/patterns/index.d.ts.map +1 -1
  210. package/dist/cli/commands/patterns/index.js +20 -19
  211. package/dist/cli/commands/patterns/index.js.map +1 -1
  212. package/dist/cli/commands/quality/decision.d.ts.map +1 -1
  213. package/dist/cli/commands/quality/decision.js +9 -7
  214. package/dist/cli/commands/quality/decision.js.map +1 -1
  215. package/dist/cli/commands/quality/gate.d.ts.map +1 -1
  216. package/dist/cli/commands/quality/gate.js +10 -8
  217. package/dist/cli/commands/quality/gate.js.map +1 -1
  218. package/dist/cli/commands/quality/policy.d.ts.map +1 -1
  219. package/dist/cli/commands/quality/policy.js +10 -8
  220. package/dist/cli/commands/quality/policy.js.map +1 -1
  221. package/dist/cli/commands/quality/risk.d.ts.map +1 -1
  222. package/dist/cli/commands/quality/risk.js +5 -3
  223. package/dist/cli/commands/quality/risk.js.map +1 -1
  224. package/dist/cli/commands/quality/validate.d.ts.map +1 -1
  225. package/dist/cli/commands/quality/validate.js +10 -8
  226. package/dist/cli/commands/quality/validate.js.map +1 -1
  227. package/dist/cli/commands/quantization.d.ts +6 -0
  228. package/dist/cli/commands/quantization.d.ts.map +1 -0
  229. package/dist/cli/commands/quantization.js +188 -0
  230. package/dist/cli/commands/quantization.js.map +1 -0
  231. package/dist/cli/commands/routing/index.d.ts +0 -6
  232. package/dist/cli/commands/routing/index.d.ts.map +1 -1
  233. package/dist/cli/commands/routing/index.js +17 -16
  234. package/dist/cli/commands/routing/index.js.map +1 -1
  235. package/dist/cli/commands/run.d.ts.map +1 -1
  236. package/dist/cli/commands/run.js +2 -1
  237. package/dist/cli/commands/run.js.map +1 -1
  238. package/dist/cli/commands/skills/index.d.ts +51 -0
  239. package/dist/cli/commands/skills/index.d.ts.map +1 -0
  240. package/dist/cli/commands/skills/index.js +365 -0
  241. package/dist/cli/commands/skills/index.js.map +1 -0
  242. package/dist/cli/commands/test/debug.d.ts.map +1 -1
  243. package/dist/cli/commands/test/debug.js +2 -1
  244. package/dist/cli/commands/test/debug.js.map +1 -1
  245. package/dist/cli/commands/test/mutate.d.ts.map +1 -1
  246. package/dist/cli/commands/test/mutate.js +2 -1
  247. package/dist/cli/commands/test/mutate.js.map +1 -1
  248. package/dist/cli/commands/test/parallel.d.ts.map +1 -1
  249. package/dist/cli/commands/test/parallel.js +6 -4
  250. package/dist/cli/commands/test/parallel.js.map +1 -1
  251. package/dist/cli/commands/test/profile.d.ts.map +1 -1
  252. package/dist/cli/commands/test/profile.js +3 -2
  253. package/dist/cli/commands/test/profile.js.map +1 -1
  254. package/dist/cli/commands/test/queue.d.ts.map +1 -1
  255. package/dist/cli/commands/test/queue.js +2 -1
  256. package/dist/cli/commands/test/queue.js.map +1 -1
  257. package/dist/cli/commands/test/retry.d.ts.map +1 -1
  258. package/dist/cli/commands/test/retry.js +6 -4
  259. package/dist/cli/commands/test/retry.js.map +1 -1
  260. package/dist/cli/commands/test/trace.d.ts.map +1 -1
  261. package/dist/cli/commands/test/trace.js +2 -1
  262. package/dist/cli/commands/test/trace.js.map +1 -1
  263. package/dist/cli/commands/test/watch.d.ts.map +1 -1
  264. package/dist/cli/commands/test/watch.js +3 -2
  265. package/dist/cli/commands/test/watch.js.map +1 -1
  266. package/dist/cli/commands/workflow/cancel.d.ts.map +1 -1
  267. package/dist/cli/commands/workflow/cancel.js +2 -1
  268. package/dist/cli/commands/workflow/cancel.js.map +1 -1
  269. package/dist/cli/index-working.js +9 -8
  270. package/dist/cli/index-working.js.map +1 -1
  271. package/dist/cli/index.js +97 -1
  272. package/dist/cli/index.js.map +1 -1
  273. package/dist/core/EventBus.d.ts +38 -0
  274. package/dist/core/EventBus.d.ts.map +1 -1
  275. package/dist/core/EventBus.js +176 -31
  276. package/dist/core/EventBus.js.map +1 -1
  277. package/dist/core/FleetManager.d.ts +35 -1
  278. package/dist/core/FleetManager.d.ts.map +1 -1
  279. package/dist/core/FleetManager.js +121 -45
  280. package/dist/core/FleetManager.js.map +1 -1
  281. package/dist/core/MemoryManager.d.ts +19 -1
  282. package/dist/core/MemoryManager.d.ts.map +1 -1
  283. package/dist/core/MemoryManager.js +25 -1
  284. package/dist/core/MemoryManager.js.map +1 -1
  285. package/dist/core/coordination/OODACoordination.d.ts.map +1 -1
  286. package/dist/core/coordination/OODACoordination.js +2 -1
  287. package/dist/core/coordination/OODACoordination.js.map +1 -1
  288. package/dist/core/embeddings/EmbeddingCache.d.ts +134 -0
  289. package/dist/core/embeddings/EmbeddingCache.d.ts.map +1 -0
  290. package/dist/core/embeddings/EmbeddingCache.js +239 -0
  291. package/dist/core/embeddings/EmbeddingCache.js.map +1 -0
  292. package/dist/core/embeddings/EmbeddingGenerator.d.ts +224 -0
  293. package/dist/core/embeddings/EmbeddingGenerator.d.ts.map +1 -0
  294. package/dist/core/embeddings/EmbeddingGenerator.js +459 -0
  295. package/dist/core/embeddings/EmbeddingGenerator.js.map +1 -0
  296. package/dist/core/embeddings/index.d.ts +15 -0
  297. package/dist/core/embeddings/index.d.ts.map +1 -0
  298. package/dist/core/embeddings/index.js +22 -0
  299. package/dist/core/embeddings/index.js.map +1 -0
  300. package/dist/core/memory/AgentDBIntegration.d.ts +35 -0
  301. package/dist/core/memory/AgentDBIntegration.d.ts.map +1 -0
  302. package/dist/core/memory/AgentDBIntegration.js +75 -0
  303. package/dist/core/memory/AgentDBIntegration.js.map +1 -0
  304. package/dist/core/memory/AgentDBManager.d.ts +200 -0
  305. package/dist/core/memory/AgentDBManager.d.ts.map +1 -0
  306. package/dist/core/memory/AgentDBManager.js +246 -0
  307. package/dist/core/memory/AgentDBManager.js.map +1 -0
  308. package/dist/core/memory/AgentDBService.d.ts +160 -0
  309. package/dist/core/memory/AgentDBService.d.ts.map +1 -0
  310. package/dist/core/memory/AgentDBService.js +450 -0
  311. package/dist/core/memory/AgentDBService.js.map +1 -0
  312. package/dist/core/memory/RealAgentDBAdapter.d.ts +51 -0
  313. package/dist/core/memory/RealAgentDBAdapter.d.ts.map +1 -0
  314. package/dist/core/memory/RealAgentDBAdapter.js +231 -0
  315. package/dist/core/memory/RealAgentDBAdapter.js.map +1 -0
  316. package/dist/core/memory/ReasoningBankAdapter.d.ts +58 -0
  317. package/dist/core/memory/ReasoningBankAdapter.d.ts.map +1 -0
  318. package/dist/core/memory/ReasoningBankAdapter.js +77 -0
  319. package/dist/core/memory/ReasoningBankAdapter.js.map +1 -0
  320. package/dist/core/memory/SwarmMemoryManager.d.ts +75 -3
  321. package/dist/core/memory/SwarmMemoryManager.d.ts.map +1 -1
  322. package/dist/core/memory/SwarmMemoryManager.js +240 -55
  323. package/dist/core/memory/SwarmMemoryManager.js.map +1 -1
  324. package/dist/core/memory/index.d.ts +4 -0
  325. package/dist/core/memory/index.d.ts.map +1 -1
  326. package/dist/core/memory/index.js +9 -1
  327. package/dist/core/memory/index.js.map +1 -1
  328. package/dist/core/neural/NeuralTrainer.d.ts +137 -0
  329. package/dist/core/neural/NeuralTrainer.d.ts.map +1 -0
  330. package/dist/core/neural/NeuralTrainer.js +544 -0
  331. package/dist/core/neural/NeuralTrainer.js.map +1 -0
  332. package/dist/core/neural/index.d.ts +8 -0
  333. package/dist/core/neural/index.d.ts.map +1 -0
  334. package/dist/core/neural/index.js +24 -0
  335. package/dist/core/neural/index.js.map +1 -0
  336. package/dist/core/neural/types.d.ts +216 -0
  337. package/dist/core/neural/types.d.ts.map +1 -0
  338. package/dist/core/neural/types.js +8 -0
  339. package/dist/core/neural/types.js.map +1 -0
  340. package/dist/core/quantization/QuantizationManager.d.ts +83 -0
  341. package/dist/core/quantization/QuantizationManager.d.ts.map +1 -0
  342. package/dist/core/quantization/QuantizationManager.js +264 -0
  343. package/dist/core/quantization/QuantizationManager.js.map +1 -0
  344. package/dist/core/quantization/index.d.ts +5 -0
  345. package/dist/core/quantization/index.d.ts.map +1 -0
  346. package/dist/core/quantization/index.js +9 -0
  347. package/dist/core/quantization/index.js.map +1 -0
  348. package/dist/core/security/CertificateValidator.d.ts +130 -0
  349. package/dist/core/security/CertificateValidator.d.ts.map +1 -0
  350. package/dist/core/security/CertificateValidator.js +376 -0
  351. package/dist/core/security/CertificateValidator.js.map +1 -0
  352. package/dist/core/transport/QUICTransport.d.ts +62 -0
  353. package/dist/core/transport/QUICTransport.d.ts.map +1 -0
  354. package/dist/core/transport/QUICTransport.js +381 -0
  355. package/dist/core/transport/QUICTransport.js.map +1 -0
  356. package/dist/core/transport/SecureQUICTransport.d.ts +71 -0
  357. package/dist/core/transport/SecureQUICTransport.d.ts.map +1 -0
  358. package/dist/core/transport/SecureQUICTransport.js +253 -0
  359. package/dist/core/transport/SecureQUICTransport.js.map +1 -0
  360. package/dist/learning/AdvancedFeatureExtractor.d.ts +123 -0
  361. package/dist/learning/AdvancedFeatureExtractor.d.ts.map +1 -0
  362. package/dist/learning/AdvancedFeatureExtractor.js +423 -0
  363. package/dist/learning/AdvancedFeatureExtractor.js.map +1 -0
  364. package/dist/learning/FlakyPredictionModel.d.ts +11 -1
  365. package/dist/learning/FlakyPredictionModel.d.ts.map +1 -1
  366. package/dist/learning/FlakyPredictionModel.js +82 -35
  367. package/dist/learning/FlakyPredictionModel.js.map +1 -1
  368. package/dist/learning/FlakyTestDetector.d.ts +9 -0
  369. package/dist/learning/FlakyTestDetector.d.ts.map +1 -1
  370. package/dist/learning/FlakyTestDetector.js +28 -6
  371. package/dist/learning/FlakyTestDetector.js.map +1 -1
  372. package/dist/learning/ImprovementLoop.d.ts +16 -2
  373. package/dist/learning/ImprovementLoop.d.ts.map +1 -1
  374. package/dist/learning/ImprovementLoop.js +67 -8
  375. package/dist/learning/ImprovementLoop.js.map +1 -1
  376. package/dist/learning/ImprovementWorker.d.ts +83 -0
  377. package/dist/learning/ImprovementWorker.d.ts.map +1 -0
  378. package/dist/learning/ImprovementWorker.js +164 -0
  379. package/dist/learning/ImprovementWorker.js.map +1 -0
  380. package/dist/learning/NeuralPatternMatcher.d.ts +184 -0
  381. package/dist/learning/NeuralPatternMatcher.d.ts.map +1 -0
  382. package/dist/learning/NeuralPatternMatcher.js +702 -0
  383. package/dist/learning/NeuralPatternMatcher.js.map +1 -0
  384. package/dist/learning/NeuralTrainer.d.ts +209 -0
  385. package/dist/learning/NeuralTrainer.d.ts.map +1 -0
  386. package/dist/learning/NeuralTrainer.js +478 -0
  387. package/dist/learning/NeuralTrainer.js.map +1 -0
  388. package/dist/learning/index.d.ts +13 -7
  389. package/dist/learning/index.d.ts.map +1 -1
  390. package/dist/learning/index.js +27 -11
  391. package/dist/learning/index.js.map +1 -1
  392. package/dist/learning/types.d.ts +1 -0
  393. package/dist/learning/types.d.ts.map +1 -1
  394. package/dist/learning/types.js +16 -0
  395. package/dist/learning/types.js.map +1 -1
  396. package/dist/mcp/MCPToolRegistry.d.ts +34 -0
  397. package/dist/mcp/MCPToolRegistry.d.ts.map +1 -0
  398. package/dist/mcp/MCPToolRegistry.js +48 -0
  399. package/dist/mcp/MCPToolRegistry.js.map +1 -0
  400. package/dist/mcp/handlers/advanced/mutation-test-execute.d.ts +3 -3
  401. package/dist/mcp/handlers/advanced/mutation-test-execute.d.ts.map +1 -1
  402. package/dist/mcp/handlers/advanced/mutation-test-execute.js +5 -4
  403. package/dist/mcp/handlers/advanced/mutation-test-execute.js.map +1 -1
  404. package/dist/mcp/handlers/agent-spawn.d.ts.map +1 -1
  405. package/dist/mcp/handlers/agent-spawn.js +2 -1
  406. package/dist/mcp/handlers/agent-spawn.js.map +1 -1
  407. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.d.ts.map +1 -1
  408. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js +9 -8
  409. package/dist/mcp/handlers/analysis/coverageAnalyzeSublinear.js.map +1 -1
  410. package/dist/mcp/handlers/analysis/coverageGapsDetect.d.ts.map +1 -1
  411. package/dist/mcp/handlers/analysis/coverageGapsDetect.js +6 -5
  412. package/dist/mcp/handlers/analysis/coverageGapsDetect.js.map +1 -1
  413. package/dist/mcp/handlers/analysis/performance-monitor-realtime-handler.d.ts.map +1 -1
  414. package/dist/mcp/handlers/analysis/performance-monitor-realtime-handler.js +5 -4
  415. package/dist/mcp/handlers/analysis/performance-monitor-realtime-handler.js.map +1 -1
  416. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.d.ts.map +1 -1
  417. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js +8 -7
  418. package/dist/mcp/handlers/analysis/performanceBenchmarkRun.js.map +1 -1
  419. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.d.ts.map +1 -1
  420. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js +7 -6
  421. package/dist/mcp/handlers/analysis/performanceMonitorRealtime.js.map +1 -1
  422. package/dist/mcp/handlers/analysis/securityScanComprehensive.d.ts.map +1 -1
  423. package/dist/mcp/handlers/analysis/securityScanComprehensive.js +18 -21
  424. package/dist/mcp/handlers/analysis/securityScanComprehensive.js.map +1 -1
  425. package/dist/mcp/handlers/base-handler.d.ts.map +1 -1
  426. package/dist/mcp/handlers/base-handler.js +2 -9
  427. package/dist/mcp/handlers/base-handler.js.map +1 -1
  428. package/dist/mcp/handlers/chaos/chaos-inject-failure.d.ts.map +1 -1
  429. package/dist/mcp/handlers/chaos/chaos-inject-failure.js +4 -3
  430. package/dist/mcp/handlers/chaos/chaos-inject-failure.js.map +1 -1
  431. package/dist/mcp/handlers/chaos/chaos-inject-latency.d.ts.map +1 -1
  432. package/dist/mcp/handlers/chaos/chaos-inject-latency.js +6 -5
  433. package/dist/mcp/handlers/chaos/chaos-inject-latency.js.map +1 -1
  434. package/dist/mcp/handlers/coordination/event-emit.d.ts.map +1 -1
  435. package/dist/mcp/handlers/coordination/event-emit.js +2 -1
  436. package/dist/mcp/handlers/coordination/event-emit.js.map +1 -1
  437. package/dist/mcp/handlers/coordination/event-subscribe.d.ts.map +1 -1
  438. package/dist/mcp/handlers/coordination/event-subscribe.js +2 -1
  439. package/dist/mcp/handlers/coordination/event-subscribe.js.map +1 -1
  440. package/dist/mcp/handlers/coordination/workflow-checkpoint.d.ts.map +1 -1
  441. package/dist/mcp/handlers/coordination/workflow-checkpoint.js +2 -1
  442. package/dist/mcp/handlers/coordination/workflow-checkpoint.js.map +1 -1
  443. package/dist/mcp/handlers/coordination/workflow-create.d.ts.map +1 -1
  444. package/dist/mcp/handlers/coordination/workflow-create.js +2 -1
  445. package/dist/mcp/handlers/coordination/workflow-create.js.map +1 -1
  446. package/dist/mcp/handlers/coordination/workflow-execute.d.ts.map +1 -1
  447. package/dist/mcp/handlers/coordination/workflow-execute.js +2 -1
  448. package/dist/mcp/handlers/coordination/workflow-execute.js.map +1 -1
  449. package/dist/mcp/handlers/coordination/workflow-resume.d.ts.map +1 -1
  450. package/dist/mcp/handlers/coordination/workflow-resume.js +2 -1
  451. package/dist/mcp/handlers/coordination/workflow-resume.js.map +1 -1
  452. package/dist/mcp/handlers/fleet-init.d.ts.map +1 -1
  453. package/dist/mcp/handlers/fleet-init.js +2 -1
  454. package/dist/mcp/handlers/fleet-init.js.map +1 -1
  455. package/dist/mcp/handlers/fleet-status.d.ts.map +1 -1
  456. package/dist/mcp/handlers/fleet-status.js +31 -30
  457. package/dist/mcp/handlers/fleet-status.js.map +1 -1
  458. package/dist/mcp/handlers/integration/dependency-check.d.ts.map +1 -1
  459. package/dist/mcp/handlers/integration/dependency-check.js +3 -2
  460. package/dist/mcp/handlers/integration/dependency-check.js.map +1 -1
  461. package/dist/mcp/handlers/integration/integration-test-orchestrate.d.ts.map +1 -1
  462. package/dist/mcp/handlers/integration/integration-test-orchestrate.js +2 -1
  463. package/dist/mcp/handlers/integration/integration-test-orchestrate.js.map +1 -1
  464. package/dist/mcp/handlers/optimize-tests.d.ts.map +1 -1
  465. package/dist/mcp/handlers/optimize-tests.js +33 -32
  466. package/dist/mcp/handlers/optimize-tests.js.map +1 -1
  467. package/dist/mcp/handlers/predict-defects.d.ts.map +1 -1
  468. package/dist/mcp/handlers/predict-defects.js +46 -45
  469. package/dist/mcp/handlers/predict-defects.js.map +1 -1
  470. package/dist/mcp/handlers/prediction/deployment-readiness-check.d.ts.map +1 -1
  471. package/dist/mcp/handlers/prediction/deployment-readiness-check.js +24 -23
  472. package/dist/mcp/handlers/prediction/deployment-readiness-check.js.map +1 -1
  473. package/dist/mcp/handlers/prediction/predict-defects-ai.d.ts.map +1 -1
  474. package/dist/mcp/handlers/prediction/predict-defects-ai.js +10 -9
  475. package/dist/mcp/handlers/prediction/predict-defects-ai.js.map +1 -1
  476. package/dist/mcp/handlers/prediction/regression-risk-analyze.d.ts.map +1 -1
  477. package/dist/mcp/handlers/prediction/regression-risk-analyze.js +10 -9
  478. package/dist/mcp/handlers/prediction/regression-risk-analyze.js.map +1 -1
  479. package/dist/mcp/handlers/prediction/visual-test-regression.d.ts.map +1 -1
  480. package/dist/mcp/handlers/prediction/visual-test-regression.js +7 -6
  481. package/dist/mcp/handlers/prediction/visual-test-regression.js.map +1 -1
  482. package/dist/mcp/handlers/quality-analyze.d.ts.map +1 -1
  483. package/dist/mcp/handlers/quality-analyze.js +53 -52
  484. package/dist/mcp/handlers/quality-analyze.js.map +1 -1
  485. package/dist/mcp/handlers/task-orchestrate.d.ts.map +1 -1
  486. package/dist/mcp/handlers/task-orchestrate.js +19 -18
  487. package/dist/mcp/handlers/task-orchestrate.js.map +1 -1
  488. package/dist/mcp/handlers/test/test-execute-parallel.d.ts.map +1 -1
  489. package/dist/mcp/handlers/test/test-execute-parallel.js +7 -6
  490. package/dist/mcp/handlers/test/test-execute-parallel.js.map +1 -1
  491. package/dist/mcp/handlers/test/test-generate-enhanced.d.ts.map +1 -1
  492. package/dist/mcp/handlers/test/test-generate-enhanced.js +2 -1
  493. package/dist/mcp/handlers/test/test-generate-enhanced.js.map +1 -1
  494. package/dist/mcp/handlers/test/test-optimize-sublinear.d.ts.map +1 -1
  495. package/dist/mcp/handlers/test/test-optimize-sublinear.js +3 -2
  496. package/dist/mcp/handlers/test/test-optimize-sublinear.js.map +1 -1
  497. package/dist/mcp/handlers/test-execute.d.ts.map +1 -1
  498. package/dist/mcp/handlers/test-execute.js +11 -10
  499. package/dist/mcp/handlers/test-execute.js.map +1 -1
  500. package/dist/mcp/handlers/test-generate.d.ts.map +1 -1
  501. package/dist/mcp/handlers/test-generate.js +4 -3
  502. package/dist/mcp/handlers/test-generate.js.map +1 -1
  503. package/dist/mcp/server.d.ts +4 -4
  504. package/dist/mcp/services/AgentRegistry.d.ts.map +1 -1
  505. package/dist/mcp/services/AgentRegistry.js +9 -2
  506. package/dist/mcp/services/AgentRegistry.js.map +1 -1
  507. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.d.ts.map +1 -1
  508. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js +10 -9
  509. package/dist/mcp/streaming/CoverageAnalyzeStreamHandler.js.map +1 -1
  510. package/dist/mcp/streaming/StreamingMCPTool.d.ts.map +1 -1
  511. package/dist/mcp/streaming/StreamingMCPTool.js +2 -1
  512. package/dist/mcp/streaming/StreamingMCPTool.js.map +1 -1
  513. package/dist/mcp/streaming/TestExecuteStreamHandler.d.ts.map +1 -1
  514. package/dist/mcp/streaming/TestExecuteStreamHandler.js +6 -5
  515. package/dist/mcp/streaming/TestExecuteStreamHandler.js.map +1 -1
  516. package/dist/reasoning/TestTemplateCreator.d.ts +10 -2
  517. package/dist/reasoning/TestTemplateCreator.d.ts.map +1 -1
  518. package/dist/reasoning/TestTemplateCreator.js +81 -21
  519. package/dist/reasoning/TestTemplateCreator.js.map +1 -1
  520. package/dist/transport/QUICTransport.d.ts +340 -0
  521. package/dist/transport/QUICTransport.d.ts.map +1 -0
  522. package/dist/transport/QUICTransport.js +814 -0
  523. package/dist/transport/QUICTransport.js.map +1 -0
  524. package/dist/transport/UDPTransport.d.ts +348 -0
  525. package/dist/transport/UDPTransport.d.ts.map +1 -0
  526. package/dist/transport/UDPTransport.js +820 -0
  527. package/dist/transport/UDPTransport.js.map +1 -0
  528. package/dist/types/errors.d.ts +1 -1
  529. package/dist/types/index.d.ts +37 -0
  530. package/dist/types/index.d.ts.map +1 -1
  531. package/dist/types/index.js +2 -0
  532. package/dist/types/index.js.map +1 -1
  533. package/dist/types/pattern.types.d.ts +39 -3
  534. package/dist/types/pattern.types.d.ts.map +1 -1
  535. package/dist/types/quic.d.ts +339 -0
  536. package/dist/types/quic.d.ts.map +1 -0
  537. package/dist/types/quic.js +48 -0
  538. package/dist/types/quic.js.map +1 -0
  539. package/dist/utils/Config.js +3 -3
  540. package/dist/utils/Config.js.map +1 -1
  541. package/dist/utils/Database.d.ts +14 -0
  542. package/dist/utils/Database.d.ts.map +1 -1
  543. package/dist/utils/Database.js +51 -4
  544. package/dist/utils/Database.js.map +1 -1
  545. package/dist/utils/Logger.d.ts.map +1 -1
  546. package/dist/utils/Logger.js +111 -26
  547. package/dist/utils/Logger.js.map +1 -1
  548. package/dist/utils/ProcessExit.d.ts +23 -0
  549. package/dist/utils/ProcessExit.d.ts.map +1 -0
  550. package/dist/utils/ProcessExit.js +40 -0
  551. package/dist/utils/ProcessExit.js.map +1 -0
  552. package/dist/utils/SecureRandom.d.ts +171 -0
  553. package/dist/utils/SecureRandom.d.ts.map +1 -0
  554. package/dist/utils/SecureRandom.js +229 -0
  555. package/dist/utils/SecureRandom.js.map +1 -0
  556. package/dist/utils/SecureUrlValidator.d.ts +167 -0
  557. package/dist/utils/SecureUrlValidator.d.ts.map +1 -0
  558. package/dist/utils/SecureUrlValidator.js +306 -0
  559. package/dist/utils/SecureUrlValidator.js.map +1 -0
  560. package/dist/utils/SecureValidation.d.ts +131 -0
  561. package/dist/utils/SecureValidation.d.ts.map +1 -0
  562. package/dist/utils/SecureValidation.js +265 -0
  563. package/dist/utils/SecureValidation.js.map +1 -0
  564. package/dist/utils/validation.d.ts.map +1 -1
  565. package/dist/utils/validation.js +5 -4
  566. package/dist/utils/validation.js.map +1 -1
  567. package/package.json +31 -8
@@ -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.
@@ -0,0 +1,548 @@
1
+ ---
2
+ name: mobile-testing
3
+ description: Comprehensive mobile testing for iOS and Android platforms including gestures, sensors, permissions, device fragmentation, and performance. Use when testing native apps, hybrid apps, or mobile web, ensuring quality across 1000+ device variants.
4
+ version: 1.0.0
5
+ category: specialized-testing
6
+ tags:
7
+ - mobile-testing
8
+ - ios
9
+ - android
10
+ - appium
11
+ - device-fragmentation
12
+ - mobile-performance
13
+ - gestures
14
+ difficulty: intermediate
15
+ estimated_time: 90-120 minutes
16
+ author: agentic-qe
17
+ ---
18
+
19
+ # Mobile Testing
20
+
21
+ ## Core Principle
22
+
23
+ **60%+ of web traffic is mobile. Testing only desktop = ignoring majority of users.**
24
+
25
+ Mobile devices have unique challenges: device fragmentation (1000+ Android devices), platform differences (iOS vs Android), touch gestures, sensors, intermittent networks, and limited resources. Mobile testing ensures quality across this complex landscape.
26
+
27
+ ## What is Mobile Testing?
28
+
29
+ **Mobile Testing:** Validating functionality, usability, performance, and security of applications on mobile devices (smartphones, tablets) across multiple platforms, OS versions, and screen sizes.
30
+
31
+ **Why Critical:**
32
+ - 60%+ of global web traffic from mobile
33
+ - 1000+ Android device variants (fragmentation)
34
+ - Platform-specific behaviors (iOS ≠ Android)
35
+ - Mobile-specific interactions (gestures, sensors, permissions)
36
+ - Performance critical (slow networks, limited CPU/memory)
37
+ - App store review requirements
38
+
39
+ **Goal:** Flawless mobile experience across devices, platforms, and conditions.
40
+
41
+ ## Mobile App Types
42
+
43
+ ### 1. Native Apps
44
+
45
+ **iOS:** Swift/Objective-C, runs only on iOS
46
+ **Android:** Kotlin/Java, runs only on Android
47
+
48
+ **Characteristics:**
49
+ - Best performance
50
+ - Full access to device features
51
+ - Platform-specific UI (UIKit vs Material Design)
52
+ - Separate codebase per platform
53
+
54
+ **Testing Tools:**
55
+ - **iOS:** XCTest, XCUITest, EarlGrey
56
+ - **Android:** Espresso, UI Automator, Robolectric
57
+
58
+ ---
59
+
60
+ ### 2. Hybrid Apps
61
+
62
+ **Technologies:** React Native, Flutter, Ionic, Cordova
63
+
64
+ **Characteristics:**
65
+ - Single codebase for both platforms
66
+ - JavaScript/Dart + native bridges
67
+ - Good performance (near-native)
68
+ - Shared business logic, platform-specific UI
69
+
70
+ **Testing Tools:**
71
+ - Appium (cross-platform)
72
+ - Detox (React Native)
73
+ - Flutter Driver (Flutter)
74
+
75
+ ---
76
+
77
+ ### 3. Mobile Web
78
+
79
+ **PWAs, responsive websites in mobile browsers**
80
+
81
+ **Characteristics:**
82
+ - No app store submission
83
+ - Universal access via URL
84
+ - Limited device feature access
85
+ - Responsive design critical
86
+
87
+ **Testing Tools:**
88
+ - Playwright Mobile
89
+ - BrowserStack, Sauce Labs
90
+ - Chrome DevTools (mobile emulation)
91
+
92
+ ---
93
+
94
+ ## iOS vs Android Differences
95
+
96
+ ### Key Differences
97
+
98
+ | Aspect | iOS | Android |
99
+ |--------|-----|---------|
100
+ | **OS Versions** | 2-3 supported (high adoption) | 10+ in use (fragmentation) |
101
+ | **Devices** | ~40 iPhone/iPad models | 1000+ manufacturers |
102
+ | **Screen Sizes** | Predictable set | Vast variety |
103
+ | **UI Guidelines** | Human Interface Guidelines | Material Design |
104
+ | **Permissions** | Single prompt system | Granular runtime permissions |
105
+ | **Back Button** | Swipe/nav button | Hardware/software back button |
106
+ | **App Distribution** | App Store (strict review) | Google Play + sideloading |
107
+ | **Testing Tools** | XCUITest (native) | Espresso (native) |
108
+
109
+ ---
110
+
111
+ ## Mobile-Specific Testing
112
+
113
+ ### 1. Touch Gestures
114
+
115
+ **Gesture Types:**
116
+ ```
117
+ Tap → Single touch
118
+ Double Tap → Quick two taps
119
+ Long Press → Touch and hold (context menu)
120
+ Swipe → Slide finger (scroll, swipe between screens)
121
+ Pinch → Two fingers move apart (zoom in)
122
+ Zoom Out → Two fingers move together (zoom out)
123
+ Rotate → Two fingers rotate
124
+ Multi-Touch → Multiple simultaneous touches
125
+ ```
126
+
127
+ **Testing with Appium:**
128
+ ```javascript
129
+ // Tap
130
+ await driver.touchAction({
131
+ action: 'tap',
132
+ x: 100,
133
+ y: 200
134
+ });
135
+
136
+ // Swipe (scroll down)
137
+ await driver.touchAction([
138
+ { action: 'press', x: 200, y: 400 },
139
+ { action: 'moveTo', x: 200, y: 100 },
140
+ { action: 'release' }
141
+ ]);
142
+
143
+ // Pinch to zoom
144
+ const finger1 = [
145
+ { action: 'press', x: 100, y: 200 },
146
+ { action: 'moveTo', x: 50, y: 150 },
147
+ { action: 'release' }
148
+ ];
149
+ const finger2 = [
150
+ { action: 'press', x: 200, y: 200 },
151
+ { action: 'moveTo', x: 250, y: 250 },
152
+ { action: 'release' }
153
+ ];
154
+ await driver.multiTouchAction([finger1, finger2]);
155
+
156
+ // Long press
157
+ await driver.touchAction({
158
+ action: 'longPress',
159
+ x: 100,
160
+ y: 200,
161
+ duration: 2000 // 2 seconds
162
+ });
163
+ ```
164
+
165
+ ---
166
+
167
+ ### 2. Sensors Testing
168
+
169
+ **Device Sensors:**
170
+ - **GPS/Location:** Location services
171
+ - **Camera:** Photo/video capture
172
+ - **Microphone:** Audio recording
173
+ - **Accelerometer:** Device tilt/shake
174
+ - **Gyroscope:** Rotation detection
175
+ - **Proximity:** Screen off when near face
176
+ - **Ambient Light:** Brightness auto-adjust
177
+
178
+ **Testing Location:**
179
+ ```javascript
180
+ // Set GPS location
181
+ await driver.setGeoLocation({
182
+ latitude: 37.7749,
183
+ longitude: -122.4194,
184
+ altitude: 0
185
+ });
186
+
187
+ // Test location-based feature
188
+ const nearbyStores = await findElement('stores-list');
189
+ expect(nearbyStores.getText()).toContain('San Francisco');
190
+ ```
191
+
192
+ **Testing Camera/Gallery:**
193
+ ```javascript
194
+ // iOS: Push image to simulator
195
+ await driver.pushFile('/path/on/device/image.jpg', imageBase64);
196
+
197
+ // Android: Set location for gallery
198
+ await driver.execute('mobile: shell', {
199
+ command: 'am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:///path'
200
+ });
201
+
202
+ // Trigger camera/gallery picker
203
+ await driver.findElement('upload-photo-button').click();
204
+
205
+ // Verify image uploaded
206
+ expect(await driver.findElement('uploaded-image')).toBeDefined();
207
+ ```
208
+
209
+ ---
210
+
211
+ ### 3. Permissions Testing
212
+
213
+ **iOS Permissions Flow:**
214
+ ```javascript
215
+ // Request permission (iOS shows system alert)
216
+ await driver.findElement('enable-location').click();
217
+
218
+ // Handle iOS permission alert
219
+ const alert = await driver.getAlert();
220
+ expect(alert.getText()).toContain('allow location');
221
+ await alert.accept(); // or alert.dismiss()
222
+
223
+ // Verify permission granted
224
+ const locationEnabled = await driver.findElement('location-status');
225
+ expect(locationEnabled.getText()).toBe('Enabled');
226
+ ```
227
+
228
+ **Android Runtime Permissions:**
229
+ ```javascript
230
+ // Grant permission before test (Android)
231
+ await driver.execute('mobile: shell', {
232
+ command: 'pm grant com.example.app android.permission.CAMERA'
233
+ });
234
+
235
+ // Or handle permission dialog during test
236
+ await driver.findElement('take-photo').click();
237
+
238
+ // Wait for permission dialog
239
+ const permissionDialog = await driver.waitForElement('com.android.packageinstaller:id/permission_message');
240
+ await driver.findElement('com.android.packageinstaller:id/permission_allow_button').click();
241
+ ```
242
+
243
+ ---
244
+
245
+ ### 4. Network Conditions
246
+
247
+ **Test on Poor Networks:**
248
+ ```javascript
249
+ // Simulate 3G network
250
+ await driver.setNetworkConnection(4); // 3G
251
+
252
+ // Test app behavior
253
+ await driver.findElement('load-content').click();
254
+
255
+ const loadingIndicator = await driver.waitForElement('spinner', 5000);
256
+ expect(loadingIndicator).toBeDefined();
257
+
258
+ // Restore full network
259
+ await driver.setNetworkConnection(6); // WiFi + Data
260
+ ```
261
+
262
+ **Offline Mode Testing:**
263
+ ```javascript
264
+ // Disable network
265
+ await driver.toggleAirplaneMode();
266
+
267
+ // Test offline functionality
268
+ await driver.findElement('view-saved-items').click();
269
+ const items = await driver.findElements('saved-item');
270
+ expect(items.length).toBeGreaterThan(0);
271
+
272
+ // Verify offline banner
273
+ const banner = await driver.findElement('offline-banner');
274
+ expect(banner.getText()).toContain('No internet connection');
275
+
276
+ // Re-enable network
277
+ await driver.toggleAirplaneMode();
278
+ ```
279
+
280
+ ---
281
+
282
+ ## Device Fragmentation Strategy
283
+
284
+ ### Real Devices vs Emulators
285
+
286
+ **Emulators/Simulators:**
287
+ - **Pros:** Fast, free, easy to automate, unlimited devices
288
+ - **Cons:** Not 100% accurate, no real sensors, different performance
289
+
290
+ **Real Devices:**
291
+ - **Pros:** Accurate, real sensors, actual performance, real network
292
+ - **Cons:** Expensive, harder to maintain, slower
293
+
294
+ **Strategy:** Use emulators for fast feedback, real devices for critical paths
295
+
296
+ ---
297
+
298
+ ### Device Coverage Matrix
299
+
300
+ **Priority Tiers:**
301
+
302
+ **Tier 1 (Must Test):**
303
+ - Latest iPhone (iOS current version)
304
+ - Latest Samsung Galaxy (Android current version)
305
+ - iPad (latest)
306
+ - ~60% of user base
307
+
308
+ **Tier 2 (Should Test):**
309
+ - iPhone N-1, N-2 (previous 2 generations)
310
+ - Samsung Galaxy N-1, N-2
311
+ - Google Pixel (latest)
312
+ - One popular low-end Android
313
+ - ~30% of user base
314
+
315
+ **Tier 3 (Nice to Test):**
316
+ - Older devices (N-3, N-4)
317
+ - Various manufacturers (Xiaomi, OnePlus, etc.)
318
+ - Tablets
319
+ - ~10% of user base
320
+
321
+ **Example Matrix:**
322
+ ```
323
+ Device | OS Version | Screen Size | Priority
324
+ -----------------------|------------|-------------|----------
325
+ iPhone 15 Pro | iOS 17 | 6.1" | Tier 1
326
+ iPhone 14 | iOS 16 | 6.1" | Tier 2
327
+ iPhone 13 | iOS 15 | 6.1" | Tier 2
328
+ iPad Pro | iOS 17 | 12.9" | Tier 1
329
+ Samsung Galaxy S24 | Android 14 | 6.2" | Tier 1
330
+ Samsung Galaxy S23 | Android 13 | 6.1" | Tier 2
331
+ Google Pixel 8 | Android 14 | 6.2" | Tier 2
332
+ Xiaomi Redmi Note 12 | Android 13 | 6.67" | Tier 3
333
+ ```
334
+
335
+ ---
336
+
337
+ ## Mobile Automation with Appium
338
+
339
+ ### Setup
340
+
341
+ **Install Appium:**
342
+ ```bash
343
+ npm install -g appium
344
+ appium driver install xcuitest # iOS
345
+ appium driver install uiautomator2 # Android
346
+ ```
347
+
348
+ **Capabilities (iOS):**
349
+ ```javascript
350
+ const caps = {
351
+ platformName: 'iOS',
352
+ 'appium:platformVersion': '17.0',
353
+ 'appium:deviceName': 'iPhone 15',
354
+ 'appium:automationName': 'XCUITest',
355
+ 'appium:app': '/path/to/app.ipa',
356
+ 'appium:noReset': true,
357
+ 'appium:fullReset': false
358
+ };
359
+ ```
360
+
361
+ **Capabilities (Android):**
362
+ ```javascript
363
+ const caps = {
364
+ platformName: 'Android',
365
+ 'appium:platformVersion': '14',
366
+ 'appium:deviceName': 'Pixel 8',
367
+ 'appium:automationName': 'UiAutomator2',
368
+ 'appium:app': '/path/to/app.apk',
369
+ 'appium:appPackage': 'com.example.app',
370
+ 'appium:appActivity': '.MainActivity'
371
+ };
372
+ ```
373
+
374
+ ---
375
+
376
+ ### Cross-Platform Tests
377
+
378
+ **Page Object Pattern:**
379
+ ```javascript
380
+ class LoginPage {
381
+ get emailInput() {
382
+ return platform === 'iOS'
383
+ ? $('~email-input') // accessibility id
384
+ : $('android=new UiSelector().resourceId("email")');
385
+ }
386
+
387
+ get passwordInput() {
388
+ return platform === 'iOS'
389
+ ? $('~password-input')
390
+ : $('android=new UiSelector().resourceId("password")');
391
+ }
392
+
393
+ get loginButton() {
394
+ return platform === 'iOS'
395
+ ? $('~login-button')
396
+ : $('android=new UiSelector().text("Login")');
397
+ }
398
+
399
+ async login(email, password) {
400
+ await this.emailInput.setValue(email);
401
+ await this.passwordInput.setValue(password);
402
+ await this.loginButton.click();
403
+ }
404
+ }
405
+
406
+ // Use in tests
407
+ test('user can login', async () => {
408
+ const loginPage = new LoginPage();
409
+ await loginPage.login('test@example.com', 'password123');
410
+
411
+ expect(await dashboardPage.isDisplayed()).toBe(true);
412
+ });
413
+ ```
414
+
415
+ ---
416
+
417
+ ## Mobile Performance Testing
418
+
419
+ ### Key Metrics
420
+
421
+ **Performance Goals:**
422
+ - **App Launch:** < 2 seconds
423
+ - **Screen Transition:** < 300ms
424
+ - **Network Request:** < 1 second
425
+ - **Frame Rate:** 60 FPS (no jank)
426
+ - **Battery Drain:** < 5%/hour (background)
427
+ - **Memory Usage:** < 150MB (typical app)
428
+
429
+ **Measuring with Appium:**
430
+ ```javascript
431
+ // Get performance data
432
+ const perfData = await driver.getPerformanceData('com.example.app', 'cpuinfo', 5);
433
+ console.log('CPU Usage:', perfData);
434
+
435
+ const memData = await driver.getPerformanceData('com.example.app', 'memoryinfo', 5);
436
+ console.log('Memory Usage:', memData);
437
+ ```
438
+
439
+ **iOS Instruments:**
440
+ ```bash
441
+ # Measure launch time
442
+ instruments -t "Time Profiler" -D trace.trace -w "iPhone 15" MyApp.app
443
+
444
+ # Measure memory
445
+ instruments -t "Allocations" -D memory.trace -w "iPhone 15" MyApp.app
446
+ ```
447
+
448
+ **Android Profiler:**
449
+ ```bash
450
+ # Measure CPU
451
+ adb shell dumpsys cpuinfo | grep com.example.app
452
+
453
+ # Measure memory
454
+ adb shell dumpsys meminfo com.example.app
455
+
456
+ # Measure battery
457
+ adb shell dumpsys batterystats --reset
458
+ # Use app for 1 hour
459
+ adb shell dumpsys batterystats com.example.app
460
+ ```
461
+
462
+ ---
463
+
464
+ ## Using with QE Agents
465
+
466
+ ### qe-mobile-tester: Intelligent Cross-Platform Testing
467
+
468
+ ```typescript
469
+ // Agent orchestrates mobile testing across devices
470
+ const results = await agent.executeMobileTests({
471
+ platforms: ['iOS', 'Android'],
472
+ deviceTiers: [1, 2], // Tier 1 and 2 devices
473
+ tests: 'regression-suite',
474
+ parallelDevices: 5
475
+ });
476
+
477
+ // Returns:
478
+ // {
479
+ // iOS: {
480
+ // iPhone15: { passed: 47, failed: 0 },
481
+ // iPhone14: { passed: 46, failed: 1 }
482
+ // },
483
+ // Android: {
484
+ // GalaxyS24: { passed: 45, failed: 2 },
485
+ // Pixel8: { passed: 47, failed: 0 }
486
+ // },
487
+ // totalTime: '15 minutes',
488
+ // deviceFarmCost: '$8.50'
489
+ // }
490
+ ```
491
+
492
+ ### Device Farm Integration
493
+
494
+ ```typescript
495
+ // Agent connects to BrowserStack/Sauce Labs
496
+ await agent.runOnDeviceFarm({
497
+ service: 'browserstack',
498
+ devices: [
499
+ 'iPhone 15 - iOS 17',
500
+ 'Samsung Galaxy S24 - Android 14',
501
+ 'iPad Pro - iOS 17'
502
+ ],
503
+ tests: 'smoke-suite',
504
+ recordVideo: true,
505
+ captureNetworkLogs: true
506
+ });
507
+
508
+ // Automatically distributes tests across devices
509
+ // Captures screenshots, videos, logs
510
+ // Generates consolidated report
511
+ ```
512
+
513
+ ---
514
+
515
+ ## Related Skills
516
+
517
+ **Core Testing:**
518
+ - [agentic-quality-engineering](../agentic-quality-engineering/) - Mobile testing agents
519
+ - [regression-testing](../regression-testing/) - Mobile regression
520
+ - [performance-testing](../performance-testing/) - Mobile performance
521
+
522
+ **Specialized:**
523
+ - [accessibility-testing](../accessibility-testing/) - Mobile a11y (VoiceOver, TalkBack)
524
+ - [security-testing](../security-testing/) - Mobile security
525
+ - [compatibility-testing](../compatibility-testing/) - Device compatibility
526
+
527
+ ---
528
+
529
+ ## Remember
530
+
531
+ **Mobile is not a smaller desktop - it's a different platform.**
532
+
533
+ Unique challenges:
534
+ - Device fragmentation (1000+ devices)
535
+ - Touch gestures, not mouse clicks
536
+ - Sensors, permissions, offline scenarios
537
+ - Intermittent networks, battery constraints
538
+ - Platform differences (iOS ≠ Android)
539
+
540
+ **Test on real devices for critical flows.**
541
+
542
+ Emulators catch 80% of bugs, but real devices are essential for:
543
+ - Actual performance
544
+ - Real sensor behavior
545
+ - Network reliability
546
+ - Platform-specific quirks
547
+
548
+ **With Agents:** `qe-mobile-tester` orchestrates testing across device farms, manages platform differences, and provides comprehensive mobile testing at scale. Use agents to test 10+ devices in parallel and reduce mobile testing time from days to hours.