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