From 41eb238e23979b56cb29e1405588e00facda030d Mon Sep 17 00:00:00 2001 From: Alfonso Noriega Date: Wed, 15 Jul 2026 11:22:46 +0200 Subject: [PATCH] Make analytics storage timing test deterministic Assisted-By: devx/d9c9b8a1-2521-4fdd-af59-d77381c6f0ee --- .../private/node/analytics/storage.test.ts | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/cli-kit/src/private/node/analytics/storage.test.ts b/packages/cli-kit/src/private/node/analytics/storage.test.ts index d6119fbd5cf..ad7d405a0f5 100644 --- a/packages/cli-kit/src/private/node/analytics/storage.test.ts +++ b/packages/cli-kit/src/private/node/analytics/storage.test.ts @@ -1,6 +1,6 @@ import {recordTiming, recordError, recordRetry, recordEvent, compileData, reset} from './storage.js' import {ErrorCategory} from './error-categorizer.js' -import {describe, test, expect, beforeEach} from 'vitest' +import {describe, test, expect, beforeEach, vi} from 'vitest' describe('analytics/storage', () => { beforeEach(() => { @@ -21,12 +21,16 @@ describe('analytics/storage', () => { test('completes a timing when called second time', () => { // Given - recordTiming('test-event') + vi.useFakeTimers() + const startTime = new Date('2026-01-01T00:00:00.000Z') const delay = 10 - const delayPromise = new Promise((resolve) => setTimeout(resolve, delay)) - // When - return delayPromise.then(() => { + try { + vi.setSystemTime(startTime) + recordTiming('test-event') + + // When + vi.setSystemTime(new Date(startTime.getTime() + delay)) recordTiming('test-event') // Then @@ -35,12 +39,14 @@ describe('analytics/storage', () => { const timing = data.timings[0] expect(timing?.event).toBe('test-event') - expect(timing?.duration).toBeGreaterThanOrEqual(0) + expect(timing?.duration).toBe(delay) expect(data.events.length).toBe(2) expect(data.events[0]?.name).toBe('timing:start:test-event') expect(data.events[1]?.name).toBe('timing:end:test-event') - }) + } finally { + vi.useRealTimers() + } }) test('handles multiple concurrent timings', () => {