StackFrame:
  type: object
  properties:
    file: string
    line: int
    column: int
    function: string?
Metadata:
  type: object
  properties:
    location:
      type: object?
      properties:
        file: string
        line: int?
        column: int?
    title: string?
    internal: boolean?
    stepId: string?
ClientSideCallMetadata:
  type: object
  properties:
    id: int
    stack:
      type: array?
      items: StackFrame
Point:
  type: object
  properties:
    x: float
    y: float
Rect:
  type: object
  properties:
    x: float
    y: float
    width: float
    height: float
SerializedValue:
  type: object
  properties:
    n: float?
    b: boolean?
    s: string?
    v:
      type: enum?
      literals:
        - null
        - undefined
        - NaN
        - Infinity
        - -Infinity
        - "-0"
    d: string?
    u: string?
    bi: string?
    ta:
      type: object?
      properties:
        b: binary
        k:
          type: enum
          literals:
            - i8
            - ui8
            - ui8c
            - i16
            - ui16
            - i32
            - ui32
            - f32
            - f64
            - bi64
            - bui64
    e:
      type: object?
      properties:
        m: string
        n: string
        s: string
    r:
      type: object?
      properties:
        p: string
        f: string
    a:
      type: array?
      items: SerializedValue
    o:
      type: array?
      items:
        type: object
        properties:
          k: string
          v: SerializedValue
    h: int?
    id: int?
    ref: int?
SerializedArgument:
  type: object
  properties:
    value: SerializedValue
    handles:
      type: array
      items: Channel
ExpectedTextValue:
  type: object
  properties:
    string: string?
    regexSource: string?
    regexFlags: string?
    matchSubstring: boolean?
    ignoreCase: boolean?
    normalizeWhiteSpace: boolean?
SelectorEngine:
  type: object
  properties:
    name: string
    source: string
    contentScript: boolean?
AXNode:
  type: object
  properties:
    role: string
    name: string
    valueString: string?
    valueNumber: float?
    description: string?
    keyshortcuts: string?
    roledescription: string?
    valuetext: string?
    disabled: boolean?
    expanded: boolean?
    focused: boolean?
    modal: boolean?
    multiline: boolean?
    multiselectable: boolean?
    readonly: boolean?
    required: boolean?
    selected: boolean?
    checked:
      type: enum?
      literals:
        - checked
        - unchecked
        - mixed
    pressed:
      type: enum?
      literals:
        - pressed
        - released
        - mixed
    level: int?
    valuemin: float?
    valuemax: float?
    autocomplete: string?
    haspopup: string?
    invalid: string?
    orientation: string?
    children:
      type: array?
      items: AXNode
SetNetworkCookie:
  type: object
  properties:
    name: string
    value: string
    url: string?
    domain: string?
    path: string?
    expires: float?
    httpOnly: boolean?
    secure: boolean?
    sameSite:
      type: enum?
      literals:
        - Strict
        - Lax
        - None
    partitionKey: string?
    _crHasCrossSiteAncestor: boolean?
NetworkCookie:
  type: object
  properties:
    name: string
    value: string
    domain: string
    path: string
    expires: float
    httpOnly: boolean
    secure: boolean
    sameSite:
      type: enum
      literals:
        - Strict
        - Lax
        - None
    partitionKey: string?
    _crHasCrossSiteAncestor: boolean?
NameValue:
  type: object
  properties:
    name: string
    value: string
IndexedDBDatabase:
  type: object
  properties:
    name: string
    version: int
    stores:
      type: array
      items:
        type: object
        properties:
          name: string
          autoIncrement: boolean
          keyPath: string?
          keyPathArray:
            type: array?
            items: string
          records:
            type: array
            items:
              type: object
              properties:
                key: json?
                keyEncoded: json?
                value: json?
                valueEncoded: json?
          indexes:
            type: array
            items:
              type: object
              properties:
                name: string
                keyPath: string?
                keyPathArray:
                  type: array?
                  items: string
                multiEntry: boolean
                unique: boolean
SetOriginStorage:
  type: object
  properties:
    origin: string
    localStorage:
      type: array
      items: NameValue
    indexedDB:
      type: array?
      items: IndexedDBDatabase
OriginStorage:
  type: object
  properties:
    origin: string
    localStorage:
      type: array
      items: NameValue
    indexedDB:
      type: array?
      items: IndexedDBDatabase
SerializedError:
  type: object
  properties:
    error:
      type: object?
      properties:
        message: string
        name: string
        stack: string?
    value: SerializedValue?
RecordHarOptions:
  type: object
  properties:
    zip: boolean?
    content:
      type: enum?
      literals:
        - embed
        - attach
        - omit
    mode:
      type: enum?
      literals:
        - full
        - minimal
    urlGlob: string?
    urlRegexSource: string?
    urlRegexFlags: string?
FormField:
  type: object
  properties:
    name: string
    value: string?
    file:
      type: object?
      properties:
        name: string
        mimeType: string?
        buffer: binary
SDKLanguage:
  type: enum
  literals:
    - javascript
    - python
    - java
    - csharp
APIRequestContext:
  type: interface
  initializer:
    tracing: Tracing
  commands:
    fetch:
      title: '{method} "{url}"'
      parameters:
        url: string
        encodedParams: string?
        params:
          type: array?
          items: NameValue
        method: string?
        headers:
          type: array?
          items: NameValue
        postData: binary?
        jsonData: string?
        formData:
          type: array?
          items: NameValue
        multipartData:
          type: array?
          items: FormField
        timeout: float
        failOnStatusCode: boolean?
        ignoreHTTPSErrors: boolean?
        maxRedirects: int?
        maxRetries: int?
      returns:
        response: APIResponse
    fetchResponseBody:
      title: Get response body
      group: getter
      parameters:
        fetchUid: string
      returns:
        binary: binary?
    fetchLog:
      internal: true
      parameters:
        fetchUid: string
      returns:
        log:
          type: array
          items: string
    storageState:
      title: Get storage state
      parameters:
        indexedDB: boolean?
      returns:
        cookies:
          type: array
          items: NetworkCookie
        origins:
          type: array
          items: OriginStorage
    disposeAPIResponse:
      internal: true
      parameters:
        fetchUid: string
    dispose:
      internal: true
      parameters:
        reason: string?
APIResponse:
  type: object
  properties:
    fetchUid: string
    url: string
    status: int
    statusText: string
    headers:
      type: array
      items: NameValue
LifecycleEvent:
  type: enum
  literals:
    - load
    - domcontentloaded
    - networkidle
    - commit
CommonScreenshotOptions:
  type: mixin
  properties:
    omitBackground: boolean?
    caret:
      type: enum?
      literals:
        - hide
        - initial
    animations:
      type: enum?
      literals:
        - disabled
        - allow
    scale:
      type: enum?
      literals:
        - css
        - device
    mask:
      type: array?
      items:
        type: object
        properties:
          frame: Frame
          selector: string
    maskColor: string?
    style: string?
LaunchOptions:
  type: mixin
  properties:
    channel: string?
    executablePath: string?
    args:
      type: array?
      items: string
    ignoreAllDefaultArgs: boolean?
    ignoreDefaultArgs:
      type: array?
      items: string
    assistantMode: boolean?
    handleSIGINT: boolean?
    handleSIGTERM: boolean?
    handleSIGHUP: boolean?
    timeout: float
    env:
      type: array?
      items: NameValue
    headless: boolean?
    devtools: boolean?
    proxy:
      type: object?
      properties:
        server: string
        bypass: string?
        username: string?
        password: string?
    downloadsPath: string?
    tracesDir: string?
    chromiumSandbox: boolean?
    firefoxUserPrefs: json?
    cdpPort: int?
