mirror of
https://github.com/datahaven-xyz/datahaven
synced 2026-05-23 17:28:23 +00:00
## Implement E2E Testing Framework with Isolated Networks ### Summary Refactors the existing E2E testing infrastructure to provide isolated test environments with parallel execution support. Each test suite now runs in its own network namespace, preventing resource conflicts. ### Key Changes - **New Testing Framework** (`test/framework/`): Base classes for test lifecycle management with automatic setup/teardown - **Launcher Module** (`test/launcher/`): Extracted network orchestration logic from CLI handlers for reusability - **Parallel Execution**: Added `test-parallel.ts` script with concurrency limits to prevent resource exhaustion - **Test Isolation**: Each suite gets unique network IDs (format: `suiteName-timestamp`) and Docker networks - **Improved Test Organization**: Migrated tests to new framework, deprecated old test structure ### Test Improvements - Added 4 new test suites demonstrating framework usage. : - `contracts.test.ts` - Smart contract deployment/interaction - `datahaven-substrate.test.ts` - Substrate API operations - `cross-chain.test.ts` - Snowbridge cross-chain messaging - `ethereum-basic.test.ts` - Ethereum network operations > [!WARNING] The test suites themselves are bad and shouldn't be consider examples of good tests. They were AI generated just to test the concurrency of test runners ### Documentation - Added comprehensive framework overview (`E2E_FRAMEWORK_OVERVIEW.md`) - Updated README with parallel testing commands - Added test patterns and best practices ### Breaking Changes - Old test suites moved to `e2e - DEPRECATED/` directory - Test execution now requires extending `BaseTestSuite` class ### Testing Run tests with: `bun test:e2e` or `bun test:e2e:parallel` (with concurrency limits) ### TODO - [ ] Implement good test examples. - [ ] Implement useful test utils (like waiting for an event to show up in DataHaven or Ethereum). - [ ] Enforce tests with CI (currently cannot be done due to intermittent error when sending a transaction with PAPI). --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: undercover-cactus <lola@moonsonglabs.com>
54 lines
No EOL
1.3 KiB
JSON
54 lines
No EOL
1.3 KiB
JSON
{
|
|
"compilerOptions": {
|
|
// Enable latest features
|
|
"lib": [
|
|
"ESNext"
|
|
],
|
|
"target": "ESNext",
|
|
"module": "Preserve",
|
|
"moduleDetection": "force",
|
|
"jsx": "react-jsx",
|
|
"allowJs": false,
|
|
"importHelpers": true,
|
|
"incremental": true,
|
|
// Bundler mode
|
|
"moduleResolution": "bundler",
|
|
"allowImportingTsExtensions": true,
|
|
"verbatimModuleSyntax": true,
|
|
"noEmit": true,
|
|
// Best practices
|
|
"strict": true,
|
|
"skipLibCheck": true,
|
|
"noFallthroughCasesInSwitch": true,
|
|
// Some stricter flags (disabled by default)
|
|
"noUnusedLocals": false,
|
|
"noUnusedParameters": false,
|
|
"noImplicitOverride": true,
|
|
"noPropertyAccessFromIndexSignature": false,
|
|
"baseUrl": "./",
|
|
"preserveConstEnums": true,
|
|
"esModuleInterop": true,
|
|
"resolveJsonModule": true,
|
|
// Speed
|
|
"tsBuildInfoFile": "tmp/tsconfig.tsbuildinfo",
|
|
"assumeChangesOnlyAffectDirectDependencies": true,
|
|
"paths": {
|
|
"utils": [
|
|
"./utils/index.ts"
|
|
],
|
|
"utils/types": [
|
|
"./utils/types.ts"
|
|
]
|
|
}
|
|
},
|
|
"include": [
|
|
"utils/*.ts",
|
|
"scripts/*.ts",
|
|
"suites/**/*.ts",
|
|
"cli/**/*.ts",
|
|
"wagmi.config.ts",
|
|
"contract-bindings/*.ts",
|
|
"launcher/**/*.ts",
|
|
"framework/**/*.ts"
|
|
]
|
|
} |