Skip to content

Launching a Test Node

To simplify testing in isolation, we provide a utility called launchTestNode.

It allows you to spin up a short-lived fuel-core node, set up a custom provider, wallets, deploy contracts, and much more in one go.

Explicit Resource Management

We support explicit resource management, introduced in TypeScript 5.2, which automatically calls a cleanup function after a variable instantiated with the using keyword goes out of block scope:

ts
import { launchTestNode } from 'fuels/test-utils';

using launched = await launchTestNode();

/*
  The method `launched.cleanup()` will be automatically
  called when the variable `launched` goes out of block scope.
*/
See code in context

Configuring Typescript

To use explicit resource management, you must:

  1. Set your TypeScript version to 5.2 or above
  2. Set the compilation target to es2022 or below
  3. Configure your lib setting to either include esnext or esnext.disposable
json
{
  "compilerOptions": {
    "target": "es2022",
    "lib": ["es2022", "esnext.disposable"]
  }
}

Standard API

If you don't want, or can't use explicit resource management, you can use const as usual.

In this case, remember you must call .cleanup() to dispose of the node.

ts
import { launchTestNode } from 'fuels/test-utils';

const launched = await launchTestNode();

/*
  Do your things, run your tests, and then call
  `launched.cleanup()` to dispose of everything.
*/

launched.cleanup();
See code in context