Module browser

Module browser 

Source
Expand description

Browser launching and management.

This module provides the Browser type for connecting to and controlling Chromium-based browsers via the Chrome DevTools Protocol (CDP).

§Connection Methods

There are three ways to get a Browser instance:

  1. Launch a new browser - Browser::launch() spawns a new Chromium process
  2. Connect via WebSocket URL - Browser::connect() for direct WebSocket connection
  3. Connect via HTTP endpoint - Browser::connect_over_cdp() discovers WebSocket URL from an HTTP endpoint like http://localhost:9222

§Example: Launching a Browser

use viewpoint_core::Browser;

let browser = Browser::launch()
    .headless(true)
    .launch()
    .await?;

let context = browser.new_context().await?;
let page = context.new_page().await?;
page.goto("https://example.com").goto().await?;

§Example: Connecting to Existing Browser (MCP-style)

This is useful for MCP servers or tools that need to connect to an already-running browser instance:

use viewpoint_core::Browser;
use std::time::Duration;

// Connect via HTTP endpoint (discovers WebSocket URL automatically)
let browser = Browser::connect_over_cdp("http://localhost:9222")
    .timeout(Duration::from_secs(10))
    .connect()
    .await?;

// Access existing browser contexts (including the default one)
let contexts = browser.contexts().await?;
for context in &contexts {
    if context.is_default() {
        // The default context has the browser's existing tabs
        let pages = context.pages().await?;
        println!("Found {} existing pages", pages.len());
    }
}

// You can also create new contexts in the connected browser
let new_context = browser.new_context().await?;

§Ownership Model

Browsers and contexts track ownership:

  • Launched browsers (Browser::launch()) are “owned” - closing them terminates the process
  • Connected browsers (connect(), connect_over_cdp()) are not owned - closing only disconnects, leaving the browser process running
  • Created contexts (new_context()) are owned - closing disposes them
  • Discovered contexts (contexts()) are not owned - closing only disconnects

Structs§

Browser
A browser instance connected via CDP.
BrowserBuilder
Builder for launching a browser.
ConnectOverCdpBuilder
Builder for connecting to a browser via CDP.
NewContextBuilder
Builder for creating a new browser context with options.