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;
}
}