@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,343 @@
1
+ #!/usr/bin/env node
2
+ // @ts-nocheck
3
+
4
+ import { existsSync, readdirSync, readFileSync, statSync, writeFileSync } from 'node:fs'
5
+ import { basename, dirname, extname, join, relative } from 'node:path'
6
+
7
+ // 🔧 Configuração robusta para TypeScript puro
8
+ const IGNORED_FILES = ['index.ts']
9
+ const IGNORED_SUFFIXES = ['.spec.ts', '.test.ts', '.d.ts']
10
+
11
+ // 🛡️ PROTEÇÃO: Detectar se está rodando no próprio @silasfmartins/testhub
12
+ // Se o package.json tiver name "@silasfmartins/testhub", NÃO sobrescrever o index.ts
13
+ function isAutocorePackage(): boolean {
14
+ try {
15
+ const pkgPath = join(process.cwd(), 'package.json')
16
+ if (existsSync(pkgPath)) {
17
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'))
18
+ return pkg.name === '@silasfmartins/testhub'
19
+ }
20
+ } catch {
21
+ // Ignora erros de leitura
22
+ }
23
+ return false
24
+ }
25
+
26
+ if (isAutocorePackage()) {
27
+ console.log('🛡️ Detectado @silasfmartins/testhub - index.ts NÃO será sobrescrito')
28
+ console.log('✅ index.ts gerado dinamicamente para desenvolvimento')
29
+ process.exit(0)
30
+ }
31
+
32
+ // 🔧 NOVO: Detectar ambiente CI e usar fallback simples
33
+ const isCI =
34
+ process.env.CI === 'true' ||
35
+ process.env.GITHUB_ACTIONS === 'true' ||
36
+ process.env.AZURE_PIPELINES === 'True'
37
+ if (isCI) {
38
+ console.log('🔧 Ambiente CI detectado - usando template TypeScript fixo')
39
+ }
40
+
41
+ function walkDir(dir: string, fileList: string[] = []): string[] {
42
+ const files = readdirSync(dir)
43
+ for (const file of files) {
44
+ const fullPath = join(dir, file)
45
+
46
+ if (statSync(fullPath).isDirectory()) {
47
+ walkDir(fullPath, fileList)
48
+ } else if (
49
+ extname(fullPath) === '.ts' &&
50
+ !IGNORED_FILES.includes(basename(fullPath)) &&
51
+ !IGNORED_SUFFIXES.some((suffix) => fullPath.endsWith(suffix))
52
+ ) {
53
+ fileList.push(fullPath)
54
+ }
55
+ }
56
+ return fileList
57
+ }
58
+
59
+ function getExportedNames(filePath: string): string[] {
60
+ const content = readFileSync(filePath, 'utf-8')
61
+
62
+ // 1. Capturar exports nomeados: export class/function/const/let/var/interface/type NomeDoExport
63
+ const namedMatches =
64
+ content.match(
65
+ /export\s+(?:class|function|const|let|var|interface|type|enum)\s+(\w+)/g,
66
+ ) || []
67
+ const namedExports = namedMatches.map((match) => {
68
+ const parts = match.trim().split(/\s+/)
69
+ return parts[2]
70
+ }).filter(Boolean)
71
+
72
+ // 2. Capturar export default class NomeDaClasse (com nome explícito)
73
+ const defaultClassMatch = content.match(/export\s+default\s+class\s+(\w+)/)
74
+
75
+ // 3. Capturar export default function NomeDaFuncao
76
+ const defaultFunctionMatch = content.match(/export\s+default\s+function\s+(\w+)/)
77
+
78
+ // 4. Capturar export default { ... } ou export default NomeVariavel
79
+ const hasSimpleDefaultExport = /export\s+default\s+(?!class|function|interface|type)/.test(content)
80
+
81
+ // Determinar o export default
82
+ let defaultExport: string | null = null
83
+
84
+ if (defaultClassMatch && defaultClassMatch[1]) {
85
+ // export default class MeuNome -> exportar como "default as MeuNome"
86
+ defaultExport = `default as ${defaultClassMatch[1]}`
87
+ } else if (defaultFunctionMatch && defaultFunctionMatch[1]) {
88
+ // export default function MinhaFunc -> exportar como "default as MinhaFunc"
89
+ defaultExport = `default as ${defaultFunctionMatch[1]}`
90
+ } else if (hasSimpleDefaultExport) {
91
+ // export default algo (sem nome) -> usar nome do arquivo
92
+ const fileName = basename(filePath, '.ts').replace(/[^a-zA-Z0-9_]/g, '_')
93
+ defaultExport = `default as ${fileName}`
94
+ }
95
+
96
+ return [...namedExports, ...(defaultExport ? [defaultExport] : [])]
97
+ }
98
+
99
+ function generateIndexFile() {
100
+ // 🔧 NOVO: Para ambiente CI, usar template fixo sem análise de arquivos
101
+ if (isCI) {
102
+ console.log('🔧 Usando template fixo para CI/CD')
103
+ const fixedTemplate = `/**
104
+ * @silasfmartins/testhub - Entry Point
105
+ *
106
+ * 🔧 VERSÃO CI: AutoCore Jest-Safe Configuration
107
+ * Gerenciamento automático de conflitos Jest/Vitest com integração mobile completa
108
+ */
109
+
110
+ // ============================================
111
+ // TODOS OS IMPORTS (organizados por categoria)
112
+ // ============================================
113
+
114
+ // 🔧 Jest-Safe Setup (executado automaticamente)
115
+ import './src/config/jest-safe-setup.js'
116
+
117
+ // Inicialização de proteções offline contra automação/IA (side-effect only)
118
+ // Observação: este import não exige nenhuma configuração do usuário.
119
+ import './src/security/protector.js'
120
+
121
+ // API e comunicação
122
+ import { ApiActions } from './src/api/ApiActions.js'
123
+ import { JsonResponse } from './src/api/JsonResponse.js'
124
+
125
+ // Mobile
126
+ import { MobileActions } from './src/appium/MobileActions.js'
127
+ import { MobileConnection } from './src/appium/MobileConnection.js'
128
+
129
+ // Helpers específicos
130
+ import { BancoActions } from './src/helpers/BancoActions.js'
131
+ import { ConexaoTestHelper } from './src/helpers/ConexaoTestHelper.js'
132
+
133
+ // Ações e manipulação web
134
+ import { WebActions } from './src/playwright/WebActions.js'
135
+
136
+ // SSH
137
+ import { SSHActions } from './src/ssh/SSHActions.js'
138
+ import { SSHClient } from './src/ssh/SSHClient.js'
139
+
140
+ // Sistema Unificado e Test Context
141
+ import {
142
+ Api,
143
+ Auto,
144
+ Banco,
145
+ Front,
146
+ Frontend,
147
+ Mixed,
148
+ Mobile,
149
+ SSH,
150
+ TestAnnotations,
151
+ } from './src/testContext/TestAnnotations.js'
152
+ import { TestContext } from './src/testContext/TestContext.js'
153
+ import { UnifiedReportManager } from './src/testContext/UnifiedReportManager.js'
154
+ import { CoverageManager } from './src/testContext/CoverageManager.js'
155
+
156
+ // Configuração de ambiente e utilitários
157
+ import { cleanupEnvLock } from './src/config/envLoader.js'
158
+ import { DataStore } from './src/utils/DataStore.js'
159
+ import { Logger } from './src/utils/Logger.js'
160
+
161
+ // ============================================
162
+ // INTERFACES E TIPOS (sempre necessários)
163
+ // ============================================
164
+ export type { ILocator, IPage } from './src/interfaces.js'
165
+
166
+ // ============================================
167
+ // CORE - CLASSES PRINCIPAIS
168
+ // ============================================
169
+
170
+ // API e comunicação
171
+ export { ApiActions, type ApiRequest } from './src/api/ApiActions.js'
172
+ export { JsonResponse } from './src/api/JsonResponse.js'
173
+
174
+ // Mobile - ✅ COM INTEGRAÇÃO SCREENSHOT CORRIGIDA
175
+ export { Direcao, MobileActions } from './src/appium/MobileActions.js'
176
+ export { MobileConnection } from './src/appium/MobileConnection.js'
177
+
178
+ // Helpers específicos
179
+ export { BancoActions } from './src/helpers/BancoActions.js'
180
+ export { ConexaoTestHelper } from './src/helpers/ConexaoTestHelper.js'
181
+
182
+ // Ações e manipulação
183
+ export { WebActions } from './src/playwright/WebActions.js'
184
+
185
+ // SSH
186
+ export { SSHActions } from './src/ssh/SSHActions.js'
187
+ export { SSHClient } from './src/ssh/SSHClient.js'
188
+
189
+ // ============================================
190
+ // SISTEMA UNIFICADO (novo core)
191
+ // ============================================
192
+
193
+ export {
194
+ Api,
195
+ Auto,
196
+ Banco,
197
+ Front,
198
+ Frontend,
199
+ Mixed,
200
+ Mobile,
201
+ SSH,
202
+ TestAnnotations,
203
+ } from './src/testContext/TestAnnotations.js'
204
+
205
+ // Test Context e Anotações
206
+ export { TestContext } from './src/testContext/TestContext.js'
207
+ export { UnifiedReportManager } from './src/testContext/UnifiedReportManager.js'
208
+ export { CoverageManager } from './src/testContext/CoverageManager.js'
209
+
210
+ // ============================================
211
+ // UTILITÁRIOS ESSENCIAIS
212
+ // ============================================
213
+
214
+ // Configuração de ambiente
215
+ export { cleanupEnvLock } from './src/config/envLoader.js'
216
+ export { DataStore } from './src/utils/DataStore.js'
217
+
218
+ // Logs e dados
219
+ export { Logger } from './src/utils/Logger.js'
220
+
221
+ // ============================================
222
+ // 🔧 JEST-SAFE EXPORTS (NOVO)
223
+ // ============================================
224
+ export { default as globalSetup } from './src/global-setup.js'
225
+ export { resolveJestVitestConflict } from './src/config/jest-safe-setup.js'
226
+
227
+ // AutoDocs exports
228
+ export { AutoDocs } from './src/autodocs/AutoDocs.js'
229
+
230
+ // ============================================
231
+ // EXPORTAÇÃO DEFAULT UNIFICADA (CORRIGIDA)
232
+ // ============================================
233
+
234
+ const AutoCoreUnified = {
235
+ // Core Actions
236
+ WebActions,
237
+ MobileActions,
238
+ MobileConnection,
239
+
240
+ // Helpers
241
+ ConexaoTestHelper,
242
+ BancoActions,
243
+
244
+ // API
245
+ ApiActions,
246
+ JsonResponse,
247
+
248
+ // SSH
249
+ SSHClient,
250
+ SSHActions,
251
+
252
+ // Sistema Unificado
253
+ TestContext,
254
+ UnifiedReportManager,
255
+ CoverageManager,
256
+ TestAnnotations,
257
+
258
+ // Anotações individuais
259
+ Api,
260
+ Frontend,
261
+ Front,
262
+ Mobile,
263
+ SSH,
264
+ Banco,
265
+ Mixed,
266
+ Auto,
267
+
268
+ // Utilitários
269
+ Logger,
270
+ DataStore,
271
+ cleanupEnvLock,
272
+ }
273
+
274
+ export default AutoCoreUnified
275
+
276
+ // 🔧 Auto-inicialização do Jest-Safe setup (silent mode)
277
+ if (process.env.NODE_ENV !== 'production') {
278
+ // Log apenas em desenvolvimento
279
+ }
280
+ `
281
+
282
+ const indexPath = join(process.cwd(), 'index.ts')
283
+ writeFileSync(indexPath, fixedTemplate)
284
+ console.log('✅ index.ts gerado com template fixo para CI')
285
+ return
286
+ }
287
+
288
+ // 🔧 Versão original para desenvolvimento local
289
+ const srcDir = join(process.cwd(), 'src')
290
+ const files = walkDir(srcDir)
291
+
292
+ const exportMap: Record<string, string[]> = {}
293
+ const seenExports = new Set<string>() // Para evitar duplicatas
294
+
295
+ for (const file of files) {
296
+ if (file.endsWith('.d.js') || file.endsWith('.d.js')) continue // Ignora arquivos de definição
297
+
298
+ const exportedNames = getExportedNames(file)
299
+ if (exportedNames.length === 0) continue
300
+
301
+ const relativePath = relative(process.cwd(), file)
302
+ .replace(/\\/g, '/')
303
+ .replace(/\.ts$/, '.js') // ✅ Manter extensão .ts para desenvolvimento TypeScript
304
+
305
+ const folder = dirname(relativePath)
306
+
307
+ if (!exportMap[folder]) exportMap[folder] = []
308
+
309
+ for (const name of exportedNames) {
310
+ const exportLine = `export { ${name} } from './${relativePath}';`
311
+
312
+ // 🔧 CORREÇÃO: Para "default as NomeClasse", usar "NomeClasse" como chave
313
+ // Isso permite múltiplos export default de arquivos diferentes
314
+ let exportKey: string
315
+ if (name.startsWith('default as ')) {
316
+ exportKey = name.replace('default as ', '') // Usa o nome real da classe/função
317
+ } else {
318
+ exportKey = name // Para exports nomeados, usa o nome direto
319
+ }
320
+
321
+ if (!seenExports.has(exportKey)) {
322
+ exportMap[folder].push(exportLine)
323
+ seenExports.add(exportKey)
324
+ }
325
+ }
326
+ }
327
+
328
+ const header = '// Arquivo principal de exportação\n\n'
329
+ const sortedFolders = Object.keys(exportMap).sort()
330
+
331
+ const exportsByFolder = sortedFolders
332
+ .map((folder) => {
333
+ const lines = exportMap[folder].sort()
334
+ return `// ${folder}\n${lines.join('\n')}\n`
335
+ })
336
+ .join('\n')
337
+
338
+ const indexPath = join(process.cwd(), 'index.ts')
339
+ writeFileSync(indexPath, header + exportsByFolder)
340
+ console.log('✅ index.ts gerado dinamicamente para desenvolvimento')
341
+ }
342
+
343
+ generateIndexFile()