import type { EventEmitter } from 'node:events'
import type { remote, SessionFlags, AttachOptions as WebDriverAttachOptions, BidiHandler, EventMap } from 'webdriver'
import type { Capabilities, Options, ThenArg } from '@wdio/types'
import type { ElementReference, ProtocolCommands } from '@wdio/protocols'
import type { Browser as PuppeteerBrowser } from 'puppeteer-core'
import type { Dialog as DialogImport } from './session/dialog.js'
import type * as BrowserCommands from './commands/browser.js'
import type * as ElementCommands from './commands/element.js'
import type { Button, ButtonNames } from './utils/actions/pointer.js'
import type WebDriverInterception from './utils/interception/index.js'
* export mock primitives
*/
export * from './utils/interception/types.js'
* re-export action primitives
*/
export * from './utils/actions/index.js'
* re-export command types
*/
export { InitScript } from './commands/browser/addInitScript.js'
type $BrowserCommands = typeof BrowserCommands
type $ElementCommands = typeof ElementCommands
type ElementQueryCommands = '$' | 'custom$' | 'shadow$' | 'react$'
type ElementsQueryCommands = '$$' | 'custom$$' | 'shadow$$' | 'react$$'
type ChainablePrototype = {
[K in ElementQueryCommands]: (...args: Parameters<$ElementCommands[K]>) => ChainablePromiseElement
} & {
[K in ElementsQueryCommands]: (...args: Parameters<$ElementCommands[K]>) => ChainablePromiseArray
}
type AsyncElementProto = {
[K in keyof Omit<$ElementCommands, keyof ChainablePrototype>]: OmitThisParameter<$ElementCommands[K]>
} & ChainablePrototype
interface ChainablePromiseBaseElement {
* WebDriver element reference
*/
elementId: Promise<string>
* parent of the element if fetched via `$(parent).$(child)`
*/
parent: Promise<WebdriverIO.Element | WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser>
* selector used to fetch this element, can be
* - undefined if element was created via `$({ 'element-6066-11e4-a52e-4f735466cecf': 'ELEMENT-1' })`
* - a string if `findElement` was used and a reference was found
* - or a function if element was found via e.g. `$(() => document.body)`
*/
selector: Promise<Selector>
* Error message in case element fetch was not successful
*/
error?: Promise<Error>
* index of the element if fetched with `$$`
*/
index?: Promise<number>
* get the `WebdriverIO.Element` reference
*/
getElement(): Promise<WebdriverIO.Element>
}
export interface ChainablePromiseElement extends
ChainablePromiseBaseElement,
AsyncElementProto,
Omit<WebdriverIO.Element, keyof ChainablePromiseBaseElement | keyof AsyncElementProto> {}
interface AsyncIterators<T> {
* Unwrap the nth element of the element list.
*/
forEach: <T>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => void, thisArg?: T) => Promise<void>
forEachSeries: <T>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => void, thisArg?: T) => Promise<void>
map: <U>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => U | Promise<U>, thisArg?: T) => Promise<U[]>
mapSeries: <T, U>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => U | Promise<U>, thisArg?: T) => Promise<U[]>;
find: <T>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => boolean | Promise<boolean>, thisArg?: T) => Promise<T>;
findSeries: <T>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => boolean | Promise<boolean>, thisArg?: T) => Promise<T>;
findIndex: <T>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => boolean | Promise<boolean>, thisArg?: T) => Promise<number>;
findIndexSeries: <T>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => boolean | Promise<boolean>, thisArg?: T) => Promise<number>;
some: <T>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => boolean | Promise<boolean>, thisArg?: T) => Promise<boolean>;
someSeries: <T>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => boolean | Promise<boolean>, thisArg?: T) => Promise<boolean>;
every: <T>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => boolean | Promise<boolean>, thisArg?: T) => Promise<boolean>;
everySeries: <T>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => boolean | Promise<boolean>, thisArg?: T) => Promise<boolean>;
filter: <T>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => boolean | Promise<boolean>, thisArg?: T) => Promise<WebdriverIO.Element[]>;
filterSeries: <T>(callback: (currentValue: WebdriverIO.Element, index: number, array: T[]) => boolean | Promise<boolean>, thisArg?: T) => Promise<WebdriverIO.Element[]>;
reduce: <T, U>(callback: (accumulator: U, currentValue: WebdriverIO.Element, currentIndex: number, array: T[]) => U | Promise<U>, initialValue?: U) => Promise<U>;
entries(): AsyncIterableIterator<[number, WebdriverIO.Element]>;
}
export interface ChainablePromiseArray extends AsyncIterators<WebdriverIO.Element> {
[Symbol.asyncIterator](): AsyncIterableIterator<WebdriverIO.Element>
[Symbol.iterator](): IterableIterator<WebdriverIO.Element>
* Amount of element fetched.
*/
length: Promise<number>
* selector used to fetch this element, can be
* - undefined if element was created via `$({ 'element-6066-11e4-a52e-4f735466cecf': 'ELEMENT-1' })`
* - a string if `findElement` was used and a reference was found
* - or a function if element was found via e.g. `$(() => document.body)`
*/
selector: Promise<Selector>
* parent of the element if fetched via `$(parent).$(child)`
*/
parent: Promise<WebdriverIO.Element | WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser>
* allow to access a specific index of the element set
*/
[n: number]: ChainablePromiseElement
* get the `WebdriverIO.Element[]` list
*/
getElements(): Promise<WebdriverIO.ElementArray>
* Returns an async iterator of key/value pairs for every index in the array.
*/
entries(): AsyncIterableIterator<[number, WebdriverIO.Element]>
}
export type BrowserCommandsType = Omit<$BrowserCommands, keyof ChainablePrototype> & ChainablePrototype
export type ElementCommandsType = Omit<$ElementCommands, keyof ChainablePrototype> & ChainablePrototype
* Multiremote command definition
*/
type SingleElementCommandNames = '$' | 'custom$' | 'react$'
type MultiElementCommandNames = '$$' | 'custom$$' | 'react$$'
type ElementCommandNames = SingleElementCommandNames | MultiElementCommandNames
type MultiRemoteElementCommands = {
[K in keyof Pick<BrowserCommandsType, SingleElementCommandNames>]: (...args: Parameters<BrowserCommandsType[K]>) => ThenArg<WebdriverIO.MultiRemoteElement>
} & {
[K in keyof Pick<BrowserCommandsType, MultiElementCommandNames>]: (...args: Parameters<BrowserCommandsType[K]>) => ThenArg<WebdriverIO.MultiRemoteElement[]>
}
export type MultiRemoteBrowserCommandsType = {
[K in keyof Omit<BrowserCommandsType, ElementCommandNames | 'SESSION_MOCKS' | 'CDP_SESSIONS'>]: (...args: Parameters<BrowserCommandsType[K]>) => Promise<ThenArg<ReturnType<BrowserCommandsType[K]>>[]>
} & MultiRemoteElementCommands
export type MultiRemoteElementCommandsType = {
[K in keyof Omit<ElementCommandsType, ElementCommandNames>]: (...args: Parameters<ElementCommandsType[K]>) => Promise<ThenArg<ReturnType<ElementCommandsType[K]>>[]>
} & MultiRemoteElementCommands
export type MultiRemoteProtocolCommandsType = {
[K in keyof ProtocolCommands]: (...args: Parameters<ProtocolCommands[K]>) => Promise<ThenArg<ReturnType<ProtocolCommands[K]>>[]>
}
interface ElementArrayExport extends Omit<Array<WebdriverIO.Element>, keyof AsyncIterators<WebdriverIO.Element>>, AsyncIterators<WebdriverIO.Element> {
* selector used to fetch this element, can be
* - undefined if element was created via `$({ 'element-6066-11e4-a52e-4f735466cecf': 'ELEMENT-1' })`
* - a string if `findElement` was used and a reference was found
* - or a function if element was found via e.g. `$(() => document.body)`
*/
selector: Selector
* parent of the element if fetched via `$(parent).$(child)`
*/
parent: WebdriverIO.Element | WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser
* command name with which this element was found, e.g. `$$`, `react$$`, `custom$$`, `shadow$$`
*/
foundWith: string
* properties of the fetched elements
*/
props: any[]
* Amount of element fetched.
*/
length: number
* get the `WebdriverIO.Element[]` list
*/
getElements(): Promise<WebdriverIO.ElementArray>
}
export type ElementArray = ElementArrayExport
type AddCommandFnScoped<
InstanceType = WebdriverIO.Browser,
IsElement extends boolean = false
> = (
this: IsElement extends true ? WebdriverIO.Element : InstanceType,
...args: any[]
) => any
export type AddCommandFn = (...args: any[]) => any
type OverwriteCommandFnScoped<
ElementKey extends keyof $ElementCommands,
BrowserKey extends keyof $BrowserCommands,
IsElement extends boolean = false
> = (
this: IsElement extends true ? WebdriverIO.Element : WebdriverIO.Browser,
originalCommand: IsElement extends true ? OmitThisParameter<$ElementCommands[ElementKey]> : OmitThisParameter<$BrowserCommands[BrowserKey]>,
...args: any[]
) => Promise<any>
type OverwriteCommandFn<
ElementKey extends keyof $ElementCommands,
BrowserKey extends keyof $BrowserCommands,
IsElement extends boolean = false
> = (
this: IsElement extends true ? WebdriverIO.Element : WebdriverIO.Browser,
originalCommand: IsElement extends true ? OmitThisParameter<$ElementCommands[ElementKey]> : OmitThisParameter<$BrowserCommands[BrowserKey]>,
...args: any[]
) => Promise<any>
export type CustomLocatorReturnValue = HTMLElement | HTMLElement[] | NodeListOf<HTMLElement>
type Instances = WebdriverIO.Browser | WebdriverIO.MultiRemoteBrowser
export interface CustomInstanceCommands<T> {
* add command to `browser` or `element` scope
*/
addCommand<IsElement extends boolean = false, Instance extends Instances = WebdriverIO.Browser>(
name: string,
func: IsElement extends true ? AddCommandFnScoped<T | Instance, IsElement> : AddCommandFn,
attachToElement?: IsElement,
proto?: Record<string, any>,
instances?: Record<string, Instances>
): void;
* overwrite `browser` or `element` command
*/
overwriteCommand<ElementKey extends keyof $ElementCommands, BrowserKey extends keyof $BrowserCommands, IsElement extends boolean = false>(
name: IsElement extends true ? ElementKey : BrowserKey,
func: IsElement extends true ? OverwriteCommandFnScoped<ElementKey, BrowserKey, IsElement> : OverwriteCommandFn<ElementKey, BrowserKey, IsElement>,
attachToElement?: IsElement,
proto?: Record<string, any>,
instances?: Record<string, Instances>
): void;
* create custom selector
*/
addLocatorStrategy(
name: string,
func: ((selector: string, root: HTMLElement) => CustomLocatorReturnValue) | ((selector: string) => CustomLocatorReturnValue)
): void
}
interface InstanceBase extends EventEmitter, SessionFlags {
* Session id for the current running session
*/
sessionId: string
* Applied WebdriverIO options (options that aren't officially part of WebdriverIO are stripped
* out of this object).
*/
options: Options.WebdriverIO | Options.Testrunner
* Puppeteer instance
*/
puppeteer?: PuppeteerBrowser
strategies: Map<any, any>
commandList: string[]
* @private
*/
__propertiesObject__: Record<string, PropertyDescriptor>
* @private
*/
wdioRetries?: number
}
* a browser base that has everything besides commands which are defined for sync and async separately
*/
export interface BrowserBase extends InstanceBase, CustomInstanceCommands<WebdriverIO.Browser> {
isMultiremote: false
* capabilities of the browser instance
*/
capabilities: WebdriverIO.Capabilities
}
export type WebdriverIOEventMap = EventMap & {
'dialog': WebdriverIO.Dialog
}
interface BidiEventHandler {
on<K extends keyof WebdriverIOEventMap>(event: K, listener: (this: WebdriverIO.Browser, param: WebdriverIOEventMap[K]) => void): this
once<K extends keyof WebdriverIOEventMap>(event: K, listener: (this: WebdriverIO.Browser, param: WebdriverIOEventMap[K]) => void): this
}
* @private
*/
export interface Browser extends Omit<BrowserBase, 'on' | 'once'>, BidiEventHandler, BidiHandler, ProtocolCommands, BrowserCommandsType {}
* export a browser interface that can be used for typing plugins
*/
export interface ElementBase extends InstanceBase, ElementReference, CustomInstanceCommands<WebdriverIO.Element> {
* capabilities of the browser instance
*/
capabilities: WebdriverIO.Capabilities
* WebDriver element reference
*/
elementId: string
* WebDriver element reference
*/
ELEMENT: string
* selector used to fetch this element, can be
* - undefined if element was created via `$({ 'element-6066-11e4-a52e-4f735466cecf': 'ELEMENT-1' })`
* - a string if `findElement` was used and a reference was found
* - or a functin if element was found via e.g. `$(() => document.body)`
*/
selector: Selector
* index of the element if fetched with `$$`
*/
index?: number
* parent of the element if fetched via `$(parent).$(child)`
*/
parent: WebdriverIO.Element | WebdriverIO.Browser
* true if element is a React component
*/
isReactElement?: boolean
* true if element was queried from a shadow root
*/
isShadowElement?: boolean
* error response if element was not found
*/
error?: Error
* locator of the element
* @requires WebDriver Bidi
*/
locator?: remote.BrowsingContextLocator
}
* @deprecated use `WebdriverIO.Element` instead
*/
export interface Element extends ElementBase, ProtocolCommands, ElementCommandsType {}
interface MultiRemoteBase extends Omit<InstanceBase, 'sessionId'>, CustomInstanceCommands<WebdriverIO.MultiRemoteBrowser> {
* capabilities of the browser instance
*/
capabilities: Capabilities.RequestedMultiremoteCapabilities
* multiremote browser instance names
*/
instances: string[]
* flag to indicate multiremote browser session
*/
isMultiremote: true
* get a specific instance to run commands on it
*/
getInstance: (browserName: string) => WebdriverIO.Browser
}
interface MultiRemoteElementBase {
selector: string
* multiremote browser instance names
*/
instances: string[]
commandList: string[]
addCommand: Function
overwriteCommand: Function
* flag to indicate multiremote browser session
*/
isMultiremote: true
* get a specific instance to run commands on it
*/
getInstance: (browserName: string) => WebdriverIO.Element
__propertiesObject__: never
}
interface MultiRemoteBrowserType extends MultiRemoteBase, MultiRemoteBrowserCommandsType, MultiRemoteProtocolCommandsType { }
* @deprecated use `WebdriverIO.MultiRemoteBrowser` instead
*/
export interface MultiRemoteBrowser extends MultiRemoteBrowserType {}
interface MultiRemoteElementType extends MultiRemoteElementBase, MultiRemoteProtocolCommandsType, Omit<MultiRemoteBrowserCommandsType, keyof MultiRemoteElementCommandsType>, MultiRemoteElementCommandsType {}
* @deprecated use `WebdriverIO.MultiRemoteElement` instead
*/
export interface MultiRemoteElement extends MultiRemoteElementType {}
export type ElementFunction = ((elem: HTMLElement) => HTMLElement | undefined) | ((elem: HTMLElement) => (HTMLElement | undefined)[])
export type CustomStrategyFunction = (...args: any) => ElementReference | ElementReference[]
export type CustomStrategyReference = {
strategy: CustomStrategyFunction
strategyName: string
strategyArguments: any[]
}
export type Selector = string | ElementReference | ElementFunction | CustomStrategyReference | HTMLElement
interface CSSValue {
type: string
string: string
unit: string
value: any
}
interface ParsedColor extends Partial<CSSValue> {
rgb?: string
rgba?: string
hex?: string
}
export interface ParsedCSSValue {
property?: string
value?: string
parsed: ParsedColor
}
interface NoneActionEntity {
type: 'pause'
duration: number
}
interface PointerActionEntity {
type: 'pointerMove' | 'pointerDown' | 'pointerUp' | 'pointerCancel' | 'pause'
duration?: number
x?: number
y?: number
button?: number
}
interface KeyActionEntity {
type: 'keyUp' | 'keyDown'
duration?: number
value?: string
}
export interface Action {
id: string
actions: (NoneActionEntity | PointerActionEntity | KeyActionEntity)[]
type?: 'pointer' | 'key'
parameters?: {
pointerType: 'mouse' | 'pen' | 'touch'
}
}
export interface ActionParameter {
actions: Action[]
}
export type ActionTypes = 'press' | 'longPress' | 'tap' | 'moveTo' | 'wait' | 'release'
export interface TouchAction {
action: ActionTypes,
x?: number,
y?: number,
element?: WebdriverIO.Element,
ms?: number
}
export type TouchActionParameter = string | string[] | TouchAction | TouchAction[]
export type TouchActions = TouchActionParameter | TouchActionParameter[]
export type Matcher = {
name: string,
args: Array<string | object>
class?: string
}
export type ReactSelectorOptions = {
props?: Record<string, unknown>
state?: Record<string, unknown>
}
export type MoveToOptions = {
xOffset?: number,
yOffset?: number
}
export type DragAndDropOptions = {
duration?: number
}
export type NewWindowOptions = {
type?: 'tab' | 'window',
windowName?: string,
windowFeatures?: string
}
export type TapOptions = MobileScrollIntoViewOptions & {
x?: number,
y?: number
}
export type LongPressOptions = {
x: number,
y: number,
duration: number
}
export type ClickOptions = LongPressOptions & {
button: Button | ButtonNames,
skipRelease: boolean
}
export type PinchAndZoomOptions = {
duration: number
scale: number,
}
export type WaitForOptions = {
timeout?: number,
interval?: number,
timeoutMsg?: string,
reverse?: boolean,
withinViewport?: boolean
}
export enum MobileScrollDirection {
Down = 'down',
Up = 'up',
Left = 'left',
Right = 'right',
}
export type XY = {
x: number,
y: number
}
export type SwipeOptions = {
direction?: `${MobileScrollDirection}`;
duration?: number;
from?: XY;
percent?: number;
scrollableElement?: WebdriverIO.Element | ChainablePromiseElement ;
to?: XY;
}
export type MobileScrollIntoViewOptions = SwipeOptions & {
maxScrolls?: number;
}
export interface CustomScrollIntoViewOptions extends ScrollIntoViewOptions, MobileScrollIntoViewOptions {
}
export type SwitchContextOptions = {
appIdentifier?: string;
title?: string | RegExp;
url?: string | RegExp;
androidWebviewConnectionRetryTime?: number;
androidWebviewConnectTimeout?: number;
}
type AppiumDetailedContextInterface = {
id: string;
title?: string;
url?: string;
}
type IosContextBundleId = {
bundleId?: string;
}
export type IosDetailedContext = AppiumDetailedContextInterface & IosContextBundleId
export type AndroidDetailedContext = AppiumDetailedContextInterface & {
androidWebviewData?: {
attached: boolean;
empty: boolean;
height: number;
neverAttached: boolean;
screenX: number;
screenY: number;
visible: boolean;
width: number;
};
packageName?: string;
webviewPageId?: string;
}
export type AppiumDetailedCrossPlatformContexts = (IosDetailedContext | AndroidDetailedContext)[]
export type GetContextsOptions = {
androidWebviewConnectionRetryTime?: number;
androidWebviewConnectTimeout?: number;
filterByCurrentAndroidApp?: boolean;
isAndroidWebviewVisible?: boolean;
returnAndroidDescriptionData?: boolean;
returnDetailedContexts?: boolean;
}
export type ActiveAppInfo = {
pid: number;
bundleId: string;
name: string;
processArguments: {
args: string[];
env: Record<string, string>;
};
}
export type WaitUntilOptions = {
timeout?: number,
timeoutMsg?: string,
interval?: number
}
export type DragAndDropCoordinate = {
x: number,
y: number
}
export interface AttachOptions extends Omit<WebDriverAttachOptions, 'capabilities'> {
options?: Options.WebdriverIO
capabilities?: WebDriverAttachOptions['capabilities']
requestedCapabilities?: WebDriverAttachOptions['capabilities']
}
export type ThrottlePreset = 'offline' | 'GPRS' | 'Regular2G' | 'Good2G' | 'Regular3G' | 'Good3G' | 'Regular4G' | 'DSL' | 'WiFi' | 'online'
export interface CustomThrottle {
offline: boolean
downloadThroughput: number
uploadThroughput: number
latency: number
}
export type ThrottleOptions = ThrottlePreset | CustomThrottle
export interface ExtendedElementReference {
'element-6066-11e4-a52e-4f735466cecf': string
locator: remote.BrowsingContextLocator
}
export type SupportedScopes = 'geolocation' | 'userAgent' | 'colorScheme' | 'onLine' | 'clock' | 'device'
export type RestoreMap = Map<SupportedScopes, (() => Promise<any>)[]>
export interface SaveScreenshotOptions {
* Whether to take a screenshot of the full page or just the current viewport.
* @default false
*/
fullPage?: boolean
* The format of the screenshot.
* @default 'png'
*/
format?: 'png' | 'jpeg' | 'jpg'
* The quality of the screenshot in case of JPEG format in range 0-100 percent.
* @default 100
*/
quality?: number
* Clipping a rectangle of the screenshot.
*/
clip?: {
x: number
y: number
width: number
height: number
}
}
export type TransformElement<T> =
T extends WebdriverIO.Element ? HTMLElement :
T extends ChainablePromiseElement ? HTMLElement :
T extends WebdriverIO.Element[] ? HTMLElement[] :
T extends ChainablePromiseArray ? HTMLElement[] :
T extends [infer First, ...infer Rest] ? [TransformElement<First>, ...TransformElement<Rest>] :
T extends Array<infer U> ? Array<TransformElement<U>> :
T
export type TransformReturn<T> =
T extends HTMLElement ? WebdriverIO.Element :
T extends HTMLElement[] ? WebdriverIO.Element[] :
T extends [infer First, ...infer Rest] ? [TransformReturn<First>, ...TransformReturn<Rest>] :
T extends Array<infer U> ? Array<TransformReturn<U>> :
T
* Additional options outside of the WebDriver spec, exclusively for WebdriverIO, only for runtime, and not sent to Appium
*/
export interface InputOptions {
mask?: boolean
}
declare global {
namespace WebdriverIO {
* WebdriverIO browser object
* @see https://webdriver.io/docs/api/browser
*/
interface Browser extends Omit<BrowserBase, 'on' | 'once'>, BidiEventHandler, BidiHandler, ProtocolCommands, BrowserCommandsType {}
* WebdriverIO element object
* @see https://webdriver.io/docs/api/element
*/
interface Element extends ElementBase, ProtocolCommands, ElementCommandsType {}
* WebdriverIO element array
* When fetching elements via `$$`, `custom$$` or `shadow$$` commands an array of elements
* is returns. This array has extended prototype properties to provide information about
* the parent element, selector and properties of the fetched elements. This is useful to
* e.g. re-fetch the set in case no elements got returned.
*/
interface ElementArray extends ElementArrayExport {}
* WebdriverIO multiremote browser object
* A multiremote browser instance is a property on the global WebdriverIO browser object that
* allows to control multiple browser instances at once. It can be represented as `Record<string, WebdriverIO.Browser>`
* where `string` is the capability name defined in the WebdriverIO options.
*
* @see https://webdriver.io/docs/multiremote/
*/
interface MultiRemoteBrowser extends MultiRemoteBrowserType {}
* WebdriverIO multiremote browser object
* A multiremote browser instance is a property on the global WebdriverIO browser object that
* allows to control multiple browser instances at once. It can be represented as `Record<string, WebdriverIO.Element>`
* where `string` is the capability name defined in the WebdriverIO options.
*
* @see https://webdriver.io/docs/multiremote/
*/
interface MultiRemoteElement extends MultiRemoteElementType {}
* WebdriverIO Mock object
* The mock object is an object that represents a network mock and contains information about
* requests that were matching given url and filterOptions. It can be received using the mock command.
*
* @see https://webdriver.io/docs/api/mock
*/
interface Mock extends WebDriverInterception {}
* WebdriverIO Dialog object
* The dialog object represents a user prompt that was triggered by the browser. It contains
* information about the message, type and default value of the prompt.
* It can be received using the `on('dialog')` event.
*
* @see https://webdriver.io/docs/api/dialog
*/
interface Dialog extends DialogImport {}
}
}