fix: provide `vi.advanceTimers` to the preview provider (#9891) · vitest-dev/vitest@1bc3e63
@@ -16,6 +16,7 @@ import type { StringifyOptions } from 'vitest/internal/browser'
1616import type { IframeViewportEvent } from '../client'
1717import type { BrowserRunnerState } from '../utils'
1818import type { Locator as LocatorAPI } from './locators/index'
19+import { vi } from 'vitest'
1920import { __INTERNAL, stringify } from 'vitest/internal/browser'
2021import { ensureAwaited, getBrowserState, getWorkerState } from '../utils'
2122import { convertToSelector, isLocator, processTimeoutOptions, resolveUserEventWheelOptions } from './tester-utils'
@@ -142,8 +143,11 @@ export function createUserEvent(__tl_user_event_base__?: TestingLibraryUserEvent
142143return userEvent
143144}
144145145-function createPreviewUserEvent(userEventBase: TestingLibraryUserEvent, options: TestingLibraryOptions): UserEvent {
146-let userEvent = userEventBase.setup(options)
146+function createPreviewUserEvent(userEventBase: TestingLibraryUserEvent, options?: TestingLibraryOptions): UserEvent {
147+let userEvent = userEventBase.setup({
148+advanceTimers: delay => vi.advanceTimersByTimeAsync(delay),
149+ ...options,
150+})
147151let clipboardData: DataTransfer | undefined
148152149153function toElement(element: Element | Locator) {
@@ -155,7 +159,10 @@ function createPreviewUserEvent(userEventBase: TestingLibraryUserEvent, options:
155159return createPreviewUserEvent(userEventBase, options)
156160},
157161async cleanup() {
158-userEvent = userEventBase.setup(options ?? {})
162+userEvent = userEventBase.setup({
163+advanceTimers: delay => vi.advanceTimersByTimeAsync(delay),
164+ ...options,
165+})
159166},
160167async click(element) {
161168await userEvent.click(toElement(element))