import type { BrowserContext, BrowserContextOptions, Frame, FrameLocator, LaunchOptions, Page, CDPSession } from 'playwright' import { Protocol } from 'playwright-core/types/protocol' import '../matchers.js' declare module 'vitest/node' { interface BrowserProviderOptions { launch?: LaunchOptions context?: Omit< BrowserContextOptions, 'ignoreHTTPSErrors' | 'serviceWorkers' > } export interface BrowserCommandContext { page: Page frame(): Promise iframe: FrameLocator context: BrowserContext } } type PWHoverOptions = Parameters[1] type PWClickOptions = Parameters[1] type PWDoubleClickOptions = Parameters[1] type PWFillOptions = Parameters[2] type PWScreenshotOptions = Parameters[0] type PWSelectOptions = Parameters[2] type PWDragAndDropOptions = Parameters[2] declare module '@vitest/browser/context' { export interface UserEventHoverOptions extends PWHoverOptions {} export interface UserEventClickOptions extends PWClickOptions {} export interface UserEventDoubleClickOptions extends PWDoubleClickOptions {} export interface UserEventTripleClickOptions extends PWClickOptions {} export interface UserEventFillOptions extends PWFillOptions {} export interface UserEventSelectOptions extends PWSelectOptions {} export interface UserEventDragAndDropOptions extends PWDragAndDropOptions {} export interface ScreenshotOptions extends PWScreenshotOptions {} export interface CDPSession { send( method: T, params?: Protocol.CommandParameters[T] ): Promise on( event: T, listener: (payload: Protocol.Events[T]) => void ): this; once( event: T, listener: (payload: Protocol.Events[T]) => void ): this; off( event: T, listener: (payload: Protocol.Events[T]) => void ): this; } }