ContextOptions:
  type: mixin
  properties:
    noDefaultViewport: boolean?
    viewport:
      type: object?
      properties:
        width: int
        height: int
    screen:
      type: object?
      properties:
        width: int
        height: int
    ignoreHTTPSErrors: boolean?
    clientCertificates:
      type: array?
      items:
        type: object
        properties:
          origin: string
          cert: binary?
          key: binary?
          passphrase: string?
          pfx: binary?
    javaScriptEnabled: boolean?
    bypassCSP: boolean?
    userAgent: string?
    locale: string?
    timezoneId: string?
    geolocation:
      type: object?
      properties:
        longitude: float
        latitude: float
        accuracy: float?
    permissions:
      type: array?
      items: string
    extraHTTPHeaders:
      type: array?
      items: NameValue
    offline: boolean?
    httpCredentials:
      type: object?
      properties:
        username: string
        password: string
        origin: string?
        send:
          type: enum?
          literals:
            - always
            - unauthorized
    deviceScaleFactor: float?
    isMobile: boolean?
    hasTouch: boolean?
    colorScheme:
      type: enum?
      literals:
        - dark
        - light
        - no-preference
        - no-override
    reducedMotion:
      type: enum?
      literals:
        - reduce
        - no-preference
        - no-override
    forcedColors:
      type: enum?
      literals:
        - active
        - none
        - no-override
    acceptDownloads:
      type: enum?
      literals:
        - accept
        - deny
        - internal-browser-default
    contrast:
      type: enum?
      literals:
        - no-preference
        - more
        - no-override
    baseURL: string?
    recordVideo:
      type: object?
      properties:
        dir: string
        size:
          type: object?
          properties:
            width: int
            height: int
    strictSelectors: boolean?
    serviceWorkers:
      type: enum?
      literals:
        - allow
        - block
    selectorEngines:
      type: array?
      items: SelectorEngine
    testIdAttributeName: string?
LocalUtils:
  type: interface
  initializer:
    deviceDescriptors:
      type: array
      items:
        type: object
        properties:
          name: string
          descriptor:
            type: object
            properties:
              userAgent: string
              viewport:
                type: object
                properties:
                  width: int
                  height: int
              screen:
                type: object?
                properties:
                  width: int
                  height: int
              deviceScaleFactor: float
              isMobile: boolean
              hasTouch: boolean
              defaultBrowserType:
                type: enum
                literals:
                  - chromium
                  - firefox
                  - webkit
  commands:
    zip:
      internal: true
      parameters:
        zipFile: string
        entries:
          type: array
          items: NameValue
        stacksId: string?
        mode:
          type: enum
          literals:
            - write
            - append
        includeSources: boolean
    harOpen:
      internal: true
      parameters:
        file: string
      returns:
        harId: string?
        error: string?
    harLookup:
      internal: true
      parameters:
        harId: string
        url: string
        method: string
        headers:
          type: array
          items: NameValue
        postData: binary?
        isNavigationRequest: boolean
      returns:
        action:
          type: enum
          literals:
            - error
            - redirect
            - fulfill
            - noentry
        message: string?
        redirectURL: string?
        status: int?
        headers:
          type: array?
          items: NameValue
        body: binary?
    harClose:
      internal: true
      parameters:
        harId: string
    harUnzip:
      internal: true
      parameters:
        zipFile: string
        harFile: string
    connect:
      internal: true
      parameters:
        wsEndpoint: string
        headers: json?
        exposeNetwork: string?
        slowMo: float?
        timeout: float
        socksProxyRedirectPortForTest: int?
      returns:
        pipe: JsonPipe
        headers:
          type: array
          items: NameValue
    tracingStarted:
      internal: true
      parameters:
        tracesDir: string?
        traceName: string
      returns:
        stacksId: string
    addStackToTracingNoReply:
      internal: true
      parameters:
        callData: ClientSideCallMetadata
    traceDiscarded:
      internal: true
      parameters:
        stacksId: string
    globToRegex:
      internal: true
      parameters:
        glob: string
        baseURL: string?
        webSocketUrl: boolean?
      returns:
        regex: string
Root:
  type: interface
  commands:
    initialize:
      internal: true
      parameters:
        sdkLanguage: SDKLanguage
      returns:
        playwright: Playwright
Playwright:
  type: interface
  initializer:
    chromium: BrowserType
    firefox: BrowserType
    webkit: BrowserType
    _bidiChromium: BrowserType
    _bidiFirefox: BrowserType
    android: Android
    electron: Electron
    utils: LocalUtils?
    preLaunchedBrowser: Browser?
    preConnectedAndroidDevice: AndroidDevice?
    socksSupport: SocksSupport?
  commands:
    newRequest:
      title: Create request context
      parameters:
        baseURL: string?
        userAgent: string?
        ignoreHTTPSErrors: boolean?
        extraHTTPHeaders:
          type: array?
          items: NameValue
        failOnStatusCode: boolean?
        clientCertificates:
          type: array?
          items:
            type: object
            properties:
              origin: string
              cert: binary?
              key: binary?
              passphrase: string?
              pfx: binary?
        maxRedirects: int?
        httpCredentials:
          type: object?
          properties:
            username: string
            password: string
            origin: string?
            send:
              type: enum?
              literals:
                - always
                - unauthorized
        proxy:
          type: object?
          properties:
            server: string
            bypass: string?
            username: string?
            password: string?
        storageState:
          type: object?
          properties:
            cookies:
              type: array?
              items: NetworkCookie
            origins:
              type: array?
              items: SetOriginStorage
        tracesDir: string?
      returns:
        request: APIRequestContext
RecorderSource:
  type: object
  properties:
    isRecorded: boolean
    id: string
    label: string
    text: string
    language: string
    highlight:
      type: array
      items:
        type: object
        properties:
          line: int
          type: string
    revealLine: int?
    group: string?
DebugController:
  type: interface
  commands:
    initialize:
      internal: true
      parameters:
        codegenId: string
        sdkLanguage: SDKLanguage
    setReportStateChanged:
      internal: true
      parameters:
        enabled: boolean
    setRecorderMode:
      internal: true
      parameters:
        mode:
          type: enum
          literals:
            - inspecting
            - recording
            - none
        testIdAttributeName: string?
        generateAutoExpect: boolean?
    highlight:
      internal: true
      parameters:
        selector: string?
        ariaTemplate: string?
    hideHighlight:
      internal: true
    resume:
      internal: true
    kill:
      internal: true
  events:
    inspectRequested:
      parameters:
        selector: string
        locator: string
        ariaSnapshot: string
    setModeRequested:
      parameters:
        mode: string
    stateChanged:
      parameters:
        pageCount: int
        browsers:
          type: array
          items:
            type: object
            properties:
              id: string
              name: string
              channel: string?
              contexts:
                type: array
                items:
                  type: object
                  properties:
                    pages:
                      type: array
                      items:
                        type: object
                        properties:
                          url: string
    sourceChanged:
      parameters:
        text: string
        header: string?
        footer: string?
        actions:
          type: array?
          items: string
    paused:
      parameters:
        paused: boolean
SocksSupport:
  type: interface
  commands:
    socksConnected:
      internal: true
      parameters:
        uid: string
        host: string
        port: int
    socksFailed:
      internal: true
      parameters:
        uid: string
        errorCode: string
    socksData:
      internal: true
      parameters:
        uid: string
        data: binary
    socksError:
      internal: true
      parameters:
        uid: string
        error: string
    socksEnd:
      internal: true
      parameters:
        uid: string
  events:
    socksRequested:
      parameters:
        uid: string
        host: string
        port: int
    socksData:
      parameters:
        uid: string
        data: binary
    socksClosed:
      parameters:
        uid: string
BrowserType:
  type: interface
  initializer:
    executablePath: string
    name: string
  commands:
    launch:
      title: Launch browser
      parameters:
        $mixin: LaunchOptions
        slowMo: float?
      returns:
        browser: Browser
    launchPersistentContext:
      title: Launch persistent context
      parameters:
        $mixin1: LaunchOptions
        $mixin2: ContextOptions
        userDataDir: string
        slowMo: float?
      returns:
        browser: Browser
        context: BrowserContext
    connectOverCDP:
      title: Connect over CDP
      parameters:
        endpointURL: string
        headers:
          type: array?
          items: NameValue
        slowMo: float?
        timeout: float
      returns:
        browser: Browser
        defaultContext: BrowserContext?
