From 9014c3c6725d7c0b12d2d369f7c57cb73b9e45af Mon Sep 17 00:00:00 2001 From: Toni Tabak Date: Wed, 17 Dec 2025 19:27:07 +0100 Subject: [PATCH] feat: add transactionRetryIntervalFallback to the global config --- __tests__/config/fixtures.ts | 21 ++++++--------------- __tests__/config/helpers/contract.ts | 14 ++++++++++++++ __tests__/config/helpers/testInstances.ts | 6 ------ src/channel/rpc_0_10_0.ts | 3 ++- src/channel/rpc_0_9_0.ts | 4 +++- src/global/constants.ts | 2 ++ 6 files changed, 27 insertions(+), 23 deletions(-) diff --git a/__tests__/config/fixtures.ts b/__tests__/config/fixtures.ts index 360ff1c83..26d956f26 100644 --- a/__tests__/config/fixtures.ts +++ b/__tests__/config/fixtures.ts @@ -7,24 +7,15 @@ * - Conditional test suite helpers (describeIf*, testIf*) */ import { config, hash } from '../../src'; -import { autoDiscoverContracts } from './helpers/contract'; +import { CONTRACTS } from './helpers/contract'; -/** - * Auto-discovered contracts from __mocks__ directory. - * Contracts are automatically loaded based on their file structure: - * - Cairo contracts: __mocks__/cairo/**\/*.sierra.json + matching .casm files - * - Grouped contracts: __mocks__/{groupName}/**\/*.sierra.json + matching .casm files - * (e.g., StarknetId contracts in __mocks__/starknetId/) - * - * Contract keys are generated from filenames in PascalCase: - * - cairo210.sierra.json -> Cairo210 - * - openzeppelin_EthAccount090.sierra.json -> OpenzeppelinEthAccount090 - * - starknetId directory -> StarknetId group - */ -export const CONTRACTS = autoDiscoverContracts(); +export { CONTRACTS }; config.set('logLevel', 'ERROR'); - +if (process.env.IS_DEVNET === 'true') { + // accelerate the tests when running locally devnet + config.set('channelDefaults.options.transactionRetryIntervalFallback', 0); +} export const { TEST_WS_URL } = process.env; const describeIf = (condition: boolean) => (condition ? describe : describe.skip); diff --git a/__tests__/config/helpers/contract.ts b/__tests__/config/helpers/contract.ts index a3b4eb913..ff558ee9e 100644 --- a/__tests__/config/helpers/contract.ts +++ b/__tests__/config/helpers/contract.ts @@ -178,3 +178,17 @@ export const autoDiscoverContracts = ( // Return discovered contracts (cairo contracts already mapped, grouped contracts already mapped) return discovered; }; + +/** + * Auto-discovered contracts from __mocks__ directory. + * Contracts are automatically loaded based on their file structure: + * - Cairo contracts: __mocks__/cairo/**\/*.sierra.json + matching .casm files + * - Grouped contracts: __mocks__/{groupName}/**\/*.sierra.json + matching .casm files + * (e.g., StarknetId contracts in __mocks__/starknetId/) + * + * Contract keys are generated from filenames in PascalCase: + * - cairo210.sierra.json -> Cairo210 + * - openzeppelin_EthAccount090.sierra.json -> OpenzeppelinEthAccount090 + * - starknetId directory -> StarknetId group + */ +export const CONTRACTS = autoDiscoverContracts(); diff --git a/__tests__/config/helpers/testInstances.ts b/__tests__/config/helpers/testInstances.ts index e759c9e71..cc1ff6262 100644 --- a/__tests__/config/helpers/testInstances.ts +++ b/__tests__/config/helpers/testInstances.ts @@ -12,7 +12,6 @@ import { Provider, ProviderInterface, RpcProvider, - config, getTipStatsFromBlocks, type PaymasterInterface, type TipAnalysisOptions, @@ -22,21 +21,16 @@ import { toHex } from '../../../src/utils/num'; import '../customMatchers'; // ensures TS traversal import { SupportedRpcVersion, SupportedTransactionVersion } from '../../../src/global/constants'; -config.set('logLevel', 'ERROR'); - /** * Builds provider options with test environment configuration * @param setProviderOptions - Optional provider options to merge * @returns Provider options configured for test environment */ function buildTestProviderOptions(setProviderOptions?: RpcProviderOptions): RpcProviderOptions { - const isDevnet = process.env.IS_DEVNET === 'true'; return { ...setProviderOptions, nodeUrl: process.env.TEST_RPC_URL, specVersion: process.env.RPC_SPEC_VERSION as SupportedRpcVersion, - // accelerate the tests when running locally - ...(isDevnet && { transactionRetryIntervalFallback: 0 }), }; } diff --git a/src/channel/rpc_0_10_0.ts b/src/channel/rpc_0_10_0.ts index 57be8c601..f6828e04d 100644 --- a/src/channel/rpc_0_10_0.ts +++ b/src/channel/rpc_0_10_0.ts @@ -120,7 +120,8 @@ export class RpcChannel { this.headers = { ...channelDefaults.options.headers, ...headers }; this.retries = retries ?? channelDefaults.options.retries; this.specVersion = specVersion; - this.transactionRetryIntervalFallback = transactionRetryIntervalFallback; + this.transactionRetryIntervalFallback = + transactionRetryIntervalFallback ?? channelDefaults.options.transactionRetryIntervalFallback; this.waitMode = waitMode ?? false; this.requestId = 0; diff --git a/src/channel/rpc_0_9_0.ts b/src/channel/rpc_0_9_0.ts index 26d772cb8..6e61a721c 100644 --- a/src/channel/rpc_0_9_0.ts +++ b/src/channel/rpc_0_9_0.ts @@ -121,7 +121,9 @@ export class RpcChannel { this.headers = { ...channelDefaults.options.headers, ...headers }; this.retries = retries ?? channelDefaults.options.retries; this.specVersion = specVersion; - this.transactionRetryIntervalFallback = transactionRetryIntervalFallback; + this.transactionRetryIntervalFallback = + transactionRetryIntervalFallback ?? channelDefaults.options.transactionRetryIntervalFallback; + this.waitMode = waitMode ?? false; this.requestId = 0; diff --git a/src/global/constants.ts b/src/global/constants.ts index 6b837f89c..24c49ec64 100644 --- a/src/global/constants.ts +++ b/src/global/constants.ts @@ -127,6 +127,7 @@ export type ChannelDefaultOptions = { headers: Record; blockIdentifier: BlockTag; retries: number; + transactionRetryIntervalFallback: number; }; /** @@ -184,6 +185,7 @@ export const DEFAULT_GLOBAL_CONFIG: { headers: { 'Content-Type': 'application/json' }, blockIdentifier: BlockTag.LATEST, retries: 200, + transactionRetryIntervalFallback: 5000, }, methods: { simulateTransaction: {