@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,481 @@
1
+ #!/usr/bin/env node
2
+ // @ts-nocheck
3
+ import fs from 'node:fs';
4
+ import { execSync } from 'child_process';
5
+ import yaml from 'js-yaml';
6
+ import path from 'path';
7
+ import { generateBiomeConfigString, generatePackageJson, generateTsConfigForProject, generateVitestConfigString, getLatestVersions, } from './package-versions.js';
8
+ import { setupUltracite } from './ultracite-setup.js';
9
+ const root = process.cwd();
10
+ const catalogPath = path.join(root, 'catalog-info.yaml');
11
+ if (!fs.existsSync(catalogPath)) {
12
+ console.error('❌ Arquivo catalog-info.yaml não encontrado.');
13
+ process.exit(1);
14
+ }
15
+ const catalog = yaml.load(fs.readFileSync(catalogPath, 'utf-8'));
16
+ const projectName = catalog?.metadata?.name || 'meu-projeto';
17
+ const projectNameUnderscore = projectName.replace(/-/g, '_');
18
+ const write = (filePath, content) => {
19
+ const fullPath = path.join(root, filePath);
20
+ fs.mkdirSync(path.dirname(fullPath), { recursive: true });
21
+ fs.writeFileSync(fullPath, content);
22
+ };
23
+ async function main() {
24
+ console.log('🚀 Inicializando projeto Mobile com versões atualizadas...');
25
+ console.log(`📦 Projeto: ${projectName}`);
26
+ console.log('');
27
+ // ✅ Buscar versões mais recentes
28
+ const versions = await getLatestVersions();
29
+ // ✅ Gerar package.json com versões atualizadas
30
+ const packageJsonContent = generatePackageJson(projectName, 'mobile', versions);
31
+ // ✅ Gerar tsconfig.json baseado no AutoCore
32
+ const tsconfigContent = generateTsConfigForProject('mobile');
33
+ // ✅ Gerar vitest.config.ts baseado no AutoCore (NOVO!)
34
+ const vitestConfigContent = generateVitestConfigString('mobile');
35
+ // ✅ Gerar biome.json sincronizado com AutoCore
36
+ const biomeConfigContent = generateBiomeConfigString();
37
+ console.log('📝 Criando arquivos do projeto...');
38
+ // package.json com versões dinâmicas
39
+ write('package.json', JSON.stringify(packageJsonContent, null, 2));
40
+ // ✅ tsconfig.json sempre sincronizado com o AutoCore
41
+ write('tsconfig.json', JSON.stringify(tsconfigContent, null, 2));
42
+ // ✅ vitest.config.ts sempre sincronizado com o AutoCore (NOVO!)
43
+ write('vitest.config.ts', vitestConfigContent);
44
+ // ✅ biome.json sincronizado automaticamente com o AutoCore
45
+ write('biome.json', biomeConfigContent);
46
+ // playwright.config.ts
47
+ write('playwright.config.ts', `import { defineConfig } from '@playwright/test';
48
+ export default defineConfig({
49
+ globalSetup: '@silasfmartins/testhub/setup',
50
+ reporter: [
51
+ ['list'],
52
+ ['html', { open: 'never' }],
53
+ ['@silasfmartins/testhub/reporter'],
54
+ ],
55
+ testDir: './tests',
56
+ testMatch: ['**/*.spec.ts', '**/*.test.ts'],
57
+ timeout: 120_000, // 2 minutos para cada teste/hook
58
+ use: {
59
+ trace: 'on',
60
+ },
61
+ });
62
+ `);
63
+ // .npmrc
64
+ write('.npmrc', `registry=https://pkgs.dev.azure.com/telefonica-vivo-brasil/_packaging/DevOps/npm/registry/`);
65
+ // .gitignore otimizado para mobile
66
+ write('.gitignore', `# Mobile específicos
67
+ node_modules/
68
+ /logs/
69
+ apps/*.app
70
+ apps/*.apk
71
+ apps/*.ipa
72
+
73
+ # Appium logs
74
+ appium.log
75
+ appium-*.log
76
+
77
+ # Environment files
78
+ .env
79
+ .env.preprod
80
+ .env.esteira1
81
+ .env.esteira2
82
+ .env.prodlike
83
+
84
+ .vscode
85
+ .vscode/
86
+ docs
87
+ docs/
88
+
89
+ # AutoCore específicos
90
+ .test-data-store.json
91
+ .env.lock
92
+ .configlogger.lock
93
+ .rbqa
94
+ .rbqa/
95
+
96
+ # VS Code
97
+ .vscode/settings.json
98
+
99
+ # Build
100
+ /dist
101
+
102
+ # Biome
103
+ .biome.log
104
+
105
+ # Test results
106
+ /test-results/
107
+ /wdio-logs/
108
+ screenshots/
109
+ videos/
110
+
111
+ # iOS específicos
112
+ *.xcarchive
113
+ DerivedData/
114
+
115
+ # Android específicos
116
+ *.keystore
117
+ local.properties`);
118
+ // Configurações de environment
119
+ write('.env', `# Configurações de ambiente para preprod - Mobile
120
+ ENV=preprod`);
121
+ write('.env.preprod', '# Configurações de ambiente para preprod - Mobile');
122
+ write('.env.esteira1', '# Configurações de ambiente para esteira1 - Mobile');
123
+ // ✅ Estrutura de testes
124
+ console.log('📝 Criando estrutura de testes...');
125
+ //env.ts
126
+ write('src/env.ts', `import { config } from 'dotenv'
127
+
128
+ config()
129
+
130
+ const rawEnv = {
131
+ ENV: process.env.ENV,
132
+ }
133
+ export const env = rawEnv
134
+ `);
135
+ write('.env.esteira2', '# Configurações de ambiente para esteira2 - Mobile');
136
+ write('.env.prodlike', '# Configurações de ambiente para prodlike - Mobile');
137
+ // Page Object simples para Login
138
+ write('src/pages/MobileLoginPage.ts', `import { Logger, MobileActions } from '@silasfmartins/testhub'
139
+ import { AttributesMobile } from '../attributes/MobileLoginAttributes.js'
140
+
141
+ export default class PageMobile extends AttributesMobile {
142
+ async searchScreenBlocked() {
143
+ Logger.info('Executando o método: searchScreenBlocked')
144
+ await MobileActions.click(
145
+ this.searchSettings,
146
+ 'Click no ícone de Pesquisar',
147
+ true
148
+ )
149
+ }
150
+ }
151
+ `);
152
+ // Attributes simples para mobile
153
+ write('src/attributes/MobileLoginAttributes.ts', `export class AttributesMobile {
154
+ protected searchSettings = 'android=new UiSelector().className("android.widget.Button")';
155
+ protected searchSettingsField = 'android=com.android.settings.intelligence:id/search_src_text';
156
+
157
+ protected labelBlockScreen() {
158
+ return '//android.widget.TextView[@resource-id="android:id/title" and @text="Tipo de bloqueio de tela"]';
159
+ }
160
+ }
161
+ `);
162
+ // Exemplo de teste mobile simples
163
+ write('tests/mobile-login.spec.ts', `
164
+ import { type TestInfo, test, TestAnnotations } from '@silasfmartins/testhub';
165
+ import PageMobile from '../src/pages/MobileLoginPage.js';
166
+
167
+ test.describe('CN001 Cadastro de Cliente - Mobile', () => {
168
+ TestAnnotations.stopOnFailure(); // opcional: para o runner ao falhar um CT
169
+
170
+ test('CT001 - Teste Mobile [octane-123456]', async ({}, testInfo: TestInfo) => {
171
+ TestAnnotations.Mobile.testInfo = testInfo;
172
+ await TestAnnotations.setSystem('MEU_SISTEMA');
173
+
174
+ await TestAnnotations.setupMobileCapabilities({
175
+ deviceId: '65e899f0b22fda8447c89146',
176
+ platformName: 'Android',
177
+ appPackage: 'com.android.settings',
178
+ appActivity: '.Settings'
179
+ });
180
+
181
+ await new PageMobile().searchScreenBlocked();
182
+ });
183
+ });
184
+ `);
185
+ // Azure DevOps pipeline
186
+ write('.azuredevops/azure-pipeline.yml', `trigger:
187
+ batch: true
188
+ branches:
189
+ include:
190
+ - 'master'
191
+ paths:
192
+ include:
193
+ - '*'
194
+ exclude:
195
+ - .azuredevops/*
196
+ - docs/*
197
+ - catalog-info.yaml
198
+ - mkdocs.yml
199
+ - scripts.py
200
+ - catalog/*
201
+
202
+ resources:
203
+ repositories:
204
+ - repository: CodePlay
205
+ name: DevOps/Vivo.CodePlay.Pipelines
206
+ type: git
207
+ ref: refs/heads/test-playwright
208
+ endpoint: CodePlay
209
+
210
+ pool:
211
+ name: GeneralPurposeLinuxAgentsCI
212
+
213
+ extends:
214
+ template: tech_products/qa/build/pipeline_node_npm.yml@CodePlay
215
+ parameters:
216
+ jobName: 'build_${projectNameUnderscore}_pkg'
217
+ commitSHA: '$(Build.SourceVersion)'
218
+ registryServiceConnection: 'ACR-DEVOPS'
219
+ govAppAcronym: ''
220
+ skipScan: false
221
+ `);
222
+ // SonarQube configuration
223
+ write('.azuredevops/sonar-project.properties', `################### NÃO ALTERAR!!! ###################
224
+ # Informações gerais sobre o projeto. #
225
+ # Todas as variáveis de ambiente são fornecidas pela #
226
+ # automação, não alterar! #
227
+ ######################################################
228
+
229
+ sonar.projectDescription=Projeto de API com AutoCore
230
+ sonar.analysis.orgName=\${env.AZ_ORG_NAME}
231
+ sonar.analysis.buildAuthor=\${env.AZ_BUILD_AUTHOR}
232
+ sonar.scm.exclusions.disabled=false
233
+ sonar.scm.forceReloadAll=true
234
+ sonar.log.level=DEBUG
235
+ sonar.verbose=true
236
+ sonar.sourceEncoding=UTF-8
237
+
238
+ # Diretórios e arquivos relevantes para Node.js/TypeScript
239
+ sonar.sources=src
240
+ sonar.inclusions=**/*.ts
241
+ sonar.test.inclusions=**/*.spec.ts,**/*.test.ts
242
+ sonar.typescript.lcov.reportPaths=coverage/lcov.info
243
+ sonar.javascript.lcov.reportPaths=coverage/lcov.info
244
+
245
+ # Exclusões de cobertura e análise
246
+ sonar.exclusions=node_modules/**,dist/**,coverage/**,**/*.config.js,**/*.config.ts
247
+ sonar.coverage.exclusions=**/*.d.ts,node_modules/**,dist/**,coverage/**,**/*.config.js,**/*.config.ts,**/*.spec.ts,**/*.test.ts
248
+ sonar.test.exclusions=node_modules/**,dist/**,coverage/**
249
+
250
+ # Configurações específicas para projetos API
251
+ sonar.javascript.environments=node
252
+ sonar.typescript.node=true
253
+ `);
254
+ // README.md
255
+ write('README.md', `# ${projectName}
256
+
257
+ Projeto de automação Mobile baseado no AutoCore.
258
+
259
+ ## 🚀 Como usar
260
+
261
+ ### Pré-requisitos
262
+ 1. **Node.js**: Versão 24+ instalada
263
+ 2. **Android Studio**: Para testes Android (com SDK configurado)
264
+ 3. **Xcode**: Para testes iOS (apenas macOS)
265
+ 4. **Appium Inspector**: Faça Download aqui (https://github.com/appium/appium-inspector/releases)
266
+
267
+ ### Instalação de dependências
268
+ \`\`\`bash
269
+ npm install
270
+ \`\`\`
271
+
272
+ ### Gerar Artefato para Projetos de Cenários
273
+ npm run build
274
+
275
+ ### Configurar apps
276
+ 1. Coloque os arquivos APK (Android) e APP (iOS) na pasta \`apps/\`
277
+ 2. Configure os package names corretos nos arquivos \`.env.*\`
278
+
279
+ ### Executar testes
280
+
281
+ #### Android
282
+ \`\`\`bash
283
+ npm run test:preprod:android
284
+ npm run test:esteira1:android
285
+ npm run test:esteira2:android
286
+ npm run test:prodlike:android
287
+ \`\`\`
288
+
289
+ #### iOS
290
+ \`\`\`bash
291
+ npm run test:preprod:ios
292
+ npm run test:esteira1:ios
293
+ npm run test:esteira2:ios
294
+ npm run test:prodlike:ios
295
+ \`\`\`
296
+
297
+ ## 📋 Estrutura do projeto
298
+
299
+ \`\`\`
300
+ ${projectName}/
301
+ ├── src/
302
+ │ ├── pages/ # Page Objects para mobile
303
+ │ └── attributes/ # Seletores e elementos
304
+ | └── env.ts # Configuração de environment
305
+ ├── tests/ # Testes mobile
306
+ ├── apps/ # Arquivos APK e APP
307
+ ├── .env.* # Variáveis de ambiente por ambiente
308
+ ├── tsconfig.json # Configuração TypeScript (sincronizada)
309
+ ├── biome.json # Configuração Biome (sincronizada)
310
+ └── README.md # Esta documentação
311
+ \`\`\`
312
+
313
+ ## 🔧 Desenvolvimento
314
+
315
+ - **TypeScript**: Configurado e sincronizado com AutoCore
316
+ - **AutoCore**: Biblioteca de utilitários para automação
317
+ - **Biome**: Linting e formatação (configuração sincronizada)
318
+ - **Ultracite**: Experiência de desenvolvimento aprimorada
319
+
320
+ ## 📊 Relatórios
321
+
322
+ Os relatórios são gerados automaticamente em:
323
+ - \`test-results/\` - Resultados detalhados e artifacts
324
+ - Screenshots automáticos em falhas
325
+ - Logs estruturados no console
326
+
327
+ ## 🧪 Exemplos de Uso
328
+
329
+ ### Teste básico de login
330
+ \`\`\`typescript
331
+ import { type TestInfo, test, TestAnnotations } from '@silasfmartins/testhub';
332
+ import PageMobile from '../src/pages/PageMobile.js';
333
+
334
+ test.describe('CN001 Cadastro de Cliente - Mobile', () => {
335
+ TestAnnotations.stopOnFailure(); // opcional: para o runner ao falhar um CT
336
+
337
+ test('CT001 - Teste Mobile [octane-123456]', async ({}, testInfo: TestInfo) => {
338
+ TestAnnotations.Mobile.testInfo = testInfo;
339
+ await TestAnnotations.setSystem('MEU_SISTEMA');
340
+
341
+ await TestAnnotations.setupMobileCapabilities({
342
+ deviceId: '65e899f0b22fda8447c89146',
343
+ platformName: 'Android',
344
+ appPackage: 'com.android.settings',
345
+ appActivity: '.Settings'
346
+ });
347
+
348
+ await new PageMobile().searchScreenBlocked();
349
+ });
350
+ });
351
+ \`\`\`
352
+
353
+ ## 🔧 Comandos Úteis
354
+
355
+ \`\`\`bash
356
+ # Desenvolvimento
357
+ npm run test:preprod:android # Executar testes Android em preprod
358
+ npm run test:preprod:ios # Executar testes iOS em preprod
359
+ npm run appium:start # Iniciar servidor Appium
360
+ npm run appium:doctor # Verificar configuração Appium
361
+
362
+ # Qualidade de código
363
+ npx biome check # Verificar código com Biome
364
+ npx biome format # Formatar código com Biome
365
+ npx biome check --apply # Aplicar correções automáticas
366
+ \`\`\`
367
+
368
+ ## 🔄 Sincronização com AutoCore
369
+
370
+ Este projeto mantém sincronização automática com o AutoCore para:
371
+
372
+ - **tsconfig.json**: Configuração de compilação TypeScript
373
+ - **biome.json**: Configuração de linting e formatação
374
+ - **Versões de dependências**: Sempre atualizadas
375
+
376
+ ## 📈 Métricas e Monitoramento
377
+
378
+ - **Relatórios**: Visualização rica dos resultados
379
+ - **Logs estruturados**: Para análise e debugging
380
+ - **Screenshots automáticos**: Em caso de falhas
381
+ - **Traces**: Para análise detalhada de execução
382
+
383
+ ## 🆘 Resolução de Problemas
384
+
385
+ ### Verificar ambiente
386
+ \`\`\`bash
387
+ # Verificar Node.js
388
+ node --version
389
+
390
+ # Verificar Appium
391
+ npm run appium:check
392
+ npm run appium:doctor
393
+
394
+ # Verificar Android
395
+ adb devices
396
+
397
+ # Verificar iOS (macOS)
398
+ xcrun simctl list
399
+ \`\`\`
400
+
401
+ ### Problemas comuns
402
+ - **App não instala**: Verifique assinatura e permissões
403
+ - **App não abre**: Verifique package name/bundle ID
404
+ - **Appium não conecta**: Verifique se servidor está rodando
405
+ - **Elementos não encontrados**: Verifique accessibility IDs no app
406
+
407
+ ---
408
+
409
+ **Gerado automaticamente pelo AutoCore v${versions?.dependencies?.['@silasfmartins/testhub'] || 'latest'}**
410
+
411
+ ## 📚 Referências
412
+
413
+ - [AutoCore WebSite](http://brtlvlty0559pl:3002/pt/login)
414
+ - [Appium Documentation](https://appium.io/)
415
+ `);
416
+ console.log('📦 Instalando dependências...');
417
+ const installLockPath = path.join(root, '.install.lock');
418
+ if (fs.existsSync(installLockPath)) {
419
+ // Pula npm install se o lock já existe
420
+ console.log('🔄 Dependências já instaladas, pulando npm install');
421
+ }
422
+ else {
423
+ // Executa npm install e cria o lock
424
+ console.log('📦 Instalando dependências...');
425
+ try {
426
+ execSync('npm install', {
427
+ stdio: 'inherit',
428
+ cwd: root,
429
+ });
430
+ fs.writeFileSync(installLockPath, 'ok');
431
+ console.log('✅ Dependências instaladas com sucesso');
432
+ }
433
+ catch (error) {
434
+ console.warn('⚠️ Erro ao instalar dependências automaticamente');
435
+ console.log('💡 Execute manualmente: npm install');
436
+ }
437
+ }
438
+ // ✅ Configurar Ultracite automaticamente
439
+ console.log('🤖 Configurando ambiente de desenvolvimento...');
440
+ await setupUltracite(root);
441
+ // ✅ Garantir sincronização final do biome.json
442
+ console.log('🔧 Sincronizando configuração do Biome...');
443
+ const finalBiomeConfig = generateBiomeConfigString();
444
+ write('biome.json', finalBiomeConfig);
445
+ // Remover o lock após tudo finalizar
446
+ if (fs.existsSync(installLockPath)) {
447
+ fs.unlinkSync(installLockPath);
448
+ console.log('🗑️ Lock de instalação removido');
449
+ }
450
+ console.log('');
451
+ console.log('🎉 Projeto Mobile gerado com sucesso!');
452
+ console.log('');
453
+ console.log('📋 Próximos passos:');
454
+ console.log(' 1. Configure os package names nos arquivos .env.*');
455
+ console.log(' 2. Coloque os arquivos APK/APP na pasta apps/');
456
+ console.log(' 3. Execute: npm run appium:start');
457
+ console.log(' 4. Execute: npm run test:preprod:android');
458
+ console.log(' 5. O Ultracite está configurado para VS Code');
459
+ console.log('');
460
+ console.log('🛠️ Comandos úteis:');
461
+ console.log(' npm run test:preprod:android - Executar testes Android');
462
+ console.log(' npm run test:preprod:ios - Executar testes iOS');
463
+ console.log(' npm run appium:start - Iniciar servidor Appium');
464
+ console.log(' npm run appium:doctor - Verificar configuração');
465
+ console.log(' npx biome check - Verificar código');
466
+ console.log(' npx biome format - Formatar código');
467
+ console.log('');
468
+ console.log('✅ Configurações sincronizadas com AutoCore:');
469
+ console.log(' 📝 tsconfig.json - Compilação TypeScript');
470
+ console.log(' 🎨 biome.json - Linting e formatação (SINCRONIZADO)');
471
+ console.log(' 🤖 Ultracite - Experiência de desenvolvimento');
472
+ console.log(' 📦 Dependências - Versões mais recentes');
473
+ console.log(' 📱 WebdriverIO - Configuração otimizada para mobile');
474
+ console.log('');
475
+ console.log('🚀 Projeto pronto para desenvolvimento mobile!');
476
+ }
477
+ // Executar função principal
478
+ main().catch((error) => {
479
+ console.error('❌ Erro durante inicialização:', error);
480
+ process.exit(1);
481
+ });
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};