@silasfmartins/testhub 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/.github/copilot-instructions.md +520 -0
  2. package/biome.json +37 -0
  3. package/dist/index.d.ts +45 -0
  4. package/dist/index.js +169 -0
  5. package/dist/scripts/consumer-postinstall.d.ts +15 -0
  6. package/dist/scripts/consumer-postinstall.js +785 -0
  7. package/dist/scripts/generate-docs.d.ts +16 -0
  8. package/dist/scripts/generate-docs.js +1363 -0
  9. package/dist/scripts/generate-index.d.ts +2 -0
  10. package/dist/scripts/generate-index.js +314 -0
  11. package/dist/scripts/init-api.d.ts +2 -0
  12. package/dist/scripts/init-api.js +525 -0
  13. package/dist/scripts/init-banco.d.ts +2 -0
  14. package/dist/scripts/init-banco.js +347 -0
  15. package/dist/scripts/init-frontend.d.ts +2 -0
  16. package/dist/scripts/init-frontend.js +627 -0
  17. package/dist/scripts/init-mobile.d.ts +2 -0
  18. package/dist/scripts/init-mobile.js +481 -0
  19. package/dist/scripts/init-scenarios.d.ts +2 -0
  20. package/dist/scripts/init-scenarios.js +846 -0
  21. package/dist/scripts/init-ssh.d.ts +2 -0
  22. package/dist/scripts/init-ssh.js +639 -0
  23. package/dist/scripts/package-versions.d.ts +57 -0
  24. package/dist/scripts/package-versions.js +768 -0
  25. package/dist/scripts/postinstall.d.ts +1 -0
  26. package/dist/scripts/postinstall.js +527 -0
  27. package/dist/scripts/robust-build.d.ts +7 -0
  28. package/dist/scripts/robust-build.js +88 -0
  29. package/dist/scripts/setup-local-packages.d.ts +31 -0
  30. package/dist/scripts/setup-local-packages.js +237 -0
  31. package/dist/scripts/smart-override.d.ts +2 -0
  32. package/dist/scripts/smart-override.js +1360 -0
  33. package/dist/scripts/sync-configs.d.ts +27 -0
  34. package/dist/scripts/sync-configs.js +248 -0
  35. package/dist/scripts/test-biome-parse.d.ts +5 -0
  36. package/dist/scripts/test-biome-parse.js +84 -0
  37. package/dist/scripts/ultracite-setup.d.ts +4 -0
  38. package/dist/scripts/ultracite-setup.js +310 -0
  39. package/dist/scripts/update-all-init-scripts.d.ts +2 -0
  40. package/dist/scripts/update-all-init-scripts.js +52 -0
  41. package/dist/scripts/update-biome-schema.d.ts +15 -0
  42. package/dist/scripts/update-biome-schema.js +124 -0
  43. package/dist/src/AutoCoreFacade.d.ts +145 -0
  44. package/dist/src/AutoCoreFacade.js +217 -0
  45. package/dist/src/api/ApiActions.d.ts +297 -0
  46. package/dist/src/api/ApiActions.js +1905 -0
  47. package/dist/src/api/Certificate.d.ts +60 -0
  48. package/dist/src/api/Certificate.js +79 -0
  49. package/dist/src/api/JsonResponse.d.ts +116 -0
  50. package/dist/src/api/JsonResponse.js +206 -0
  51. package/dist/src/appium/DeviceFarmViewer.d.ts +79 -0
  52. package/dist/src/appium/DeviceFarmViewer.js +1083 -0
  53. package/dist/src/appium/MobileActions.d.ts +347 -0
  54. package/dist/src/appium/MobileActions.js +1632 -0
  55. package/dist/src/appium/MobileConnection.d.ts +160 -0
  56. package/dist/src/appium/MobileConnection.js +772 -0
  57. package/dist/src/config/envLoader.d.ts +123 -0
  58. package/dist/src/config/envLoader.js +361 -0
  59. package/dist/src/config/jest-safe-setup.d.ts +19 -0
  60. package/dist/src/config/jest-safe-setup.js +369 -0
  61. package/dist/src/config/timeouts.d.ts +32 -0
  62. package/dist/src/config/timeouts.js +38 -0
  63. package/dist/src/desktop/DesktopActions.d.ts +46 -0
  64. package/dist/src/desktop/DesktopActions.js +398 -0
  65. package/dist/src/desktop/DesktopConnection.d.ts +32 -0
  66. package/dist/src/desktop/DesktopConnection.js +84 -0
  67. package/dist/src/domain/entities/TestExecution.d.ts +117 -0
  68. package/dist/src/domain/entities/TestExecution.js +150 -0
  69. package/dist/src/domain/entities/TestReport.d.ts +114 -0
  70. package/dist/src/domain/entities/TestReport.js +179 -0
  71. package/dist/src/domain/repositories/ITestRepository.d.ts +196 -0
  72. package/dist/src/domain/repositories/ITestRepository.js +14 -0
  73. package/dist/src/domain/schemas/ValidationSchemas.d.ts +159 -0
  74. package/dist/src/domain/schemas/ValidationSchemas.js +181 -0
  75. package/dist/src/functions/errors/BaseError.d.ts +78 -0
  76. package/dist/src/functions/errors/BaseError.js +245 -0
  77. package/dist/src/functions/errors/ConfigurationError.d.ts +16 -0
  78. package/dist/src/functions/errors/ConfigurationError.js +48 -0
  79. package/dist/src/functions/errors/ErrorCatalog.d.ts +148 -0
  80. package/dist/src/functions/errors/ErrorCatalog.js +157 -0
  81. package/dist/src/functions/errors/GlobalErrorHandler.d.ts +101 -0
  82. package/dist/src/functions/errors/GlobalErrorHandler.js +281 -0
  83. package/dist/src/functions/errors/IntegrationError.d.ts +17 -0
  84. package/dist/src/functions/errors/IntegrationError.js +51 -0
  85. package/dist/src/functions/errors/SecurityError.d.ts +14 -0
  86. package/dist/src/functions/errors/SecurityError.js +42 -0
  87. package/dist/src/functions/errors/SystemError.d.ts +12 -0
  88. package/dist/src/functions/errors/SystemError.js +36 -0
  89. package/dist/src/functions/errors/ValidationError.d.ts +14 -0
  90. package/dist/src/functions/errors/ValidationError.js +61 -0
  91. package/dist/src/functions/errors/index.d.ts +12 -0
  92. package/dist/src/functions/errors/index.js +13 -0
  93. package/dist/src/global-setup.d.ts +1 -0
  94. package/dist/src/global-setup.js +1037 -0
  95. package/dist/src/helpers/BancoActions.d.ts +188 -0
  96. package/dist/src/helpers/BancoActions.js +581 -0
  97. package/dist/src/helpers/EnviromentHelper.d.ts +17 -0
  98. package/dist/src/helpers/EnviromentHelper.js +66 -0
  99. package/dist/src/helpers/ParallelExecutionHelper.d.ts +183 -0
  100. package/dist/src/helpers/ParallelExecutionHelper.js +375 -0
  101. package/dist/src/helpers/SyncSignal.d.ts +15 -0
  102. package/dist/src/helpers/SyncSignal.js +44 -0
  103. package/dist/src/hubdocs/CategoryDetector.d.ts +83 -0
  104. package/dist/src/hubdocs/CategoryDetector.js +401 -0
  105. package/dist/src/hubdocs/DirectStatementInterceptor.d.ts +54 -0
  106. package/dist/src/hubdocs/DirectStatementInterceptor.js +243 -0
  107. package/dist/src/hubdocs/ExecutionTracker.d.ts +107 -0
  108. package/dist/src/hubdocs/ExecutionTracker.js +702 -0
  109. package/dist/src/hubdocs/HubDocs.d.ts +395 -0
  110. package/dist/src/hubdocs/HubDocs.js +3586 -0
  111. package/dist/src/hubdocs/StatementMethodFilter.d.ts +71 -0
  112. package/dist/src/hubdocs/StatementMethodFilter.js +618 -0
  113. package/dist/src/hubdocs/StatementTracker.d.ts +417 -0
  114. package/dist/src/hubdocs/StatementTracker.js +2419 -0
  115. package/dist/src/hubdocs/SwaggerGenerator.d.ts +59 -0
  116. package/dist/src/hubdocs/SwaggerGenerator.js +405 -0
  117. package/dist/src/hubdocs/index.d.ts +9 -0
  118. package/dist/src/hubdocs/index.js +9 -0
  119. package/dist/src/hubdocs/types.d.ts +114 -0
  120. package/dist/src/hubdocs/types.js +5 -0
  121. package/dist/src/infrastructure/DependencyContainer.d.ts +142 -0
  122. package/dist/src/infrastructure/DependencyContainer.js +250 -0
  123. package/dist/src/infrastructure/adapters/AppiumAdapter.d.ts +168 -0
  124. package/dist/src/infrastructure/adapters/AppiumAdapter.js +468 -0
  125. package/dist/src/infrastructure/adapters/OracleAdapter.d.ts +150 -0
  126. package/dist/src/infrastructure/adapters/OracleAdapter.js +388 -0
  127. package/dist/src/infrastructure/adapters/PlaywrightAdapter.d.ts +192 -0
  128. package/dist/src/infrastructure/adapters/PlaywrightAdapter.js +382 -0
  129. package/dist/src/infrastructure/adapters/SSHAdapter.d.ts +141 -0
  130. package/dist/src/infrastructure/adapters/SSHAdapter.js +428 -0
  131. package/dist/src/interfaces.d.ts +501 -0
  132. package/dist/src/interfaces.js +25 -0
  133. package/dist/src/internal/fakes/__fake-actions__.d.ts +17 -0
  134. package/dist/src/internal/fakes/__fake-actions__.js +21 -0
  135. package/dist/src/internal/fakes/__forbidden__.d.ts +10 -0
  136. package/dist/src/internal/fakes/__forbidden__.js +18 -0
  137. package/dist/src/internal/fakes/__honeypot__.d.ts +15 -0
  138. package/dist/src/internal/fakes/__honeypot__.js +24 -0
  139. package/dist/src/octane/OctaneReporter.d.ts +13 -0
  140. package/dist/src/octane/OctaneReporter.js +61 -0
  141. package/dist/src/playwright/CryptoActions.d.ts +20 -0
  142. package/dist/src/playwright/CryptoActions.js +75 -0
  143. package/dist/src/playwright/EnhancedWebActions.d.ts +7 -0
  144. package/dist/src/playwright/EnhancedWebActions.js +65 -0
  145. package/dist/src/playwright/WebActions.d.ts +1599 -0
  146. package/dist/src/playwright/WebActions.js +11788 -0
  147. package/dist/src/playwright/actions/ActionTimeline.d.ts +36 -0
  148. package/dist/src/playwright/actions/ActionTimeline.js +101 -0
  149. package/dist/src/playwright/actions/RecoveryQueue.d.ts +82 -0
  150. package/dist/src/playwright/actions/RecoveryQueue.js +130 -0
  151. package/dist/src/playwright/actions/SelectorCache.d.ts +53 -0
  152. package/dist/src/playwright/actions/SelectorCache.js +96 -0
  153. package/dist/src/playwright/actions/index.d.ts +13 -0
  154. package/dist/src/playwright/actions/index.js +14 -0
  155. package/dist/src/playwright/actions/types.d.ts +147 -0
  156. package/dist/src/playwright/actions/types.js +5 -0
  157. package/dist/src/playwright/fixtures.d.ts +112 -0
  158. package/dist/src/playwright/fixtures.js +718 -0
  159. package/dist/src/playwright/network-logs-reporter.d.ts +7 -0
  160. package/dist/src/playwright/network-logs-reporter.js +66 -0
  161. package/dist/src/playwright/registerRecoveryWrappers.d.ts +1 -0
  162. package/dist/src/playwright/registerRecoveryWrappers.js +54 -0
  163. package/dist/src/security/BuildSecurity.d.ts +12 -0
  164. package/dist/src/security/BuildSecurity.js +138 -0
  165. package/dist/src/security/EulaProtection.d.ts +70 -0
  166. package/dist/src/security/EulaProtection.js +155 -0
  167. package/dist/src/security/HoneypotManager.d.ts +46 -0
  168. package/dist/src/security/HoneypotManager.js +234 -0
  169. package/dist/src/security/KeysManager.d.ts +36 -0
  170. package/dist/src/security/KeysManager.js +158 -0
  171. package/dist/src/security/ProofOfWorkIntegration.d.ts +64 -0
  172. package/dist/src/security/ProofOfWorkIntegration.js +206 -0
  173. package/dist/src/security/SecurityValidation.d.ts +21 -0
  174. package/dist/src/security/SecurityValidation.js +163 -0
  175. package/dist/src/security/SourceMapProtection.d.ts +55 -0
  176. package/dist/src/security/SourceMapProtection.js +220 -0
  177. package/dist/src/security/protector.d.ts +1 -0
  178. package/dist/src/security/protector.js +97 -0
  179. package/dist/src/ssh/SSHActions.d.ts +262 -0
  180. package/dist/src/ssh/SSHActions.js +790 -0
  181. package/dist/src/ssh/SSHClient.d.ts +99 -0
  182. package/dist/src/ssh/SSHClient.js +409 -0
  183. package/dist/src/statements/BaseStatement.d.ts +38 -0
  184. package/dist/src/statements/BaseStatement.js +78 -0
  185. package/dist/src/testContext/AuthStateManager.d.ts +93 -0
  186. package/dist/src/testContext/AuthStateManager.js +256 -0
  187. package/dist/src/testContext/CoverageManager.d.ts +198 -0
  188. package/dist/src/testContext/CoverageManager.js +917 -0
  189. package/dist/src/testContext/TestAnnotations.d.ts +476 -0
  190. package/dist/src/testContext/TestAnnotations.js +2647 -0
  191. package/dist/src/testContext/TestContext.d.ts +138 -0
  192. package/dist/src/testContext/TestContext.js +369 -0
  193. package/dist/src/testContext/UnifiedHtmlGenerator.d.ts +7 -0
  194. package/dist/src/testContext/UnifiedHtmlGenerator.js +264 -0
  195. package/dist/src/testContext/UnifiedReportManager.d.ts +211 -0
  196. package/dist/src/testContext/UnifiedReportManager.js +1206 -0
  197. package/dist/src/testhub/DynamicConfigManager.d.ts +121 -0
  198. package/dist/src/testhub/DynamicConfigManager.js +320 -0
  199. package/dist/src/testhub/SystemsManager.d.ts +119 -0
  200. package/dist/src/testhub/SystemsManager.js +365 -0
  201. package/dist/src/testhub/TestHubClient.d.ts +335 -0
  202. package/dist/src/testhub/TestHubClient.js +1215 -0
  203. package/dist/src/testhub/TestHubReporter.d.ts +62 -0
  204. package/dist/src/testhub/TestHubReporter.js +576 -0
  205. package/dist/src/testhub/TestHubVars.d.ts +116 -0
  206. package/dist/src/testhub/TestHubVars.js +273 -0
  207. package/dist/src/utils/ActionInterceptor.d.ts +59 -0
  208. package/dist/src/utils/ActionInterceptor.js +741 -0
  209. package/dist/src/utils/ArtifactsCompressor.d.ts +43 -0
  210. package/dist/src/utils/ArtifactsCompressor.js +181 -0
  211. package/dist/src/utils/AutoLogsFinal.d.ts +47 -0
  212. package/dist/src/utils/AutoLogsFinal.js +148 -0
  213. package/dist/src/utils/CodeGenSession.d.ts +114 -0
  214. package/dist/src/utils/CodeGenSession.js +264 -0
  215. package/dist/src/utils/ConfigLogger.d.ts +133 -0
  216. package/dist/src/utils/ConfigLogger.js +611 -0
  217. package/dist/src/utils/CustomReporter.d.ts +22 -0
  218. package/dist/src/utils/CustomReporter.js +352 -0
  219. package/dist/src/utils/DataStore.d.ts +171 -0
  220. package/dist/src/utils/DataStore.js +484 -0
  221. package/dist/src/utils/DatabaseInterceptor.d.ts +19 -0
  222. package/dist/src/utils/DatabaseInterceptor.js +295 -0
  223. package/dist/src/utils/DateHelper.d.ts +16 -0
  224. package/dist/src/utils/DateHelper.js +120 -0
  225. package/dist/src/utils/DateValidator.d.ts +4 -0
  226. package/dist/src/utils/DateValidator.js +51 -0
  227. package/dist/src/utils/DocumentGenerator.d.ts +35 -0
  228. package/dist/src/utils/DocumentGenerator.js +129 -0
  229. package/dist/src/utils/EvidenceCapture.d.ts +90 -0
  230. package/dist/src/utils/EvidenceCapture.js +600 -0
  231. package/dist/src/utils/EvidenceReportGenerator.d.ts +70 -0
  232. package/dist/src/utils/EvidenceReportGenerator.js +799 -0
  233. package/dist/src/utils/FrameManagementUtil.d.ts +42 -0
  234. package/dist/src/utils/FrameManagementUtil.js +75 -0
  235. package/dist/src/utils/GlobalStatementsInterceptor.d.ts +1 -0
  236. package/dist/src/utils/GlobalStatementsInterceptor.js +1 -0
  237. package/dist/src/utils/HTMLTemplate.d.ts +1 -0
  238. package/dist/src/utils/HTMLTemplate.js +1034 -0
  239. package/dist/src/utils/InterceptacaoMagica.d.ts +23 -0
  240. package/dist/src/utils/InterceptacaoMagica.js +365 -0
  241. package/dist/src/utils/LogSanitizer.d.ts +35 -0
  242. package/dist/src/utils/LogSanitizer.js +110 -0
  243. package/dist/src/utils/Logger.d.ts +65 -0
  244. package/dist/src/utils/Logger.js +284 -0
  245. package/dist/src/utils/McpLocalClient.d.ts +141 -0
  246. package/dist/src/utils/McpLocalClient.js +871 -0
  247. package/dist/src/utils/PDFEvidenceGenerator.d.ts +20 -0
  248. package/dist/src/utils/PDFEvidenceGenerator.js +156 -0
  249. package/dist/src/utils/SpecFileAnalyzer.d.ts +35 -0
  250. package/dist/src/utils/SpecFileAnalyzer.js +209 -0
  251. package/dist/src/utils/StatementInterceptor.d.ts +18 -0
  252. package/dist/src/utils/StatementInterceptor.js +87 -0
  253. package/dist/src/utils/StatementLogger.d.ts +33 -0
  254. package/dist/src/utils/StatementLogger.js +113 -0
  255. package/dist/src/utils/StatementsInterceptor.d.ts +1 -0
  256. package/dist/src/utils/StatementsInterceptor.js +1 -0
  257. package/dist/src/utils/TeamsFlushHook.d.ts +17 -0
  258. package/dist/src/utils/TeamsFlushHook.js +168 -0
  259. package/dist/src/utils/TerminalLogCapture.d.ts +158 -0
  260. package/dist/src/utils/TerminalLogCapture.js +531 -0
  261. package/dist/src/utils/TestMethodLogger.d.ts +70 -0
  262. package/dist/src/utils/TestMethodLogger.js +95 -0
  263. package/dist/src/utils/UnifiedTeardown.d.ts +4 -0
  264. package/dist/src/utils/UnifiedTeardown.js +400 -0
  265. package/dist/src/utils/XPathCatalog.d.ts +152 -0
  266. package/dist/src/utils/XPathCatalog.js +350 -0
  267. package/dist/src/utils/generators.d.ts +90 -0
  268. package/dist/src/utils/generators.js +167 -0
  269. package/dist/src/utils/testRecovery/ResilientPlaywright.d.ts +152 -0
  270. package/dist/src/utils/testRecovery/ResilientPlaywright.js +715 -0
  271. package/dist/src/utils/testRecovery/TestRecoveryClient.d.ts +801 -0
  272. package/dist/src/utils/testRecovery/TestRecoveryClient.js +1415 -0
  273. package/dist/src/utils/testRecovery/autoFixCode.d.ts +65 -0
  274. package/dist/src/utils/testRecovery/autoFixCode.js +32 -0
  275. package/dist/vitest.config.d.ts +2 -0
  276. package/dist/vitest.config.js +59 -0
  277. package/dist/wdio.conf.d.ts +1 -0
  278. package/dist/wdio.conf.js +420 -0
  279. package/package.json +137 -0
  280. package/protect-loader.mjs +643 -0
  281. package/scripts/consumer-postinstall.ts +975 -0
  282. package/scripts/generate-index.ts +343 -0
  283. package/scripts/init-api.ts +613 -0
  284. package/scripts/init-banco.ts +437 -0
  285. package/scripts/init-frontend.ts +727 -0
  286. package/scripts/init-mobile.ts +558 -0
  287. package/scripts/init-scenarios.ts +925 -0
  288. package/scripts/init-ssh.ts +734 -0
  289. package/scripts/package-versions.ts +978 -0
  290. package/scripts/postinstall.ts +605 -0
  291. package/scripts/smart-override.ts +1675 -0
  292. package/scripts/sync-configs.ts +302 -0
  293. package/scripts/ultracite-setup.ts +370 -0
  294. package/src/types/globals.d.ts +48 -0
  295. package/tsconfig.json +29 -0
  296. package/types/autocore-sync-signal.d.ts +10 -0
