@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,284 @@
1
+ import { TestContext } from '../testContext/TestContext.js';
2
+ import { UnifiedReportManager } from '../testContext/UnifiedReportManager.js';
3
+ import { sanitizeLogMessage } from './LogSanitizer.js';
4
+ export class Logger {
5
+ static logLevel = process.env.LOG_LEVEL || 'info';
6
+ static logLevels = {
7
+ debug: 0,
8
+ info: 1,
9
+ warning: 2,
10
+ error: 3,
11
+ };
12
+ /**
13
+ * Sanitiza uma mensagem antes de logar, mascarando segredos.
14
+ */
15
+ static safe(message) {
16
+ return sanitizeLogMessage(message);
17
+ }
18
+ /**
19
+ * ATUALIZADO: Registra logs de sucesso e integra com UnifiedReportManager
20
+ */
21
+ static success(message) {
22
+ const fullMessage = `✅ ${Logger.safe(message)}`;
23
+ if (Logger.shouldLog('info'))
24
+ console.log(fullMessage);
25
+ // Verificar se testInfo existe e se annotations está disponível
26
+ const testInfo = TestContext.getSafeTestInfo();
27
+ if (testInfo &&
28
+ testInfo.annotations &&
29
+ Array.isArray(testInfo.annotations)) {
30
+ testInfo.annotations.push({ type: 'success', description: fullMessage });
31
+ }
32
+ // NOVO: Registrar também no UnifiedReportManager se teste ativo
33
+ if (testInfo?.title) {
34
+ try {
35
+ UnifiedReportManager.adicionarLog(testInfo.title, fullMessage);
36
+ }
37
+ catch (error) {
38
+ // Silenciosamente ignorar se UnifiedReportManager não estiver disponível
39
+ }
40
+ }
41
+ }
42
+ /**
43
+ * ATUALIZADO: Registra logs informativos e integra com UnifiedReportManager
44
+ */
45
+ static info(message) {
46
+ const fullMessage = `ℹ️ ${Logger.safe(message)}`;
47
+ if (Logger.shouldLog('info'))
48
+ console.log(fullMessage);
49
+ // Verificar se testInfo existe e se annotations está disponível
50
+ const testInfo = TestContext.getSafeTestInfo();
51
+ if (testInfo &&
52
+ testInfo.annotations &&
53
+ Array.isArray(testInfo.annotations)) {
54
+ testInfo.annotations.push({ type: 'info', description: fullMessage });
55
+ }
56
+ // NOVO: Registrar também no UnifiedReportManager se teste ativo
57
+ if (testInfo?.title) {
58
+ try {
59
+ UnifiedReportManager.adicionarLog(testInfo.title, fullMessage);
60
+ }
61
+ catch (error) {
62
+ // Silenciosamente ignorar se UnifiedReportManager não estiver disponível
63
+ }
64
+ }
65
+ }
66
+ /**
67
+ * ATUALIZADO: Registra logs de aviso e integra com UnifiedReportManager
68
+ */
69
+ static warning(message) {
70
+ const fullMessage = `⚠️ ${Logger.safe(message)}`;
71
+ if (Logger.shouldLog('warning'))
72
+ console.warn(fullMessage);
73
+ // Verificar se testInfo existe e se annotations está disponível
74
+ const testInfo = TestContext.getSafeTestInfo();
75
+ if (testInfo &&
76
+ testInfo.annotations &&
77
+ Array.isArray(testInfo.annotations)) {
78
+ testInfo.annotations.push({ type: 'warning', description: fullMessage });
79
+ }
80
+ // NOVO: Registrar também no UnifiedReportManager se teste ativo
81
+ if (testInfo?.title) {
82
+ try {
83
+ UnifiedReportManager.adicionarLog(testInfo.title, fullMessage);
84
+ }
85
+ catch (error) {
86
+ // Silenciosamente ignorar se UnifiedReportManager não estiver disponível
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * ATUALIZADO: Registra logs de erro e integra com UnifiedReportManager
92
+ */
93
+ static error(message, error = null) {
94
+ const fullMessage = `❌ ${Logger.safe(message)}`;
95
+ if (Logger.shouldLog('error')) {
96
+ console.error(fullMessage);
97
+ if (error instanceof Error)
98
+ console.error(error);
99
+ }
100
+ // Verificar se testInfo existe e se annotations está disponível
101
+ const testInfo = TestContext.getSafeTestInfo();
102
+ if (testInfo &&
103
+ testInfo.annotations &&
104
+ Array.isArray(testInfo.annotations)) {
105
+ testInfo.annotations.push({
106
+ type: 'error',
107
+ description: `${fullMessage}${error instanceof Error ? `: ${error.message}` : ''}`,
108
+ });
109
+ }
110
+ // NOVO: Registrar também no UnifiedReportManager se teste ativo
111
+ if (testInfo?.title) {
112
+ try {
113
+ const errorDetails = error instanceof Error ? `: ${error.message}` : '';
114
+ UnifiedReportManager.adicionarLog(testInfo.title, `${fullMessage}${errorDetails}`);
115
+ }
116
+ catch (reportError) {
117
+ // Silenciosamente ignorar se UnifiedReportManager não estiver disponível
118
+ }
119
+ }
120
+ }
121
+ /**
122
+ * ATUALIZADO: Captura screenshot integrado com UnifiedReportManager
123
+ */
124
+ static async captureScreenshot(page, nome = 'screenshot') {
125
+ try {
126
+ // Tentar usar o método do TestContext primeiro
127
+ const screenshot = await TestContext.captureScreenshot(nome);
128
+ if (screenshot) {
129
+ // Salvar screenshot se necessário
130
+ const testInfo = TestContext.getSafeTestInfo();
131
+ if (testInfo) {
132
+ await testInfo.attach(nome, {
133
+ body: screenshot,
134
+ contentType: 'image/png',
135
+ });
136
+ // NOVO: Registrar screenshot no UnifiedReportManager
137
+ if (testInfo.title) {
138
+ try {
139
+ UnifiedReportManager.adicionarLog(testInfo.title, `📸 Screenshot capturado: ${nome}`);
140
+ // Atualizar metadata de screenshots
141
+ const currentMetadata = UnifiedReportManager.getMetrics().testes.find((t) => t.nome === testInfo.title)?.metadata || {};
142
+ UnifiedReportManager.setTestMetadata(testInfo.title, {
143
+ ...currentMetadata,
144
+ screenshots: (currentMetadata.screenshots || 0) + 1,
145
+ });
146
+ }
147
+ catch (error) {
148
+ // Silenciosamente ignorar se UnifiedReportManager não estiver disponível
149
+ }
150
+ }
151
+ }
152
+ return;
153
+ }
154
+ // Fallback para método anterior se disponível
155
+ if (page && typeof page.screenshot === 'function') {
156
+ Logger.info(`📸 Fallback: Capturando screenshot via page: ${nome}`);
157
+ const screenshot = await page.screenshot({
158
+ fullPage: true,
159
+ type: 'png',
160
+ });
161
+ const testInfo = TestContext.getSafeTestInfo();
162
+ if (testInfo) {
163
+ await testInfo.attach(nome, {
164
+ body: screenshot,
165
+ contentType: 'image/png',
166
+ });
167
+ // NOVO: Registrar screenshot no UnifiedReportManager
168
+ if (testInfo.title) {
169
+ try {
170
+ UnifiedReportManager.adicionarLog(testInfo.title, `📸 Screenshot capturado via fallback: ${nome}`);
171
+ }
172
+ catch (error) {
173
+ // Silenciosamente ignorar
174
+ }
175
+ }
176
+ }
177
+ Logger.success(`Screenshot capturado via fallback: ${nome}`);
178
+ return;
179
+ }
180
+ Logger.warning('Page não disponível ou não suporta screenshot');
181
+ }
182
+ catch (error) {
183
+ const errorMsg = error instanceof Error ? error.message : String(error);
184
+ Logger.error(`Erro ao capturar screenshot: ${errorMsg}`);
185
+ }
186
+ }
187
+ static shouldLog(level) {
188
+ const currentLevel = Logger.logLevels[Logger.logLevel] || 1;
189
+ const messageLevel = Logger.logLevels[level] || 1;
190
+ return messageLevel >= currentLevel;
191
+ }
192
+ static bloco(titulo) {
193
+ const linha = '='.repeat(80);
194
+ console.log(`\n${linha}`);
195
+ console.log(`🧩 ${titulo.toUpperCase()} ${linha.substring(titulo.length + 4)}`);
196
+ }
197
+ static object(valor) {
198
+ if (Logger.shouldLog('debug')) {
199
+ console.log(JSON.stringify(valor, null, 2));
200
+ }
201
+ }
202
+ /**
203
+ * NOVO: Log específico para inicialização de teste
204
+ */
205
+ static testStart(testName, testType) {
206
+ const message = `🚀 Iniciando teste: ${testName} (${testType})`;
207
+ Logger.info(message);
208
+ }
209
+ /**
210
+ * NOVO: Log específico para finalização de teste
211
+ */
212
+ static testEnd(testName, testType, duration, success) {
213
+ const status = success ? 'PASSOU' : 'FALHOU';
214
+ const emoji = success ? '✅' : '❌';
215
+ const message = `${emoji} Teste finalizado: ${testName} (${testType}) - ${status} em ${duration.toFixed(2)}s`;
216
+ if (success) {
217
+ Logger.success(message);
218
+ }
219
+ else {
220
+ Logger.error(message);
221
+ }
222
+ }
223
+ /**
224
+ * NOVO: Log específico para ações de UI
225
+ */
226
+ static action(action, element, description) {
227
+ const elementInfo = element ? ` em "${element}"` : '';
228
+ const descInfo = description ? ` - ${description}` : '';
229
+ const message = `🎬 Ação: ${action}${elementInfo}${descInfo}`;
230
+ Logger.info(message);
231
+ }
232
+ /**
233
+ * NOVO: Log específico para validações
234
+ */
235
+ static validation(description, success, expected, actual) {
236
+ const status = success ? 'PASSOU' : 'FALHOU';
237
+ const emoji = success ? '✅' : '❌';
238
+ let message = `${emoji} Validação: ${description} - ${status}`;
239
+ if (!success && expected !== undefined && actual !== undefined) {
240
+ message += ` (esperado: ${expected}, obtido: ${actual})`;
241
+ }
242
+ if (success) {
243
+ Logger.success(message);
244
+ }
245
+ else {
246
+ Logger.error(message);
247
+ }
248
+ }
249
+ /**
250
+ * NOVO: Log específico para métricas e performance
251
+ */
252
+ static metric(metricName, value, unit = '', context) {
253
+ const contextInfo = context ? ` [${context}]` : '';
254
+ const message = `📊 Métrica${contextInfo}: ${metricName} = ${value}${unit}`;
255
+ Logger.info(message);
256
+ }
257
+ /**
258
+ * NOVO: Log para debug de desenvolvimento
259
+ */
260
+ static debug(message, data) {
261
+ if (Logger.shouldLog('debug')) {
262
+ console.log(`🐛 DEBUG: ${Logger.safe(message)}`);
263
+ if (data !== undefined) {
264
+ console.log(data);
265
+ }
266
+ }
267
+ }
268
+ /**
269
+ * NOVO: Log para separadores visuais
270
+ */
271
+ static separator(title) {
272
+ const linha = '─'.repeat(60);
273
+ if (title) {
274
+ const titlePadded = ` ${title} `;
275
+ const padding = Math.max(0, (60 - titlePadded.length) / 2);
276
+ const leftPad = '─'.repeat(Math.floor(padding));
277
+ const rightPad = '─'.repeat(Math.ceil(padding));
278
+ console.log(`${leftPad}${titlePadded}${rightPad}`);
279
+ }
280
+ else {
281
+ console.log(linha);
282
+ }
283
+ }
284
+ }
@@ -0,0 +1,141 @@
1
+ /**
2
+ * MCP Local JSON-RPC Client (v2.7.44-r3 — items 22, 26, 27, 28)
3
+ *
4
+ * Permite ao framework chamar tools no MCP local (sidecar/background)
5
+ * via JSON-RPC sobre STDIO ou HTTP, sem depender de GitHub Copilot Chat.
6
+ *
7
+ * Transporte (ordem de prioridade — item 26.2):
8
+ * 1. STDIO direto (`autocore-hub-mcp`) com Content-Length framing (MCP oficial) — caminho principal
9
+ * 2. HTTP local (`HUB_MCP_LOCAL_URL`) — bridge HTTP explícita
10
+ * 3. Backend MCP remoto — fallback/control-plane (backend decide reroute local ou fallback)
11
+ *
12
+ * Uso principal: `fix_xpath_in_attributes` para auto-fix de XPaths
13
+ * nos arquivos Attributes* do projeto local após recovery bem-sucedido.
14
+ */
15
+ export interface FixXPathInAttributesParams {
16
+ projectRoot: string;
17
+ oldXPath: string;
18
+ newXPath: string;
19
+ attributesFile?: string;
20
+ className?: string;
21
+ methodName?: string;
22
+ confidence?: number;
23
+ executionSource?: string;
24
+ }
25
+ export interface FixXPathInAttributesResult {
26
+ success: boolean;
27
+ filePath?: string;
28
+ className?: string;
29
+ methodName?: string;
30
+ fileUpdated?: boolean;
31
+ executedOn?: string;
32
+ localMcpExecuted?: boolean;
33
+ localMcpRequestId?: string;
34
+ nextAction?: string;
35
+ error?: string;
36
+ proof?: Record<string, unknown>;
37
+ }
38
+ export interface PortalSavedTestsParams extends Record<string, unknown> {
39
+ limit?: number;
40
+ executionId?: string;
41
+ systemName?: string;
42
+ environment?: string;
43
+ includeCode?: boolean;
44
+ }
45
+ export interface PortalSavedTestFile {
46
+ path: string;
47
+ language?: string;
48
+ code: string;
49
+ [key: string]: unknown;
50
+ }
51
+ export interface PortalSavedTestCt {
52
+ id?: string;
53
+ ctName: string;
54
+ status?: string;
55
+ type?: string;
56
+ environment?: string;
57
+ runScript?: string;
58
+ runCommand?: string;
59
+ [key: string]: unknown;
60
+ }
61
+ export interface PortalSavedTestScenario {
62
+ id: string;
63
+ scenarioId?: string;
64
+ scenarioName: string;
65
+ systemId?: string | null;
66
+ systemName?: string | null;
67
+ environment?: string | null;
68
+ status?: string;
69
+ cts?: PortalSavedTestCt[];
70
+ files?: PortalSavedTestFile[];
71
+ runCommands?: string[];
72
+ retention?: {
73
+ days?: number;
74
+ expiresAt?: string;
75
+ };
76
+ [key: string]: unknown;
77
+ }
78
+ export interface PortalSavedTestsResult {
79
+ total: number;
80
+ includeCode?: boolean;
81
+ retentionDays?: number;
82
+ message?: string;
83
+ portalTests: PortalSavedTestScenario[];
84
+ [key: string]: unknown;
85
+ }
86
+ export interface RunLocalNpmScriptParams extends Record<string, unknown> {
87
+ script: string;
88
+ projectRoot?: string;
89
+ timeoutMs?: number;
90
+ }
91
+ export interface RunLocalNpmScriptResult {
92
+ success?: boolean;
93
+ message?: string;
94
+ command?: string;
95
+ exitCode?: number;
96
+ stdout?: string;
97
+ stderr?: string;
98
+ [key: string]: unknown;
99
+ }
100
+ /** Transport channel result */
101
+ type TransportChannel = "stdio" | "http-local" | "http-backend";
102
+ /**
103
+ * Chama `fix_xpath_in_attributes` no MCP local para corrigir XPath em Attributes*.
104
+ *
105
+ * Transporte (item 26.2/28.5):
106
+ * 1. STDIO direto (Content-Length framing) — não requer user_hash (item 28.1)
107
+ * 2. HTTP local (HUB_MCP_LOCAL_URL) — requer user_hash
108
+ * 3. Backend MCP remoto (control-plane para reroute local por user_hash)
109
+ *
110
+ * - Faz health-check (tools/list) antes de chamar (item 26.3)
111
+ * - Parse robusto: top-level → content[].text (item 27.2/28.3)
112
+ * - Dedupe somente após resultado válido (item 28.4)
113
+ * - Retry curto (2 tentativas) para erros transitórios
114
+ * - Não bloqueia o teste em caso de falha
115
+ * - Pula em execução Azure (sem filesystem local)
116
+ *
117
+ * @returns Resultado da correção ou null se ignorado/falhou
118
+ */
119
+ export declare function fixXPathViaLocalMcp(params: FixXPathInAttributesParams): Promise<FixXPathInAttributesResult | null>;
120
+ /**
121
+ * Chama uma tool MCP (genérica) priorizando MCP local.
122
+ * Se o backend responder com `requiresLocalMcp=true`, reencaminha automaticamente
123
+ * para o STDIO local com o mesmo payload.
124
+ *
125
+ * Usado para `codegen`/ações Playwright que precisam rodar na máquina do usuário.
126
+ */
127
+ export declare function callMcpToolLocalFirst(toolName: string, args: Record<string, unknown>): Promise<{
128
+ result: unknown;
129
+ channel: TransportChannel;
130
+ } | null>;
131
+ export declare function callMcpToolBackendFirst(toolName: string, args: Record<string, unknown>): Promise<{
132
+ result: unknown;
133
+ channel: TransportChannel;
134
+ } | null>;
135
+ export declare function getPortalSavedTests(params?: PortalSavedTestsParams): Promise<PortalSavedTestsResult | null>;
136
+ export declare function runLocalNpmScriptViaMcp(params: RunLocalNpmScriptParams): Promise<RunLocalNpmScriptResult | null>;
137
+ /** Limpa tracker de dedupe (chamar no início de cada execução, se desejado) */
138
+ export declare function clearFixDedupeTracker(): void;
139
+ /** Limpa cache de health-check de tools (útil para testes) */
140
+ export declare function clearToolsListCache(): void;
141
+ export {};