Skip to content

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.

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

Declared in dist/browser.d.ts

Constructor

  • constructor(view: WebView, browserInstance: BunwrightBrowser)

Properties

  • readonly [CHAINABLE]: true

Methods

  • newPage(): Promise<Page>
  • close(): Promise<void>

Declared in dist/errors.d.ts

Constructor

  • constructor(message: string)

Declared in dist/errors.d.ts

Constructor

  • constructor(message: string)

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)

Declared in dist/locator.d.ts

Constructor

  • constructor(selector: Selector, page: Page)

Properties

  • readonly [CHAINABLE]: true

Methods

  • getPage(): Page
  • resolveSelector(): 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): Locator
  • first(): Locator
  • last(): Locator
  • nth(index: number): Locator
  • count(): Promise<number>
  • toElement(): Promise<ElementHandle>

Declared in dist/browser.d.ts

Constructor

  • constructor(view: WebView, _context: BrowserContext)

Properties

  • readonly [CHAINABLE]: true
  • readonly webview: WebView
  • retryTimeout: number

Methods

  • close(): void
  • navigate(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>

Declared in dist/errors.d.ts

Constructor

  • constructor(message: string)

Declared in dist/errors.d.ts

Constructor

  • constructor(message: string)

Declared in dist/config.d.ts

Properties

  • backend?: "webkit" | "chrome" | { type: "chrome"; path?: string; argv?: string[]; }
  • width?: number
  • height?: number
  • url?: string
  • console?: boolean
  • dataStore?: "ephemeral" | string
  • retryTimeout?: 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

Declared in dist/chain.d.ts

Properties

  • readonly [CHAINABLE]: true

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

Declared in dist/selectors.d.ts

Properties

  • css: string
  • isCoordinate: boolean
  • x?: number
  • y?: number

Declared in dist/selectors.d.ts

"load" | "domcontentloaded" | "networkidle";

Declared in dist/selectors.d.ts

`role:${string}` | `label:${string}` | `text:${string}` | `css:${string}` | `xpath:${string}`;

Declared in dist/chain.d.ts

chainable(target: T): Chain<T>

Declared in dist/config.d.ts

defineConfig(config: BrowserConfig): BrowserConfig