@@ -0,0 +1,83 @@
1
+ /**
2
+ * 🔍 CategoryDetector - Detector Automático de Categorias
3
+ * @silasfmartins/testhub - Auto Documentation System
4
+ */
5
+ export interface DetectedCategory {
6
+ type: 'api' | 'ssh' | 'db' | 'ui' | 'mobile' | 'mixed';
7
+ confidence: number;
8
+ indicators: string[];
9
+ suggestedTitle: string;
10
+ }
11
+ export declare class CategoryDetector {
12
+ private static readonly API_INDICATORS;
13
+ private static readonly SSH_INDICATORS;
14
+ private static readonly DB_INDICATORS;
15
+ private static readonly UI_INDICATORS;
16
+ private static readonly MOBILE_INDICATORS;
17
+ /**
18
+ * 🎯 Detectar categoria principal do arquivo de teste
19
+ */
20
+ static detectFromFile(filePath: string): DetectedCategory;
21
+ /**
22
+ * 🔍 Detectar categoria pelo conteúdo
23
+ */
24
+ static detectFromContent(content: string, fileName?: string): DetectedCategory;
25
+ /**
26
+ * 📁 Detectar categoria pelo nome do arquivo
27
+ */
28
+ static detectFromFileName(fileName: string): DetectedCategory;
29
+ /**
30
+ * 📊 Detectar múltiplas categorias em um projeto
31
+ */
32
+ static detectFromProject(projectPath: string): {
33
+ [category: string]: string[];
34
+ };
35
+ /**
36
+ * 🔬 Análise principal do conteúdo
37
+ */
38
+ private static analyzeContent;
39
+ /**
40
+ * 🎯 Calcular pontuação para indicadores
41
+ */
42
+ private static calculateScore;
43
+ /**
44
+ * 🔍 Encontrar indicadores que fizeram match
45
+ */
46
+ private static getMatchedIndicators;
47
+ /**
48
+ * 🏷️ Obter indicadores para tipo
49
+ */
50
+ private static getIndicatorsForType;
51
+ /**
52
+ * 📝 Obter título para tipo
53
+ */
54
+ private static getTitleForType;
55
+ /**
56
+ * 📁 Encontrar arquivos de teste
57
+ */
58
+ private static findTestFiles;
59
+ /**
60
+ * 🚫 Verificar se deve pular diretório
61
+ */
62
+ private static shouldSkipDirectory;
63
+ /**
64
+ * ✅ Verificar se é arquivo de teste
65
+ */
66
+ private static isTestFile;
67
+ /**
68
+ * 🎯 Criar categoria padrão
69
+ */
70
+ private static createDefaultCategory;
71
+ /**
72
+ * 📊 Obter estatísticas de detecção
73
+ */
74
+ static getDetectionStats(projectPath: string): {
75
+ totalFiles: number;
76
+ categorized: {
77
+ [category: string]: number;
78
+ };
79
+ confidence: {
80
+ [category: string]: number;
81
+ };
82
+ };
83
+ }
@@ -0,0 +1,401 @@
1
+ /**
2
+ * 🔍 CategoryDetector - Detector Automático de Categorias
3
+ * @silasfmartins/testhub - Auto Documentation System
4
+ */
5
+ import fs from 'node:fs';
6
+ import path from 'node:path';
7
+ import { Logger } from '../utils/Logger.js';
8
+ export class CategoryDetector {
9
+ static API_INDICATORS = [
10
+ 'fetch',
11
+ 'axios',
12
+ 'request',
13
+ 'post',
14
+ 'get',
15
+ 'put',
16
+ 'delete',
17
+ 'patch',
18
+ 'RestAssured',
19
+ 'given()',
20
+ 'when()',
21
+ 'then()',
22
+ 'ApiActions',
23
+ 'JsonResponse',
24
+ 'REST',
25
+ 'endpoint',
26
+ 'statusCode',
27
+ 'response',
28
+ 'payload',
29
+ 'headers',
30
+ ];
31
+ static SSH_INDICATORS = [
32
+ 'ssh',
33
+ 'SSHActions',
34
+ 'SSHClient',
35
+ 'executeCommand',
36
+ 'shell',
37
+ 'terminal',
38
+ 'remote',
39
+ 'host',
40
+ 'server',
41
+ 'linux',
42
+ 'unix',
43
+ 'bash',
44
+ 'sudo',
45
+ 'exec',
46
+ ];
47
+ static DB_INDICATORS = [
48
+ 'SELECT',
49
+ 'INSERT',
50
+ 'UPDATE',
51
+ 'DELETE',
52
+ 'CREATE',
53
+ 'DROP',
54
+ 'database',
55
+ 'query',
56
+ 'sql',
57
+ 'BancoActions',
58
+ 'BancoHelper',
59
+ 'connection',
60
+ 'execute',
61
+ 'prepare',
62
+ 'transaction',
63
+ 'mysql',
64
+ 'postgres',
65
+ 'oracle',
66
+ 'sqlserver',
67
+ 'mongodb',
68
+ ];
69
+ static UI_INDICATORS = [
70
+ 'page.',
71
+ 'click',
72
+ 'fill',
73
+ 'select',
74
+ 'hover',
75
+ 'navigate',
76
+ 'playwright',
77
+ 'selenium',
78
+ 'WebActions',
79
+ 'element',
80
+ 'locator',
81
+ 'waitFor',
82
+ 'screenshot',
83
+ 'browser',
84
+ 'input',
85
+ 'button',
86
+ 'form',
87
+ 'dialog',
88
+ ];
89
+ static MOBILE_INDICATORS = [
90
+ 'appium',
91
+ 'MobileActions',
92
+ 'MobileConnection',
93
+ 'device',
94
+ 'android',
95
+ 'ios',
96
+ 'mobile',
97
+ 'app',
98
+ 'touch',
99
+ 'swipe',
100
+ 'driver',
101
+ 'capabilities',
102
+ 'platform',
103
+ 'simulator',
104
+ 'emulator',
105
+ 'tap',
106
+ 'scroll',
107
+ ];
108
+ /**
109
+ * 🎯 Detectar categoria principal do arquivo de teste
110
+ */
111
+ static detectFromFile(filePath) {
112
+ try {
113
+ if (!fs.existsSync(filePath)) {
114
+ return CategoryDetector.createDefaultCategory();
115
+ }
116
+ const content = fs.readFileSync(filePath, 'utf8');
117
+ const fileName = path.basename(filePath);
118
+ return CategoryDetector.analyzeContent(content, fileName);
119
+ }
120
+ catch (error) {
121
+ Logger.warning(`⚠️ Erro ao detectar categoria do arquivo ${filePath}: ${error}`);
122
+ return CategoryDetector.createDefaultCategory();
123
+ }
124
+ }
125
+ /**
126
+ * 🔍 Detectar categoria pelo conteúdo
127
+ */
128
+ static detectFromContent(content, fileName) {
129
+ return CategoryDetector.analyzeContent(content, fileName || 'unknown.ts');
130
+ }
131
+ /**
132
+ * 📁 Detectar categoria pelo nome do arquivo
133
+ */
134
+ static detectFromFileName(fileName) {
135
+ const name = fileName.toLowerCase();
136
+ // Indicadores diretos no nome do arquivo
137
+ if (name.includes('api') ||
138
+ name.includes('rest') ||
139
+ name.includes('endpoint')) {
140
+ return {
141
+ type: 'api',
142
+ confidence: 0.8,
143
+ indicators: ['filename contains api/rest/endpoint'],
144
+ suggestedTitle: 'API Tests',
145
+ };
146
+ }
147
+ if (name.includes('ssh') ||
148
+ name.includes('remote') ||
149
+ name.includes('server')) {
150
+ return {
151
+ type: 'ssh',
152
+ confidence: 0.8,
153
+ indicators: ['filename contains ssh/remote/server'],
154
+ suggestedTitle: 'SSH Tests',
155
+ };
156
+ }
157
+ if (name.includes('db') ||
158
+ name.includes('database') ||
159
+ name.includes('sql') ||
160
+ name.includes('banco')) {
161
+ return {
162
+ type: 'db',
163
+ confidence: 0.8,
164
+ indicators: ['filename contains db/database/sql/banco'],
165
+ suggestedTitle: 'Database Tests',
166
+ };
167
+ }
168
+ if (name.includes('ui') ||
169
+ name.includes('web') ||
170
+ name.includes('page') ||
171
+ name.includes('browser')) {
172
+ return {
173
+ type: 'ui',
174
+ confidence: 0.8,
175
+ indicators: ['filename contains ui/web/page/browser'],
176
+ suggestedTitle: 'UI Tests',
177
+ };
178
+ }
179
+ if (name.includes('mobile') ||
180
+ name.includes('app') ||
181
+ name.includes('android') ||
182
+ name.includes('ios')) {
183
+ return {
184
+ type: 'mobile',
185
+ confidence: 0.8,
186
+ indicators: ['filename contains mobile/app/android/ios'],
187
+ suggestedTitle: 'Mobile Tests',
188
+ };
189
+ }
190
+ return CategoryDetector.createDefaultCategory();
191
+ }
192
+ /**
193
+ * 📊 Detectar múltiplas categorias em um projeto
194
+ */
195
+ static detectFromProject(projectPath) {
196
+ const categories = {
197
+ api: [],
198
+ ssh: [],
199
+ db: [],
200
+ ui: [],
201
+ mobile: [],
202
+ mixed: [],
203
+ };
204
+ try {
205
+ const testFiles = CategoryDetector.findTestFiles(projectPath);
206
+ for (const file of testFiles) {
207
+ const detection = CategoryDetector.detectFromFile(file);
208
+ categories[detection.type].push(file);
209
+ }
210
+ }
211
+ catch (error) {
212
+ Logger.warning(`⚠️ Erro ao detectar categorias do projeto: ${error}`);
213
+ }
214
+ return categories;
215
+ }
216
+ /**
217
+ * 🔬 Análise principal do conteúdo
218
+ */
219
+ static analyzeContent(content, fileName) {
220
+ const scores = {
221
+ api: CategoryDetector.calculateScore(content, CategoryDetector.API_INDICATORS),
222
+ ssh: CategoryDetector.calculateScore(content, CategoryDetector.SSH_INDICATORS),
223
+ db: CategoryDetector.calculateScore(content, CategoryDetector.DB_INDICATORS),
224
+ ui: CategoryDetector.calculateScore(content, CategoryDetector.UI_INDICATORS),
225
+ mobile: CategoryDetector.calculateScore(content, CategoryDetector.MOBILE_INDICATORS),
226
+ };
227
+ // Adicionar peso baseado no nome do arquivo
228
+ const fileDetection = CategoryDetector.detectFromFileName(fileName);
229
+ if (fileDetection.confidence > 0.5 && fileDetection.type !== 'mixed') {
230
+ scores[fileDetection.type] += 20;
231
+ }
232
+ // Encontrar categoria dominante
233
+ const topCategory = Object.entries(scores).reduce((max, [category, score]) => score > max.score ? { category: category, score } : max, { category: 'mixed', score: 0 });
234
+ // Verificar se há múltiplas categorias significativas
235
+ const significantCategories = Object.entries(scores).filter(([_, score]) => score > 10);
236
+ if (significantCategories.length > 1) {
237
+ return {
238
+ type: 'mixed',
239
+ confidence: 0.7,
240
+ indicators: significantCategories.map(([cat, score]) => `${cat}: ${score} points`),
241
+ suggestedTitle: 'Mixed Tests',
242
+ };
243
+ }
244
+ if (topCategory.score < 5) {
245
+ return CategoryDetector.createDefaultCategory();
246
+ }
247
+ return {
248
+ type: topCategory.category,
249
+ confidence: Math.min(topCategory.score / 50, 1),
250
+ indicators: CategoryDetector.getMatchedIndicators(content, CategoryDetector.getIndicatorsForType(topCategory.category)),
251
+ suggestedTitle: CategoryDetector.getTitleForType(topCategory.category),
252
+ };
253
+ }
254
+ /**
255
+ * 🎯 Calcular pontuação para indicadores
256
+ */
257
+ static calculateScore(content, indicators) {
258
+ let score = 0;
259
+ const contentLower = content.toLowerCase();
260
+ for (const indicator of indicators) {
261
+ const regex = new RegExp(indicator.toLowerCase().replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'g');
262
+ const matches = contentLower.match(regex);
263
+ if (matches) {
264
+ // Pontuação baseada na frequência, com peso decrescente
265
+ score += Math.min(matches.length * 2, 10);
266
+ }
267
+ }
268
+ return score;
269
+ }
270
+ /**
271
+ * 🔍 Encontrar indicadores que fizeram match
272
+ */
273
+ static getMatchedIndicators(content, indicators) {
274
+ const contentLower = content.toLowerCase();
275
+ return indicators
276
+ .filter((indicator) => contentLower.includes(indicator.toLowerCase()))
277
+ .slice(0, 5); // Limitar a 5 indicadores
278
+ }
279
+ /**
280
+ * 🏷️ Obter indicadores para tipo
281
+ */
282
+ static getIndicatorsForType(type) {
283
+ switch (type) {
284
+ case 'api':
285
+ return CategoryDetector.API_INDICATORS;
286
+ case 'ssh':
287
+ return CategoryDetector.SSH_INDICATORS;
288
+ case 'db':
289
+ return CategoryDetector.DB_INDICATORS;
290
+ case 'ui':
291
+ return CategoryDetector.UI_INDICATORS;
292
+ case 'mobile':
293
+ return CategoryDetector.MOBILE_INDICATORS;
294
+ default:
295
+ return [];
296
+ }
297
+ }
298
+ /**
299
+ * 📝 Obter título para tipo
300
+ */
301
+ static getTitleForType(type) {
302
+ const titles = {
303
+ api: 'API Tests',
304
+ ssh: 'SSH Commands',
305
+ db: 'Database Operations',
306
+ ui: 'UI Interactions',
307
+ mobile: 'Mobile Actions',
308
+ };
309
+ return titles[type] || 'Test Suite';
310
+ }
311
+ /**
312
+ * 📁 Encontrar arquivos de teste
313
+ */
314
+ static findTestFiles(projectPath) {
315
+ const testFiles = [];
316
+ const searchInDir = (dir) => {
317
+ try {
318
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
319
+ for (const entry of entries) {
320
+ const fullPath = path.join(dir, entry.name);
321
+ if (entry.isDirectory() &&
322
+ !CategoryDetector.shouldSkipDirectory(entry.name)) {
323
+ searchInDir(fullPath);
324
+ }
325
+ else if (entry.isFile() &&
326
+ CategoryDetector.isTestFile(entry.name)) {
327
+ testFiles.push(fullPath);
328
+ }
329
+ }
330
+ }
331
+ catch (error) {
332
+ // Ignorar diretórios inacessíveis
333
+ }
334
+ };
335
+ searchInDir(projectPath);
336
+ return testFiles;
337
+ }
338
+ /**
339
+ * 🚫 Verificar se deve pular diretório
340
+ */
341
+ static shouldSkipDirectory(dirName) {
342
+ const skipDirs = [
343
+ 'node_modules',
344
+ '.git',
345
+ 'dist',
346
+ 'build',
347
+ 'coverage',
348
+ '.next',
349
+ '.nuxt',
350
+ 'vendor',
351
+ '__pycache__',
352
+ '.pytest_cache',
353
+ ];
354
+ return skipDirs.includes(dirName) || dirName.startsWith('.');
355
+ }
356
+ /**
357
+ * ✅ Verificar se é arquivo de teste
358
+ */
359
+ static isTestFile(fileName) {
360
+ const testPatterns = [
361
+ /\.test\.(ts|js|tsx|jsx)$/,
362
+ /\.spec\.(ts|js|tsx|jsx)$/,
363
+ /test.*\.(ts|js|tsx|jsx)$/,
364
+ /spec.*\.(ts|js|tsx|jsx)$/,
365
+ ];
366
+ return testPatterns.some((pattern) => pattern.test(fileName));
367
+ }
368
+ /**
369
+ * 🎯 Criar categoria padrão
370
+ */
371
+ static createDefaultCategory() {
372
+ return {
373
+ type: 'mixed',
374
+ confidence: 0.1,
375
+ indicators: ['no clear indicators found'],
376
+ suggestedTitle: 'General Tests',
377
+ };
378
+ }
379
+ /**
380
+ * 📊 Obter estatísticas de detecção
381
+ */
382
+ static getDetectionStats(projectPath) {
383
+ const categories = CategoryDetector.detectFromProject(projectPath);
384
+ const stats = {
385
+ totalFiles: 0,
386
+ categorized: {},
387
+ confidence: {},
388
+ };
389
+ Object.entries(categories).forEach(([category, files]) => {
390
+ stats.categorized[category] = files.length;
391
+ stats.totalFiles += files.length;
392
+ // Calcular confiança média para a categoria
393
+ if (files.length > 0) {
394
+ const confidences = files.map((file) => CategoryDetector.detectFromFile(file).confidence);
395
+ stats.confidence[category] =
396
+ confidences.reduce((sum, conf) => sum + conf, 0) / confidences.length;
397
+ }
398
+ });
399
+ return stats;
400
+ }
401
+ }
@@ -0,0 +1,54 @@
1
+ /**
2
+ * 🎯 SISTEMA DIRETO DE INTERCEPTAÇÃO V2
3
+ *
4
+ * Sistema simplificado que intercepta DIRETAMENTE as classes Statement do usuário
5
+ * Foca apenas no que funciona, sem complexidade desnecessária
6
+ */
7
+ declare class DirectStatementInterceptor {
8
+ private static initialized;
9
+ private static interceptedClasses;
10
+ /**
11
+ * 🚀 Inicializar interceptação direta
12
+ */
13
+ static initialize(): void;
14
+ /**
15
+ * 🆕 INTERCEPTAR INSTANCIAÇÕES DINÂMICAS - VERSÃO SIMPLIFICADA
16
+ */
17
+ private static setupNewInterceptor;
18
+ /**
19
+ * 🔍 Scan agressivo por classes Statement (mais frequente)
20
+ */
21
+ private static aggressiveScanForStatements;
22
+ /**
23
+ * 🔍 Escanear módulos carregados
24
+ */
25
+ private static scanLoadedModules;
26
+ /**
27
+ * 🔍 Interceptar classes globais existentes
28
+ */
29
+ private static interceptGlobalClasses;
30
+ /**
31
+ * 🏗️ Setup de hooks simplificado
32
+ */
33
+ private static setupConstructorHooks;
34
+ /**
35
+ * 🔄 Scanner contínuo para novas classes
36
+ */
37
+ private static setupContinuousScanner;
38
+ /**
39
+ * 🔍 Escanear por novas classes
40
+ */
41
+ private static scanForNewClasses;
42
+ /**
43
+ * 🎯 Interceptar uma classe específica
44
+ */
45
+ private static interceptClass;
46
+ /**
47
+ * 📊 Status do interceptor
48
+ */
49
+ static getStatus(): {
50
+ initialized: boolean;
51
+ interceptedClasses: string[];
52
+ };
53
+ }
54
+ export { DirectStatementInterceptor };