Full API Reference
This page is auto-generated from packages/app/docs/api-reference.md by bun run sync-api.
Auto-generated from dist/*.d.ts on 2026-06-16. Do not edit by hand.
Source declarations live under src/dsl/. Regenerate this document with bun run docs.
Overview
Section titled “Overview”Bunwright exposes a single browser instance plus class-based page automation.
Public Exports (from src/dsl/index.ts):
- Values:
browser,defineConfig - Classes:
Locator,ElementHandle,SelectorError,TimeoutError,ElementNotFoundError,BrowserError,BunwrightError - Types:
BrowserConfig,ContextOptions,Selector,LoadState,ResolvedSelector
Table of Contents
Section titled “Table of Contents”Classes
Section titled “Classes”BrowserContext
Section titled “BrowserContext”Declared in dist/browser.d.ts
Constructor
constructor(view: WebView, browserInstance: BunwrightBrowser)
Properties
readonly [CHAINABLE]: true
Methods
newPage(): Promise<Page>close(): Promise<void>
BrowserError extends BunwrightError
Section titled “BrowserError extends BunwrightError”Declared in dist/errors.d.ts
Constructor
constructor(message: string)
BunwrightError extends Error
Section titled “BunwrightError extends Error”Declared in dist/errors.d.ts
Constructor
constructor(message: string)
ElementHandle
Section titled “ElementHandle”Declared in dist/locator.d.ts
Constructor
constructor(cssSelector: string, page: Page)
Properties
readonly [CHAINABLE]: true
Methods
click(): Promise<void>dblClick(): Promise<void>type(text: string): Promise<void>press(key: string, modifiers?: Bun.WebView.Modifier[]): Promise<void>screenshot(opts?: { path?: string; }): Promise<void>evaluate<T>(fn: (el: Element) => T): Promise<T>innerText(): Promise<string>innerHTML(): Promise<string>getAttribute(name: string): Promise<string | null>isVisible(): Promise<boolean>isEnabled(): Promise<boolean>
ElementNotFoundError extends BunwrightError
Section titled “ElementNotFoundError extends BunwrightError”Declared in dist/errors.d.ts
Constructor
constructor(message: string)
Locator
Section titled “Locator”Declared in dist/locator.d.ts
Constructor
constructor(selector: Selector, page: Page)
Properties
readonly [CHAINABLE]: true
Methods
getPage(): PageresolveSelector(): Promise<string>waitForVisible(opts?: { timeout?: number; }): Promise<this>waitForEnabled(opts?: { timeout?: number; }): Promise<this>click(opts?: { timeout?: number; }): Promise<void>dblClick(opts?: { timeout?: number; }): Promise<void>type(text: string, opts?: { timeout?: number; }): Promise<void>fill(text: string): Promise<void>press(key: string, modifiers?: Bun.WebView.Modifier[]): Promise<void>screenshot(opts?: { path?: string; }): Promise<void>evaluate<T>(fn: (el: Element) => T): Promise<T>innerText(): Promise<string>innerHTML(): Promise<string>getAttribute(name: string): Promise<string | null>isVisible(): Promise<boolean>isEnabled(): Promise<boolean>isChecked(): Promise<boolean>filter(sel: Selector): Locatorfirst(): Locatorlast(): Locatornth(index: number): Locatorcount(): Promise<number>toElement(): Promise<ElementHandle>
Declared in dist/browser.d.ts
Constructor
constructor(view: WebView, _context: BrowserContext)
Properties
readonly [CHAINABLE]: truereadonly webview: WebViewretryTimeout: number
Methods
close(): voidnavigate(url: string, opts?: { waitForLoadState?: LoadState; }): Promise<this>back(): Promise<this>forward(): Promise<this>reload(): Promise<this>click(sel: Selector, opts?: { timeout?: number; }): Promise<this>dblClick(sel: Selector, opts?: { timeout?: number; }): Promise<this>type(sel: Selector, text: string, opts?: { timeout?: number; }): Promise<this>press(key: string, modifiers?: Bun.WebView.Modifier[]): Promise<this>scroll(dx: number, dy: number): Promise<this>scrollTo(sel: Selector, opts?: { block?: "start" | "center" | "end"; timeout?: number; }): Promise<this>resize(width: number, height: number): Promise<this>screenshot(path?: string): Promise<this>expect(sel: Selector, opts?: { timeout?: number; }): Promise<this>check(sel: Selector): Promise<this>waitForLoadState(state: LoadState, opts?: { timeout?: number; }): Promise<this>evaluate<T>(fn: () => T): Promise<T>locator(sel: Selector): Locator$(sel: Selector): Promise<import("./locator.js").ElementHandle | null>$$(sel: Selector): Promise<import("./locator.js").ElementHandle[]>waitForSelector(sel: Selector, opts?: { timeout?: number; }): Promise<void>waitForURL(url: string | RegExp, opts?: { timeout?: number; }): Promise<void>exists(sel: Selector): Promise<boolean>waitFor(sel: Selector, opts?: { timeout?: number; }): Promise<boolean>waitForTimeout(ms: number): Promise<void>cdp(method: string, params?: Record<string, unknown>): Promise<unknown>
SelectorError extends BunwrightError
Section titled “SelectorError extends BunwrightError”Declared in dist/errors.d.ts
Constructor
constructor(message: string)
TimeoutError extends BunwrightError
Section titled “TimeoutError extends BunwrightError”Declared in dist/errors.d.ts
Constructor
constructor(message: string)
Interfaces
Section titled “Interfaces”BrowserConfig
Section titled “BrowserConfig”Declared in dist/config.d.ts
Properties
backend?: "webkit" | "chrome" | { type: "chrome"; path?: string; argv?: string[]; }width?: numberheight?: numberurl?: stringconsole?: booleandataStore?: "ephemeral" | stringretryTimeout?: number/***–headless=new. When false, it runs in headed mode. Defaults to true* on Windows, false elsewhere.*/headless?: boolean
Methods
* When true, the externally-spawned Chrome (Windows workaround) runs in
ChainTarget
Section titled “ChainTarget”Declared in dist/chain.d.ts
Properties
readonly [CHAINABLE]: true
ContextOptions
Section titled “ContextOptions”Declared in dist/browser.d.ts
Properties
viewport?: { width: number; height: number; }extraHeaders?: Record<string, string>cookies?: Array<{ name: string; value: string; domain?: string; path?: string; }>
ResolvedSelector
Section titled “ResolvedSelector”Declared in dist/selectors.d.ts
Properties
css: stringisCoordinate: booleanx?: numbery?: number
Type Aliases
Section titled “Type Aliases”LoadState
Section titled “LoadState”Declared in dist/selectors.d.ts
"load" | "domcontentloaded" | "networkidle";Selector
Section titled “Selector”Declared in dist/selectors.d.ts
`role:${string}` | `label:${string}` | `text:${string}` | `css:${string}` | `xpath:${string}`;Functions
Section titled “Functions”chainable
Section titled “chainable”Declared in dist/chain.d.ts
chainable(target: T): Chain<T>defineConfig
Section titled “defineConfig”Declared in dist/config.d.ts
defineConfig(config: BrowserConfig): BrowserConfig