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>
71 lines
1.6 KiB
JSON
71 lines
1.6 KiB
JSON
{
|
|
"$schema": "https://biomejs.dev/schemas/2.0.0-beta.5/schema.json",
|
|
"files": {
|
|
"includes": [
|
|
"**/*.js",
|
|
"**/*.ts",
|
|
"**/*.json",
|
|
"**/*.yml",
|
|
"**/*.md",
|
|
"!node_modules/*",
|
|
"!target/*",
|
|
"!**/tmp/*",
|
|
"!**/*.spec.json",
|
|
"!**/.papi/descriptors/**/*",
|
|
"!**/contract-bindings/**/*",
|
|
"!**/html/**/*"
|
|
]
|
|
},
|
|
"assist": { "actions": { "source": { "organizeImports": "on" } } },
|
|
"formatter": {
|
|
"enabled": true,
|
|
"attributePosition": "multiline",
|
|
"indentStyle": "space",
|
|
"indentWidth": 2,
|
|
"lineWidth": 100
|
|
},
|
|
"json": {
|
|
"formatter": {
|
|
"enabled": false
|
|
}
|
|
},
|
|
"javascript": {
|
|
"formatter": {
|
|
"trailingCommas": "none",
|
|
"semicolons": "always",
|
|
"quoteStyle": "double"
|
|
}
|
|
},
|
|
"linter": {
|
|
"enabled": true,
|
|
"rules": {
|
|
"recommended": true,
|
|
"correctness": {
|
|
"noUnusedVariables": "warn",
|
|
"noUnusedImports": "warn"
|
|
},
|
|
"suspicious": {
|
|
"noExplicitAny": "off",
|
|
"noAsyncPromiseExecutor": "off"
|
|
},
|
|
"performance": {
|
|
"noAccumulatingSpread": "off"
|
|
},
|
|
"nursery": {
|
|
"noFloatingPromises": "error"
|
|
},
|
|
"style": {
|
|
"noParameterAssign": "error",
|
|
"useAsConstAssertion": "error",
|
|
"useDefaultParameterLast": "error",
|
|
"useEnumInitializers": "error",
|
|
"useSelfClosingElements": "error",
|
|
"useSingleVarDeclarator": "error",
|
|
"noUnusedTemplateLiteral": "error",
|
|
"useNumberNamespace": "error",
|
|
"noInferrableTypes": "error",
|
|
"noUselessElse": "error"
|
|
}
|
|
}
|
|
}
|
|
}
|