import type { BrowserContext, BrowserContextOptions, Frame, FrameLocator, LaunchOptions, Page, CDPSession, ConnectOptions } from 'playwright' import { Protocol } from 'playwright-core/types/protocol' import '../matchers.js' import type {} from "vitest/node" import type { Locator, ScreenshotComparatorRegistry, ScreenshotMatcherOptions, } from "@vitest/browser/context" declare module 'vitest/node' { export interface BrowserProviderOptions { launch?: LaunchOptions connect?: { wsEndpoint: string options?: ConnectOptions } context?: Omit< BrowserContextOptions, 'ignoreHTTPSErrors' | 'serviceWorkers' > & { /** * The maximum time in milliseconds to wait for `userEvent` action to complete. * @default 0 (no timeout) */ actionTimeout?: number } } export interface BrowserCommandContext { page: Page frame(): Promise iframe: FrameLocator context: BrowserContext } export interface ToMatchScreenshotOptions extends Omit< ScreenshotMatcherOptions, "comparatorName" | "comparatorOptions" > {} export interface ToMatchScreenshotComparators extends ScreenshotComparatorRegistry {} } type PWHoverOptions = NonNullable[1]> type PWClickOptions = NonNullable[1]> type PWDoubleClickOptions = NonNullable[1]> type PWFillOptions = NonNullable[2]> type PWScreenshotOptions = NonNullable[0]> type PWSelectOptions = NonNullable[2]> type PWDragAndDropOptions = NonNullable[2]> type PWSetInputFiles = NonNullable[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 UserEventUploadOptions extends PWSetInputFiles {} export interface ScreenshotOptions extends Omit { mask?: ReadonlyArray | undefined } 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; } }