devbrowser

package module
v0.2.38 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 9, 2026 License: MIT Imports: 20 Imported by: 0

README

devbrowser

Project Badges

A lightweight Go library for launching and controlling web browsers programmatically, designed for automation and development tools.

Usage

The main entry point is the New function, which creates a new browser controller:

import "github.com/tinywasm/devbrowser"

type myServerConfig struct{}
func (myServerConfig) GetServerPort() string { return "8080" }

type myUI struct{}
func (myUI) ReturnFocus() {}

func main() {
	exitChan := make(chan bool)
	browser := devbrowser.New(myServerConfig{}, myUI{}, exitChan)
	err := browser.OpenBrowser()
	if err != nil {
		// handle error
	}
	// ... use browser ...
	browser.CloseBrowser()
}

Public API

  • New(sc serverConfig, ui userInterface, exitChan chan bool) *DevBrowser: Create a new DevBrowser instance.

  • (*DevBrowser) OpenBrowser() error: Launch a new browser window.

  • (*DevBrowser) CloseBrowser() error: Close the browser and clean up resources.

  • (*DevBrowser) Reload() error: Reload the current page in the browser.

  • (*DevBrowser) RestartBrowser() error: Restart the browser (close and reopen).

  • (*DevBrowser) BrowserStartUrlChanged(fieldName, oldValue, newValue string) error: Handle changes to the start URL and restart the browser if open.

  • (*DevBrowser) BrowserPositionAndSizeChanged(fieldName, oldValue, newValue string) error: Change the browser window's position and size, and restart the browser.

  • (*DevBrowser) Name() string and (*DevBrowser) Label() string: For UI integration, returns the component name and label.

  • (*DevBrowser) Execute(progress func(msgs ...any)): For UI integration, toggles browser open/close and reports progress.

  • (*DevBrowser) SetHeadless(headless bool): Configure whether the browser runs in headless mode (without a visible UI).

    • Signature: func (b *DevBrowser) SetHeadless(headless bool)
    • Default: false (shows the browser window). This is convenient for local development and debugging.
    • Tests: the test helper DefaultTestBrowser() configures the returned DevBrowser with headless = true so unit tests run without requiring a graphical display.
    • Notes: Call this before OpenBrowser() (or before the browser context is created) to ensure the headless flag is applied when launching Chrome/Chromium.
    • Example:
db := devbrowser.New(myServerConfig{}, myUI{}, exitChan)
// run with no UI (useful in CI/tests)
db.SetHeadless(true)
err := db.OpenBrowser()
if err != nil {
		// handle error
}
  • (*DevBrowser) GetConsoleLogs() ([]string, error): Capture console messages from the loaded page.
    • Signature: func (b *DevBrowser) GetConsoleLogs() ([]string, error)
    • Behavior: injects a small script into the page that maintains window.__consoleLogs and returns its contents as a slice of strings. Captures console.log, console.error, console.warn, and console.info messages.
    • Requirements: the browser context must be initialized (OpenBrowser() called and context created). Returns an error if the context is not ready or the evaluation fails.
    • Example:
logs, err := db.GetConsoleLogs()
if err != nil {
		// handle error
}
for _, l := range logs {
		fmt.Println(l)
}
  • (*DevBrowser) ClearConsoleLogs() error: Clear the in-page captured console log buffer.
    • Signature: func (b *DevBrowser) ClearConsoleLogs() error
    • Behavior: executes a small script that resets window.__consoleLogs = [] if present.
    • Requirements: the browser context must be initialized. Returns an error if the evaluation fails.
    • Example:
err := db.ClearConsoleLogs()
if err != nil {
		// handle error
}

Documentation

Index

Constants

View Source
const (
	StoreKeyBrowserAutostart = "browser_autostart"
	StoreKeyBrowserPosition  = "browser_position"
	StoreKeyBrowserSize      = "browser_size"
	StoreKeyViewportMode     = "viewport_mode"
)

Store keys for browser configuration

View Source
const GetStructureJS = `` /* 3048-byte string literal not displayed */

GetStructureJS is the JavaScript used to extract the page structure for LLM understanding.

View Source
const InspectElementJS = `` /* 2480-byte string literal not displayed */

InspectElementJS extracts detailed element information like Chrome DevTools. Returns a JSON-like string with box model, position, styles, and accessibility info.

Variables

This section is empty.

Functions

This section is empty.

Types

type DevBrowser

type DevBrowser struct {
	// contains filtered or unexported fields
}

func New

func New(ui userInterface, st store, exitChan chan bool, opts ...Option) *DevBrowser

devbrowser.New creates a new DevBrowser instance.

type serverConfig interface {
	GetServerPort() string
}

type userInterface interface {
	RefreshUI()
	ReturnFocus() error
}

