Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat!: add launchTestNode utility #1356

Open
wants to merge 174 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
174 commits
Select commit Hold shift + click to select a range
7d1ec0f
squashed all commits
nedsalk Feb 25, 2024
ac92a11
docs: TestMessage
nedsalk Feb 26, 2024
ecedbf9
refactor: put urlIsLive into utils/test-utils
nedsalk Feb 26, 2024
de25762
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk Feb 26, 2024
127f7b2
refactor: move sleep and sleepUntilTrue into `utils` package
nedsalk Feb 26, 2024
e28c694
refactor: rename file
nedsalk Feb 26, 2024
c8cb3a3
fix imports
nedsalk Feb 26, 2024
26aa211
use internal `crypto` package where possible
nedsalk Feb 26, 2024
dddae7b
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk Feb 26, 2024
dbf2179
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Feb 28, 2024
4767c0a
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Feb 29, 2024
d3fd976
refactor: rename `TestNodeLauncher.launch` into `launchTestNode`
nedsalk Feb 29, 2024
8985a50
Merge branch 'ns/feat/test-node-launcher' of github.com:FuelLabs/fuel…
nedsalk Feb 29, 2024
e3898f6
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Feb 29, 2024
93d5156
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Mar 1, 2024
adb5949
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Mar 5, 2024
c619b63
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Mar 6, 2024
b570575
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Mar 6, 2024
ca49a14
Update apps/docs/src/guide/testing/index.md
nedsalk Mar 8, 2024
a2e4c95
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk Mar 8, 2024
0967262
removed `setupTestProvider`, changed how walletConfig is defined
nedsalk Mar 13, 2024
636e580
removed sleepUntilTrue
nedsalk Mar 13, 2024
ae2db80
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk Mar 13, 2024
f992d08
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk Mar 18, 2024
e0351df
add documentation on chainConfig param
nedsalk Mar 18, 2024
06e5de4
fix: phrasing
nedsalk Mar 18, 2024
2ceabb1
Expanded upon the utility in docs
nedsalk Mar 18, 2024
af24a55
fix: spelling errors
nedsalk Mar 18, 2024
bc566ee
fix: linting
nedsalk Mar 18, 2024
fea8667
fix: missing test group
nedsalk Mar 18, 2024
da60d8a
fix: exports and imports
nedsalk Mar 18, 2024
8cfb6c7
docs: add option for better showcase
nedsalk Mar 18, 2024
baacc83
fix:test
nedsalk Mar 18, 2024
187649f
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Mar 19, 2024
4752fe7
fix: moved code snippets to apps/docs-snippets
nedsalk Mar 20, 2024
e877d67
fix: test validation
nedsalk Mar 20, 2024
e70054a
fix: bad path to contract
nedsalk Mar 20, 2024
0cb47c9
fix: failing tests
nedsalk Mar 20, 2024
b959758
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Mar 20, 2024
020316c
Update breezy-carrots-bow.md
nedsalk Mar 20, 2024
8a49fd9
Update breezy-carrots-bow.md
nedsalk Mar 20, 2024
3a8b5bc
Update breezy-carrots-bow.md
nedsalk Mar 20, 2024
790703a
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Mar 22, 2024
ac1bce9
merged master
nedsalk Mar 26, 2024
cc62ec3
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Mar 27, 2024
d965874
remove test wallets link
nedsalk Mar 27, 2024
508028e
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk Mar 31, 2024
301415a
docs: improve a bit
nedsalk Mar 31, 2024
4f1995b
Merge branch 'master' into ns/feat/test-node-launcher
petertonysmith94 Apr 2, 2024
defcb27
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Apr 11, 2024
ad6c31d
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Apr 15, 2024
152ec6f
sleep is in utils now
nedsalk Apr 15, 2024
7eee3e3
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Apr 15, 2024
4036c33
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk Apr 16, 2024
66a64b5
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Apr 16, 2024
987d238
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Apr 16, 2024
ddbf2e9
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk Apr 17, 2024
5b7a744
Merge branch 'master' into ns/feat/test-node-launcher
arboleya Apr 17, 2024
19646ea
Merge branch 'master' into ns/feat/test-node-launcher
Torres-ssf Apr 18, 2024
fbc700c
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk Apr 23, 2024
48ced96
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk Apr 23, 2024
4c19a74
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk Apr 25, 2024
68c970d
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk Apr 26, 2024
4e31a0a
mostly support fuel-core 0.24.3
nedsalk May 2, 2024
3201f4e
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 6, 2024
7567636
fix failing tests
nedsalk May 7, 2024
40b4ad5
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 7, 2024
d90432e
fix: lintign
nedsalk May 7, 2024
e6d7773
rename property
nedsalk May 8, 2024
09a33d1
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 8, 2024
61712c1
point to snapshot directory for env variable
nedsalk May 8, 2024
6a2c42b
rename properties of snapshot config
nedsalk May 8, 2024
1692f93
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 8, 2024
294ce93
chore: update changesets
nedsalk May 8, 2024
c1bdc4b
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 9, 2024
8c5b9f1
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 9, 2024
152beaf
remove unnecessary section
nedsalk May 10, 2024
700a8fb
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 10, 2024
8939c6f
remove unused region
nedsalk May 10, 2024
5da2a96
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 10, 2024
cd29203
Update breezy-carrots-bow.md
nedsalk May 10, 2024
541a8f5
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 10, 2024
b24eb2e
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 10, 2024
dd194d6
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 11, 2024
6286b2f
Merge branch 'master' into ns/feat/test-node-launcher
Torres-ssf May 13, 2024
0902655
Merge branch 'master' into ns/feat/test-node-launcher
arboleya May 14, 2024
1139701
add description to `waitUntilUnreachable`
nedsalk May 15, 2024
8272dc7
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 15, 2024
0105874
inlined `urlIsLive` utility
nedsalk May 15, 2024
f9dfda9
Update packages/utils/src/utils/types.ts
nedsalk May 15, 2024
64577bb
Merge branch 'ns/feat/test-node-launcher' of github.com:FuelLabs/fuel…
nedsalk May 15, 2024
8535c90
Update packages/account/src/test-utils/wallet-config.ts
nedsalk May 15, 2024
391e3d0
Update packages/account/src/test-utils/wallet-config.ts
nedsalk May 15, 2024
492503d
Update packages/contract/src/test-utils/launch-test-node.test.ts
nedsalk May 15, 2024
aa58458
spacing and cleanup
nedsalk May 15, 2024
8a04be8
Merge branch 'ns/feat/test-node-launcher' of github.com:FuelLabs/fuel…
nedsalk May 15, 2024
fd7eb1e
guard -> validate
nedsalk May 15, 2024
15e3c1d
add description for `createMessages` and `createCoins`
nedsalk May 15, 2024
a9571f3
Update apps/docs/src/guide/testing/index.md
nedsalk May 15, 2024
3ed6e1d
Update apps/docs/src/guide/testing/index.md
nedsalk May 15, 2024
068544a
remove not-needed `baseAssetId` format safeguard
nedsalk May 15, 2024
2c649e4
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 15, 2024
a367b4f
improved documentation
nedsalk May 15, 2024
2bbc8ba
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 16, 2024
37b4a52
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 16, 2024
9ebcf05
started using typegen in conjunction with launchTestNode
nedsalk May 16, 2024
22bb7b5
fix tests
nedsalk May 20, 2024
f9d3d4c
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 20, 2024
7a07687
fix tests
nedsalk May 20, 2024
9925a53
improved upon documentation
nedsalk May 20, 2024
ddf824b
improve documentation
nedsalk May 20, 2024
0c291ad
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 20, 2024
b9527b6
fix: spellcheck
nedsalk May 20, 2024
8897b7f
fix: formatting
nedsalk May 20, 2024
b5be4ed
fix: formatting forc
nedsalk May 20, 2024
81f9f95
fix: file
nedsalk May 20, 2024
c0b84e1
fix: lint docs
nedsalk May 20, 2024
303a3c9
launchTestNode spellcheck
nedsalk May 20, 2024
351b5fc
fix: counter contract
nedsalk May 20, 2024
1da9451
Update apps/docs/src/guide/testing/index.md
nedsalk May 20, 2024
0e394fd
fix: link
nedsalk May 20, 2024
7bf1b35
fix: dead link
nedsalk May 20, 2024
2c5f90f
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 21, 2024
2d56124
fix: tests
nedsalk May 21, 2024
2c254be
fix: path
nedsalk May 21, 2024
5c4de82
fix: logic
nedsalk May 21, 2024
c81a12d
fix: config
nedsalk May 21, 2024
2916d8a
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 21, 2024
9ce0341
remove dead anchor
nedsalk May 22, 2024
2adec5c
fix? docs
nedsalk May 22, 2024
4a74954
change link to official docs
nedsalk May 22, 2024
3926328
rename file
nedsalk May 22, 2024
8484b26
fix: reference links
nedsalk May 22, 2024
5e69691
remove devDependency for breaking change PR
nedsalk May 22, 2024
383e74e
fix pnpm-lock formatting
nedsalk May 22, 2024
5463564
Update package.json
nedsalk May 22, 2024
a574192
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 22, 2024
82aab89
pnpm-lock format
nedsalk May 22, 2024
10e5ef4
foramt
nedsalk May 22, 2024
bd4f9d3
Merge branch 'master' into ns/feat/test-node-launcher
Torres-ssf May 22, 2024
f3cf887
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 23, 2024
26619c3
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 23, 2024
c25df5d
Merge branch 'master' into ns/feat/test-node-launcher
maschad May 23, 2024
c829293
Merge branch 'master' into ns/feat/test-node-launcher
petertonysmith94 May 24, 2024
28d671d
various nits
nedsalk May 24, 2024
9f612a2
fix ts expect error
nedsalk May 24, 2024
d112a8f
Merge branch 'master' into ns/feat/test-node-launcher
petertonysmith94 May 24, 2024
474bde0
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 24, 2024
d7ca8f4
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 24, 2024
0ac6781
fix gascosts interface
nedsalk May 24, 2024
0554b41
Merge branch 'master' into ns/feat/test-node-launcher
arboleya May 27, 2024
5064c21
Revert "fix gascosts interface"
nedsalk May 27, 2024
ad3fae1
fix: configs, tests
nedsalk May 28, 2024
d8319dc
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 28, 2024
b9f950e
docs: Tweaking `launchTestNode` docs (#2386)
arboleya May 28, 2024
115e780
fix: code snippet
nedsalk May 28, 2024
913784a
fix: spellcheck
nedsalk May 28, 2024
4d1ed67
fix bad links
nedsalk May 28, 2024
3bec501
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 29, 2024
fd4f2c5
rename fields of launchTestNode options
nedsalk May 29, 2024
86dd6c7
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 29, 2024
48d38f1
changed predicate tests to use launchTestNode because they're failing…
nedsalk May 29, 2024
fbcb069
use factory for predicate
nedsalk May 29, 2024
25a006e
fix: formatting
nedsalk May 29, 2024
dd7f6d9
fix: link
nedsalk May 29, 2024
efa6c8b
fix: tests, more coins
nedsalk May 29, 2024
017bea8
remove failing links
nedsalk May 29, 2024
b59d4ac
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 29, 2024
6de87e0
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 29, 2024
fa33e5f
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 30, 2024
b7f8ef5
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 30, 2024
4c131bf
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 30, 2024
6806a65
Merge remote-tracking branch 'origin/master' into ns/feat/test-node-l…
nedsalk May 31, 2024
52a3fd0
Merge branch 'master' into ns/feat/test-node-launcher
nedsalk May 31, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/breezy-carrots-bow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
"@fuel-ts/utils": patch
"@fuel-ts/account": minor
"@fuel-ts/contract": patch
"fuels": patch
arboleya marked this conversation as resolved.
Show resolved Hide resolved
---

feat!: add `launchTestNode` utility
251 changes: 251 additions & 0 deletions apps/docs-snippets/src/guide/testing/launching-a-test-node.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,251 @@
/* eslint-disable @typescript-eslint/no-unused-vars */
import { WalletUnlocked } from 'fuels';
import { AssetId, TestMessage, launchTestNode } from 'fuels/test-utils';
import { join } from 'path';

import { CounterAbi__factory as TestContract__factory } from '../../../test/typegen/contracts';
import bytecode from '../../../test/typegen/contracts/CounterAbi.hex';

/**
* @group node
*/
describe('launching a test node', () => {
test(`instantiating test nodes - automatic cleanup`, async () => {
// #region automatic-cleanup
// #import { launchTestNode };

using launched = await launchTestNode();

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

// #endregion automatic-cleanup
});

test('instantiating test nodes - manual cleanup', async () => {
// #region manual-cleanup
// #import { launchTestNode };

const launched = await launchTestNode();

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

launched.cleanup();
// #endregion manual-cleanup
});

test('options', async () => {
// #region options
// #import { launchTestNode };

using launched = await launchTestNode(/* options */);
// #endregion options
});

test('simple contract deployment', async () => {
// #region basic-example
// #import { launchTestNode };

// #context import { TestContract__factory } from 'path/to/typegen/output';
// #context import bytecode from 'path/to/typegen/output/TestContract.hex.ts';

using launched = await launchTestNode({
arboleya marked this conversation as resolved.
Show resolved Hide resolved
contractsConfigs: [
{
deployer: TestContract__factory,
bytecode,
},
],
});

const {
contracts: [contract],
provider,
wallets,
} = launched;

const response = await contract.functions.get_count().call();
// #endregion basic-example
expect(response.value.toNumber()).toBe(0);
expect(provider).toBeDefined();
expect(wallets).toBeDefined();
});

test('multiple contracts and wallets', async () => {
// #region advanced-example
// #import { launchTestNode, AssetId, TestMessage };

// #context import { TestContract__factory } from 'path/to/typegen/output';
// #context import bytecode from 'path/to/typegen/output/TestContract.hex.ts';

const assets = AssetId.random(2);
const message = new TestMessage({ amount: 1000 });

using launched = await launchTestNode({
walletsConfig: {
count: 4,
assets,
coinsPerAsset: 2,
amountPerCoin: 1_000_000,
messages: [message],
},
contractsConfigs: [
{
deployer: TestContract__factory,
bytecode,
walletIndex: 3,
options: { storageSlots: [] },
},
],
});

const {
contracts: [contract],
wallets: [wallet1, wallet2, wallet3, wallet4],
} = launched;
// #endregion advanced-example

expect(contract).toBeDefined();
expect(wallet1).toBeDefined();
expect(wallet2).toBeDefined();
expect(wallet3).toBeDefined();
expect(wallet4).toBeDefined();
});

test('configuring custom fuel-core args', async () => {
// #region custom-fuel-core-args
// #import { launchTestNode };

process.env.DEFAULT_FUEL_CORE_ARGS = `--tx-max-depth 20`;

// `nodeOptions.args` will override the above values if provided.

using launched = await launchTestNode();
// #endregion custom-fuel-core-args

const { provider } = launched;

expect(provider.getNode().maxDepth.toNumber()).toEqual(20);
process.env.DEFAULT_FUEL_CORE_ARGS = '';
});

test('configuring a base chain config', async () => {
const snapshotDirPath = join(__dirname, '../../../../../', '.fuel-core', 'configs');

// #region custom-chain-config
// #import { launchTestNode };

process.env.DEFAULT_CHAIN_SNAPSHOT_DIR = snapshotDirPath;

using launched = await launchTestNode();
// #endregion custom-chain-config

const { provider } = launched;

const { name } = await provider.fetchChain();

expect(name).toEqual('local_testnet');
});

test('customizing node options', async () => {
// #region custom-node-options
// #import { launchTestNode, AssetId };

const [baseAssetId] = AssetId.random();

using launched = await launchTestNode({
nodeOptions: {
snapshotConfig: {
chainConfig: {
consensus_parameters: {
V1: {
base_asset_id: baseAssetId.value,
},
},
},
},
},
});
// #endregion custom-node-options
});

test('using assetId', async () => {
// #region asset-ids
// #import { launchTestNode, AssetId };

const assets = AssetId.random();

using launched = await launchTestNode({
walletsConfig: {
assets,
},
});

const {
wallets: [wallet],
} = launched;

const coins = await wallet.getCoins(assets[0].value);
// #endregion asset-ids
expect(coins[0].assetId).toEqual(assets[0].value);
});

test('generating test messages', async () => {
// #region test-messages
// #import { launchTestNode, TestMessage };

const testMessage = new TestMessage({ amount: 1000 });

using launched = await launchTestNode({
walletsConfig: {
messages: [testMessage],
},
});

const {
wallets: [wallet],
} = launched;

const [message] = await wallet.getMessages();
// message.nonce === testMessage.nonce
// #endregion test-messages

expect(message.nonce).toEqual(testMessage.nonce);
});

test('generating test messages directly on chain', async () => {
// #region test-messages-chain
// #import { launchTestNode, TestMessage, WalletUnlocked };

const recipient = WalletUnlocked.generate();
const testMessage = new TestMessage({
amount: 1000,
recipient: recipient.address,
});

using launched = await launchTestNode({
nodeOptions: {
snapshotConfig: {
stateConfig: {
messages: [testMessage.toChainMessage()],
},
},
},
});

const { provider } = launched;

recipient.provider = provider;

const [message] = await recipient.getMessages();
// message.nonce === testMessage.nonce
// #endregion test-messages-chain

expect(message.nonce).toEqual(testMessage.nonce);
});
});
Original file line number Diff line number Diff line change
@@ -1,24 +1,45 @@
import { launchNode } from '@fuel-ts/account/test-utils';
import { Provider, DateTime } from 'fuels';
/* eslint-disable @typescript-eslint/no-non-null-assertion */
import { DateTime } from 'fuels';
import { launchTestNode } from 'fuels/test-utils';

/**
* @group node
*/
test('produceBlocks with custom timestamp docs snippet', async () => {
// TODO: reevaluate/replace after #1356
const { cleanup, ip, port } = await launchNode({});
const url = `http://${ip}:${port}/v1/graphql`;
const provider = await Provider.create(url);
const latestBlock = await provider.getBlock('latest');
if (!latestBlock) {
throw new Error('No latest block');
}
const lastBlockNumber = latestBlock.height;
// #region Provider-produceBlocks-custom-timestamp
const lastBlockTimestamp = DateTime.fromTai64(latestBlock.time).toUnixMilliseconds();
const latestBlockNumber = await provider.produceBlocks(3, lastBlockTimestamp + 1000);
// #endregion Provider-produceBlocks-custom-timestamp
expect(latestBlockNumber.toHex()).toBe(lastBlockNumber.add(3).toHex());
describe('tweaking the blockchain', () => {
test('produceBlocks', async () => {
// #region produce-blocks
using launched = await launchTestNode();
const { provider } = launched;
const block = await provider.getBlock('latest');
if (!block) {
throw new Error('No latest block');
}
const { time: timeLastBlockProduced } = block;

cleanup();
const producedBlockHeight = await provider.produceBlocks(3);

const producedBlock = await provider.getBlock(producedBlockHeight.toNumber());

const oldest = DateTime.fromTai64(timeLastBlockProduced);
const newest = DateTime.fromTai64(producedBlock!.time);
// newest >= oldest
// #endregion produce-blocks
expect(producedBlock).toBeDefined();
expect(newest >= oldest).toBeTruthy();
});

test('produceBlocks with custom timestamp docs snippet', async () => {
// #region produceBlocks-custom-timestamp
using launched = await launchTestNode();
const { provider } = launched;

const latestBlock = await provider.getBlock('latest');
if (!latestBlock) {
throw new Error('No latest block');
}
const latestBlockTimestamp = DateTime.fromTai64(latestBlock.time).toUnixMilliseconds();
const newBlockHeight = await provider.produceBlocks(3, latestBlockTimestamp + 1000);
// #endregion produceBlocks-custom-timestamp
expect(newBlockHeight.toHex()).toBe(latestBlock.height.add(3).toHex());
});
});
28 changes: 18 additions & 10 deletions apps/docs/.vitepress/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -172,10 +172,6 @@ export default defineConfig({
text: 'Locking and Unlocking',
link: '/guide/wallets/locking-and-unlocking',
},
{
maschad marked this conversation as resolved.
Show resolved Hide resolved
text: 'Test Wallets',
link: '/guide/wallets/test-wallets',
},
],
},
{
Expand Down Expand Up @@ -374,16 +370,28 @@ export default defineConfig({
collapsed: true,
items: [
{
text: 'Testing in TS',
link: '/guide/testing/testing-in-ts',
text: 'Launching a Test Node',
link: '/guide/testing/launching-a-test-node',
},
{
text: 'Test Node Options',
link: '/guide/testing/test-node-options',
},
{
text: 'Fuel Core Options',
link: '/guide/testing/fuel-core-options',
},
{
text: 'Basic Example',
link: '/guide/testing/basic-example',
},
{
text: 'Setting Up a Custom Chain',
link: '/guide/testing/setting-up-a-custom-chain',
text: 'Advanced Example',
link: '/guide/testing/advanced-example',
},
{
text: 'Tweaking the Blockchain',
link: '/guide/testing/tweaking-the-blockchain',
text: 'Custom Blocks',
link: '/guide/testing/custom-blocks',
},
],
},
Expand Down
9 changes: 8 additions & 1 deletion apps/docs/spell-check-custom-words.txt
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,7 @@ MULTICALL
TTL
Bech
CLIs
typedoc
backoff
extractable
SHA-256
Expand All @@ -314,4 +315,10 @@ BigNumber
Gwei
onchain
Vercel
hardcoded
hardcoded
tsconfig
deployer
overriden
typesafe
launchTestNode
Vitest