Browser:
  type: interface
  initializer:
    version: string
    name: string
  commands:
    close:
      title: Close browser
      parameters:
        reason: string?
      flags:
        pausesBeforeAction: true
    killForTests:
      internal: true
    defaultUserAgentForTest:
      internal: true
      returns:
        userAgent: string
    newContext:
      title: Create context
      parameters:
        $mixin: ContextOptions
        proxy:
          type: object?
          properties:
            server: string
            bypass: string?
            username: string?
            password: string?
        storageState:
          type: object?
          properties:
            cookies:
              type: array?
              items: SetNetworkCookie
            origins:
              type: array?
              items: SetOriginStorage
      returns:
        context: BrowserContext
    newContextForReuse:
      internal: true
      parameters:
        $mixin: ContextOptions
        proxy:
          type: object?
          properties:
            server: string
            bypass: string?
            username: string?
            password: string?
        storageState:
          type: object?
          properties:
            cookies:
              type: array?
              items: SetNetworkCookie
            origins:
              type: array?
              items: SetOriginStorage
      returns:
        context: BrowserContext
    disconnectFromReusedContext:
      internal: true
      parameters:
        reason: string
    newBrowserCDPSession:
      title: Create CDP session
      group: configuration
      returns:
        session: CDPSession
    startTracing:
      title: Start browser tracing
      group: configuration
      parameters:
        page: Page?
        screenshots: boolean?
        categories:
          type: array?
          items: string
    stopTracing:
      title: Stop browser tracing
      group: configuration
      returns:
        artifact: Artifact
  events:
    context:
      parameters:
        context: BrowserContext
    close: null
ConsoleMessage:
  type: mixin
  properties:
    type: string
    text: string
    args:
      type: array
      items: JSHandle
    location:
      type: object
      properties:
        url: string
        lineNumber: int
        columnNumber: int
EventTarget:
  type: interface
  commands:
    waitForEventInfo:
      title: Wait for event "{info.event}"
      parameters:
        info:
          type: object
          properties:
            waitId: string
            phase:
              type: enum
              literals:
                - before
                - after
                - log
            event: string?
            message: string?
            error: string?
      flags:
        snapshot: true
BrowserContext:
  type: interface
  extends: EventTarget
  initializer:
    isChromium: boolean
    requestContext: APIRequestContext
    tracing: Tracing
    options:
      type: object
      properties:
        $mixin: ContextOptions
  commands:
    addCookies:
      title: Add cookies
      group: configuration
      parameters:
        cookies:
          type: array
          items: SetNetworkCookie
    addInitScript:
      title: Add init script
      group: configuration
      parameters:
        source: string
    clearCookies:
      title: Clear cookies
      group: configuration
      parameters:
        name: string?
        nameRegexSource: string?
        nameRegexFlags: string?
        domain: string?
        domainRegexSource: string?
        domainRegexFlags: string?
        path: string?
        pathRegexSource: string?
        pathRegexFlags: string?
    clearPermissions:
      title: Clear permissions
      group: configuration
    close:
      title: Close context
      parameters:
        reason: string?
      flags:
        pausesBeforeAction: true
    cookies:
      title: Get cookies
      group: getter
      parameters:
        urls:
          type: array
          items: string
      returns:
        cookies:
          type: array
          items: NetworkCookie
    exposeBinding:
      title: Expose binding
      group: configuration
      parameters:
        name: string
        needsHandle: boolean?
    grantPermissions:
      title: Grant permissions
      group: configuration
      parameters:
        permissions:
          type: array
          items: string
        origin: string?
    newPage:
      title: Create page
      returns:
        page: Page
    registerSelectorEngine:
      internal: true
      parameters:
        selectorEngine: SelectorEngine
    setTestIdAttributeName:
      internal: true
      parameters:
        testIdAttributeName: string
    setExtraHTTPHeaders:
      title: Set extra HTTP headers
      group: configuration
      parameters:
        headers:
          type: array
          items: NameValue
    setGeolocation:
      title: Set geolocation
      group: configuration
      parameters:
        geolocation:
          type: object?
          properties:
            longitude: float
            latitude: float
            accuracy: float?
    setHTTPCredentials:
      title: Set HTTP credentials
      group: configuration
      parameters:
        httpCredentials:
          type: object?
          properties:
            username: string
            password: string
            origin: string?
    setNetworkInterceptionPatterns:
      title: Route requests
      group: route
      parameters:
        patterns:
          type: array
          items:
            type: object
            properties:
              glob: string?
              regexSource: string?
              regexFlags: string?
    setWebSocketInterceptionPatterns:
      title: Route WebSockets
      group: route
      parameters:
        patterns:
          type: array
          items:
            type: object
            properties:
              glob: string?
              regexSource: string?
              regexFlags: string?
    setOffline:
      title: Set offline mode
      parameters:
        offline: boolean
    storageState:
      title: Get storage state
      parameters:
        indexedDB: boolean?
      returns:
        cookies:
          type: array
          items: NetworkCookie
        origins:
          type: array
          items: OriginStorage
    pause:
      title: Pause
    enableRecorder:
      internal: true
      parameters:
        language: string?
        mode:
          type: enum?
          literals:
            - inspecting
            - recording
        recorderMode:
          type: enum?
          literals:
            - default
            - api
        pauseOnNextStatement: boolean?
        testIdAttributeName: string?
        launchOptions: json?
        contextOptions: json?
        device: string?
        saveStorage: string?
        outputFile: string?
        handleSIGINT: boolean?
        omitCallTracking: boolean?
    disableRecorder:
      internal: true
    newCDPSession:
      title: Create CDP session
      group: configuration
      parameters:
        page: Page?
        frame: Frame?
      returns:
        session: CDPSession
    harStart:
      internal: true
      parameters:
        page: Page?
        options: RecordHarOptions
      returns:
        harId: string
    harExport:
      internal: true
      parameters:
        harId: string?
      returns:
        artifact: Artifact
    createTempFiles:
      internal: true
      parameters:
        rootDirName: string?
        items:
          type: array
          items:
            type: object
            properties:
              name: string
              lastModifiedMs: float?
      returns:
        rootDir: WritableStream?
        writableStreams:
          type: array
          items: WritableStream
    updateSubscription:
      internal: true
      parameters:
        event:
          type: enum
          literals:
            - console
            - dialog
            - request
            - response
            - requestFinished
            - requestFailed
        enabled: boolean
    clockFastForward:
      title: Fast forward clock "{ticksNumber|ticksString}"
      parameters:
        ticksNumber: float?
        ticksString: string?
    clockInstall:
      title: Install clock "{timeNumber|timeString}"
      parameters:
        timeNumber: float?
        timeString: string?
    clockPauseAt:
      title: Pause clock "{timeNumber|timeString}"
      parameters:
        timeNumber: float?
        timeString: string?
    clockResume:
      title: Resume clock
    clockRunFor:
      title: Run clock "{ticksNumber|ticksString}"
      parameters:
        ticksNumber: float?
        ticksString: string?
    clockSetFixedTime:
      title: Set fixed time "{timeNumber|timeString}"
      parameters:
        timeNumber: float?
        timeString: string?
    clockSetSystemTime:
      title: Set system time "{timeNumber|timeString}"
      parameters:
        timeNumber: float?
        timeString: string?
  events:
    bindingCall:
      parameters:
        binding: BindingCall
    console:
      parameters:
        $mixin: ConsoleMessage
        page: Page
    close: null
    dialog:
      parameters:
        dialog: Dialog
    page:
      parameters:
        page: Page
    pageError:
      parameters:
        error: SerializedError
        page: Page
    route:
      parameters:
        route: Route
    webSocketRoute:
      parameters:
        webSocketRoute: WebSocketRoute
    video:
      parameters:
        artifact: Artifact
    backgroundPage:
      parameters:
        page: Page
    serviceWorker:
      parameters:
        worker: Worker
    request:
      parameters:
        request: Request
        page: Page?
    requestFailed:
      parameters:
        request: Request
        failureText: string?
        responseEndTiming: float
        page: Page?
    requestFinished:
      parameters:
        request: Request
        response: Response?
        responseEndTiming: float
        page: Page?
    response:
      parameters:
        response: Response
        page: Page?
    recorderEvent:
      parameters:
        event:
          type: enum
          literals:
            - actionAdded
            - actionUpdated
            - signalAdded
        data: json
        page: Page
        code: string
