@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.
- package/.github/copilot-instructions.md +520 -0
- package/biome.json +37 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.js +169 -0
- package/dist/scripts/consumer-postinstall.d.ts +15 -0
- package/dist/scripts/consumer-postinstall.js +785 -0
- package/dist/scripts/generate-docs.d.ts +16 -0
- package/dist/scripts/generate-docs.js +1363 -0
- package/dist/scripts/generate-index.d.ts +2 -0
- package/dist/scripts/generate-index.js +314 -0
- package/dist/scripts/init-api.d.ts +2 -0
- package/dist/scripts/init-api.js +525 -0
- package/dist/scripts/init-banco.d.ts +2 -0
- package/dist/scripts/init-banco.js +347 -0
- package/dist/scripts/init-frontend.d.ts +2 -0
- package/dist/scripts/init-frontend.js +627 -0
- package/dist/scripts/init-mobile.d.ts +2 -0
- package/dist/scripts/init-mobile.js +481 -0
- package/dist/scripts/init-scenarios.d.ts +2 -0
- package/dist/scripts/init-scenarios.js +846 -0
- package/dist/scripts/init-ssh.d.ts +2 -0
- package/dist/scripts/init-ssh.js +639 -0
- package/dist/scripts/package-versions.d.ts +57 -0
- package/dist/scripts/package-versions.js +768 -0
- package/dist/scripts/postinstall.d.ts +1 -0
- package/dist/scripts/postinstall.js +527 -0
- package/dist/scripts/robust-build.d.ts +7 -0
- package/dist/scripts/robust-build.js +88 -0
- package/dist/scripts/setup-local-packages.d.ts +31 -0
- package/dist/scripts/setup-local-packages.js +237 -0
- package/dist/scripts/smart-override.d.ts +2 -0
- package/dist/scripts/smart-override.js +1360 -0
- package/dist/scripts/sync-configs.d.ts +27 -0
- package/dist/scripts/sync-configs.js +248 -0
- package/dist/scripts/test-biome-parse.d.ts +5 -0
- package/dist/scripts/test-biome-parse.js +84 -0
- package/dist/scripts/ultracite-setup.d.ts +4 -0
- package/dist/scripts/ultracite-setup.js +310 -0
- package/dist/scripts/update-all-init-scripts.d.ts +2 -0
- package/dist/scripts/update-all-init-scripts.js +52 -0
- package/dist/scripts/update-biome-schema.d.ts +15 -0
- package/dist/scripts/update-biome-schema.js +124 -0
- package/dist/src/AutoCoreFacade.d.ts +145 -0
- package/dist/src/AutoCoreFacade.js +217 -0
- package/dist/src/api/ApiActions.d.ts +297 -0
- package/dist/src/api/ApiActions.js +1905 -0
- package/dist/src/api/Certificate.d.ts +60 -0
- package/dist/src/api/Certificate.js +79 -0
- package/dist/src/api/JsonResponse.d.ts +116 -0
- package/dist/src/api/JsonResponse.js +206 -0
- package/dist/src/appium/DeviceFarmViewer.d.ts +79 -0
- package/dist/src/appium/DeviceFarmViewer.js +1083 -0
- package/dist/src/appium/MobileActions.d.ts +347 -0
- package/dist/src/appium/MobileActions.js +1632 -0
- package/dist/src/appium/MobileConnection.d.ts +160 -0
- package/dist/src/appium/MobileConnection.js +772 -0
- package/dist/src/config/envLoader.d.ts +123 -0
- package/dist/src/config/envLoader.js +361 -0
- package/dist/src/config/jest-safe-setup.d.ts +19 -0
- package/dist/src/config/jest-safe-setup.js +369 -0
- package/dist/src/config/timeouts.d.ts +32 -0
- package/dist/src/config/timeouts.js +38 -0
- package/dist/src/desktop/DesktopActions.d.ts +46 -0
- package/dist/src/desktop/DesktopActions.js +398 -0
- package/dist/src/desktop/DesktopConnection.d.ts +32 -0
- package/dist/src/desktop/DesktopConnection.js +84 -0
- package/dist/src/domain/entities/TestExecution.d.ts +117 -0
- package/dist/src/domain/entities/TestExecution.js +150 -0
- package/dist/src/domain/entities/TestReport.d.ts +114 -0
- package/dist/src/domain/entities/TestReport.js +179 -0
- package/dist/src/domain/repositories/ITestRepository.d.ts +196 -0
- package/dist/src/domain/repositories/ITestRepository.js +14 -0
- package/dist/src/domain/schemas/ValidationSchemas.d.ts +159 -0
- package/dist/src/domain/schemas/ValidationSchemas.js +181 -0
- package/dist/src/functions/errors/BaseError.d.ts +78 -0
- package/dist/src/functions/errors/BaseError.js +245 -0
- package/dist/src/functions/errors/ConfigurationError.d.ts +16 -0
- package/dist/src/functions/errors/ConfigurationError.js +48 -0
- package/dist/src/functions/errors/ErrorCatalog.d.ts +148 -0
- package/dist/src/functions/errors/ErrorCatalog.js +157 -0
- package/dist/src/functions/errors/GlobalErrorHandler.d.ts +101 -0
- package/dist/src/functions/errors/GlobalErrorHandler.js +281 -0
- package/dist/src/functions/errors/IntegrationError.d.ts +17 -0
- package/dist/src/functions/errors/IntegrationError.js +51 -0
- package/dist/src/functions/errors/SecurityError.d.ts +14 -0
- package/dist/src/functions/errors/SecurityError.js +42 -0
- package/dist/src/functions/errors/SystemError.d.ts +12 -0
- package/dist/src/functions/errors/SystemError.js +36 -0
- package/dist/src/functions/errors/ValidationError.d.ts +14 -0
- package/dist/src/functions/errors/ValidationError.js +61 -0
- package/dist/src/functions/errors/index.d.ts +12 -0
- package/dist/src/functions/errors/index.js +13 -0
- package/dist/src/global-setup.d.ts +1 -0
- package/dist/src/global-setup.js +1037 -0
- package/dist/src/helpers/BancoActions.d.ts +188 -0
- package/dist/src/helpers/BancoActions.js +581 -0
- package/dist/src/helpers/EnviromentHelper.d.ts +17 -0
- package/dist/src/helpers/EnviromentHelper.js +66 -0
- package/dist/src/helpers/ParallelExecutionHelper.d.ts +183 -0
- package/dist/src/helpers/ParallelExecutionHelper.js +375 -0
- package/dist/src/helpers/SyncSignal.d.ts +15 -0
- package/dist/src/helpers/SyncSignal.js +44 -0
- package/dist/src/hubdocs/CategoryDetector.d.ts +83 -0
- package/dist/src/hubdocs/CategoryDetector.js +401 -0
- package/dist/src/hubdocs/DirectStatementInterceptor.d.ts +54 -0
- package/dist/src/hubdocs/DirectStatementInterceptor.js +243 -0
- package/dist/src/hubdocs/ExecutionTracker.d.ts +107 -0
- package/dist/src/hubdocs/ExecutionTracker.js +702 -0
- package/dist/src/hubdocs/HubDocs.d.ts +395 -0
- package/dist/src/hubdocs/HubDocs.js +3586 -0
- package/dist/src/hubdocs/StatementMethodFilter.d.ts +71 -0
- package/dist/src/hubdocs/StatementMethodFilter.js +618 -0
- package/dist/src/hubdocs/StatementTracker.d.ts +417 -0
- package/dist/src/hubdocs/StatementTracker.js +2419 -0
- package/dist/src/hubdocs/SwaggerGenerator.d.ts +59 -0
- package/dist/src/hubdocs/SwaggerGenerator.js +405 -0
- package/dist/src/hubdocs/index.d.ts +9 -0
- package/dist/src/hubdocs/index.js +9 -0
- package/dist/src/hubdocs/types.d.ts +114 -0
- package/dist/src/hubdocs/types.js +5 -0
- package/dist/src/infrastructure/DependencyContainer.d.ts +142 -0
- package/dist/src/infrastructure/DependencyContainer.js +250 -0
- package/dist/src/infrastructure/adapters/AppiumAdapter.d.ts +168 -0
- package/dist/src/infrastructure/adapters/AppiumAdapter.js +468 -0
- package/dist/src/infrastructure/adapters/OracleAdapter.d.ts +150 -0
- package/dist/src/infrastructure/adapters/OracleAdapter.js +388 -0
- package/dist/src/infrastructure/adapters/PlaywrightAdapter.d.ts +192 -0
- package/dist/src/infrastructure/adapters/PlaywrightAdapter.js +382 -0
- package/dist/src/infrastructure/adapters/SSHAdapter.d.ts +141 -0
- package/dist/src/infrastructure/adapters/SSHAdapter.js +428 -0
- package/dist/src/interfaces.d.ts +501 -0
- package/dist/src/interfaces.js +25 -0
- package/dist/src/internal/fakes/__fake-actions__.d.ts +17 -0
- package/dist/src/internal/fakes/__fake-actions__.js +21 -0
- package/dist/src/internal/fakes/__forbidden__.d.ts +10 -0
- package/dist/src/internal/fakes/__forbidden__.js +18 -0
- package/dist/src/internal/fakes/__honeypot__.d.ts +15 -0
- package/dist/src/internal/fakes/__honeypot__.js +24 -0
- package/dist/src/octane/OctaneReporter.d.ts +13 -0
- package/dist/src/octane/OctaneReporter.js +61 -0
- package/dist/src/playwright/CryptoActions.d.ts +20 -0
- package/dist/src/playwright/CryptoActions.js +75 -0
- package/dist/src/playwright/EnhancedWebActions.d.ts +7 -0
- package/dist/src/playwright/EnhancedWebActions.js +65 -0
- package/dist/src/playwright/WebActions.d.ts +1599 -0
- package/dist/src/playwright/WebActions.js +11788 -0
- package/dist/src/playwright/actions/ActionTimeline.d.ts +36 -0
- package/dist/src/playwright/actions/ActionTimeline.js +101 -0
- package/dist/src/playwright/actions/RecoveryQueue.d.ts +82 -0
- package/dist/src/playwright/actions/RecoveryQueue.js +130 -0
- package/dist/src/playwright/actions/SelectorCache.d.ts +53 -0
- package/dist/src/playwright/actions/SelectorCache.js +96 -0
- package/dist/src/playwright/actions/index.d.ts +13 -0
- package/dist/src/playwright/actions/index.js +14 -0
- package/dist/src/playwright/actions/types.d.ts +147 -0
- package/dist/src/playwright/actions/types.js +5 -0
- package/dist/src/playwright/fixtures.d.ts +112 -0
- package/dist/src/playwright/fixtures.js +718 -0
- package/dist/src/playwright/network-logs-reporter.d.ts +7 -0
- package/dist/src/playwright/network-logs-reporter.js +66 -0
- package/dist/src/playwright/registerRecoveryWrappers.d.ts +1 -0
- package/dist/src/playwright/registerRecoveryWrappers.js +54 -0
- package/dist/src/security/BuildSecurity.d.ts +12 -0
- package/dist/src/security/BuildSecurity.js +138 -0
- package/dist/src/security/EulaProtection.d.ts +70 -0
- package/dist/src/security/EulaProtection.js +155 -0
- package/dist/src/security/HoneypotManager.d.ts +46 -0
- package/dist/src/security/HoneypotManager.js +234 -0
- package/dist/src/security/KeysManager.d.ts +36 -0
- package/dist/src/security/KeysManager.js +158 -0
- package/dist/src/security/ProofOfWorkIntegration.d.ts +64 -0
- package/dist/src/security/ProofOfWorkIntegration.js +206 -0
- package/dist/src/security/SecurityValidation.d.ts +21 -0
- package/dist/src/security/SecurityValidation.js +163 -0
- package/dist/src/security/SourceMapProtection.d.ts +55 -0
- package/dist/src/security/SourceMapProtection.js +220 -0
- package/dist/src/security/protector.d.ts +1 -0
- package/dist/src/security/protector.js +97 -0
- package/dist/src/ssh/SSHActions.d.ts +262 -0
- package/dist/src/ssh/SSHActions.js +790 -0
- package/dist/src/ssh/SSHClient.d.ts +99 -0
- package/dist/src/ssh/SSHClient.js +409 -0
- package/dist/src/statements/BaseStatement.d.ts +38 -0
- package/dist/src/statements/BaseStatement.js +78 -0
- package/dist/src/testContext/AuthStateManager.d.ts +93 -0
- package/dist/src/testContext/AuthStateManager.js +256 -0
- package/dist/src/testContext/CoverageManager.d.ts +198 -0
- package/dist/src/testContext/CoverageManager.js +917 -0
- package/dist/src/testContext/TestAnnotations.d.ts +476 -0
- package/dist/src/testContext/TestAnnotations.js +2647 -0
- package/dist/src/testContext/TestContext.d.ts +138 -0
- package/dist/src/testContext/TestContext.js +369 -0
- package/dist/src/testContext/UnifiedHtmlGenerator.d.ts +7 -0
- package/dist/src/testContext/UnifiedHtmlGenerator.js +264 -0
- package/dist/src/testContext/UnifiedReportManager.d.ts +211 -0
- package/dist/src/testContext/UnifiedReportManager.js +1206 -0
- package/dist/src/testhub/DynamicConfigManager.d.ts +121 -0
- package/dist/src/testhub/DynamicConfigManager.js +320 -0
- package/dist/src/testhub/SystemsManager.d.ts +119 -0
- package/dist/src/testhub/SystemsManager.js +365 -0
- package/dist/src/testhub/TestHubClient.d.ts +335 -0
- package/dist/src/testhub/TestHubClient.js +1215 -0
- package/dist/src/testhub/TestHubReporter.d.ts +62 -0
- package/dist/src/testhub/TestHubReporter.js +576 -0
- package/dist/src/testhub/TestHubVars.d.ts +116 -0
- package/dist/src/testhub/TestHubVars.js +273 -0
- package/dist/src/utils/ActionInterceptor.d.ts +59 -0
- package/dist/src/utils/ActionInterceptor.js +741 -0
- package/dist/src/utils/ArtifactsCompressor.d.ts +43 -0
- package/dist/src/utils/ArtifactsCompressor.js +181 -0
- package/dist/src/utils/AutoLogsFinal.d.ts +47 -0
- package/dist/src/utils/AutoLogsFinal.js +148 -0
- package/dist/src/utils/CodeGenSession.d.ts +114 -0
- package/dist/src/utils/CodeGenSession.js +264 -0
- package/dist/src/utils/ConfigLogger.d.ts +133 -0
- package/dist/src/utils/ConfigLogger.js +611 -0
- package/dist/src/utils/CustomReporter.d.ts +22 -0
- package/dist/src/utils/CustomReporter.js +352 -0
- package/dist/src/utils/DataStore.d.ts +171 -0
- package/dist/src/utils/DataStore.js +484 -0
- package/dist/src/utils/DatabaseInterceptor.d.ts +19 -0
- package/dist/src/utils/DatabaseInterceptor.js +295 -0
- package/dist/src/utils/DateHelper.d.ts +16 -0
- package/dist/src/utils/DateHelper.js +120 -0
- package/dist/src/utils/DateValidator.d.ts +4 -0
- package/dist/src/utils/DateValidator.js +51 -0
- package/dist/src/utils/DocumentGenerator.d.ts +35 -0
- package/dist/src/utils/DocumentGenerator.js +129 -0
- package/dist/src/utils/EvidenceCapture.d.ts +90 -0
- package/dist/src/utils/EvidenceCapture.js +600 -0
- package/dist/src/utils/EvidenceReportGenerator.d.ts +70 -0
- package/dist/src/utils/EvidenceReportGenerator.js +799 -0
- package/dist/src/utils/FrameManagementUtil.d.ts +42 -0
- package/dist/src/utils/FrameManagementUtil.js +75 -0
- package/dist/src/utils/GlobalStatementsInterceptor.d.ts +1 -0
- package/dist/src/utils/GlobalStatementsInterceptor.js +1 -0
- package/dist/src/utils/HTMLTemplate.d.ts +1 -0
- package/dist/src/utils/HTMLTemplate.js +1034 -0
- package/dist/src/utils/InterceptacaoMagica.d.ts +23 -0
- package/dist/src/utils/InterceptacaoMagica.js +365 -0
- package/dist/src/utils/LogSanitizer.d.ts +35 -0
- package/dist/src/utils/LogSanitizer.js +110 -0
- package/dist/src/utils/Logger.d.ts +65 -0
- package/dist/src/utils/Logger.js +284 -0
- package/dist/src/utils/McpLocalClient.d.ts +141 -0
- package/dist/src/utils/McpLocalClient.js +871 -0
- package/dist/src/utils/PDFEvidenceGenerator.d.ts +20 -0
- package/dist/src/utils/PDFEvidenceGenerator.js +156 -0
- package/dist/src/utils/SpecFileAnalyzer.d.ts +35 -0
- package/dist/src/utils/SpecFileAnalyzer.js +209 -0
- package/dist/src/utils/StatementInterceptor.d.ts +18 -0
- package/dist/src/utils/StatementInterceptor.js +87 -0
- package/dist/src/utils/StatementLogger.d.ts +33 -0
- package/dist/src/utils/StatementLogger.js +113 -0
- package/dist/src/utils/StatementsInterceptor.d.ts +1 -0
- package/dist/src/utils/StatementsInterceptor.js +1 -0
- package/dist/src/utils/TeamsFlushHook.d.ts +17 -0
- package/dist/src/utils/TeamsFlushHook.js +168 -0
- package/dist/src/utils/TerminalLogCapture.d.ts +158 -0
- package/dist/src/utils/TerminalLogCapture.js +531 -0
- package/dist/src/utils/TestMethodLogger.d.ts +70 -0
- package/dist/src/utils/TestMethodLogger.js +95 -0
- package/dist/src/utils/UnifiedTeardown.d.ts +4 -0
- package/dist/src/utils/UnifiedTeardown.js +400 -0
- package/dist/src/utils/XPathCatalog.d.ts +152 -0
- package/dist/src/utils/XPathCatalog.js +350 -0
- package/dist/src/utils/generators.d.ts +90 -0
- package/dist/src/utils/generators.js +167 -0
- package/dist/src/utils/testRecovery/ResilientPlaywright.d.ts +152 -0
- package/dist/src/utils/testRecovery/ResilientPlaywright.js +715 -0
- package/dist/src/utils/testRecovery/TestRecoveryClient.d.ts +801 -0
- package/dist/src/utils/testRecovery/TestRecoveryClient.js +1415 -0
- package/dist/src/utils/testRecovery/autoFixCode.d.ts +65 -0
- package/dist/src/utils/testRecovery/autoFixCode.js +32 -0
- package/dist/vitest.config.d.ts +2 -0
- package/dist/vitest.config.js +59 -0
- package/dist/wdio.conf.d.ts +1 -0
- package/dist/wdio.conf.js +420 -0
- package/package.json +137 -0
- package/protect-loader.mjs +643 -0
- package/scripts/consumer-postinstall.ts +975 -0
- package/scripts/generate-index.ts +343 -0
- package/scripts/init-api.ts +613 -0
- package/scripts/init-banco.ts +437 -0
- package/scripts/init-frontend.ts +727 -0
- package/scripts/init-mobile.ts +558 -0
- package/scripts/init-scenarios.ts +925 -0
- package/scripts/init-ssh.ts +734 -0
- package/scripts/package-versions.ts +978 -0
- package/scripts/postinstall.ts +605 -0
- package/scripts/smart-override.ts +1675 -0
- package/scripts/sync-configs.ts +302 -0
- package/scripts/ultracite-setup.ts +370 -0
- package/src/types/globals.d.ts +48 -0
- package/tsconfig.json +29 -0
- package/types/autocore-sync-signal.d.ts +10 -0
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SystemsManager: Gerenciador de sistemas com IntelliSense dinâmico
|
|
3
|
+
* Busca sistemas do backend e cria enum dinâmico para autocomplete
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import { Logger } from '../utils/Logger.js';
|
|
8
|
+
import { TestHubClient, } from './TestHubClient.js';
|
|
9
|
+
/**
|
|
10
|
+
* Gerenciador de sistemas com suporte a IntelliSense
|
|
11
|
+
*/
|
|
12
|
+
export class SystemsManager {
|
|
13
|
+
static instance;
|
|
14
|
+
client;
|
|
15
|
+
selectedSystem = null;
|
|
16
|
+
systemsLoaded = false;
|
|
17
|
+
systems = [];
|
|
18
|
+
constructor() {
|
|
19
|
+
this.client = TestHubClient.getInstance();
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Obtém instância singleton
|
|
23
|
+
*/
|
|
24
|
+
static getInstance() {
|
|
25
|
+
if (!SystemsManager.instance) {
|
|
26
|
+
SystemsManager.instance = new SystemsManager();
|
|
27
|
+
}
|
|
28
|
+
return SystemsManager.instance;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* 🚀 Inicializa o gerenciador e busca sistemas do backend
|
|
32
|
+
*/
|
|
33
|
+
async initialize() {
|
|
34
|
+
if (this.systemsLoaded) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
this.systems = await this.client.getSystems();
|
|
39
|
+
this.systemsLoaded = true;
|
|
40
|
+
if (this.systems.length > 0) {
|
|
41
|
+
await this.generateSystemsEnum();
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
Logger.warning('⚠️ Nenhum sistema encontrado no AutoCore Hub');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
Logger.error(`❌ Erro ao inicializar SystemsManager: ${error}`);
|
|
49
|
+
this.systemsLoaded = false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 📝 Gera arquivo TypeScript com enum Systems para IntelliSense
|
|
54
|
+
*
|
|
55
|
+
* ESTRATÉGIA: Salva enum em .rbqa/SystemsEnum.ts no projeto consumidor
|
|
56
|
+
* para que possa ser importado sem modificar source files do framework
|
|
57
|
+
*/
|
|
58
|
+
async generateSystemsEnum() {
|
|
59
|
+
try {
|
|
60
|
+
// Gerar conteúdo do enum
|
|
61
|
+
const enumContent = this.generateEnumContent();
|
|
62
|
+
// 🎯 Salvar em .rbqa/SystemsEnum.ts no projeto consumidor
|
|
63
|
+
const projectRoot = process.cwd();
|
|
64
|
+
const rbqaDir = path.join(projectRoot, '.rbqa');
|
|
65
|
+
const enumFilePath = path.join(rbqaDir, 'SystemsEnum.ts');
|
|
66
|
+
// Criar diretório .rbqa se não existir
|
|
67
|
+
if (!fs.existsSync(rbqaDir)) {
|
|
68
|
+
fs.mkdirSync(rbqaDir, { recursive: true });
|
|
69
|
+
}
|
|
70
|
+
// Salvar arquivo TypeScript
|
|
71
|
+
fs.writeFileSync(enumFilePath, enumContent.typescript);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
Logger.warning(`⚠️ Erro ao gerar enum de sistemas: ${error}`);
|
|
75
|
+
}
|
|
76
|
+
} /**
|
|
77
|
+
* Gera conteúdo do enum TypeScript
|
|
78
|
+
*/
|
|
79
|
+
generateEnumContent() {
|
|
80
|
+
// Gerar lista de sistemas para documentação
|
|
81
|
+
const sistemasDisponiveis = this.systems.length > 0
|
|
82
|
+
? this.systems
|
|
83
|
+
.map((s) => ` * - ${this.sanitizeEnumKey(s.name)}: ${s.description || s.name}`)
|
|
84
|
+
.join('\n')
|
|
85
|
+
: ' * (Nenhum sistema cadastrado ainda)';
|
|
86
|
+
const tsContent = `/**
|
|
87
|
+
* 🌐 Enum de Sistemas do AutoCore Hub
|
|
88
|
+
*
|
|
89
|
+
* Este arquivo é gerado automaticamente quando você executa o teste pela primeira vez.
|
|
90
|
+
* NÃO EDITE MANUALMENTE - será sobrescrito na próxima execução.
|
|
91
|
+
*
|
|
92
|
+
* 📅 Última atualização: ${new Date().toLocaleString('pt-BR')}
|
|
93
|
+
* 🔗 AutoCore Hub: http://brtlvlty0559pl:3333
|
|
94
|
+
* 📊 Total de sistemas: ${this.systems.length}
|
|
95
|
+
*
|
|
96
|
+
* 💡 USO:
|
|
97
|
+
* \`\`\`typescript
|
|
98
|
+
* import { Systems } from "../.rbqa/SystemsEnum"
|
|
99
|
+
* import { TestAnnotations } from "@silasfmartins/testhub"
|
|
100
|
+
*
|
|
101
|
+
* test("CT001", async ({}, testInfo) => {
|
|
102
|
+
* TestAnnotations.Api.testInfo = testInfo
|
|
103
|
+
* await TestAnnotations.setSystem(Systems.NOME_SISTEMA)
|
|
104
|
+
* })
|
|
105
|
+
* \`\`\`
|
|
106
|
+
*
|
|
107
|
+
* 🎯 SISTEMAS DISPONÍVEIS:
|
|
108
|
+
${sistemasDisponiveis}
|
|
109
|
+
*/
|
|
110
|
+
|
|
111
|
+
export enum Systems {
|
|
112
|
+
${this.systems.length > 0
|
|
113
|
+
? this.systems
|
|
114
|
+
.map((system) => {
|
|
115
|
+
const enumKey = this.sanitizeEnumKey(system.name);
|
|
116
|
+
const description = system.description || system.name;
|
|
117
|
+
return ` /**\n * ${description}\n * Nome original: "${system.name}"\n */\n ${enumKey} = "${system.name}"`;
|
|
118
|
+
})
|
|
119
|
+
.join(',\n\n')
|
|
120
|
+
: ' // Nenhum sistema cadastrado no AutoCore Hub ainda\n // Execute o teste novamente após cadastrar sistemas'}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export default Systems
|
|
124
|
+
`;
|
|
125
|
+
return { typescript: tsContent };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Sanitiza nome do sistema para usar como chave de enum
|
|
129
|
+
* IMPORTANTE: Preserva o formato original se já for válido (ex: AUTENTICA_IN_HML)
|
|
130
|
+
*/
|
|
131
|
+
sanitizeEnumKey(systemName) {
|
|
132
|
+
// Se o nome já está em UPPERCASE com underscores válidos, mantém como está
|
|
133
|
+
if (/^[A-Z0-9_]+$/.test(systemName)) {
|
|
134
|
+
return systemName;
|
|
135
|
+
}
|
|
136
|
+
// Caso contrário, converte
|
|
137
|
+
return systemName
|
|
138
|
+
.toUpperCase()
|
|
139
|
+
.replace(/[^A-Z0-9_]/g, '_')
|
|
140
|
+
.replace(/_{2,}/g, '_')
|
|
141
|
+
.replace(/^_|_$/g, '');
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* 🎯 Seleciona um sistema para uso nos testes
|
|
145
|
+
* @param systemName Nome do sistema
|
|
146
|
+
* @param environmentName Nome do ambiente (ex: 'preprod', 'esteira1')
|
|
147
|
+
* @param projectType Tipo de projeto (API, Frontend, etc) para filtrar ambientes
|
|
148
|
+
*/
|
|
149
|
+
async selectSystem(systemName, environmentName, projectType) {
|
|
150
|
+
if (!this.systemsLoaded) {
|
|
151
|
+
await this.initialize();
|
|
152
|
+
}
|
|
153
|
+
// Buscar sistema
|
|
154
|
+
const system = await this.client.getSystemByName(systemName);
|
|
155
|
+
if (!system) {
|
|
156
|
+
throw new Error(`❌ Sistema "${systemName}" não encontrado no TestHub. Sistemas disponíveis: ${this.systems.map((s) => s.name).join(', ')}`);
|
|
157
|
+
}
|
|
158
|
+
// Determinar ambiente (usar NODE_ENV ou ENV)
|
|
159
|
+
const envName = environmentName || process.env.NODE_ENV || process.env.ENV || 'preprod';
|
|
160
|
+
Logger.info(`🔍 Buscando ambiente: "${envName}" (NODE_ENV: ${process.env.NODE_ENV}, ENV: ${process.env.ENV})`);
|
|
161
|
+
// ⚠️ NOTA: O backend não retorna o tipo do sistema (API, WEB, SSH, etc.)
|
|
162
|
+
// Portanto, NÃO filtramos por tipo - todos os ambientes estão disponíveis
|
|
163
|
+
// O tipo é usado apenas para informação, não para validação
|
|
164
|
+
let availableEnvironments = system.environments;
|
|
165
|
+
if (projectType) {
|
|
166
|
+
// Log informativo apenas - não filtra mais por tipo
|
|
167
|
+
Logger.info(` 📌 Tipo de projeto: ${projectType}`);
|
|
168
|
+
}
|
|
169
|
+
availableEnvironments.forEach((env) => {
|
|
170
|
+
Logger.info(` - ${env.name}: ${env.url ? '***' : '(sem URL)'}`);
|
|
171
|
+
});
|
|
172
|
+
// Buscar ambiente específico pelo NOME (case-insensitive)
|
|
173
|
+
let environment = availableEnvironments.find((env) => env.name.toLowerCase() === envName.toLowerCase());
|
|
174
|
+
// Se não encontrou, pegar o primeiro ambiente disponível
|
|
175
|
+
if (!environment) {
|
|
176
|
+
environment = availableEnvironments[0];
|
|
177
|
+
Logger.warning(`⚠️ Ambiente "${envName}" não encontrado. Usando: ${environment.name}`);
|
|
178
|
+
}
|
|
179
|
+
this.selectedSystem = {
|
|
180
|
+
name: systemName,
|
|
181
|
+
system,
|
|
182
|
+
environment,
|
|
183
|
+
environmentName: environment.name,
|
|
184
|
+
};
|
|
185
|
+
return this.selectedSystem;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Obtém sistema selecionado atual
|
|
189
|
+
*/
|
|
190
|
+
getSelectedSystem() {
|
|
191
|
+
return this.selectedSystem;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Verifica se um sistema foi selecionado
|
|
195
|
+
*/
|
|
196
|
+
hasSystemSelected() {
|
|
197
|
+
return this.selectedSystem !== null;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Valida se sistema foi selecionado (lança erro se não)
|
|
201
|
+
*/
|
|
202
|
+
validateSystemSelected() {
|
|
203
|
+
if (!this.hasSystemSelected()) {
|
|
204
|
+
throw new Error(`
|
|
205
|
+
❌ SISTEMA NÃO CONFIGURADO
|
|
206
|
+
|
|
207
|
+
Você precisa selecionar um sistema antes de executar os testes.
|
|
208
|
+
|
|
209
|
+
Adicione no início do seu teste:
|
|
210
|
+
|
|
211
|
+
import { Systems, TestAnnotations } from '@silasfmartins/testhub'
|
|
212
|
+
|
|
213
|
+
test.describe("Meu Cenário", () => {
|
|
214
|
+
test("Meu Teste", async ({}, testInfo) => {
|
|
215
|
+
TestAnnotations.Api.testInfo = testInfo
|
|
216
|
+
TestAnnotations.setSystem(Systems.NOME_DO_SISTEMA) // 👈 OBRIGATÓRIO
|
|
217
|
+
|
|
218
|
+
// ... seu teste aqui
|
|
219
|
+
})
|
|
220
|
+
})
|
|
221
|
+
|
|
222
|
+
Sistemas disponíveis: ${this.systems.map((s) => s.name).join(', ')}
|
|
223
|
+
`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Lista todos os sistemas disponíveis
|
|
228
|
+
*/
|
|
229
|
+
async listSystems() {
|
|
230
|
+
if (!this.systemsLoaded) {
|
|
231
|
+
await this.initialize();
|
|
232
|
+
}
|
|
233
|
+
return this.systems;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Lista sistemas por tipo
|
|
237
|
+
*/
|
|
238
|
+
async listSystemsByType(type) {
|
|
239
|
+
if (!this.systemsLoaded) {
|
|
240
|
+
await this.initialize();
|
|
241
|
+
}
|
|
242
|
+
return this.systems.filter((system) => system.environments.some((env) => env.type === type));
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Limpa seleção atual
|
|
246
|
+
*/
|
|
247
|
+
clearSelection() {
|
|
248
|
+
this.selectedSystem = null;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Recarrega sistemas do backend (força atualização)
|
|
252
|
+
*/
|
|
253
|
+
async reload() {
|
|
254
|
+
this.client.clearCache();
|
|
255
|
+
this.systemsLoaded = false;
|
|
256
|
+
await this.initialize();
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* Obtém configuração do sistema selecionado (para injeção automática)
|
|
260
|
+
*/
|
|
261
|
+
getSystemConfig() {
|
|
262
|
+
if (!this.selectedSystem) {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
const env = this.selectedSystem.environment;
|
|
266
|
+
return {
|
|
267
|
+
baseUrl: env.url,
|
|
268
|
+
username: env.username,
|
|
269
|
+
password: env.password,
|
|
270
|
+
host: env.url.replace(/^https?:\/\//, ''), // Remove protocolo para SSH/Banco
|
|
271
|
+
port: env.port,
|
|
272
|
+
serviceName: env.serviceName,
|
|
273
|
+
privateKeyPath: env.privateKeyPath,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* 🌐 Enum Systems com Lazy Loading
|
|
279
|
+
*
|
|
280
|
+
* Este enum é populado dinamicamente quando você usa TestAnnotations.setSystem()
|
|
281
|
+
* pela primeira vez. Ele carrega os sistemas do AutoCore Hub automaticamente.
|
|
282
|
+
*
|
|
283
|
+
* ✅ USO RECOMENDADO:
|
|
284
|
+
*
|
|
285
|
+
* import { TestAnnotations, Systems } from "@silasfmartins/testhub"
|
|
286
|
+
*
|
|
287
|
+
* test("Meu teste", async ({}, testInfo) => {
|
|
288
|
+
* TestAnnotations.Api.testInfo = testInfo
|
|
289
|
+
*
|
|
290
|
+
* // Opção 1: String direta (sempre funciona)
|
|
291
|
+
* await TestAnnotations.setSystem("AUTENTICA_IN_HML")
|
|
292
|
+
*
|
|
293
|
+
* // Opção 2: Enum (após primeira execução)
|
|
294
|
+
* await TestAnnotations.setSystem(Systems.AUTENTICA_IN_HML)
|
|
295
|
+
* })
|
|
296
|
+
*
|
|
297
|
+
* 💡 O enum Systems é populado automaticamente na primeira chamada de setSystem()
|
|
298
|
+
*/
|
|
299
|
+
// Proxy que carrega sistemas dinamicamente
|
|
300
|
+
export const Systems = new Proxy({}, {
|
|
301
|
+
get(target, prop) {
|
|
302
|
+
// Se já existe no cache, retorna
|
|
303
|
+
if (prop in target) {
|
|
304
|
+
return target[prop];
|
|
305
|
+
}
|
|
306
|
+
// Se é uma propriedade especial do JavaScript, retorna undefined
|
|
307
|
+
if (typeof prop === 'symbol' ||
|
|
308
|
+
prop === 'then' ||
|
|
309
|
+
prop === 'constructor' ||
|
|
310
|
+
prop === 'prototype') {
|
|
311
|
+
return undefined;
|
|
312
|
+
}
|
|
313
|
+
// Tentar carregar do enum gerado
|
|
314
|
+
try {
|
|
315
|
+
const projectRoot = process.cwd();
|
|
316
|
+
const enumFilePath = path.join(projectRoot, '.rbqa', 'SystemsEnum.ts');
|
|
317
|
+
if (fs.existsSync(enumFilePath)) {
|
|
318
|
+
const content = fs.readFileSync(enumFilePath, 'utf-8');
|
|
319
|
+
const match = content.match(new RegExp(`${prop}\\s*=\\s*"([^"]+)"`));
|
|
320
|
+
if (match) {
|
|
321
|
+
target[prop] = match[1];
|
|
322
|
+
return match[1];
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
// Ignorar erro silenciosamente
|
|
328
|
+
}
|
|
329
|
+
// Retornar o próprio nome como valor (ex: Systems.AUTENTICA_IN_HML = "AUTENTICA_IN_HML")
|
|
330
|
+
target[prop] = prop;
|
|
331
|
+
return prop;
|
|
332
|
+
},
|
|
333
|
+
// Permitir iteração sobre as propriedades
|
|
334
|
+
ownKeys(target) {
|
|
335
|
+
try {
|
|
336
|
+
const projectRoot = process.cwd();
|
|
337
|
+
const enumFilePath = path.join(projectRoot, '.rbqa', 'SystemsEnum.ts');
|
|
338
|
+
if (fs.existsSync(enumFilePath)) {
|
|
339
|
+
const content = fs.readFileSync(enumFilePath, 'utf-8');
|
|
340
|
+
const matches = content.matchAll(/(\w+)\s*=\s*"([^"]+)"/g);
|
|
341
|
+
const keys = [];
|
|
342
|
+
for (const match of matches) {
|
|
343
|
+
keys.push(match[1]);
|
|
344
|
+
target[match[1]] = match[2];
|
|
345
|
+
}
|
|
346
|
+
return keys;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
catch (error) {
|
|
350
|
+
// Ignorar erro
|
|
351
|
+
}
|
|
352
|
+
return Object.keys(target);
|
|
353
|
+
},
|
|
354
|
+
getOwnPropertyDescriptor(target, prop) {
|
|
355
|
+
if (typeof prop === 'symbol') {
|
|
356
|
+
return undefined;
|
|
357
|
+
}
|
|
358
|
+
return {
|
|
359
|
+
enumerable: true,
|
|
360
|
+
configurable: true,
|
|
361
|
+
value: target[prop] || prop,
|
|
362
|
+
};
|
|
363
|
+
},
|
|
364
|
+
});
|
|
365
|
+
export default SystemsManager;
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TestHubClient: Cliente HTTP para comunicação com o backend TestHub
|
|
3
|
+
* Responsável por buscar sistemas e enviar resultados de execução
|
|
4
|
+
*
|
|
5
|
+
* NOTA: Usa fetch nativo do Node.js (sem axios) para evitar problemas com proxy corporativo
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Variável de ambiente do sistema
|
|
9
|
+
*/
|
|
10
|
+
export interface EnvironmentVariable {
|
|
11
|
+
id: string;
|
|
12
|
+
key: string;
|
|
13
|
+
value: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Sistema retornado pelo backend
|
|
17
|
+
*/
|
|
18
|
+
export interface TestHubSystem {
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
description: string;
|
|
22
|
+
url: string;
|
|
23
|
+
type?: string;
|
|
24
|
+
status?: string;
|
|
25
|
+
isActive?: boolean;
|
|
26
|
+
sidService?: string;
|
|
27
|
+
environments: TestHubEnvironment[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Ambiente de um sistema (DEV, HML, PROD, etc)
|
|
31
|
+
*/
|
|
32
|
+
export interface TestHubEnvironment {
|
|
33
|
+
id: string;
|
|
34
|
+
name: string;
|
|
35
|
+
type: string;
|
|
36
|
+
url: string;
|
|
37
|
+
port?: string;
|
|
38
|
+
username?: string;
|
|
39
|
+
password?: string;
|
|
40
|
+
serviceName?: string;
|
|
41
|
+
privateKeyPath?: string;
|
|
42
|
+
variables?: EnvironmentVariable[];
|
|
43
|
+
frameworkVariables?: Record<string, string>;
|
|
44
|
+
requiredFrameworkVariables?: string[];
|
|
45
|
+
credentials?: {
|
|
46
|
+
id: string;
|
|
47
|
+
label: string;
|
|
48
|
+
suffix?: string | null;
|
|
49
|
+
description?: string | null;
|
|
50
|
+
url?: string | null;
|
|
51
|
+
port?: string | null;
|
|
52
|
+
service?: string | null;
|
|
53
|
+
username?: string | null;
|
|
54
|
+
password?: string | null;
|
|
55
|
+
isDefault?: boolean;
|
|
56
|
+
isActive?: boolean;
|
|
57
|
+
displayOrder?: number;
|
|
58
|
+
}[];
|
|
59
|
+
isPrivate?: boolean;
|
|
60
|
+
privateMembers?: {
|
|
61
|
+
userId: string;
|
|
62
|
+
canManage?: boolean;
|
|
63
|
+
}[];
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Informações de um CT individual
|
|
67
|
+
*/
|
|
68
|
+
export interface CTInfo {
|
|
69
|
+
ctNome: string;
|
|
70
|
+
status: 'sucesso' | 'erro' | 'pulado';
|
|
71
|
+
tempoExecucao: number;
|
|
72
|
+
erro?: string;
|
|
73
|
+
logs?: string;
|
|
74
|
+
linhaErro?: number;
|
|
75
|
+
screenshots?: string[];
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Payload de execução de CN com lista de CTs
|
|
79
|
+
* NOTA: matricula e email agora são enviados via headers (x-automation-user-matricula e x-automation-user-email)
|
|
80
|
+
*/
|
|
81
|
+
export interface TestExecutionPayload {
|
|
82
|
+
cenarioNome: string;
|
|
83
|
+
sistemaNome: string;
|
|
84
|
+
repositorio?: string;
|
|
85
|
+
ambiente: 'LOCAL' | 'AZURE';
|
|
86
|
+
status: 'sucesso' | 'erro' | 'pulado';
|
|
87
|
+
tempoExecucao: number;
|
|
88
|
+
totalCTs: number;
|
|
89
|
+
ctsPassados: number;
|
|
90
|
+
ctsFalhados: number;
|
|
91
|
+
ctsPulados: number;
|
|
92
|
+
cts: CTInfo[];
|
|
93
|
+
erro?: string;
|
|
94
|
+
logs?: string;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Payload para execução de cenário no AutoCore Hub
|
|
98
|
+
*/
|
|
99
|
+
export interface ScenarioExecutionPayload {
|
|
100
|
+
cenarioNome: string;
|
|
101
|
+
cenarioId?: string;
|
|
102
|
+
sistemaNome?: string;
|
|
103
|
+
repositorio?: string;
|
|
104
|
+
ambiente: 'LOCAL' | 'AZURE';
|
|
105
|
+
status?: 'executando' | 'sucesso' | 'erro' | 'cancelado';
|
|
106
|
+
tempoExecucao?: number;
|
|
107
|
+
sistemaId?: string;
|
|
108
|
+
parametros?: string;
|
|
109
|
+
resultado?: string;
|
|
110
|
+
erro?: string;
|
|
111
|
+
logs?: string;
|
|
112
|
+
linhaErro?: number;
|
|
113
|
+
ctErro?: string;
|
|
114
|
+
cnE1Erro?: string;
|
|
115
|
+
nomeCenarioCt?: string;
|
|
116
|
+
testeEspecificoErro?: string;
|
|
117
|
+
screenshots?: string[];
|
|
118
|
+
evidencias?: string;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Usuário retornado pelo AutoCore Hub
|
|
122
|
+
*/
|
|
123
|
+
export interface HubUser {
|
|
124
|
+
id: string;
|
|
125
|
+
name: string;
|
|
126
|
+
email: string;
|
|
127
|
+
matricula: string;
|
|
128
|
+
role: string;
|
|
129
|
+
diretoria?: string;
|
|
130
|
+
equipe?: string;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Configuração do cliente TestHub
|
|
134
|
+
*/
|
|
135
|
+
export interface TestHubConfig {
|
|
136
|
+
baseUrl: string;
|
|
137
|
+
timeout?: number;
|
|
138
|
+
retries?: number;
|
|
139
|
+
cacheEnabled?: boolean;
|
|
140
|
+
cacheDuration?: number;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Cliente para comunicação com backend TestHub
|
|
144
|
+
* Usa fetch nativo do Node.js para evitar problemas com proxy corporativo
|
|
145
|
+
*/
|
|
146
|
+
export declare class TestHubClient {
|
|
147
|
+
private static instance;
|
|
148
|
+
private config;
|
|
149
|
+
private systemsCache;
|
|
150
|
+
private cacheFilePath;
|
|
151
|
+
private cachedUserId;
|
|
152
|
+
private cachedAuthToken;
|
|
153
|
+
private cachedAuthTokenExpiry;
|
|
154
|
+
private hubApiUrl;
|
|
155
|
+
private constructor();
|
|
156
|
+
/**
|
|
157
|
+
* Obtém instância singleton do cliente
|
|
158
|
+
*/
|
|
159
|
+
static getInstance(config?: Partial<TestHubConfig>): TestHubClient;
|
|
160
|
+
/**
|
|
161
|
+
* Constrói headers padrão para requisições ao AutoCore Hub
|
|
162
|
+
* - Windows local: x-automation-user-matricula (USERNAME)
|
|
163
|
+
* - Linux/Azure: x-automation-user-email (email do pipeline)
|
|
164
|
+
* REGRA: Cada ambiente manda apenas o que tem disponível
|
|
165
|
+
*/
|
|
166
|
+
private buildHeaders;
|
|
167
|
+
/**
|
|
168
|
+
* Faz uma requisição GET com retry e fallback de URL
|
|
169
|
+
*/
|
|
170
|
+
private fetchGet;
|
|
171
|
+
/**
|
|
172
|
+
* Faz uma requisição POST com retry
|
|
173
|
+
*/
|
|
174
|
+
private fetchPost;
|
|
175
|
+
/**
|
|
176
|
+
* 📡 Busca lista de sistemas do backend
|
|
177
|
+
* @returns Lista de sistemas cadastrados
|
|
178
|
+
*/
|
|
179
|
+
getSystems(): Promise<TestHubSystem[]>;
|
|
180
|
+
/**
|
|
181
|
+
* 📤 Envia resultado de execução em batch para o backend
|
|
182
|
+
* @param batchPayload Dados completos da execução (batch)
|
|
183
|
+
* @returns IDs das execuções criadas
|
|
184
|
+
*/
|
|
185
|
+
sendBatchExecution(batchPayload: any): Promise<string[]>;
|
|
186
|
+
/**
|
|
187
|
+
* 📦 Envia artifacts (relatórios compactados em Base64) para o backend
|
|
188
|
+
* @param artifactsPayload Dados dos artifacts
|
|
189
|
+
*/
|
|
190
|
+
sendArtifacts(artifactsPayload: any): Promise<void>;
|
|
191
|
+
/**
|
|
192
|
+
* 🔍 Busca sistema por nome
|
|
193
|
+
* @param systemName Nome do sistema
|
|
194
|
+
* @returns Sistema encontrado ou null
|
|
195
|
+
*/
|
|
196
|
+
getSystemByName(systemName: string): Promise<TestHubSystem | null>;
|
|
197
|
+
/**
|
|
198
|
+
* 🔍 Busca sistemas por tipo de ambiente
|
|
199
|
+
* @param type Tipo de ambiente (API, WEB, SSH, BANCO)
|
|
200
|
+
* @returns Lista de sistemas filtrados
|
|
201
|
+
*/
|
|
202
|
+
getSystemsByType(type: TestHubEnvironment['type']): Promise<TestHubSystem[]>;
|
|
203
|
+
/**
|
|
204
|
+
* 🔍 Busca ambiente específico de um sistema
|
|
205
|
+
* @param systemName Nome do sistema
|
|
206
|
+
* @param environmentName Nome do ambiente (ex: 'preprod', 'esteira1')
|
|
207
|
+
* @returns Ambiente encontrado ou null
|
|
208
|
+
*/
|
|
209
|
+
getEnvironment(systemName: string, environmentName: string): Promise<TestHubEnvironment | null>;
|
|
210
|
+
/**
|
|
211
|
+
* 🔑 Busca todas as variáveis de ambiente de um sistema/ambiente específico
|
|
212
|
+
* Inclui automaticamente campos do ambiente como variáveis:
|
|
213
|
+
* - URL, USERNAME, PASSWORD, PORT
|
|
214
|
+
* @param systemName Nome do sistema
|
|
215
|
+
* @param environmentName Nome do ambiente (ex: 'Prod', 'Homolog')
|
|
216
|
+
* @returns Array de variáveis ou array vazio
|
|
217
|
+
*/
|
|
218
|
+
getEnvironmentVariables(systemName: string, environmentName: string): Promise<EnvironmentVariable[]>;
|
|
219
|
+
/**
|
|
220
|
+
* Obtém token JWT do AutoCore Hub e faz cache com expiry simples.
|
|
221
|
+
*/
|
|
222
|
+
private getAuthToken;
|
|
223
|
+
/**
|
|
224
|
+
* Retorna um mapa de variáveis final para execução escolhendo credencial com sufixo quando informado.
|
|
225
|
+
* - Sufixo nulo => usa chaves padrão (URL, USERNAME...)
|
|
226
|
+
* - Sufixo 'PARCEIRO' => prefere URL_PARCEIRO etc, mas faz fallback para padrão quando ausente
|
|
227
|
+
*/
|
|
228
|
+
getFrameworkVariablesForExecution(systemName: string, environmentName: string, credentialSuffix?: string | null): Promise<Record<string, string>>;
|
|
229
|
+
/**
|
|
230
|
+
* Retorna os sufixos de credenciais disponíveis para um ambiente (inclui null/default)
|
|
231
|
+
*/
|
|
232
|
+
getAvailableCredentialSuffixes(systemName: string, environmentName: string): Promise<(string | null)[]>;
|
|
233
|
+
/**
|
|
234
|
+
* Constrói um conjunto de credenciais (URL/PORT/SERVICE/USERNAME/PASSWORD) a partir do mapa de framework vars
|
|
235
|
+
*/
|
|
236
|
+
getCredentialSetFromVars(vars: Record<string, string>, suffix?: string | null): {
|
|
237
|
+
url: string;
|
|
238
|
+
port: string;
|
|
239
|
+
service: string;
|
|
240
|
+
username: string;
|
|
241
|
+
password: string;
|
|
242
|
+
};
|
|
243
|
+
/**
|
|
244
|
+
* Retorna o conjunto de credenciais efetivo para execução, escolhendo por sufixo ou fallback
|
|
245
|
+
*/
|
|
246
|
+
getCredentialSetForEnvironment(systemName: string, environmentName: string, requestedSuffix?: string | null): Promise<{
|
|
247
|
+
suffix: string | null;
|
|
248
|
+
credentialSet: {
|
|
249
|
+
url: string;
|
|
250
|
+
port: string;
|
|
251
|
+
service: string;
|
|
252
|
+
username: string;
|
|
253
|
+
password: string;
|
|
254
|
+
};
|
|
255
|
+
}>;
|
|
256
|
+
/**
|
|
257
|
+
* Resolve um valor possivelmente placeholder usando as frameworkVariables ou credentials do ambiente.
|
|
258
|
+
* - Se `input` for uma chave (ex: "USERNAME", "ADB_VENDA") tenta buscar em frameworkVariables
|
|
259
|
+
* - Se for uma das chaves base (USERNAME/PASSWORD/URL/PORT/SERVICE) e não existir como variável, usa o credentialSet
|
|
260
|
+
* - Caso contrário retorna `input` inalterado
|
|
261
|
+
*/
|
|
262
|
+
resolveFrameworkValue(systemName: string, environmentName: string, input: string | undefined | null, credentialSuffix?: string | null): Promise<string | null>;
|
|
263
|
+
/**
|
|
264
|
+
* 🔍 Busca uma variável específica por chave
|
|
265
|
+
* @param systemName Nome do sistema
|
|
266
|
+
* @param environmentName Nome do ambiente
|
|
267
|
+
* @param variableKey Chave da variável (ex: 'BASE_URL', 'API_TOKEN')
|
|
268
|
+
* @returns Valor da variável ou null se não encontrada
|
|
269
|
+
*/
|
|
270
|
+
getEnvironmentVariable(systemName: string, environmentName: string, variableKey: string): Promise<string | null>;
|
|
271
|
+
/**
|
|
272
|
+
* 🌍 Carrega todas as variáveis de um ambiente como variáveis de ambiente do processo
|
|
273
|
+
* @param systemName Nome do sistema
|
|
274
|
+
* @param environmentName Nome do ambiente
|
|
275
|
+
* @param prefix Prefixo opcional para as variáveis (ex: 'AUTOCORE_')
|
|
276
|
+
* @returns Número de variáveis carregadas
|
|
277
|
+
*/
|
|
278
|
+
loadEnvironmentVariables(systemName: string, environmentName: string, prefix?: string): Promise<number>;
|
|
279
|
+
/**
|
|
280
|
+
* 📝 Retorna todas as variáveis como um objeto chave-valor
|
|
281
|
+
* @param systemName Nome do sistema
|
|
282
|
+
* @param environmentName Nome do ambiente
|
|
283
|
+
* @returns Objeto com chave-valor das variáveis
|
|
284
|
+
*/
|
|
285
|
+
getVariablesAsObject(systemName: string, environmentName: string): Promise<Record<string, string>>;
|
|
286
|
+
/**
|
|
287
|
+
* Verifica se o cache é válido
|
|
288
|
+
*/
|
|
289
|
+
private isCacheValid;
|
|
290
|
+
/**
|
|
291
|
+
* Salva sistemas no cache em memória e arquivo
|
|
292
|
+
*/
|
|
293
|
+
private saveSystemsToCache;
|
|
294
|
+
/**
|
|
295
|
+
* Carrega sistemas do cache em arquivo
|
|
296
|
+
*/
|
|
297
|
+
private loadSystemsFromFileCache;
|
|
298
|
+
/**
|
|
299
|
+
* Salva execução que falhou para retry posterior
|
|
300
|
+
*/
|
|
301
|
+
private saveFailedBatchExecution;
|
|
302
|
+
/**
|
|
303
|
+
* Limpa cache de sistemas
|
|
304
|
+
*/
|
|
305
|
+
clearCache(): void;
|
|
306
|
+
/**
|
|
307
|
+
* Testa conectividade com o backend
|
|
308
|
+
*/
|
|
309
|
+
testConnection(): Promise<boolean>;
|
|
310
|
+
/**
|
|
311
|
+
* Converte sistemas do AutoCore Hub para formato TestHub
|
|
312
|
+
*/
|
|
313
|
+
private convertHubSystemsToTestHub;
|
|
314
|
+
/**
|
|
315
|
+
* Obtém User ID do AutoCore Hub (com autenticação automática)
|
|
316
|
+
*/
|
|
317
|
+
getUserId(): Promise<string>;
|
|
318
|
+
/**
|
|
319
|
+
* Detecta ambiente de execução e obtém identificador do usuário
|
|
320
|
+
*/
|
|
321
|
+
private getUserIdentifier;
|
|
322
|
+
/**
|
|
323
|
+
* Obtém email do usuário via Azure DevOps REST API
|
|
324
|
+
*/
|
|
325
|
+
private getAzureUserEmailFromAPI;
|
|
326
|
+
/**
|
|
327
|
+
* Envia execução de cenário para o AutoCore Hub
|
|
328
|
+
*/
|
|
329
|
+
sendScenarioExecution(payload: ScenarioExecutionPayload): Promise<string>;
|
|
330
|
+
/**
|
|
331
|
+
* Salva execução de cenário falhada para retry posterior
|
|
332
|
+
*/
|
|
333
|
+
private saveFailedScenarioExecution;
|
|
334
|
+
}
|
|
335
|
+
export default TestHubClient;
|