Test Node Options
This reference describes all the options of the launchTestNode
utility:
const customLaunchTestNode = await launchTestNode(/* options */);
Check out the API reference for usage information on the Test Node Options.
walletsConfig
Used to set the node's genesis block state (coins and messages).
count
: number of wallets/addresses to generate on the genesis block.assets
: configure how many unique assets each wallet will own with the base asset included. Can benumber
orTestAssetId[]
.- The
TestAssetId
utility simplifies testing when different assets are necessary.
- The
coinsPerAsset
: number of coins (UTXOs) per asset id.amountPerCoin
: for each coin, the amount it'll contain.messages
: messages to assign to the wallets.
walletsConfig.assets
The TestAssetId
utility integrates with walletsConfig
and gives you an easy way to generate multiple random asset ids via the TestAssetId.random
static method.
const randomAssetIds = TestAssetId.random();
const nodeWithCustomAssetIds = await launchTestNode({
walletsConfig: {
assets: randomAssetIds,
},
});
const {
wallets: [walletWithCustomAssetIds],
} = nodeWithCustomAssetIds;
const { coins } = await walletWithCustomAssetIds.getCoins(randomAssetIds[0].value);
console.assert(
coins[0].assetId === randomAssetIds[0].value,
'Asset id is not randomAssetIds[0].value'
);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
walletsConfig.messages
The TestMessage
helper class is used to create messages for testing purposes. When passed via walletsConfig.messages
, the recipient
field of the message is overriden to be the wallet's address.
const testMessage = new TestMessage({ amount: 1000 });
const nodeWithTestMessages = await launchTestNode({
walletsConfig: {
messages: [testMessage],
},
});
const {
wallets: [walletWithTestMessages],
} = nodeWithTestMessages;
const {
messages: [messageWithTestMessages],
} = await walletWithTestMessages.getMessages();
console.assert(
messageWithTestMessages.nonce === testMessage.nonce,
'Nonce is not testMessage.nonce'
);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
It can also be used standalone and passed into the initial state of the chain via the TestMessage.toChainMessage
instance method.
const recipient = WalletUnlocked.generate();
const testMessageOnChain = new TestMessage({
amount: 1000,
recipient: recipient.address,
});
using launchedWithTestMessagesOnChain = await launchTestNode({
nodeOptions: {
snapshotConfig: {
stateConfig: {
messages: [testMessageOnChain.toChainMessage()],
},
},
},
});
const { provider: providerWithTestMessagesOnChain } = launchedWithTestMessagesOnChain;
recipient.provider = providerWithTestMessagesOnChain;
const {
messages: [messageOnChain],
} = await recipient.getMessages();
console.assert(
messageOnChain.nonce === testMessageOnChain.nonce,
'Nonce is not testMessageOnChain.nonce'
);
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
contractsConfigs
Used to deploy contracts on the node the launchTestNode
utility launches. It's an array of objects with the following properties:
factory
: contract factory class outputted bypnpm fuels typegen
.walletIndex
: the index of the wallets generated bywalletsConfig
that you want to deploy the contract with.options
: options for contract deployment that get passed to theContractFactory.deploy
method.
nodeOptions
Options to modify the behavior of the node.
For example, you can specify your own base asset id of the chain like below:
const [baseAssetId] = TestAssetId.random();
const nodeWithCustomBaseAssetId = await launchTestNode({
nodeOptions: {
snapshotConfig: {
chainConfig: {
consensus_parameters: {
V1: {
base_asset_id: baseAssetId.value,
},
},
},
},
},
});
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Note: The API for these options is still not fully complete and better documentation will come in the future.
providerOptions
Provider options passed on Provider
instantiation. More on them here.