Page:
  type: interface
  extends: EventTarget
  initializer:
    mainFrame: Frame
    viewportSize:
      type: object?
      properties:
        width: int
        height: int
    isClosed: boolean
    opener: Page?
  commands:
    addInitScript:
      title: Add init script
      group: configuration
      parameters:
        source: string
    close:
      title: Close page
      parameters:
        runBeforeUnload: boolean?
        reason: string?
      flags:
        pausesBeforeAction: true
    emulateMedia:
      title: Emulate media
      parameters:
        media:
          type: enum?
          literals:
            - screen
            - print
            - no-override
        colorScheme:
          type: enum?
          literals:
            - dark
            - light
            - no-preference
            - no-override
        reducedMotion:
          type: enum?
          literals:
            - reduce
            - no-preference
            - no-override
        forcedColors:
          type: enum?
          literals:
            - active
            - none
            - no-override
        contrast:
          type: enum?
          literals:
            - no-preference
            - more
            - no-override
      flags:
        snapshot: true
        pausesBeforeAction: true
    exposeBinding:
      title: Expose binding
      group: configuration
      parameters:
        name: string
        needsHandle: boolean?
    goBack:
      title: Go back
      parameters:
        timeout: float
        waitUntil: LifecycleEvent?
      returns:
        response: Response?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    goForward:
      title: Go forward
      parameters:
        timeout: float
        waitUntil: LifecycleEvent?
      returns:
        response: Response?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    requestGC:
      title: Request garbage collection
      group: configuration
    registerLocatorHandler:
      title: Register locator handler
      parameters:
        selector: string
        noWaitAfter: boolean?
      returns:
        uid: int
    resolveLocatorHandlerNoReply:
      internal: true
      parameters:
        uid: int
        remove: boolean?
    unregisterLocatorHandler:
      title: Unregister locator handler
      parameters:
        uid: int
    reload:
      title: Reload
      parameters:
        timeout: float
        waitUntil: LifecycleEvent?
      returns:
        response: Response?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    expectScreenshot:
      title: Expect screenshot
      parameters:
        expected: binary?
        timeout: float
        isNot: boolean
        locator:
          type: object?
          properties:
            frame: Frame
            selector: string
        comparator: string?
        maxDiffPixels: int?
        maxDiffPixelRatio: float?
        threshold: float?
        fullPage: boolean?
        clip: Rect?
        $mixin: CommonScreenshotOptions
      returns:
        diff: binary?
        errorMessage: string?
        actual: binary?
        previous: binary?
        timedOut: boolean?
        log:
          type: array?
          items: string
      flags:
        snapshot: true
        pausesBeforeAction: true
    screenshot:
      title: Screenshot
      parameters:
        timeout: float
        type:
          type: enum?
          literals:
            - png
            - jpeg
        quality: int?
        fullPage: boolean?
        clip: Rect?
        $mixin: CommonScreenshotOptions
      returns:
        binary: binary
      flags:
        snapshot: true
        pausesBeforeAction: true
    setExtraHTTPHeaders:
      title: Set extra HTTP headers
      group: configuration
      parameters:
        headers:
          type: array
          items: NameValue
    setNetworkInterceptionPatterns:
      title: Route requests
      group: route
      parameters:
        patterns:
          type: array
          items:
            type: object
            properties:
              glob: string?
              regexSource: string?
              regexFlags: string?
    setWebSocketInterceptionPatterns:
      title: Route WebSockets
      group: route
      parameters:
        patterns:
          type: array
          items:
            type: object
            properties:
              glob: string?
              regexSource: string?
              regexFlags: string?
    setViewportSize:
      title: Set viewport size
      parameters:
        viewportSize:
          type: object
          properties:
            width: int
            height: int
      flags:
        snapshot: true
        pausesBeforeAction: true
    keyboardDown:
      title: Key down "{key}"
      parameters:
        key: string
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    keyboardUp:
      title: Key up "{key}"
      parameters:
        key: string
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    keyboardInsertText:
      title: Insert "{text}"
      parameters:
        text: string
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    keyboardType:
      title: Type "{text}"
      parameters:
        text: string
        delay: float?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    keyboardPress:
      title: Press "{key}"
      parameters:
        key: string
        delay: float?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    mouseMove:
      title: Mouse move
      parameters:
        x: float
        y: float
        steps: int?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    mouseDown:
      title: Mouse down
      parameters:
        button:
          type: enum?
          literals:
            - left
            - right
            - middle
        clickCount: int?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    mouseUp:
      title: Mouse up
      parameters:
        button:
          type: enum?
          literals:
            - left
            - right
            - middle
        clickCount: int?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    mouseClick:
      title: Click
      parameters:
        x: float
        y: float
        delay: float?
        button:
          type: enum?
          literals:
            - left
            - right
            - middle
        clickCount: int?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    mouseWheel:
      title: Mouse wheel
      parameters:
        deltaX: float
        deltaY: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    touchscreenTap:
      title: Tap
      parameters:
        x: float
        y: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    accessibilitySnapshot:
      title: Accessibility snapshot
      group: getter
      parameters:
        interestingOnly: boolean?
        root: ElementHandle?
      returns:
        rootAXNode: AXNode?
    pdf:
      title: PDF
      parameters:
        scale: float?
        displayHeaderFooter: boolean?
        headerTemplate: string?
        footerTemplate: string?
        printBackground: boolean?
        landscape: boolean?
        pageRanges: string?
        format: string?
        width: string?
        height: string?
        preferCSSPageSize: boolean?
        margin:
          type: object?
          properties:
            top: string?
            bottom: string?
            left: string?
            right: string?
        tagged: boolean?
        outline: boolean?
      returns:
        pdf: binary
    snapshotForAI:
      internal: true
      parameters:
        timeout: float
      returns:
        snapshot: string
    startJSCoverage:
      title: Start JS coverage
      group: configuration
      parameters:
        resetOnNavigation: boolean?
        reportAnonymousScripts: boolean?
    stopJSCoverage:
      title: Stop JS coverage
      group: configuration
      returns:
        entries:
          type: array
          items:
            type: object
            properties:
              url: string
              scriptId: string
              source: string?
              functions:
                type: array
                items:
                  type: object
                  properties:
                    functionName: string
                    isBlockCoverage: boolean
                    ranges:
                      type: array
                      items:
                        type: object
                        properties:
                          startOffset: int
                          endOffset: int
                          count: int
    startCSSCoverage:
      title: Start CSS coverage
      group: configuration
      parameters:
        resetOnNavigation: boolean?
    stopCSSCoverage:
      title: Stop CSS coverage
      group: configuration
      returns:
        entries:
          type: array
          items:
            type: object
            properties:
              url: string
              text: string?
              ranges:
                type: array
                items:
                  type: object
                  properties:
                    start: int
                    end: int
    bringToFront:
      title: Bring to front
    updateSubscription:
      internal: true
      parameters:
        event:
          type: enum
          literals:
            - console
            - dialog
            - fileChooser
            - request
            - response
            - requestFinished
            - requestFailed
        enabled: boolean
  events:
    bindingCall:
      parameters:
        binding: BindingCall
    close: null
    crash: null
    download:
      parameters:
        url: string
        suggestedFilename: string
        artifact: Artifact
    viewportSizeChanged:
      parameters:
        viewportSize:
          type: object?
          properties:
            width: int
            height: int
    fileChooser:
      parameters:
        element: ElementHandle
        isMultiple: boolean
    frameAttached:
      parameters:
        frame: Frame
    frameDetached:
      parameters:
        frame: Frame
    locatorHandlerTriggered:
      parameters:
        uid: int
    route:
      parameters:
        route: Route
    webSocketRoute:
      parameters:
        webSocketRoute: WebSocketRoute
    video:
      parameters:
        artifact: Artifact
    webSocket:
      parameters:
        webSocket: WebSocket
    worker:
      parameters:
        worker: Worker
