From 37e1fbd17b2e83a71f9fc3ddccc0c01a139fce92 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 10 Jan 2025 16:05:28 +0900 Subject: [PATCH 1/3] fix(browser): fix `console.time` with fake timers --- packages/browser/src/client/tester/logger.ts | 2 +- test/browser/specs/runner.test.ts | 2 ++ test/browser/test/timers.test.ts | 12 ++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/browser/src/client/tester/logger.ts b/packages/browser/src/client/tester/logger.ts index e2e5219cc204..439b731272c3 100644 --- a/packages/browser/src/client/tester/logger.ts +++ b/packages/browser/src/client/tester/logger.ts @@ -71,7 +71,7 @@ export function setupConsoleLogSpy() { if (!(label in timeLabels)) { sendLog('stderr', `Timer "${label}" does not exist`) } - else if (start) { + else if (typeof start !== 'undefined') { const duration = end - start sendLog('stdout', `${label}: ${duration} ms`) } diff --git a/test/browser/specs/runner.test.ts b/test/browser/specs/runner.test.ts index 5b556db8a283..07c693918127 100644 --- a/test/browser/specs/runner.test.ts +++ b/test/browser/specs/runner.test.ts @@ -90,6 +90,8 @@ describe('running browser tests', async () => { expect(stdout).toContain('count: 3') expect(stdout).toMatch(/default: [\d.]+ ms/) expect(stdout).toMatch(/time: [\d.]+ ms/) + expect(stdout).toContain('fake-timers-zero: 0 ms') + expect(stdout).toContain('fake-timers-advance: 1234 ms') }) test('logs are redirected to stderr', () => { diff --git a/test/browser/test/timers.test.ts b/test/browser/test/timers.test.ts index c2e30b7d9da5..e09a39d210f2 100644 --- a/test/browser/test/timers.test.ts +++ b/test/browser/test/timers.test.ts @@ -1,3 +1,4 @@ +/* eslint-disable no-console */ import { afterEach, expect, it, vi } from 'vitest' afterEach(() => { @@ -17,3 +18,14 @@ it('only runs a setTimeout callback once (ever)', () => { vi.runAllTimers() expect(fn).toHaveBeenCalledTimes(1) }) + +it('console.time', async () => { + vi.useFakeTimers() + + console.time('fake-timers-zero') + console.timeEnd('fake-timers-zero') + + console.time('fake-timers-advance') + vi.advanceTimersByTime(1234) + console.timeEnd('fake-timers-advance') +}) From f91ecf7c39c9a8e6b28b10cd54db980c0a51d646 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 10 Jan 2025 16:17:17 +0900 Subject: [PATCH 2/3] fix: use real time --- packages/browser/src/client/tester/logger.ts | 2 +- test/browser/specs/runner.test.ts | 4 ++-- test/browser/test/timers.test.ts | 9 ++------- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/packages/browser/src/client/tester/logger.ts b/packages/browser/src/client/tester/logger.ts index 439b731272c3..69719227c01d 100644 --- a/packages/browser/src/client/tester/logger.ts +++ b/packages/browser/src/client/tester/logger.ts @@ -2,7 +2,7 @@ import { format, stringify } from 'vitest/utils' import { getConfig } from '../utils' import { rpc } from './rpc' -const { Date, console } = globalThis +const { Date, console, performance } = globalThis export function setupConsoleLogSpy() { const { diff --git a/test/browser/specs/runner.test.ts b/test/browser/specs/runner.test.ts index 07c693918127..d0f72ec1cd6d 100644 --- a/test/browser/specs/runner.test.ts +++ b/test/browser/specs/runner.test.ts @@ -90,8 +90,8 @@ describe('running browser tests', async () => { expect(stdout).toContain('count: 3') expect(stdout).toMatch(/default: [\d.]+ ms/) expect(stdout).toMatch(/time: [\d.]+ ms/) - expect(stdout).toContain('fake-timers-zero: 0 ms') - expect(stdout).toContain('fake-timers-advance: 1234 ms') + expect(stdout).toMatch(/\[console-time-fake\]: [\d.]+ ms/) + expect(stdout).not.toContain('[console-time-fake]: 0 ms') }) test('logs are redirected to stderr', () => { diff --git a/test/browser/test/timers.test.ts b/test/browser/test/timers.test.ts index e09a39d210f2..245af33df1a1 100644 --- a/test/browser/test/timers.test.ts +++ b/test/browser/test/timers.test.ts @@ -21,11 +21,6 @@ it('only runs a setTimeout callback once (ever)', () => { it('console.time', async () => { vi.useFakeTimers() - - console.time('fake-timers-zero') - console.timeEnd('fake-timers-zero') - - console.time('fake-timers-advance') - vi.advanceTimersByTime(1234) - console.timeEnd('fake-timers-advance') + console.time('[console-time-fake]') + console.timeEnd('[console-time-fake]') }) From 82a86ca0217f58d06eb1e123c5d99cfdbf45c62a Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Fri, 10 Jan 2025 16:44:51 +0900 Subject: [PATCH 3/3] test: tweak --- test/browser/test/timers.test.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/browser/test/timers.test.ts b/test/browser/test/timers.test.ts index 245af33df1a1..eff593353dc4 100644 --- a/test/browser/test/timers.test.ts +++ b/test/browser/test/timers.test.ts @@ -20,7 +20,10 @@ it('only runs a setTimeout callback once (ever)', () => { }) it('console.time', async () => { - vi.useFakeTimers() + vi.useFakeTimers({ + toFake: ['Date', 'performance'], + }) console.time('[console-time-fake]') + await new Promise(r => setTimeout(r, 500)) console.timeEnd('[console-time-fake]') })