@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,52 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// @ts-nocheck
|
|
3
|
+
import fs from 'node:fs';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { getLatestVersions } from './package-versions.ts';
|
|
6
|
+
/**
|
|
7
|
+
* Script para atualizar todas as versões nos arquivos init
|
|
8
|
+
*/
|
|
9
|
+
async function updateAllInitScripts() {
|
|
10
|
+
console.log('🔄 Atualizando versões em todos os scripts init...');
|
|
11
|
+
const versions = await getLatestVersions();
|
|
12
|
+
console.log('📦 Versões atuais:');
|
|
13
|
+
console.log('Dependencies:', versions.dependencies);
|
|
14
|
+
console.log('DevDependencies:', versions.devDependencies);
|
|
15
|
+
const initFiles = [
|
|
16
|
+
'init-api.ts',
|
|
17
|
+
'init-frontend.ts',
|
|
18
|
+
'init-mobile.ts',
|
|
19
|
+
'init-ssh.ts',
|
|
20
|
+
'init-banco.ts',
|
|
21
|
+
'init-scenarios.ts',
|
|
22
|
+
];
|
|
23
|
+
const scriptsDir = path.join(process.cwd(), 'scripts');
|
|
24
|
+
for (const file of initFiles) {
|
|
25
|
+
const filePath = path.join(scriptsDir, file);
|
|
26
|
+
if (fs.existsSync(filePath)) {
|
|
27
|
+
console.log(`✏️ Verificando ${file}...`);
|
|
28
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
29
|
+
// Verificar se já usa o novo sistema
|
|
30
|
+
if (content.includes('getLatestVersions') &&
|
|
31
|
+
content.includes('generatePackageJson')) {
|
|
32
|
+
console.log(` ✅ ${file} já está atualizado`);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
console.log(` 📝 ${file} precisa ser atualizado manualmente`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
console.log(` ⚠️ ${file} não encontrado`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
console.log('');
|
|
43
|
+
console.log('💡 Para completar a atualização dos outros init scripts:');
|
|
44
|
+
console.log(' 1. Use o padrão do init-api.ts como base');
|
|
45
|
+
console.log(' 2. Substitua package.json hardcoded pelo generatePackageJson()');
|
|
46
|
+
console.log(' 3. Substitua tsconfig.json por generateTsConfigForProject()');
|
|
47
|
+
console.log(' 4. Adicione setupUltracite() ao final de cada script');
|
|
48
|
+
console.log(' 5. Ajuste o projectType para cada init (api, frontend, mobile, etc.)');
|
|
49
|
+
console.log('');
|
|
50
|
+
console.log('✅ Verificação concluída!');
|
|
51
|
+
}
|
|
52
|
+
updateAllInitScripts().catch(console.error);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* Script para atualizar o $schema do biome.json baseado na versão do @biomejs/biome
|
|
4
|
+
* Mantém sincronizado o schema com a versão instalada do pacote
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```bash
|
|
8
|
+
* # Execução manual
|
|
9
|
+
* npx tsx scripts/update-biome-schema.ts
|
|
10
|
+
*
|
|
11
|
+
* # Na pipeline Azure DevOps
|
|
12
|
+
* npm run update:biome-schema
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* Script para atualizar o $schema do biome.json baseado na versão do @biomejs/biome
|
|
4
|
+
* Mantém sincronizado o schema com a versão instalada do pacote
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```bash
|
|
8
|
+
* # Execução manual
|
|
9
|
+
* npx tsx scripts/update-biome-schema.ts
|
|
10
|
+
*
|
|
11
|
+
* # Na pipeline Azure DevOps
|
|
12
|
+
* npm run update:biome-schema
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
16
|
+
import { join } from 'node:path';
|
|
17
|
+
const BIOME_PACKAGE_NAME = '@biomejs/biome';
|
|
18
|
+
const BIOME_SCHEMA_BASE_URL = 'https://biomejs.dev/schemas';
|
|
19
|
+
// Regex patterns no escopo superior para performance
|
|
20
|
+
const VERSION_PREFIX_REGEX = /^[\^~]/;
|
|
21
|
+
const SCHEMA_URL_REGEX = /"https:\/\/biomejs\.dev\/schemas\/([^/]+)\/schema\.json"/;
|
|
22
|
+
const SCHEMA_REPLACE_REGEX = /"https:\/\/biomejs\.dev\/schemas\/[^/]+\/schema\.json"/;
|
|
23
|
+
/**
|
|
24
|
+
* Extrai a versão limpa do @biomejs/biome do package.json
|
|
25
|
+
*/
|
|
26
|
+
function getBiomeVersion() {
|
|
27
|
+
const packageJsonPath = join(process.cwd(), 'package.json');
|
|
28
|
+
if (!existsSync(packageJsonPath)) {
|
|
29
|
+
console.error('❌ package.json não encontrado');
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));
|
|
34
|
+
const biomeVersion = packageJson.devDependencies?.[BIOME_PACKAGE_NAME] ||
|
|
35
|
+
packageJson.dependencies?.[BIOME_PACKAGE_NAME];
|
|
36
|
+
if (!biomeVersion) {
|
|
37
|
+
console.log(`⚠️ ${BIOME_PACKAGE_NAME} não encontrado no package.json`);
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
// Remover ^ ou ~ da versão
|
|
41
|
+
const cleanVersion = biomeVersion.replace(VERSION_PREFIX_REGEX, '');
|
|
42
|
+
return cleanVersion;
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error('❌ Erro ao ler package.json:', error.message);
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Extrai a versão atual do schema do biome.json
|
|
51
|
+
*/
|
|
52
|
+
function getCurrentSchemaVersion(content) {
|
|
53
|
+
const match = content.match(SCHEMA_URL_REGEX);
|
|
54
|
+
return match ? match[1] : null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Atualiza o $schema no conteúdo do biome.json
|
|
58
|
+
*/
|
|
59
|
+
function updateSchemaInContent(content, newVersion) {
|
|
60
|
+
const newSchema = `${BIOME_SCHEMA_BASE_URL}/${newVersion}/schema.json`;
|
|
61
|
+
return content.replace(SCHEMA_REPLACE_REGEX, `"${newSchema}"`);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Função principal
|
|
65
|
+
*/
|
|
66
|
+
function main() {
|
|
67
|
+
console.log('🔧 Atualizando schema do biome.json...');
|
|
68
|
+
console.log('');
|
|
69
|
+
const biomeJsoncPath = join(process.cwd(), 'biome.json');
|
|
70
|
+
// Verificar se biome.json existe
|
|
71
|
+
if (!existsSync(biomeJsoncPath)) {
|
|
72
|
+
console.log('⚠️ biome.json não encontrado - pulando atualização');
|
|
73
|
+
process.exit(0);
|
|
74
|
+
}
|
|
75
|
+
// Obter versão do @biomejs/biome
|
|
76
|
+
console.log('📦 Lendo package.json...');
|
|
77
|
+
const biomeVersion = getBiomeVersion();
|
|
78
|
+
if (!biomeVersion) {
|
|
79
|
+
process.exit(0);
|
|
80
|
+
}
|
|
81
|
+
console.log(`🔍 Versão do ${BIOME_PACKAGE_NAME} detectada: ${biomeVersion}`);
|
|
82
|
+
console.log('');
|
|
83
|
+
// Ler biome.json
|
|
84
|
+
console.log('📄 Lendo biome.json...');
|
|
85
|
+
let biomeContent;
|
|
86
|
+
try {
|
|
87
|
+
biomeContent = readFileSync(biomeJsoncPath, 'utf8');
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.error('❌ Erro ao ler biome.json:', error.message);
|
|
91
|
+
process.exit(1);
|
|
92
|
+
}
|
|
93
|
+
// Extrair versão atual do schema
|
|
94
|
+
const currentSchemaVersion = getCurrentSchemaVersion(biomeContent);
|
|
95
|
+
if (!currentSchemaVersion) {
|
|
96
|
+
console.log('⚠️ Schema não encontrado no biome.json');
|
|
97
|
+
process.exit(0);
|
|
98
|
+
}
|
|
99
|
+
console.log(`📌 Versão atual do schema: ${currentSchemaVersion}`);
|
|
100
|
+
console.log('');
|
|
101
|
+
// Verificar se precisa atualizar
|
|
102
|
+
if (currentSchemaVersion === biomeVersion) {
|
|
103
|
+
console.log('✅ Schema já está sincronizado com a versão do pacote!');
|
|
104
|
+
console.log(` Versão: ${biomeVersion}`);
|
|
105
|
+
process.exit(0);
|
|
106
|
+
}
|
|
107
|
+
// Atualizar o schema
|
|
108
|
+
console.log('🔄 Atualizando schema...');
|
|
109
|
+
const updatedContent = updateSchemaInContent(biomeContent, biomeVersion);
|
|
110
|
+
// Salvar arquivo atualizado
|
|
111
|
+
try {
|
|
112
|
+
writeFileSync(biomeJsoncPath, updatedContent, 'utf8');
|
|
113
|
+
console.log('✅ biome.json atualizado com sucesso!');
|
|
114
|
+
console.log(` ${currentSchemaVersion} → ${biomeVersion}`);
|
|
115
|
+
console.log('');
|
|
116
|
+
console.log(` $schema: ${BIOME_SCHEMA_BASE_URL}/${biomeVersion}/schema.json`);
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
console.error('❌ Erro ao salvar biome.json:', error.message);
|
|
120
|
+
process.exit(1);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Executar
|
|
124
|
+
main();
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Facade do AutoCore para compatibilidade com arquitetura DDD
|
|
3
|
+
* @module AutoCore/Facade
|
|
4
|
+
*/
|
|
5
|
+
import type { BrowserContext, Page } from '@playwright/test';
|
|
6
|
+
import type { IMobileDriver } from './infrastructure/adapters/AppiumAdapter.js';
|
|
7
|
+
import type { IDatabaseClient } from './infrastructure/adapters/OracleAdapter.js';
|
|
8
|
+
import type { IWebDriver } from './infrastructure/adapters/PlaywrightAdapter.js';
|
|
9
|
+
import type { ISSHClient } from './infrastructure/adapters/SSHAdapter.js';
|
|
10
|
+
import type { DIContainer } from './infrastructure/DependencyContainer.js';
|
|
11
|
+
import './playwright/registerRecoveryWrappers.js';
|
|
12
|
+
/**
|
|
13
|
+
* Configuração para inicialização do AutoCore
|
|
14
|
+
*/
|
|
15
|
+
export type AutoCoreConfig = {
|
|
16
|
+
playwright?: {
|
|
17
|
+
page: Page;
|
|
18
|
+
context?: BrowserContext;
|
|
19
|
+
};
|
|
20
|
+
appium?: {
|
|
21
|
+
driver: unknown;
|
|
22
|
+
deviceConfig?: MobileDeviceConfig;
|
|
23
|
+
};
|
|
24
|
+
ssh?: {
|
|
25
|
+
host: string;
|
|
26
|
+
port: number;
|
|
27
|
+
username: string;
|
|
28
|
+
password?: string;
|
|
29
|
+
privateKey?: string;
|
|
30
|
+
passphrase?: string;
|
|
31
|
+
};
|
|
32
|
+
database?: {
|
|
33
|
+
host: string;
|
|
34
|
+
port: number;
|
|
35
|
+
database: string;
|
|
36
|
+
username: string;
|
|
37
|
+
password: string;
|
|
38
|
+
connectionTimeout?: number;
|
|
39
|
+
queryTimeout?: number;
|
|
40
|
+
};
|
|
41
|
+
container?: DIContainer;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Configuração de dispositivo móvel
|
|
45
|
+
*/
|
|
46
|
+
export type MobileDeviceConfig = {
|
|
47
|
+
platformName: string;
|
|
48
|
+
deviceName: string;
|
|
49
|
+
app?: string;
|
|
50
|
+
appPackage?: string;
|
|
51
|
+
appActivity?: string;
|
|
52
|
+
bundleId?: string;
|
|
53
|
+
udid?: string;
|
|
54
|
+
platformVersion?: string;
|
|
55
|
+
};
|
|
56
|
+
/**
|
|
57
|
+
* Contexto de execução do AutoCore
|
|
58
|
+
* Fornece acesso aos serviços configurados
|
|
59
|
+
*/
|
|
60
|
+
export declare class AutoCoreContext {
|
|
61
|
+
readonly container: DIContainer;
|
|
62
|
+
constructor(container: DIContainer);
|
|
63
|
+
/**
|
|
64
|
+
* Obtém driver web (Playwright)
|
|
65
|
+
*/
|
|
66
|
+
getWebDriver(): Promise<IWebDriver>;
|
|
67
|
+
/**
|
|
68
|
+
* Obtém driver móvel (Appium)
|
|
69
|
+
*/
|
|
70
|
+
getMobileDriver(): Promise<IMobileDriver>;
|
|
71
|
+
/**
|
|
72
|
+
* Obtém cliente SSH
|
|
73
|
+
*/
|
|
74
|
+
getSSHClient(): Promise<ISSHClient>;
|
|
75
|
+
/**
|
|
76
|
+
* Obtém cliente de banco de dados
|
|
77
|
+
*/
|
|
78
|
+
getDatabaseClient(): Promise<IDatabaseClient>;
|
|
79
|
+
/**
|
|
80
|
+
* Acesso direto ao container para casos avançados
|
|
81
|
+
*/
|
|
82
|
+
getContainer(): DIContainer;
|
|
83
|
+
/**
|
|
84
|
+
* Limpa recursos e conexões
|
|
85
|
+
*/
|
|
86
|
+
dispose(): Promise<void>;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Facade principal do AutoCore
|
|
90
|
+
* Simplifica a inicialização e uso da arquitetura DDD
|
|
91
|
+
*/
|
|
92
|
+
export declare class AutoCore {
|
|
93
|
+
/**
|
|
94
|
+
* Inicializa o AutoCore com a configuração especificada
|
|
95
|
+
*/
|
|
96
|
+
static initialize(config: AutoCoreConfig): Promise<AutoCoreContext>;
|
|
97
|
+
/**
|
|
98
|
+
* Cria contexto apenas para APIs (mais leve)
|
|
99
|
+
*/
|
|
100
|
+
static forAPI(): Promise<AutoCoreContext>;
|
|
101
|
+
/**
|
|
102
|
+
* Cria contexto para Web com Playwright
|
|
103
|
+
*/
|
|
104
|
+
static forWeb(page: Page, context?: BrowserContext): Promise<AutoCoreContext>;
|
|
105
|
+
/**
|
|
106
|
+
* Cria contexto para Mobile com Appium
|
|
107
|
+
*/
|
|
108
|
+
static forMobile(driver: unknown, deviceConfig?: MobileDeviceConfig): Promise<AutoCoreContext>;
|
|
109
|
+
/**
|
|
110
|
+
* Cria contexto híbrido Web + Mobile
|
|
111
|
+
*/
|
|
112
|
+
static forHybrid(page: Page, driver: unknown, options?: {
|
|
113
|
+
webContext?: BrowserContext;
|
|
114
|
+
deviceConfig?: MobileDeviceConfig;
|
|
115
|
+
}): Promise<AutoCoreContext>;
|
|
116
|
+
/**
|
|
117
|
+
* 🔧 RETROCOMPATIBILIDADE: Permite usar Actions atuais com DI opcional
|
|
118
|
+
* Não quebra código existente, apenas adiciona DI se disponível
|
|
119
|
+
*/
|
|
120
|
+
static enableDDDMode(enable?: boolean): void;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* 🔄 MIGRAÇÃO GRADUAL: Permite transição suave para DDD
|
|
124
|
+
*
|
|
125
|
+
* FASE 1: Usar Actions atuais (sem mudanças)
|
|
126
|
+
* ```typescript
|
|
127
|
+
* import { ApiActions } from '@silasfmartins/testhub'
|
|
128
|
+
* await ApiActions.post(request, 'desc')
|
|
129
|
+
* ```
|
|
130
|
+
*
|
|
131
|
+
* FASE 2: Adicionar DDD gradualmente
|
|
132
|
+
* ```typescript
|
|
133
|
+
* import { AutoCore, ApiActions } from '@silasfmartins/testhub'
|
|
134
|
+
* AutoCore.enableDDDMode(true) // Opcional
|
|
135
|
+
* await ApiActions.post(request, 'desc') // Continua igual
|
|
136
|
+
* ```
|
|
137
|
+
*
|
|
138
|
+
* FASE 3: Usar DDD completo (quando pronto)
|
|
139
|
+
* ```typescript
|
|
140
|
+
* import { AutoCore } from '@silasfmartins/testhub'
|
|
141
|
+
* const context = await AutoCore.forWeb(page)
|
|
142
|
+
* const webDriver = await context.getWebDriver()
|
|
143
|
+
* await webDriver.click('button')
|
|
144
|
+
* ```
|
|
145
|
+
*/
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Facade do AutoCore para compatibilidade com arquitetura DDD
|
|
3
|
+
* @module AutoCore/Facade
|
|
4
|
+
*/
|
|
5
|
+
import { AutoDocs } from './hubdocs/HubDocs.js';
|
|
6
|
+
import { defaultContainer } from './infrastructure/DependencyContainer.js';
|
|
7
|
+
import { CoverageManager } from './testContext/CoverageManager.js';
|
|
8
|
+
import { TerminalLogCapture } from './utils/TerminalLogCapture.js';
|
|
9
|
+
import { Logger } from './utils/Logger.js';
|
|
10
|
+
// Registrar wrappers de recovery globalmente para WebActions
|
|
11
|
+
import './playwright/registerRecoveryWrappers.js';
|
|
12
|
+
/**
|
|
13
|
+
* Contexto de execução do AutoCore
|
|
14
|
+
* Fornece acesso aos serviços configurados
|
|
15
|
+
*/
|
|
16
|
+
export class AutoCoreContext {
|
|
17
|
+
container;
|
|
18
|
+
constructor(container) {
|
|
19
|
+
this.container = container;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Obtém driver web (Playwright)
|
|
23
|
+
*/
|
|
24
|
+
async getWebDriver() {
|
|
25
|
+
return await this.container.resolve('webDriver');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Obtém driver móvel (Appium)
|
|
29
|
+
*/
|
|
30
|
+
async getMobileDriver() {
|
|
31
|
+
return await this.container.resolve('mobileDriver');
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Obtém cliente SSH
|
|
35
|
+
*/
|
|
36
|
+
async getSSHClient() {
|
|
37
|
+
return await this.container.resolve('sshClient');
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Obtém cliente de banco de dados
|
|
41
|
+
*/
|
|
42
|
+
async getDatabaseClient() {
|
|
43
|
+
return await this.container.resolve('databaseClient');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Acesso direto ao container para casos avançados
|
|
47
|
+
*/
|
|
48
|
+
getContainer() {
|
|
49
|
+
return this.container;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Limpa recursos e conexões
|
|
53
|
+
*/
|
|
54
|
+
async dispose() {
|
|
55
|
+
try {
|
|
56
|
+
// 📚 NOVO: Gerar documentação automática ao finalizar
|
|
57
|
+
await AutoDocs.generateDocs();
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
Logger.warning(` ⚠️ AutoDocs: Erro ao gerar documentação final: ${error}`);
|
|
61
|
+
}
|
|
62
|
+
// Tentar fechar conexões SSH
|
|
63
|
+
try {
|
|
64
|
+
if (this.container.hasService('sshClient')) {
|
|
65
|
+
const sshClient = await this.container.resolve('sshClient');
|
|
66
|
+
await sshClient.disconnect();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// Ignorar erros de limpeza
|
|
71
|
+
}
|
|
72
|
+
// Tentar fechar conexões de banco
|
|
73
|
+
try {
|
|
74
|
+
if (this.container.hasService('databaseClient')) {
|
|
75
|
+
const dbClient = await this.container.resolve('databaseClient');
|
|
76
|
+
await dbClient.disconnect();
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Ignorar erros de limpeza
|
|
81
|
+
}
|
|
82
|
+
// Tentar fechar drivers móveis
|
|
83
|
+
try {
|
|
84
|
+
if (this.container.hasService('mobileDriver')) {
|
|
85
|
+
const mobileDriver = await this.container.resolve('mobileDriver');
|
|
86
|
+
await mobileDriver.quit();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Ignorar erros de limpeza
|
|
91
|
+
}
|
|
92
|
+
// Tentar fechar drivers web
|
|
93
|
+
try {
|
|
94
|
+
if (this.container.hasService('webDriver')) {
|
|
95
|
+
const webDriver = await this.container.resolve('webDriver');
|
|
96
|
+
await webDriver.close();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Ignorar erros de limpeza
|
|
101
|
+
}
|
|
102
|
+
// Limpar instâncias do container
|
|
103
|
+
this.container.clearInstances();
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Facade principal do AutoCore
|
|
108
|
+
* Simplifica a inicialização e uso da arquitetura DDD
|
|
109
|
+
*/
|
|
110
|
+
export class AutoCore {
|
|
111
|
+
/**
|
|
112
|
+
* Inicializa o AutoCore com a configuração especificada
|
|
113
|
+
*/
|
|
114
|
+
static async initialize(config) {
|
|
115
|
+
// ✅ CRÍTICO: Iniciar captura de logs no Worker para garantir que StatementTracker tenha acesso
|
|
116
|
+
TerminalLogCapture.start();
|
|
117
|
+
globalThis.TerminalLogCapture = TerminalLogCapture;
|
|
118
|
+
const container = config.container || defaultContainer.createScope();
|
|
119
|
+
// 📚 NOVO: Inicializar sistema de documentação automática
|
|
120
|
+
try {
|
|
121
|
+
AutoDocs.initialize({
|
|
122
|
+
outputDir: './docs/generated',
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
Logger.warning(` ⚠️ AutoDocs: Erro ao inicializar documentação automática: ${error}`);
|
|
127
|
+
}
|
|
128
|
+
// 📊 NOVO: Inicializar sistema de cobertura
|
|
129
|
+
try {
|
|
130
|
+
await CoverageManager.autoInitialize();
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
Logger.warning(`⚠️ Coverage: Erro ao inicializar sistema de cobertura: ${error}`);
|
|
134
|
+
}
|
|
135
|
+
return new AutoCoreContext(container);
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Cria contexto apenas para APIs (mais leve)
|
|
139
|
+
*/
|
|
140
|
+
static async forAPI() {
|
|
141
|
+
return await AutoCore.initialize({});
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Cria contexto para Web com Playwright
|
|
145
|
+
*/
|
|
146
|
+
static async forWeb(page, context) {
|
|
147
|
+
return await AutoCore.initialize({
|
|
148
|
+
playwright: { page, context },
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Cria contexto para Mobile com Appium
|
|
153
|
+
*/
|
|
154
|
+
static async forMobile(driver, deviceConfig) {
|
|
155
|
+
return await AutoCore.initialize({
|
|
156
|
+
appium: { driver, deviceConfig },
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Cria contexto híbrido Web + Mobile
|
|
161
|
+
*/
|
|
162
|
+
static async forHybrid(page, driver, options) {
|
|
163
|
+
return await AutoCore.initialize({
|
|
164
|
+
playwright: {
|
|
165
|
+
page,
|
|
166
|
+
context: options?.webContext,
|
|
167
|
+
},
|
|
168
|
+
appium: {
|
|
169
|
+
driver,
|
|
170
|
+
deviceConfig: options?.deviceConfig,
|
|
171
|
+
},
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* 🔧 RETROCOMPATIBILIDADE: Permite usar Actions atuais com DI opcional
|
|
176
|
+
* Não quebra código existente, apenas adiciona DI se disponível
|
|
177
|
+
*/
|
|
178
|
+
static enableDDDMode(enable = true) {
|
|
179
|
+
if (enable) {
|
|
180
|
+
// Registra Actions no container global para DI opcional
|
|
181
|
+
try {
|
|
182
|
+
// Actions continuam funcionando independente de DI
|
|
183
|
+
// DI é apenas uma camada adicional opcional
|
|
184
|
+
if (defaultContainer) {
|
|
185
|
+
// Container está disponível
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
catch {
|
|
189
|
+
// Se falhar, Actions funcionam normalmente sem DI
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* 🔄 MIGRAÇÃO GRADUAL: Permite transição suave para DDD
|
|
196
|
+
*
|
|
197
|
+
* FASE 1: Usar Actions atuais (sem mudanças)
|
|
198
|
+
* ```typescript
|
|
199
|
+
* import { ApiActions } from '@silasfmartins/testhub'
|
|
200
|
+
* await ApiActions.post(request, 'desc')
|
|
201
|
+
* ```
|
|
202
|
+
*
|
|
203
|
+
* FASE 2: Adicionar DDD gradualmente
|
|
204
|
+
* ```typescript
|
|
205
|
+
* import { AutoCore, ApiActions } from '@silasfmartins/testhub'
|
|
206
|
+
* AutoCore.enableDDDMode(true) // Opcional
|
|
207
|
+
* await ApiActions.post(request, 'desc') // Continua igual
|
|
208
|
+
* ```
|
|
209
|
+
*
|
|
210
|
+
* FASE 3: Usar DDD completo (quando pronto)
|
|
211
|
+
* ```typescript
|
|
212
|
+
* import { AutoCore } from '@silasfmartins/testhub'
|
|
213
|
+
* const context = await AutoCore.forWeb(page)
|
|
214
|
+
* const webDriver = await context.getWebDriver()
|
|
215
|
+
* await webDriver.click('button')
|
|
216
|
+
* ```
|
|
217
|
+
*/
|