Frame:
  type: interface
  initializer:
    url: string
    name: string
    parentFrame: Frame?
    loadStates:
      type: array
      items: LifecycleEvent
  commands:
    evalOnSelector:
      title: Evaluate
      parameters:
        selector: string
        strict: boolean?
        expression: string
        isFunction: boolean?
        arg: SerializedArgument
      returns:
        value: SerializedValue
      flags:
        snapshot: true
        pausesBeforeAction: true
    evalOnSelectorAll:
      title: Evaluate
      parameters:
        selector: string
        expression: string
        isFunction: boolean?
        arg: SerializedArgument
        isolatedContext: boolean?
      returns:
        value: SerializedValue
      flags:
        snapshot: true
        pausesBeforeAction: true
    addScriptTag:
      title: Add script tag
      parameters:
        url: string?
        content: string?
        type: string?
      returns:
        element: ElementHandle
      flags:
        snapshot: true
        pausesBeforeAction: true
    addStyleTag:
      title: Add style tag
      parameters:
        url: string?
        content: string?
      returns:
        element: ElementHandle
      flags:
        snapshot: true
        pausesBeforeAction: true
    ariaSnapshot:
      title: Aria snapshot
      parameters:
        selector: string
        timeout: float
      returns:
        snapshot: string
      flags:
        snapshot: true
        pausesBeforeAction: true
    blur:
      title: Blur
      parameters:
        selector: string
        strict: boolean?
        timeout: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    check:
      title: Check
      parameters:
        selector: string
        strict: boolean?
        force: boolean?
        position: Point?
        timeout: float
        trial: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    click:
      title: Click
      parameters:
        selector: string
        strict: boolean?
        force: boolean?
        noWaitAfter: boolean?
        modifiers:
          type: array?
          items:
            type: enum
            literals:
              - Alt
              - Control
              - ControlOrMeta
              - Meta
              - Shift
        position: Point?
        delay: float?
        button:
          type: enum?
          literals:
            - left
            - right
            - middle
        clickCount: int?
        timeout: float
        trial: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    content:
      title: Get content
      returns:
        value: string
      flags:
        snapshot: true
        pausesBeforeAction: true
    dragAndDrop:
      title: Drag and drop
      parameters:
        source: string
        target: string
        force: boolean?
        timeout: float
        trial: boolean?
        sourcePosition: Point?
        targetPosition: Point?
        strict: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    dblclick:
      title: Double click
      parameters:
        selector: string
        strict: boolean?
        force: boolean?
        modifiers:
          type: array?
          items:
            type: enum
            literals:
              - Alt
              - Control
              - ControlOrMeta
              - Meta
              - Shift
        position: Point?
        delay: float?
        button:
          type: enum?
          literals:
            - left
            - right
            - middle
        timeout: float
        trial: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    dispatchEvent:
      title: Dispatch "{type}"
      parameters:
        selector: string
        strict: boolean?
        type: string
        eventInit: SerializedArgument
        timeout: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    evaluateExpression:
      title: Evaluate
      parameters:
        expression: string
        isFunction: boolean?
        arg: SerializedArgument
        isolatedContext: boolean?
      returns:
        value: SerializedValue
      flags:
        snapshot: true
        pausesBeforeAction: true
    evaluateExpressionHandle:
      title: Evaluate
      parameters:
        expression: string
        isFunction: boolean?
        arg: SerializedArgument
        isolatedContext: boolean?
      returns:
        handle: JSHandle
      flags:
        snapshot: true
        pausesBeforeAction: true
    fill:
      title: Fill "{value}"
      parameters:
        selector: string
        strict: boolean?
        value: string
        force: boolean?
        timeout: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    focus:
      title: Focus
      parameters:
        selector: string
        strict: boolean?
        timeout: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    frameElement:
      title: Get frame element
      group: getter
      returns:
        element: ElementHandle
    resolveSelector:
      internal: true
      parameters:
        selector: string
      returns:
        resolvedSelector: string
    highlight:
      title: Highlight element
      group: configuration
      parameters:
        selector: string
    getAttribute:
      title: Get attribute "{name}"
      group: getter
      parameters:
        selector: string
        strict: boolean?
        name: string
        timeout: float
      returns:
        value: string?
      flags:
        snapshot: true
        pausesBeforeAction: true
    goto:
      title: Navigate to "{url}"
      parameters:
        url: string
        timeout: float
        waitUntil: LifecycleEvent?
        referer: string?
      returns:
        response: Response?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    hover:
      title: Hover
      parameters:
        selector: string
        strict: boolean?
        force: boolean?
        modifiers:
          type: array?
          items:
            type: enum
            literals:
              - Alt
              - Control
              - ControlOrMeta
              - Meta
              - Shift
        position: Point?
        timeout: float
        trial: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    innerHTML:
      title: Get HTML
      group: getter
      parameters:
        selector: string
        strict: boolean?
        timeout: float
      returns:
        value: string
      flags:
        snapshot: true
        pausesBeforeAction: true
    innerText:
      title: Get inner text
      group: getter
      parameters:
        selector: string
        strict: boolean?
        timeout: float
      returns:
        value: string
      flags:
        snapshot: true
        pausesBeforeAction: true
    inputValue:
      title: Get input value
      group: getter
      parameters:
        selector: string
        strict: boolean?
        timeout: float
      returns:
        value: string
      flags:
        snapshot: true
        pausesBeforeAction: true
    isChecked:
      title: Is checked
      group: getter
      parameters:
        selector: string
        strict: boolean?
        timeout: float
      returns:
        value: boolean
      flags:
        snapshot: true
        pausesBeforeAction: true
    isDisabled:
      title: Is disabled
      group: getter
      parameters:
        selector: string
        strict: boolean?
        timeout: float
      returns:
        value: boolean
      flags:
        snapshot: true
        pausesBeforeAction: true
    isEnabled:
      title: Is enabled
      group: getter
      parameters:
        selector: string
        strict: boolean?
        timeout: float
      returns:
        value: boolean
      flags:
        snapshot: true
        pausesBeforeAction: true
    isHidden:
      title: Is hidden
      group: getter
      parameters:
        selector: string
        strict: boolean?
      returns:
        value: boolean
      flags:
        snapshot: true
        pausesBeforeAction: true
    isVisible:
      title: Is visible
      group: getter
      parameters:
        selector: string
        strict: boolean?
      returns:
        value: boolean
      flags:
        snapshot: true
        pausesBeforeAction: true
    isEditable:
      title: Is editable
      group: getter
      parameters:
        selector: string
        strict: boolean?
        timeout: float
      returns:
        value: boolean
      flags:
        snapshot: true
        pausesBeforeAction: true
    press:
      title: Press "{key}"
      parameters:
        selector: string
        strict: boolean?
        key: string
        delay: float?
        noWaitAfter: boolean?
        timeout: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    querySelector:
      title: Query selector
      parameters:
        selector: string
        strict: boolean?
      returns:
        element: ElementHandle?
      flags:
        snapshot: true
    querySelectorAll:
      title: Query selector all
      parameters:
        selector: string
      returns:
        elements:
          type: array
          items: ElementHandle
      flags:
        snapshot: true
    queryCount:
      title: Query count
      parameters:
        selector: string
      returns:
        value: int
      flags:
        snapshot: true
        pausesBeforeAction: true
    selectOption:
      title: Select option
      parameters:
        selector: string
        strict: boolean?
        elements:
          type: array?
          items: ElementHandle
        options:
          type: array?
          items:
            type: object
            properties:
              valueOrLabel: string?
              value: string?
              label: string?
              index: int?
        force: boolean?
        timeout: float
      returns:
        values:
          type: array
          items: string
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    setContent:
      title: Set content
      parameters:
        html: string
        timeout: float
        waitUntil: LifecycleEvent?
      flags:
        snapshot: true
        pausesBeforeAction: true
    setInputFiles:
      title: Set input files
      parameters:
        selector: string
        strict: boolean?
        payloads:
          type: array?
          items:
            type: object
            properties:
              name: string
              mimeType: string?
              buffer: binary
        localDirectory: string?
        directoryStream: WritableStream?
        localPaths:
          type: array?
          items: string
        streams:
          type: array?
          items: WritableStream
        timeout: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    tap:
      title: Tap
      parameters:
        selector: string
        strict: boolean?
        force: boolean?
        modifiers:
          type: array?
          items:
            type: enum
            literals:
              - Alt
              - Control
              - ControlOrMeta
              - Meta
              - Shift
        position: Point?
        timeout: float
        trial: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    textContent:
      title: Get text content
      group: getter
      parameters:
        selector: string
        strict: boolean?
        timeout: float
      returns:
        value: string?
      flags:
        snapshot: true
        pausesBeforeAction: true
    title:
      title: Get page title
      group: getter
      returns:
        value: string
    type:
      title: Type "{text}"
      parameters:
        selector: string
        strict: boolean?
        text: string
        delay: float?
        timeout: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    uncheck:
      title: Uncheck
      parameters:
        selector: string
        strict: boolean?
        force: boolean?
        position: Point?
        timeout: float
        trial: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    waitForTimeout:
      title: Wait for timeout
      parameters:
        waitTimeout: float
      flags:
        snapshot: true
    waitForFunction:
      title: Wait for function
      parameters:
        expression: string
        isFunction: boolean?
        arg: SerializedArgument
        timeout: float
        pollingInterval: float?
      returns:
        handle: JSHandle
      flags:
        snapshot: true
        pausesBeforeAction: true
    waitForSelector:
      title: Wait for selector
      parameters:
        selector: string
        strict: boolean?
        timeout: float
        state:
          type: enum?
          literals:
            - attached
            - detached
            - visible
            - hidden
        omitReturnValue: boolean?
      returns:
        element: ElementHandle?
      flags:
        snapshot: true
    expect:
      title: Expect "{expression}"
      parameters:
        selector: string?
        expression: string
        expressionArg: json?
        expectedText:
          type: array?
          items: ExpectedTextValue
        expectedNumber: float?
        expectedValue: SerializedArgument?
        useInnerText: boolean?
        isNot: boolean
        timeout: float
      returns:
        matches: boolean
        received: SerializedValue?
        timedOut: boolean?
        log:
          type: array?
          items: string
      flags:
        snapshot: true
        pausesBeforeAction: true
  events:
    loadstate:
      parameters:
        add: LifecycleEvent?
        remove: LifecycleEvent?
    navigated:
      parameters:
        url: string
        name: string
        newDocument:
          type: object?
          properties:
            request: Request?
        error: string?
Worker:
  type: interface
  initializer:
    url: string
  commands:
    evaluateExpression:
      title: Evaluate
      parameters:
        expression: string
        isFunction: boolean?
        arg: SerializedArgument
        isolatedContext: boolean?
      returns:
        value: SerializedValue
    evaluateExpressionHandle:
      title: Evaluate
      parameters:
        expression: string
        isFunction: boolean?
        arg: SerializedArgument
        isolatedContext: boolean?
      returns:
        handle: JSHandle
  events:
    close: null
JSHandle:
  type: interface
  initializer:
    preview: string
  commands:
    dispose:
      internal: true
    evaluateExpression:
      title: Evaluate
      parameters:
        expression: string
        isFunction: boolean?
        arg: SerializedArgument
        isolatedContext: boolean?
      returns:
        value: SerializedValue
      flags:
        snapshot: true
        pausesBeforeAction: true
    evaluateExpressionHandle:
      title: Evaluate
      parameters:
        expression: string
        isFunction: boolean?
        arg: SerializedArgument
        isolatedContext: boolean?
      returns:
        handle: JSHandle
      flags:
        snapshot: true
        pausesBeforeAction: true
    getPropertyList:
      title: Get property list
      group: getter
      returns:
        properties:
          type: array
          items:
            type: object
            properties:
              name: string
              value: JSHandle
    getProperty:
      title: Get JS property
      group: getter
      parameters:
        name: string
      returns:
        handle: JSHandle
    jsonValue:
      title: Get JSON value
      group: getter
      returns:
        value: SerializedValue
  events:
    previewUpdated:
      parameters:
        preview: string
ElementHandle:
  type: interface
  extends: JSHandle
  commands:
    evalOnSelector:
      title: Evaluate
      parameters:
        selector: string
        strict: boolean?
        expression: string
        isFunction: boolean?
        arg: SerializedArgument
      returns:
        value: SerializedValue
      flags:
        snapshot: true
        pausesBeforeAction: true
    evalOnSelectorAll:
      title: Evaluate
      parameters:
        selector: string
        expression: string
        isFunction: boolean?
        arg: SerializedArgument
      returns:
        value: SerializedValue
      flags:
        snapshot: true
        pausesBeforeAction: true
    boundingBox:
      title: Get bounding box
      returns:
        value: Rect?
      flags:
        snapshot: true
        pausesBeforeAction: true
    check:
      title: Check
      parameters:
        force: boolean?
        position: Point?
        timeout: float
        trial: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    click:
      title: Click
      parameters:
        force: boolean?
        noWaitAfter: boolean?
        modifiers:
          type: array?
          items:
            type: enum
            literals:
              - Alt
              - Control
              - ControlOrMeta
              - Meta
              - Shift
        position: Point?
        delay: float?
        button:
          type: enum?
          literals:
            - left
            - right
            - middle
        clickCount: int?
        timeout: float
        trial: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    contentFrame:
      title: Get content frame
      group: getter
      returns:
        frame: Frame?
    dblclick:
      title: Double click
      parameters:
        force: boolean?
        modifiers:
          type: array?
          items:
            type: enum
            literals:
              - Alt
              - Control
              - ControlOrMeta
              - Meta
              - Shift
        position: Point?
        delay: float?
        button:
          type: enum?
          literals:
            - left
            - right
            - middle
        timeout: float
        trial: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    dispatchEvent:
      title: Dispatch event
      parameters:
        type: string
        eventInit: SerializedArgument
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    fill:
      title: Fill "{value}"
      parameters:
        value: string
        force: boolean?
        timeout: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    focus:
      title: Focus
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    getAttribute:
      title: Get attribute
      group: getter
      parameters:
        name: string
      returns:
        value: string?
      flags:
        snapshot: true
        pausesBeforeAction: true
    hover:
      title: Hover
      parameters:
        force: boolean?
        modifiers:
          type: array?
          items:
            type: enum
            literals:
              - Alt
              - Control
              - ControlOrMeta
              - Meta
              - Shift
        position: Point?
        timeout: float
        trial: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    innerHTML:
      title: Get HTML
      group: getter
      returns:
        value: string
      flags:
        snapshot: true
        pausesBeforeAction: true
    innerText:
      title: Get inner text
      group: getter
      returns:
        value: string
      flags:
        snapshot: true
        pausesBeforeAction: true
    inputValue:
      title: Get input value
      group: getter
      returns:
        value: string
      flags:
        snapshot: true
        pausesBeforeAction: true
    isChecked:
      title: Is checked
      group: getter
      returns:
        value: boolean
      flags:
        snapshot: true
        pausesBeforeAction: true
    isDisabled:
      title: Is disabled
      group: getter
      returns:
        value: boolean
      flags:
        snapshot: true
        pausesBeforeAction: true
    isEditable:
      title: Is editable
      group: getter
      returns:
        value: boolean
      flags:
        snapshot: true
        pausesBeforeAction: true
    isEnabled:
      title: Is enabled
      group: getter
      returns:
        value: boolean
      flags:
        snapshot: true
        pausesBeforeAction: true
    isHidden:
      title: Is hidden
      group: getter
      returns:
        value: boolean
      flags:
        snapshot: true
        pausesBeforeAction: true
    isVisible:
      title: Is visible
      group: getter
      returns:
        value: boolean
      flags:
        snapshot: true
        pausesBeforeAction: true
    ownerFrame:
      title: Get owner frame
      group: getter
      returns:
        frame: Frame?
    press:
      title: Press "{key}"
      parameters:
        key: string
        delay: float?
        timeout: float
        noWaitAfter: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    querySelector:
      title: Query selector
      parameters:
        selector: string
        strict: boolean?
      returns:
        element: ElementHandle?
      flags:
        snapshot: true
    querySelectorAll:
      title: Query selector all
      parameters:
        selector: string
      returns:
        elements:
          type: array
          items: ElementHandle
      flags:
        snapshot: true
    screenshot:
      title: Screenshot
      parameters:
        timeout: float
        type:
          type: enum?
          literals:
            - png
            - jpeg
        quality: int?
        $mixin: CommonScreenshotOptions
      returns:
        binary: binary
      flags:
        snapshot: true
        pausesBeforeAction: true
    scrollIntoViewIfNeeded:
      title: Scroll into view
      parameters:
        timeout: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    selectOption:
      title: Select option
      parameters:
        elements:
          type: array?
          items: ElementHandle
        options:
          type: array?
          items:
            type: object
            properties:
              valueOrLabel: string?
              value: string?
              label: string?
              index: int?
        force: boolean?
        timeout: float
      returns:
        values:
          type: array
          items: string
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    selectText:
      title: Select text
      parameters:
        force: boolean?
        timeout: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeAction: true
    setInputFiles:
      title: Set input files
      parameters:
        payloads:
          type: array?
          items:
            type: object
            properties:
              name: string
              mimeType: string?
              buffer: binary
        localDirectory: string?
        directoryStream: WritableStream?
        localPaths:
          type: array?
          items: string
        streams:
          type: array?
          items: WritableStream
        timeout: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    tap:
      title: Tap
      parameters:
        force: boolean?
        modifiers:
          type: array?
          items:
            type: enum
            literals:
              - Alt
              - Control
              - ControlOrMeta
              - Meta
              - Shift
        position: Point?
        timeout: float
        trial: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    textContent:
      title: Get text content
      group: getter
      returns:
        value: string?
      flags:
        snapshot: true
        pausesBeforeAction: true
    type:
      title: Type
      parameters:
        text: string
        delay: float?
        timeout: float
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    uncheck:
      title: Uncheck
      parameters:
        force: boolean?
        position: Point?
        timeout: float
        trial: boolean?
      flags:
        slowMo: true
        snapshot: true
        pausesBeforeInput: true
    waitForElementState:
      title: Wait for state
      parameters:
        state:
          type: enum
          literals:
            - visible
            - hidden
            - stable
            - enabled
            - disabled
            - editable
        timeout: float
      flags:
        snapshot: true
        pausesBeforeAction: true
    waitForSelector:
      title: Wait for selector
      parameters:
        selector: string
        strict: boolean?
        timeout: float
        state:
          type: enum?
          literals:
            - attached
            - detached
            - visible
            - hidden
      returns:
        element: ElementHandle?
      flags:
        snapshot: true
Request:
  type: interface
  initializer:
    frame: Frame?
    serviceWorker: Worker?
    url: string
    resourceType: string
    method: string
    postData: binary?
    headers:
      type: array
      items: NameValue
    isNavigationRequest: boolean
    redirectedFrom: Request?
  commands:
    response:
      internal: true
      returns:
        response: Response?
    rawRequestHeaders:
      internal: true
      returns:
        headers:
          type: array
          items: NameValue
Route:
  type: interface
  initializer:
    request: Request
  commands:
    redirectNavigationRequest:
      internal: true
      parameters:
        url: string
    abort:
      title: Abort request
      group: route
      parameters:
        errorCode: string?
    continue:
      title: Continue request
      group: route
      parameters:
        url: string?
        method: string?
        headers:
          type: array?
          items: NameValue
        postData: binary?
        isFallback: boolean
    fulfill:
      title: Fulfill request
      group: route
      parameters:
        status: int?
        headers:
          type: array?
          items: NameValue
        body: string?
        isBase64: boolean?
        fetchResponseUid: string?
WebSocketRoute:
  type: interface
  initializer:
    url: string
  commands:
    connect:
      title: Connect WebSocket to server
      group: route
    ensureOpened:
      internal: true
    sendToPage:
      title: Send WebSocket message
      group: route
      parameters:
        message: string
        isBase64: boolean
    sendToServer:
      title: Send WebSocket message
      group: route
      parameters:
        message: string
        isBase64: boolean
    closePage:
      internal: true
      parameters:
        code: int?
        reason: string?
        wasClean: boolean
    closeServer:
      internal: true
      parameters:
        code: int?
        reason: string?
        wasClean: boolean
  events:
    messageFromPage:
      parameters:
        message: string
        isBase64: boolean
    messageFromServer:
      parameters:
        message: string
        isBase64: boolean
    closePage:
      parameters:
        code: int?
        reason: string?
        wasClean: boolean
    closeServer:
      parameters:
        code: int?
        reason: string?
        wasClean: boolean
ResourceTiming:
  type: object
  properties:
    startTime: float
    domainLookupStart: float
    domainLookupEnd: float
    connectStart: float
    secureConnectionStart: float
    connectEnd: float
    requestStart: float
    responseStart: float
Response:
  type: interface
  initializer:
    request: Request
    url: string
    status: int
    statusText: string
    headers:
      type: array
      items: NameValue
    timing: ResourceTiming
    fromServiceWorker: boolean
  commands:
    body:
      title: Get response body
      group: getter
      returns:
        binary: binary
    securityDetails:
      internal: true
      returns:
        value: SecurityDetails?
    serverAddr:
      internal: true
      returns:
        value: RemoteAddr?
    rawResponseHeaders:
      internal: true
      returns:
        headers:
          type: array
          items: NameValue
    sizes:
      internal: true
      returns:
        sizes: RequestSizes
SecurityDetails:
  type: object
  properties:
    issuer: string?
    protocol: string?
    subjectName: string?
    validFrom: float?
    validTo: float?
RequestSizes:
  type: object
  properties:
    requestBodySize: int
    requestHeadersSize: int
    responseBodySize: int
    responseHeadersSize: int
RemoteAddr:
  type: object
  properties:
    ipAddress: string
    port: int
WebSocket:
  type: interface
  extends: EventTarget
  initializer:
    url: string
  events:
    open: null
    frameSent:
      parameters:
        opcode: int
        data: string
    frameReceived:
      parameters:
        opcode: int
        data: string
    socketError:
      parameters:
        error: string
    close: null
BindingCall:
  type: interface
  initializer:
    frame: Frame
    name: string
    args:
      type: array?
      items: SerializedValue
    handle: JSHandle?
  commands:
    reject:
      internal: true
      parameters:
        error: SerializedError
    resolve:
      internal: true
      parameters:
        result: SerializedArgument
Dialog:
  type: interface
  initializer:
    page: Page?
    type: string
    message: string
    defaultValue: string
  commands:
    accept:
      title: Accept dialog
      parameters:
        promptText: string?
    dismiss:
      title: Dismiss dialog
Tracing:
  type: interface
  commands:
    tracingStart:
      title: Start tracing
      group: configuration
      parameters:
        name: string?
        snapshots: boolean?
        screenshots: boolean?
        live: boolean?
    tracingStartChunk:
      title: Start tracing
      group: configuration
      parameters:
        name: string?
        title: string?
      returns:
        traceName: string
    tracingGroup:
      title: Trace "{name}"
      parameters:
        name: string
        location:
          type: object?
          properties:
            file: string
            line: int?
            column: int?
    tracingGroupEnd:
      title: Group end
    tracingStopChunk:
      title: Stop tracing
      group: configuration
      parameters:
        mode:
          type: enum
          literals:
            - archive
            - discard
            - entries
      returns:
        artifact: Artifact?
        entries:
          type: array?
          items: NameValue
    tracingStop:
      title: Stop tracing
      group: configuration
Artifact:
  type: interface
  initializer:
    absolutePath: string
  commands:
    pathAfterFinished:
      internal: true
      returns:
        value: string
    saveAs:
      internal: true
      parameters:
        path: string
    saveAsStream:
      internal: true
      returns:
        stream: Stream
    failure:
      internal: true
      returns:
        error: string?
    stream:
      internal: true
      returns:
        stream: Stream
    cancel:
      internal: true
    delete:
      internal: true
Stream:
  type: interface
  commands:
    read:
      internal: true
      parameters:
        size: int?
      returns:
        binary: binary
    close:
      internal: true
WritableStream:
  type: interface
  commands:
    write:
      internal: true
      parameters:
        binary: binary
    close:
      internal: true
CDPSession:
  type: interface
  commands:
    send:
      title: Send CDP command
      group: configuration
      parameters:
        method: string
        params: json?
      returns:
        result: json
    detach:
      title: Detach CDP session
      group: configuration
  events:
    event:
      parameters:
        method: string
        params: json?
Electron:
  type: interface
  commands:
    launch:
      title: Launch electron
      parameters:
        executablePath: string?
        args:
          type: array?
          items: string
        cwd: string?
        env:
          type: array?
          items: NameValue
        timeout: float
        acceptDownloads:
          type: enum?
          literals:
            - accept
            - deny
            - internal-browser-default
        bypassCSP: boolean?
        colorScheme:
          type: enum?
          literals:
            - dark
            - light
            - no-preference
            - no-override
        extraHTTPHeaders:
          type: array?
          items: NameValue
        geolocation:
          type: object?
          properties:
            longitude: float
            latitude: float
            accuracy: float?
        httpCredentials:
          type: object?
          properties:
            username: string
            password: string
            origin: string?
        ignoreHTTPSErrors: boolean?
        locale: string?
        offline: boolean?
        recordVideo:
          type: object?
          properties:
            dir: string
            size:
              type: object?
              properties:
                width: int
                height: int
        strictSelectors: boolean?
        timezoneId: string?
        tracesDir: string?
        selectorEngines:
          type: array?
          items: SelectorEngine
        testIdAttributeName: string?
      returns:
        electronApplication: ElectronApplication
ElectronApplication:
  type: interface
  extends: EventTarget
  initializer:
    context: BrowserContext
  commands:
    browserWindow:
      internal: true
      parameters:
        page: Page
      returns:
        handle: JSHandle
    evaluateExpression:
      title: Evaluate
      parameters:
        expression: string
        isFunction: boolean?
        arg: SerializedArgument
      returns:
        value: SerializedValue
    evaluateExpressionHandle:
      title: Evaluate
      parameters:
        expression: string
        isFunction: boolean?
        arg: SerializedArgument
      returns:
        handle: JSHandle
    updateSubscription:
      internal: true
      parameters:
        event:
          type: enum
          literals:
            - console
        enabled: boolean
  events:
    close: null
    console:
      parameters:
        $mixin: ConsoleMessage
Android:
  type: interface
  commands:
    devices:
      internal: true
      parameters:
        host: string?
        port: int?
        omitDriverInstall: boolean?
      returns:
        devices:
          type: array
          items: AndroidDevice
AndroidSocket:
  type: interface
  commands:
    write:
      internal: true
      parameters:
        data: binary
    close:
      internal: true
  events:
    data:
      parameters:
        data: binary
    close: null
AndroidDevice:
  type: interface
  extends: EventTarget
  initializer:
    model: string
    serial: string
  commands:
    wait:
      title: Wait
      parameters:
        androidSelector: AndroidSelector
        state:
          type: enum?
          literals:
            - gone
        timeout: float
    fill:
      title: Fill "{text}"
      parameters:
        androidSelector: AndroidSelector
        text: string
        timeout: float
    tap:
      title: Tap
      parameters:
        androidSelector: AndroidSelector
        duration: float?
        timeout: float
    drag:
      title: Drag
      parameters:
        androidSelector: AndroidSelector
        dest: Point
        speed: float?
        timeout: float
    fling:
      title: Fling
      parameters:
        androidSelector: AndroidSelector
        direction:
          type: enum
          literals:
            - up
            - down
            - left
            - right
        speed: float?
        timeout: float
    longTap:
      title: Long tap
      parameters:
        androidSelector: AndroidSelector
        timeout: float
    pinchClose:
      title: Pinch close
      parameters:
        androidSelector: AndroidSelector
        percent: float
        speed: float?
        timeout: float
    pinchOpen:
      title: Pinch open
      parameters:
        androidSelector: AndroidSelector
        percent: float
        speed: float?
        timeout: float
    scroll:
      title: Scroll
      parameters:
        androidSelector: AndroidSelector
        direction:
          type: enum
          literals:
            - up
            - down
            - left
            - right
        percent: float
        speed: float?
        timeout: float
    swipe:
      title: Swipe
      parameters:
        androidSelector: AndroidSelector
        direction:
          type: enum
          literals:
            - up
            - down
            - left
            - right
        percent: float
        speed: float?
        timeout: float
    info:
      internal: true
      parameters:
        androidSelector: AndroidSelector
      returns:
        info: AndroidElementInfo
    screenshot:
      title: Screenshot
      returns:
        binary: binary
    inputType:
      title: Type
      parameters:
        text: string
    inputPress:
      title: Press
      parameters:
        key: string
    inputTap:
      title: Tap
      parameters:
        point: Point
    inputSwipe:
      title: Swipe
      parameters:
        segments:
          type: array
          items: Point
        steps: int
    inputDrag:
      title: Drag
      parameters:
        from: Point
        to: Point
        steps: int
    launchBrowser:
      title: Launch browser
      parameters:
        $mixin: ContextOptions
        pkg: string?
        args:
          type: array?
          items: string
        proxy:
          type: object?
          properties:
            server: string
            bypass: string?
            username: string?
            password: string?
      returns:
        context: BrowserContext
    open:
      title: Open app
      parameters:
        command: string
      returns:
        socket: AndroidSocket
    shell:
      title: Execute shell command
      group: configuration
      parameters:
        command: string
      returns:
        result: binary
    installApk:
      title: Install apk
      parameters:
        file: binary
        args:
          type: array?
          items: string
    push:
      title: Push
      parameters:
        file: binary
        path: string
        mode: int?
    connectToWebView:
      title: Connect to Web View
      parameters:
        socketName: string
      returns:
        context: BrowserContext
    close:
      internal: true
  events:
    close: null
    webViewAdded:
      parameters:
        webView: AndroidWebView
    webViewRemoved:
      parameters:
        socketName: string
AndroidWebView:
  type: object
  properties:
    pid: int
    pkg: string
    socketName: string
AndroidSelector:
  type: object
  properties:
    checkable: boolean?
    checked: boolean?
    clazz: string?
    clickable: boolean?
    depth: int?
    desc: string?
    enabled: boolean?
    focusable: boolean?
    focused: boolean?
    hasChild:
      type: object?
      properties:
        androidSelector: AndroidSelector
    hasDescendant:
      type: object?
      properties:
        androidSelector: AndroidSelector
        maxDepth: int?
    longClickable: boolean?
    pkg: string?
    res: string?
    scrollable: boolean?
    selected: boolean?
    text: string?
AndroidElementInfo:
  type: object
  properties:
    children:
      type: array?
      items: AndroidElementInfo
    clazz: string
    desc: string
    res: string
    pkg: string
    text: string
    bounds: Rect
    checkable: boolean
    checked: boolean
    clickable: boolean
    enabled: boolean
    focusable: boolean
    focused: boolean
    longClickable: boolean
    scrollable: boolean
    selected: boolean
JsonPipe:
  type: interface
  commands:
    send:
      internal: true
      parameters:
        message: json
    close:
      internal: true
  events:
    message:
      parameters:
        message: json
    closed:
      parameters:
        reason: string?
