mirror of
https://github.com/datahaven-xyz/datahaven
synced 2026-05-24 09:50:01 +00:00
### Description This PR introduces the **Moonwall** end-to-end (E2E) testing framework. The primary motivation for this is to enable the porting of existing Mobeam tests into the `DataHaven` repository. ### Key Changes * **Node Manual Sealing:** * Introduced a `--sealing=manual` flag for the `datahaven-node`. When enabled, blocks are only produced on demand via an RPC call. This is the core mechanism that allows for deterministic tests. * **Moonwall Framework Integration:** * Added `@moonwall/cli` and `@moonwall/util` dependencies to the `test/package.json`. * A new `test/moonwall.config.json` file configures the test environment, defining how Moonwall should launch the `datahaven-node` with the manual sealing flag. * Added a `moonwall:test` script to `package.json` for running the tests. * **CI Workflow:** * A new reusable workflow, `.github/workflows/task-moonwall-tests.yml`, has been created to handle the setup, execution, and reporting of Moonwall tests. * The main `CI.yml` now includes a `moonwall-tests` job that runs after the `build-operator` job, ensuring it always tests the correct, freshly-built binary. * **Example Test Suite:** * A new test suite, `test/datahaven/suites/dev/test-block.ts`, had been copied from moonbeam. ### How to Run Locally 1. Navigate to the `test` directory. 2. Install dependencies: `bun install` 3. Run the tests: `bun run moonwall:test` --------- Co-authored-by: undercover-cactus <lola@moonsonglabs.com>
77 lines
No EOL
1.7 KiB
JSON
77 lines
No EOL
1.7 KiB
JSON
{
|
|
"$schema": "https://raw.githubusercontent.com/Moonsong-Labs/moonwall/main/packages/types/config_schema.json",
|
|
"label": "DataHaven Tests 🔷",
|
|
"defaultTestTimeout": 120000,
|
|
"environments": [
|
|
{
|
|
"name": "dev_datahaven",
|
|
"testFileDir": [
|
|
"suites/dev"
|
|
],
|
|
"include": [
|
|
"**/*test*.ts"
|
|
],
|
|
"timeout": 180000,
|
|
"multiThreads": 1,
|
|
"envVars": [
|
|
"DEBUG_COLORS=1",
|
|
"RUST_BACKTRACE=1",
|
|
"RUST_LOG=info"
|
|
],
|
|
"reporters": [
|
|
"basic",
|
|
"html",
|
|
"json"
|
|
],
|
|
"reportFile": {
|
|
"json": "./tmp/testResults.json"
|
|
},
|
|
"foundation": {
|
|
"type": "dev",
|
|
"launchSpec": [
|
|
{
|
|
"name": "datahaven",
|
|
"binPath": "../operator/target/release/datahaven-node",
|
|
"newRpcBehaviour": true,
|
|
"options": [
|
|
"--dev",
|
|
"--no-telemetry",
|
|
"--unsafe-force-node-key-generation",
|
|
"--reserved-only",
|
|
"--no-grandpa",
|
|
"--no-prometheus",
|
|
"--sealing=manual"
|
|
],
|
|
"ports": {
|
|
"p2pPort": 30333,
|
|
"rpcPort": 9944
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"connections": [
|
|
{
|
|
"name": "ethers",
|
|
"type": "ethers",
|
|
"endpoints": [
|
|
"ws://127.0.0.1:9944"
|
|
]
|
|
},
|
|
{
|
|
"name": "viem",
|
|
"type": "viem",
|
|
"endpoints": [
|
|
"ws://127.0.0.1:9944"
|
|
]
|
|
},
|
|
{
|
|
"name": "solo",
|
|
"type": "polkadotJs",
|
|
"endpoints": [
|
|
"ws://127.0.0.1:9944"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
]
|
|
} |