( opts: Pick<CommonOptions, 'requestTimeoutMs'>, env: NodeJS.ProcessEnv, )
| 117 | * not a safety-critical gate. |
| 118 | */ |
| 119 | export function resolveRequestTimeoutMs( |
| 120 | opts: Pick<CommonOptions, 'requestTimeoutMs'>, |
| 121 | env: NodeJS.ProcessEnv, |
| 122 | ): number { |
| 123 | // Flag (already in ms) takes precedence. |
| 124 | if (opts.requestTimeoutMs !== undefined) { |
| 125 | return clampRequestTimeout(opts.requestTimeoutMs); |
| 126 | } |
| 127 | // Env var (milliseconds). |
| 128 | const envRaw = env.TESTSPRITE_REQUEST_TIMEOUT_MS; |
| 129 | if (envRaw !== undefined) { |
| 130 | const parsed = Number(envRaw); |
| 131 | if (Number.isFinite(parsed) && parsed > 0) { |
| 132 | return clampRequestTimeout(parsed); |
| 133 | } |
| 134 | } |
| 135 | return REQUEST_TIMEOUT_DEFAULT_MS; |
| 136 | } |
| 137 | |
| 138 | function clampRequestTimeout(ms: number): number { |
| 139 | return Math.min(Math.max(Math.round(ms), REQUEST_TIMEOUT_MIN_MS), REQUEST_TIMEOUT_MAX_MS); |
no test coverage detected