From f8ebf2fb0f23eee352a4c05a79719aab68d007ee Mon Sep 17 00:00:00 2001 From: linonetwo Date: Mon, 4 May 2026 16:29:31 +0800 Subject: [PATCH] =?UTF-8?q?fix(e2e):=20add=20minimum=20multiplier=20floor?= =?UTF-8?q?=204.0=C3=97=20for=20calibration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Calibration smoke test only measures basic app launch - Heavy operations (nsfw watcher) need more time than smoke test captures - MIN_MULTIPLIER=4.0 ensures 100s minimum step timeout - Actual multiplier: max(4.0, min(5.0, measured)) - Fast CI still gets 4.0×, very slow CI caps at 5.0× --- features/supports/calibration.ts | 8 ++++++-- features/supports/timeouts.ts | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/features/supports/calibration.ts b/features/supports/calibration.ts index b8903e55..1e8320c6 100644 --- a/features/supports/calibration.ts +++ b/features/supports/calibration.ts @@ -53,7 +53,11 @@ function readCalibrationRecord(): CalibrationRecord | null { export function writeCalibrationResult(actualDurationMs: number): number { const raw = actualDurationMs / REFERENCE_SMOKE_DURATION_MS; - const multiplier = Math.min(MAX_MULTIPLIER, Math.max(1.0, raw)); + // Cap at MAX_MULTIPLIER, but also enforce a minimum floor + // Heavy operations (nsfw watcher init, file system watch) need more time + // than the basic calibration smoke test exercises + const MIN_MULTIPLIER = 4.0; + const multiplier = Math.min(MAX_MULTIPLIER, Math.max(MIN_MULTIPLIER, raw)); fs.mkdirSync(path.dirname(CALIBRATION_FILE), { recursive: true }); fs.writeFileSync( @@ -102,7 +106,7 @@ export function getPerformanceMultiplier(): number { } // Fallback if calibration preflight did not run. - // Conservative 4.0× to accommodate slow CI environments and native module initialization + // Should match MIN_MULTIPLIER floor in writeCalibrationResult console.warn( '[E2E Calibration] Calibration file not found, using fallback multiplier 4.0×', ); diff --git a/features/supports/timeouts.ts b/features/supports/timeouts.ts index d52849eb..f6c85880 100644 --- a/features/supports/timeouts.ts +++ b/features/supports/timeouts.ts @@ -1,7 +1,7 @@ import { setDefaultTimeout } from '@cucumber/cucumber'; import { getPerformanceMultiplier, isCalibrated } from './calibration'; -const isCI = Boolean(process.env.CI); +const isCI = process.env.CI; /** * Get the performance multiplier based on calibration.