datahaven/test/moonwall.config.json
Ahmad Kaouk 17c706dc64
test: Integrate moonwall (#185)
### 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>
2025-09-30 14:47:39 +00:00

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"
]
}
]
}
]
}