test: fix transaction controller integration tests with nonce tracker 6 #4591
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Explanation
Fix the
TransactionController
integration tests with version6.0.0
of@metamask/nonce-tracker
.This version of the nonce tracker constructs a new
Web3Provider
instance every time aeth_getTransactionCount
call is required, this is needed in order to support the proxy provider which can dynamically point to different networks.This
Web3Provider
extends theJsonRpcProvider
whose constructor has the side effect of creating a timeout to determine the chain ID, if not provided in the constructor. When callinggetTransactionCount
on this provider, it first awaits the network being identified as a result of the timeout.https://github.com/ethers-io/ethers.js/blob/v5.7.2/packages/providers/src.ts/json-rpc-provider.ts#L416
https://github.com/ethers-io/ethers.js/blob/v5.7.2/packages/providers/src.ts/base-provider.ts#L1461
Since the integration tests use fake timers, some of them were hanging when generating a nonce since an additional tick was required to process this constructor network timeout.
References
Related to #2668
Changelog
Checklist