example :  New(userInterface, st, exitChan, WithCache(true))

func (*DevBrowser) BrowserPositionAndSizeChanged

func (h *DevBrowser) BrowserPositionAndSizeChanged(fieldName string, oldValue, newValue string) error

func (*DevBrowser) BrowserStartUrlChanged

func (h *DevBrowser) BrowserStartUrlChanged(fieldName string, oldValue, newValue string) error

func (*DevBrowser) CaptureElementScreenshot added in v0.2.33

func (b *DevBrowser) CaptureElementScreenshot(selector string) (*ScreenshotResult, error)

CaptureElementScreenshot captures a screenshot of a specific element.

func (*DevBrowser) CaptureScreenshot added in v0.2.33

func (b *DevBrowser) CaptureScreenshot(fullpage bool) (*ScreenshotResult, error)

CaptureScreenshot captures a screenshot of the current page.

func (*DevBrowser) Change added in v0.2.6

func (h *DevBrowser) Change(newValue string)

Change handles user input: toggles auto-start or browser state

func (*DevBrowser) ClearConsoleLogs

func (b *DevBrowser) ClearConsoleLogs() error

ClearConsoleLogs clears the captured console logs.

func (*DevBrowser) CloseBrowser

func (h *DevBrowser) CloseBrowser() error

func (*DevBrowser) CreateBrowserContext

func (h *DevBrowser) CreateBrowserContext() error

func (*DevBrowser) GetConsoleLogs

func (b *DevBrowser) GetConsoleLogs() ([]string, error)

GetConsoleLogs returns captured console logs from the browser. Returns an error if the browser context is not initialized.

func (*DevBrowser) GetMCPToolsMetadata

func (b *DevBrowser) GetMCPToolsMetadata() []mcpserve.ToolMetadata

GetMCPToolsMetadata returns metadata for all DevBrowser MCP tools

func (*DevBrowser) Label

func (h *DevBrowser) Label() string

func (*DevBrowser) LoadConfig added in v0.2.7

func (b *DevBrowser) LoadConfig()

LoadConfig loads all browser configuration from the store

func (*DevBrowser) Logger added in v0.2.5

func (b *DevBrowser) Logger(messages ...any)

func (*DevBrowser) Name

func (h *DevBrowser) Name() string

func (*DevBrowser) OpenBrowser

func (h *DevBrowser) OpenBrowser(port string, https bool)

func (*DevBrowser) Reload

func (b *DevBrowser) Reload() error

func (*DevBrowser) RestartBrowser

func (h *DevBrowser) RestartBrowser() error

func (*DevBrowser) SaveConfig added in v0.2.7

func (b *DevBrowser) SaveConfig() error

SaveConfig saves all browser configuration to the store

func (*DevBrowser) SetHeadless

func (b *DevBrowser) SetHeadless(headless bool)

SetHeadless configura si el navegador debe ejecutarse en modo headless (sin UI). Por defecto es false (muestra la ventana del navegador). Debe llamarse antes de OpenBrowser().

func (*DevBrowser) SetLog added in v0.2.5

func (b *DevBrowser) SetLog(f func(message ...any))

func (*DevBrowser) SetTestMode added in v0.2.8

func (b *DevBrowser) SetTestMode(testMode bool)

func (*DevBrowser) Shortcuts added in v0.2.6

func (h *DevBrowser) Shortcuts() []map[string]string

Shortcuts registers "B" for browser toggle

func (*DevBrowser) StatusMessage added in v0.2.6

func (h *DevBrowser) StatusMessage() string

StatusMessage returns formatted browser status for logging Format: "Open | Auto-Start: t | Shortcut B" or "Closed | Auto-Start: f | Shortcut B"

func (*DevBrowser) Value added in v0.2.6

func (h *DevBrowser) Value() string

Value returns current auto-start setting as "t" or "f"

type JSError

type JSError struct {
	Message      string
	Source       string // File/URL where error occurred
	LineNumber   int
	ColumnNumber int
	StackTrace   string
	Timestamp    time.Time
}

type NetworkLogEntry

type NetworkLogEntry struct {
	URL       string
	Method    string
	Status    int
	Type      string // xhr, fetch, document, script, image, etc.
	Duration  int64  // milliseconds
	Failed    bool
	ErrorText string
}

type Option added in v0.2.38

type Option func(*DevBrowser)

Option configures the DevBrowser

func WithCache added in v0.2.38

func WithCache(enabled bool) Option

WithCache configures whether the browser cache is enabled

type ScreenshotResult added in v0.2.33

type ScreenshotResult struct {
	ImageData     []byte
	PageTitle     string
	PageURL       string
	Width         int
	Height        int
	HTMLStructure string
}

ScreenshotResult contains the image data and metadata about the captured page.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL