{
    "acceptDownloads": {
        "type": "boolean",
        "description": "Whether to automatically download all the attachments. Defaults to `false` where all the downloads are canceled."
    },
    "baseURL": {
        "type": "string",
        "description": "When using [page.goto(url[, options])](https://playwright.dev/docs/api/class-page#page-goto), [page.route(url, handler[, options])](https://playwright.dev/docs/api/class-page#page-route), [page.waitForURL(url[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-url), [page.waitForRequest(urlOrPredicate[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-request), or [page.waitForResponse(urlOrPredicate[, options])](https://playwright.dev/docs/api/class-page#page-wait-for-response) it takes the base URL in consideration by using the [`URL()`](https://developer.mozilla.org/en-US/docs/Web/API/URL/URL) constructor for building the corresponding URL. Examples:\n- baseURL: `http://localhost:3000` and navigating to `/bar.html` results in `http://localhost:3000/bar.html`\n- baseURL: `http://localhost:3000/foo/` and navigating to `./bar.html` results in `http://localhost:3000/foo/bar.html`"
    },
    "bypassCSP": {
        "type": "boolean",
        "description": "Toggles bypassing page's Content-Security-Policy."
    },
    "colorScheme": {
        "type": "string",
        "enum": [
            "light",
            "dark",
            "no-preference"
        ],
        "description": "Emulates `'prefers-colors-scheme'` media feature, supported values are `'light'`, `'dark'`, `'no-preference'`. See [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults to `'light'`."
    },
    "deviceScaleFactor": {
        "type": "number",
        "description": "Specify device scale factor (can be thought of as dpr). Defaults to `1`."
    },
    "forcedColors": {
        "type": "string",
        "enum": [
            "active",
            "none"
        ],
        "description": "Emulates `'forced-colors'` media feature, supported values are `'active'`, `'none'`. See [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults to `'none'`.\n\n> NOTE: It's not supported in WebKit, see [here](https://bugs.webkit.org/show_bug.cgi?id=225281) in their issue tracker."
    },
    "geolocation": {
        "type": "object",
        "properties": {
            "latitude": {
                "type": "number",
                "description": "Latitude between -90 and 90."
            },
            "longitude": {
                "type": "number",
                "description": "Longitude between -180 and 180."
            },
            "accuracy": {
                "type": "number",
                "description": "Non-negative accuracy value. Defaults to `0`."
            }
        },
        "required": [
            "latitude",
            "longitude"
        ],
        "additionalProperties": false
    },
    "hasTouch": {
        "type": "boolean",
        "description": "Specifies if viewport supports touch events. Defaults to false."
    },
    "httpCredentials": {
        "type": "object",
        "properties": {
            "username": {
                "type": "string"
            },
            "password": {
                "type": "string"
            }
        },
        "required": [
            "username",
            "password"
        ],
        "additionalProperties": false,
        "description": "Credentials for [HTTP authentication](https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication)."
    },
    "ignoreHTTPSErrors": {
        "type": "boolean",
        "description": "Whether to ignore HTTPS errors when sending network requests. Defaults to `false`."
    },
    "isMobile": {
        "type": "boolean",
        "description": "Whether the `meta viewport` tag is taken into account and touch events are enabled. Defaults to `false`. Not supported in Firefox."
    },
    "javaScriptEnabled": {
        "type": "boolean",
        "description": "Whether or not to enable JavaScript in the context. Defaults to `true`."
    },
    "locale": {
        "type": "string",
        "description": "Specify user locale, for example `en-GB`, `de-DE`, etc. Locale will affect `navigator.language` value, `Accept-Language` request header value as well as number and date formatting rules."
    },
    "offline": {
        "type": "boolean",
        "description": "Whether to emulate network being offline. Defaults to `false`."
    },
    "permissions": {
        "type": "array",
        "items": {
            "type": "string"
        },
        "description": "A list of permissions to grant to all pages in this context. See [browserContext.grantPermissions(permissions[, options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-grant-permissions) for more details."
    },
    "proxy": {
        "type": "object",
        "properties": {
            "server": {
                "type": "string",
                "description": "Proxy to be used for all requests. HTTP and SOCKS proxies are supported, for example `http://myproxy.com:3128` or `socks5://myproxy.com:3128`. Short form `myproxy.com:3128` is considered an HTTP proxy."
            },
            "bypass": {
                "type": "string",
                "description": "Optional comma-separated domains to bypass proxy, for example `\".com, chromium.org, .domain.com\"`."
            },
            "username": {
                "type": "string",
                "description": "Optional username to use if HTTP proxy requires authentication."
            },
            "password": {
                "type": "string",
                "description": "Optional password to use if HTTP proxy requires authentication."
            }
        },
        "required": [
            "server"
        ],
        "additionalProperties": false,
        "description": "Network proxy settings to use with this context.\n\n> NOTE: For Chromium on Windows the browser needs to be launched with the global proxy for this option to work. If all contexts override the proxy, global proxy will be never used and can be any string, for example `launch({ proxy: { server: 'http://per-context' } })`."
    },
    "recordHar": {
        "type": "object",
        "properties": {
            "omitContent": {
                "type": "boolean",
                "description": "Optional setting to control whether to omit request content from the HAR. Defaults to `false`."
            },
            "path": {
                "type": "string",
                "description": "Path on the filesystem to write the HAR file to."
            }
        },
        "required": [
            "path"
        ],
        "additionalProperties": false,
        "description": "Enables [HAR](http://www.softwareishard.com/blog/har-12-spec) recording for all pages into `recordHar.path` file. If not specified, the HAR is not recorded. Make sure to await [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) for the HAR to be saved."
    },
    "recordVideo": {
        "type": "object",
        "properties": {
            "dir": {
                "type": "string",
                "description": "Path to the directory to put videos into."
            },
            "size": {
                "type": "object",
                "properties": {
                    "width": {
                        "type": "number",
                        "description": "Video frame width."
                    },
                    "height": {
                        "type": "number",
                        "description": "Video frame height."
                    }
                },
                "required": [
                    "width",
                    "height"
                ],
                "additionalProperties": false,
                "description": "Optional dimensions of the recorded videos. If not specified the size will be equal to `viewport` scaled down to fit into 800x800. If `viewport` is not configured explicitly the video size defaults to 800x450. Actual picture of each page will be scaled down if necessary to fit the specified size."
            }
        },
        "required": [
            "dir"
        ],
        "additionalProperties": false,
        "description": "Enables video recording for all pages into `recordVideo.dir` directory. If not specified videos are not recorded. Make sure to await [browserContext.close()](https://playwright.dev/docs/api/class-browsercontext#browser-context-close) for videos to be saved."
    },
    "reducedMotion": {
        "type": "string",
        "enum": [
            "reduce",
            "no-preference"
        ],
        "description": "Emulates `'prefers-reduced-motion'` media feature, supported values are `'reduce'`, `'no-preference'`. See [page.emulateMedia([options])](https://playwright.dev/docs/api/class-page#page-emulate-media) for more details. Defaults to `'no-preference'`."
    },
    "screen": {
        "type": "object",
        "properties": {
            "width": {
                "type": "number",
                "description": "page width in pixels."
            },
            "height": {
                "type": "number",
                "description": "page height in pixels."
            }
        },
        "required": [
            "width",
            "height"
        ],
        "additionalProperties": false,
        "description": "Emulates consistent window screen size available inside web page via `window.screen`. Is only used when the `viewport` is set."
    },
    "storageState": {
        "anyOf": [
            {
                "type": "string"
            },
            {
                "type": "object",
                "properties": {
                    "cookies": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "name": {
                                    "type": "string"
                                },
                                "value": {
                                    "type": "string"
                                },
                                "domain": {
                                    "type": "string",
                                    "description": "domain and path are required"
                                },
                                "path": {
                                    "type": "string",
                                    "description": "domain and path are required"
                                },
                                "expires": {
                                    "type": "number",
                                    "description": "Unix time in seconds."
                                },
                                "httpOnly": {
                                    "type": "boolean"
                                },
                                "secure": {
                                    "type": "boolean"
                                },
                                "sameSite": {
                                    "type": "string",
                                    "enum": [
                                        "Strict",
                                        "Lax",
                                        "None"
                                    ],
                                    "description": "sameSite flag"
                                }
                            },
                            "required": [
                                "name",
                                "value",
                                "domain",
                                "path",
                                "expires",
                                "httpOnly",
                                "secure",
                                "sameSite"
                            ],
                            "additionalProperties": false
                        },
                        "description": "cookies to set for context"
                    },
                    "origins": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "origin": {
                                    "type": "string"
                                },
                                "localStorage": {
                                    "type": "array",
                                    "items": {
                                        "type": "object",
                                        "additionalProperties": false
                                    }
                                }
                            },
                            "required": [
                                "origin",
                                "localStorage"
                            ],
                            "additionalProperties": false
                        },
                        "description": "localStorage to set for context"
                    }
                },
                "required": [
                    "cookies",
                    "origins"
                ],
                "additionalProperties": false
            }
        ],
        "description": "Populates context with given storage state. This option can be used to initialize context with logged-in information obtained via [browserContext.storageState([options])](https://playwright.dev/docs/api/class-browsercontext#browser-context-storage-state). Either a path to the file with saved storage, or an object with the following fields:"
    },
    "strictSelectors": {
        "type": "boolean",
        "description": "It specified, enables strict selectors mode for this context. In the strict selectors mode all operations on selectors that imply single target DOM element will throw when more than one element matches the selector. See [Locator] to learn more about the strict mode."
    },
    "timezoneId": {
        "type": "string",
        "description": "Changes the timezone of the context. See [ICU's metaZones.txt](https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt?rcl=faee8bc70570192d82d2978a71e2a615788597d1) for a list of supported timezone IDs."
    },
    "userAgent": {
        "type": "string",
        "description": "Specific user agent to use in this context."
    },
    "videoSize": {
        "type": "object",
        "properties": {
            "width": {
                "type": "number",
                "description": "Video frame width."
            },
            "height": {
                "type": "number",
                "description": "Video frame height."
            }
        },
        "required": [
            "width",
            "height"
        ],
        "additionalProperties": false,
        "description": "**DEPRECATED** Use `recordVideo` instead.",
        "deprecated": true
    },
    "videosPath": {
        "type": "string",
        "description": "**DEPRECATED** Use `recordVideo` instead.",
        "deprecated": true
    },
    "viewport": {
        "type": "object",
        "properties": {
            "width": {
                "type": "number",
                "description": "page width in pixels."
            },
            "height": {
                "type": "number",
                "description": "page height in pixels."
            }
        },
        "required": [
            "width",
            "height"
        ],
        "additionalProperties": false,
        "description": "Emulates consistent viewport for each page. Defaults to an 1280x720 viewport. `null` disables the default viewport."
    },
    "cursor": {
        "type": "boolean"
    }
}
