devbrowser

package module
v0.5.8 Latest Latest
Warning

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

Go to latest
Published: Aug 27, 2026 License: MIT Imports: 32 Imported by: 0

README

devbrowser

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.
    • Headed launches suppress Chrome's "controlled by automated test software" infobar by overriding chromedp's default --enable-automation (CDP automation is unchanged).
    • 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
}

Browser engine support

devbrowser drives Chromium through CDP. It cannot emulate WebKit/Safari, and device emulation reproduces viewport metrics — not the iOS rendering environment. Before reopening that discussion, read docs/WEBKIT_PLAN_SUPPORT.md: it covers why CDP and WebKit are incompatible, how to tell engine differences apart from device and document ones, which library in the ecosystem owns each fix, and what a real WebKit backend would cost.

MCP Tools

The following Model Context Protocol (MCP) tools are available for browser automation:

Tool Description
browser_get_console Capture console messages from the loaded page
browser_emulate_device Emulate a mobile, tablet, or custom device (with real DPR, UA, viewport, and touch emulation)
browser_audit_mobile Run mobile compatibility audits (notch safe-areas, DVH/SVH units, auto-zoom, tap sizes)
browser_screenshot Take a screenshot of the current page
browser_save_screenshot Capture a screenshot and write it as a durable PNG file on disk (with path validation, overwrite prevention, and mutual exclusivity)
browser_get_content Get simplified semantic HTML of the page
browser_click_element Click on an element specified by a selector
browser_fill_element Fill an input field with a value
browser_navigate Navigate to a specific URL or relative path
browser_swipe_element Perform a swipe gesture on an element
browser_inspect_element Get detailed information about a DOM element
browser_get_performance Get page performance metrics
browser_get_network_logs Get network requests and responses metadata
browser_evaluate_js Execute JavaScript in the browser context
browser_get_errors Get captured JavaScript errors
browser_get_source Get the raw HTML (outerHTML) of the entire page or a specific element by selector
browser_get_styles Extract CSS rules from loaded stylesheets, with an optional selector filter
browser_get_storage Read localStorage, sessionStorage, or cookies from the current domain
browser_get_asset Download the content of a JS or CSS file by URL using the active session
browser_intercept_request Capture bodies of requests and responses XHR/fetch calls (CDP Fetch domain)
  • (*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
}
Device Emulation & Mobile Auditing

devbrowser provides robust device emulation to bridge the gap between emulated views and physical devices.

Precise Device Emulation & Live Window Auto-fit

The browser_emulate_device tool accepts two main arguments:

  • mode: "mobile" (defaults to iPhone 15 Pro Max), "tablet" (defaults to iPad Pro), "desktop" (pins to 1440x900), or "off" (clears overrides).
  • device: Optional custom device name (e.g., "iPhone 14 Pro Max", "Pixel 5"). This matches the name in lowercase and without spaces/symbols. If a name is unknown, the tool returns an error listing all available device names from the 131-device catalog.

When emulating a specific device from the catalog, devbrowser automatically configures:

  1. Device Pixel Ratio (DPR) (e.g., 3.0 for iPhone 15 Pro Max) for crisp screenshots, @media query matching, and correct srcset selection.
  2. Real User-Agent (UA) Override to ensure server-side or client-side UA routing works correctly.
  3. Viewport visible dimensions (the height takes active browser bars into account).
  4. Touch Emulation to correctly enable mobile gesture handlers.
  5. Live Window Auto-fit: If the requested viewport exceeds the current physical window bounds, devbrowser resizes the browser window live using CDP Browser.setWindowBounds (without restarting Chrome). Position and existing size are preserved as a floor (the window never shrinks automatically). When DevTools is docked on the side (auto-opened for launch widths > 1200px), an estimated reserved width of 420px is included so DevTools does not obscure the emulated viewport.
What Cannot Be Emulated (And How to Audit)

Due to protocol limits, certain iOS/Safari behaviors cannot be directly simulated in Chromium:

  • safe-area-inset-* (notch and home gestural bars) cannot be emulated.
  • Dynamic viewport height shrinkage (100vh behavior) and Safari-specific fonts/inputs are not available.

To detect these and other common mobile layout defects, use browser_audit_mobile. It scans the DOM and stylesheets to check for:

  • viewport-meta: Missing <meta name="viewport"> or missing viewport-fit=cover.
  • vh-units: Elements using raw vh units instead of dynamic viewports like dvh or svh (which can overflow or shift layout as browser controls hide).
  • safe-area: Fixed elements at edges lacking safe-area insets.
  • input-zoom: Input/Select fields with font-size < 16px (which triggers iOS Safari's annoying layout-shifting zoom on focus).
  • tap-target: Interactive elements smaller than the standard 44x44 px touch target.
  • fixed-vh: Fixed position elements using vh heights (the worst layout shifter on scroll).
Saving screenshots directly to disk

The browser_save_screenshot tool is designed to produce durable documentation artifacts (such as widget and component reference images) directly on the local filesystem. This tool is isolated to the separate browser_file resource type for maximum security and access control.

Worked Example: Documenting a Widget Component
  1. Emulate the desired viewport (e.g., desktop):

    {
      "mode": "desktop"
    }
    

    Result: Sets the emulated device viewport to exactly 1440x900.

  2. Capture and save a specific component by CSS selector:

    {
      "dir": "./docs/img",
      "name": "badges",
      "selector": ".badge-container",
      "overwrite": true
    }
    

    Result: Captures only the .badge-container element, cleans and resolves the destination directory to an absolute path, creates docs/img/ if missing, and safely writes the PNG file to docs/img/badges.png.

  3. Reference the file in your documentation:

    <img src="docs/img/badges.png">
    

Documentation

Index

Constants

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

Store keys for browser configuration

View Source
const (
	DesktopWidth  = 1440
	DesktopHeight = 900
)
View Source
const DevToolsReservedWidth = 420

DevToolsReservedWidth is a conservative, documented ESTIMATE of the horizontal space Chrome's docked DevTools panel occupies when auto-opened via auto-open-devtools-for-tabs (see context.go). CDP exposes no command to read the panel's actual bounds, so this value is fixed and deliberately generous rather than pixel-exact — it assumes DevTools docks to the right, which only happens for the wide windows that trigger the auto-open in the first place. DevTools docked to the bottom is deliberately NOT modelled: that layout costs height rather than width, and the auto-open condition never fires for the narrow windows where Chrome docks it there.

View Source
const GetAuditMobileJS = `` /* 4199-byte string literal not displayed */

GetAuditMobileJS is the mobile compatibility audit script.

View Source
const GetPerformanceJS = `` /* 1714-byte string literal not displayed */

GetPerformanceJS extracts page performance metrics optimized for LLM consumption.

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.

View Source
const (
	LabelBrowserAutoRun = "Browser AutoRun"
)

Variables

View Source
var AuditMobileArgsModel = model.Definition{
	Name: "audit_mobile_args",
	Fields: model.Fields{
		{Name: "selector", Type: model.Text(), Permitted: permittedSelector},
	},
}
View Source
var ClickElementArgsModel = model.Definition{
	Name: "click_element_args",
	Fields: model.Fields{
		{Name: "selector", Type: model.Text(), NotNull: true, Permitted: permittedSelector},
		{Name: "wait_after", Type: model.Int()},
		{Name: "timeout", Type: model.Int()},
	},
}
View Source
var CloseBrowserArgsModel = model.Definition{
	Name:   "close_browser_args",
	Fields: model.Fields{},
}
View Source
var EmulateDeviceArgsModel = model.Definition{
	Name: "emulate_device_args",
	Fields: model.Fields{
		{Name: "mode", Type: model.Text()},
		{Name: "device", Type: model.Text(), Permitted: permittedSelector},
		{Name: "capture", Type: model.Bool()},
		{Name: "selector", Type: model.Text(), Permitted: permittedSelector},
	},
}
View Source
var ErrBrowserNotOpen = fmt.Err(
	"browser is not open: start a project with the start_development tool (the browser opens automatically); if it was closed, call start_development again")

ErrBrowserNotOpen es el error de precondición de todos los tools browser_*. El browser lo abre el daemon automáticamente al iniciar un proyecto.

View Source
var EvaluateJSArgsModel = model.Definition{
	Name: "evaluate_js_args",
	Fields: model.Fields{
		{Name: "script", Type: model.Text(), NotNull: true, Permitted: permittedFree},
		{Name: "await_promise", Type: model.Bool()},
	},
}
View Source
var FillElementArgsModel = model.Definition{
	Name: "fill_element_args",
	Fields: model.Fields{
		{Name: "selector", Type: model.Text(), NotNull: true, Permitted: permittedSelector},
		{Name: "value", Type: model.Text(), NotNull: true, Permitted: permittedFree},
		{Name: "wait_after", Type: model.Int()},
		{Name: "timeout", Type: model.Int()},
	},
}
View Source
var GetAssetArgsModel = model.Definition{
	Name: "get_asset_args",
	Fields: model.Fields{
		{Name: "url", Type: model.Text(), NotNull: true, Permitted: permittedURL},
	},
}
View Source
var GetConsoleArgsModel = model.Definition{
	Name: "get_console_args",
	Fields: model.Fields{
		{Name: "lines", Type: model.Int()},
	},
}
View Source
var GetContentArgsModel = model.Definition{
	Name:   "get_content_args",
	Fields: model.Fields{},
}
View Source
var GetErrorsArgsModel = model.Definition{
	Name: "get_errors_args",
	Fields: model.Fields{
		{Name: "limit", Type: model.Int()},
	},
}
View Source
var GetNetworkLogsArgsModel = model.Definition{
	Name: "get_network_logs_args",
	Fields: model.Fields{
		{Name: "filter", Type: model.Text(), Permitted: permittedFree},
		{Name: "limit", Type: model.Int()},
	},
}
View Source
var GetPerformanceArgsModel = model.Definition{
	Name:   "get_performance_args",
	Fields: model.Fields{},
}
View Source
var GetSourceArgsModel = model.Definition{
	Name: "get_source_args",
	Fields: model.Fields{
		{Name: "selector", Type: model.Text(), Permitted: permittedSelector},
	},
}
View Source
var GetStorageArgsModel = model.Definition{
	Name: "get_storage_args",
	Fields: model.Fields{
		{Name: "type", Type: model.Text()},
	},
}
View Source
var GetStylesArgsModel = model.Definition{
	Name: "get_styles_args",
	Fields: model.Fields{
		{Name: "selector", Type: model.Text(), Permitted: permittedSelector},
		{Name: "sheet", Type: model.Int()},
	},
}
View Source
var InspectElementArgsModel = model.Definition{
	Name: "inspect_element_args",
	Fields: model.Fields{
		{Name: "selector", Type: model.Text(), NotNull: true, Permitted: permittedSelector},
	},
}
View Source
var InterceptRequestArgsModel = model.Definition{
	Name: "intercept_request_args",
	Fields: model.Fields{
		{Name: "action", Type: model.Text(), NotNull: true},
		{Name: "filter", Type: model.Text(), Permitted: permittedFree},
		{Name: "limit", Type: model.Int()},
	},
}
View Source
var NavigateArgsModel = model.Definition{
	Name: "navigate_args",
	Fields: model.Fields{
		{Name: "url", Type: model.Text(), NotNull: true, Permitted: permittedURL},
	},
}
View Source
var OpenBrowserArgsModel = model.Definition{
	Name: "open_browser_args",
	Fields: model.Fields{
		{Name: "port", Type: model.Text()},
		{Name: "https", Type: model.Bool()},
	},
}
View Source
var QueryMonitorSize = func() (int, int) {
	n := screenshot.NumActiveDisplays()
	if n <= 0 {
		return 0, 0
	}

	bounds := screenshot.GetDisplayBounds(0)
	return bounds.Dx(), bounds.Dy()
}

QueryMonitorSize is a function variable to allow mocking in tests. It returns width, height of the primary display.

View Source
var SaveScreenshotArgsModel = model.Definition{
	Name: "save_screenshot_args",
	Fields: model.Fields{
		{Name: "dir", Type: model.Text(), NotNull: true, Permitted: permittedPath},
		{Name: "name", Type: model.Text(), NotNull: true, Permitted: permittedPath},
		{Name: "selector", Type: model.Text(), Permitted: permittedSelector},
		{Name: "fullpage", Type: model.Bool()},
		{Name: "overwrite", Type: model.Bool()},
	},
}
View Source
var ScreenshotArgsModel = model.Definition{
	Name: "screenshot_args",
	Fields: model.Fields{
		{Name: "fullpage", Type: model.Bool()},
	},
}
View Source
var SwipeElementArgsModel = model.Definition{
	Name: "swipe_element_args",
	Fields: model.Fields{
		{Name: "selector", Type: model.Text(), NotNull: true, Permitted: permittedSelector},
		{Name: "direction", Type: model.Text(), NotNull: true},
		{Name: "distance", Type: model.Int()},
	},
}

Functions

func EmulationViewportSize added in v0.5.5

func EmulationViewportSize(mode, devName string) (int, int, error)

EmulationViewportSize returns the CSS pixel viewport size that mode/devName will render at once applied by applyDeviceEmulation, so the physical window can be grown to fit BEFORE the CDP emulation override is issued. Keep this in sync with the switch in applyDeviceEmulation — same modes, same device shortcuts.

func FormatAuditMobileReport added in v0.5.4

func FormatAuditMobileReport(pageURL string, r *AuditMobileReport) string

func FormatPerformanceReport added in v0.3.19

func FormatPerformanceReport(pageURL string, metrics map[string]any) string

FormatPerformanceReport builds a compact text report from raw JS metrics.

func ResolveChromeExecPath added in v0.4.0

func ResolveChromeExecPath() string

ResolveChromeExecPath finds a working Chrome/Chromium executable. It prioritizes Google Chrome over Chromium to avoid known regressions in some Chromium packages (e.g., Debian's chromium 150+). It also validates each candidate by running it with --version.

Types

type AuditMobileArgs added in v0.5.4

type AuditMobileArgs struct {
	Selector string
}

func (*AuditMobileArgs) DecodeFields added in v0.5.4

func (m *AuditMobileArgs) DecodeFields(r model.FieldReader)

func (*AuditMobileArgs) EncodeFields added in v0.5.4

func (m *AuditMobileArgs) EncodeFields(w model.FieldWriter)

func (*AuditMobileArgs) IsNil added in v0.5.4

func (m *AuditMobileArgs) IsNil() bool

func (*AuditMobileArgs) ModelName added in v0.5.4

func (m *AuditMobileArgs) ModelName() string

func (*AuditMobileArgs) Pointers added in v0.5.4

func (m *AuditMobileArgs) Pointers() []any

func (*AuditMobileArgs) Schema added in v0.5.4

func (m *AuditMobileArgs) Schema() []model.Field

func (*AuditMobileArgs) Validate added in v0.5.4

func (m *AuditMobileArgs) Validate(action byte) error

type AuditMobileArgsList added in v0.5.4

type AuditMobileArgsList []*AuditMobileArgs

func (*AuditMobileArgsList) Append added in v0.5.4

func (s *AuditMobileArgsList) Append() model.Fielder

func (*AuditMobileArgsList) At added in v0.5.4

func (*AuditMobileArgsList) DecodeFields added in v0.5.4

func (s *AuditMobileArgsList) DecodeFields(_ model.FieldReader)

func (*AuditMobileArgsList) EncodeFields added in v0.5.4

func (s *AuditMobileArgsList) EncodeFields(_ model.FieldWriter)

func (*AuditMobileArgsList) IsNil added in v0.5.4

func (s *AuditMobileArgsList) IsNil() bool

func (*AuditMobileArgsList) Len added in v0.5.4

func (s *AuditMobileArgsList) Len() int

func (*AuditMobileArgsList) Pointers added in v0.5.4

func (s *AuditMobileArgsList) Pointers() []any

func (*AuditMobileArgsList) Schema added in v0.5.4

func (s *AuditMobileArgsList) Schema() []model.Field

type AuditMobileReport added in v0.5.4

type AuditMobileReport struct {
	ViewportMeta AuditViewportMeta `json:"viewportMeta"`
	VhUnits      []string          `json:"vhUnits"`
	SafeArea     []string          `json:"safeArea"`
	InputZoom    []string          `json:"inputZoom"`
	TapTarget    []string          `json:"tapTarget"`
	FixedVh      []string          `json:"fixedVh"`
}

type AuditViewportMeta added in v0.5.4

type AuditViewportMeta struct {
	Missing    bool `json:"missing"`
	MissingFit bool `json:"missingFit"`
}

type ClickElementArgs added in v0.3.19

type ClickElementArgs struct {
	Selector  string
	WaitAfter int64
	Timeout   int64
}

func (*ClickElementArgs) DecodeFields added in v0.3.26

func (m *ClickElementArgs) DecodeFields(r model.FieldReader)

func (*ClickElementArgs) EncodeFields added in v0.3.26

func (m *ClickElementArgs) EncodeFields(w model.FieldWriter)

func (*ClickElementArgs) IsNil added in v0.3.26

func (m *ClickElementArgs) IsNil() bool

func (*ClickElementArgs) ModelName added in v0.3.25

func (m *ClickElementArgs) ModelName() string

func (*ClickElementArgs) Pointers added in v0.3.19

func (m *ClickElementArgs) Pointers() []any

func (*ClickElementArgs) Schema added in v0.3.19

func (m *ClickElementArgs) Schema() []model.Field

func (*ClickElementArgs) Validate added in v0.3.19

func (m *ClickElementArgs) Validate(action byte) error

type ClickElementArgsList added in v0.3.25

type ClickElementArgsList []*ClickElementArgs

func (*ClickElementArgsList) Append added in v0.3.25

func (s *ClickElementArgsList) Append() model.Fielder

func (*ClickElementArgsList) At added in v0.3.25

func (*ClickElementArgsList) DecodeFields added in v0.3.26

func (s *ClickElementArgsList) DecodeFields(_ model.FieldReader)

func (*ClickElementArgsList) EncodeFields added in v0.3.26

func (s *ClickElementArgsList) EncodeFields(_ model.FieldWriter)

func (*ClickElementArgsList) IsNil added in v0.3.26

func (s *ClickElementArgsList) IsNil() bool

func (*ClickElementArgsList) Len added in v0.3.25

func (s *ClickElementArgsList) Len() int

func (*ClickElementArgsList) Pointers added in v0.3.25

func (s *ClickElementArgsList) Pointers() []any

func (*ClickElementArgsList) Schema added in v0.3.25

func (s *ClickElementArgsList) Schema() []model.Field

type CloseBrowserArgs added in v0.3.19

type CloseBrowserArgs struct {
}

func (*CloseBrowserArgs) DecodeFields added in v0.3.26

func (m *CloseBrowserArgs) DecodeFields(r model.FieldReader)

func (*CloseBrowserArgs) EncodeFields added in v0.3.26

func (m *CloseBrowserArgs) EncodeFields(w model.FieldWriter)

func (*CloseBrowserArgs) IsNil added in v0.3.26

func (m *CloseBrowserArgs) IsNil() bool

func (*CloseBrowserArgs) ModelName added in v0.3.25

func (m *CloseBrowserArgs) ModelName() string

func (*CloseBrowserArgs) Pointers added in v0.3.19

func (m *CloseBrowserArgs) Pointers() []any

func (*CloseBrowserArgs) Schema added in v0.3.19

func (m *CloseBrowserArgs) Schema() []model.Field

func (*CloseBrowserArgs) Validate added in v0.3.19

func (m *CloseBrowserArgs) Validate(action byte) error

type CloseBrowserArgsList added in v0.3.25

type CloseBrowserArgsList []*CloseBrowserArgs

func (*CloseBrowserArgsList) Append added in v0.3.25

func (s *CloseBrowserArgsList) Append() model.Fielder

func (*CloseBrowserArgsList) At added in v0.3.25

func (*CloseBrowserArgsList) DecodeFields added in v0.3.26

func (s *CloseBrowserArgsList) DecodeFields(_ model.FieldReader)

func (*CloseBrowserArgsList) EncodeFields added in v0.3.26

func (s *CloseBrowserArgsList) EncodeFields(_ model.FieldWriter)

func (*CloseBrowserArgsList) IsNil added in v0.3.26

func (s *CloseBrowserArgsList) IsNil() bool

func (*CloseBrowserArgsList) Len added in v0.3.25

func (s *CloseBrowserArgsList) Len() int

func (*CloseBrowserArgsList) Pointers added in v0.3.25

func (s *CloseBrowserArgsList) Pointers() []any

func (*CloseBrowserArgsList) Schema added in v0.3.25

func (s *CloseBrowserArgsList) Schema() []model.Field

type DevBrowser

type DevBrowser struct {
	UI             UserInterface
	Width          int    // ej "800" default "1024"
	Height         int    //ej: "600" default "768"
	Position       string //ej: "1930,0" (when you have second monitor) default: "0,0"
	Headless       bool   // true para modo headless (sin UI), false muestra el navegador
	AutoStart      bool   // true if browser should auto-open on startup
	MonitorWidth   int    // Detected monitor availability width
	MonitorHeight  int    // Detected monitor availability height
	SizeConfigured bool   // Track if size was loaded from storage

	// DevToolsReserved is true when auto-open-devtools-for-tabs was launched
	// for this session (context.go decides this once, at CreateBrowserContext
	// time, based on the window width at launch). Later window growth does not
	// retroactively open or close DevTools, so this flag is a session-long
	// snapshot, not a live query — CDP exposes no way to read DevTools' actual
	// panel bounds.
	DevToolsReserved bool

	ViewportMode   string // Current emulation mode ("mobile", "tablet", "desktop", "off", "")
	ViewportDevice string // Current emulation device name (e.g. "iphone15promax")
	FirstCall      bool   // Internal flag to track if OpenBrowser was called for the first time
	OpenedOnce     bool   // Internal flag to track if browser was actually opened at least once

	LastPort  string
	LastHttps bool

	IsOpenFlag bool // Indica si el navegador está abierto

	DB Store // Key-value store para configuración y estado

	// chromedp fields
	Ctx    context.Context
	Cancel context.CancelFunc
	// AllocCancel cancels the exec allocator (the Chrome OS process). Must be
	// called on close, otherwise cancelling only Ctx closes the tab/target but
	// leaves the Chrome window alive -> orphan windows on restart (double window).
	AllocCancel context.CancelFunc

	ReadyChan chan bool
	ErrChan   chan error
	ExitChan  chan bool

	Log func(message ...any) // For logging output (Loggable interface)

	// Console log capture
	ConsoleLogs []string
	LogsMutex   sync.Mutex

	// Network log capture
	NetworkLogs  []NetworkLogEntry
	NetworkMutex sync.Mutex

	// JS error capture
	JsErrors    []JSError
	ErrorsMutex sync.Mutex

	// Request interception
	InterceptActive bool
	InterceptedReqs []InterceptedRequest
	InterceptMutex  sync.Mutex

	// Operation busy flag (atomic) to prevent race conditions and UI blocking
	// 0 = idle, 1 = busy
	Busy int32

	TestMode bool // Skip opening browser in tests

	// Cache configuration
	CacheEnabled bool // Disabled by default for development
	Mu           sync.Mutex
	// 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) CalculateConstrainedSize added in v0.3.19

func (b *DevBrowser) CalculateConstrainedSize(reqW, reqH, monW, monH int) (int, int)

calculateConstrainedSize determines the best window size based on available monitor space and previous configuration.

logic: 1. If monitor size is unknown (0x0), return requested size 2. If valid monitor size:

  • If !sizeConfigured (first run or auto): Accept requested size BUT ensure it fits within monitor (clamping)
  • If sizeConfigured (user manually set size): Check if it fits. If not, scale down or clamp. To be safe, we clamp to available area.

In all cases, we ensure the window is not larger than the available screen area.

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: sets auto-start or toggles 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) CurrentURL added in v0.3.25

func (b *DevBrowser) CurrentURL() (string, error)

func (*DevBrowser) DetectMonitorSize added in v0.3.19

func (b *DevBrowser) DetectMonitorSize()

detectMonitorSize attempts to retrieve the primary monitor's dimensions. It updates the DevBrowser's monitorWidth and monitorHeight fields.

func (*DevBrowser) GetAssetTools added in v0.3.29

func (b *DevBrowser) GetAssetTools() []mcp.Tool

func (*DevBrowser) GetAuditTools added in v0.5.4

func (b *DevBrowser) GetAuditTools() []mcp.Tool

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) GetConsoleTools added in v0.3.19

func (b *DevBrowser) GetConsoleTools() []mcp.Tool

func (*DevBrowser) GetErrorTools added in v0.3.19

func (b *DevBrowser) GetErrorTools() []mcp.Tool

func (*DevBrowser) GetEvaluateJsTools added in v0.3.19

func (b *DevBrowser) GetEvaluateJsTools() []mcp.Tool

func (*DevBrowser) GetInspectTools added in v0.3.19

func (b *DevBrowser) GetInspectTools() []mcp.Tool

func (*DevBrowser) GetInteractionTools added in v0.3.19

func (b *DevBrowser) GetInteractionTools() []mcp.Tool

func (*DevBrowser) GetInterceptTools added in v0.3.29

func (b *DevBrowser) GetInterceptTools() []mcp.Tool

func (*DevBrowser) GetLog added in v0.3.15

func (b *DevBrowser) GetLog() func(message ...any)

func (*DevBrowser) GetMCPTools added in v0.3.10

func (b *DevBrowser) GetMCPTools() []mcp.Tool

GetMCPTools returns metadata for all DevBrowser MCP tools

func (*DevBrowser) GetManagementTools added in v0.3.19

func (b *DevBrowser) GetManagementTools() []mcp.Tool

func (*DevBrowser) GetNavigationTools added in v0.3.19

func (b *DevBrowser) GetNavigationTools() []mcp.Tool

func (*DevBrowser) GetNetworkTools added in v0.3.19

func (b *DevBrowser) GetNetworkTools() []mcp.Tool

func (*DevBrowser) GetPerformanceTools added in v0.3.19

func (b *DevBrowser) GetPerformanceTools() []mcp.Tool

func (*DevBrowser) GetPresetSize added in v0.3.19

func (b *DevBrowser) GetPresetSize(mode string) (int, int, error)

getPresetSize calculates the optimal dimensions for a requested preset mode. It uses predefined base sizes but ensures they fit within the current monitor constraints.

func (*DevBrowser) GetScreenshotTools added in v0.3.19

func (b *DevBrowser) GetScreenshotTools() []mcp.Tool

func (*DevBrowser) GetSourceTools added in v0.3.29

func (b *DevBrowser) GetSourceTools() []mcp.Tool

func (*DevBrowser) GetStorageTools added in v0.3.29

func (b *DevBrowser) GetStorageTools() []mcp.Tool

func (*DevBrowser) GetStructureTools added in v0.3.19

func (b *DevBrowser) GetStructureTools() []mcp.Tool

func (*DevBrowser) GetStylesTools added in v0.3.29

func (b *DevBrowser) GetStylesTools() []mcp.Tool

func (*DevBrowser) GrowWindowToFit added in v0.5.5

func (b *DevBrowser) GrowWindowToFit(reqW, reqH int) (bool, error)

GrowWindowToFit resizes the live physical browser window, in place, so it is at least (reqW, reqH) plus any DevTools reservation — see RequiredWindowSize — and never shrinks it. It is the single place that keeps what a human sees in the window in sync with what an MCP-driven device emulation call renders, so both are looking at the same content instead of the emulated viewport overflowing a window sized for something else. Returns false, nil when no resize was necessary.

func (*DevBrowser) InitializeConsoleCapture added in v0.3.19

func (b *DevBrowser) InitializeConsoleCapture() error

func (*DevBrowser) InitializeInterceptCapture added in v0.3.29

func (b *DevBrowser) InitializeInterceptCapture()

func (*DevBrowser) IsOpen added in v0.3.19

func (b *DevBrowser) IsOpen() bool

func (*DevBrowser) IsPendingReload added in v0.5.5

func (b *DevBrowser) IsPendingReload() bool

func (*DevBrowser) IsReady added in v0.5.5

func (b *DevBrowser) IsReady() bool

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) NavigateToURL added in v0.3.19

func (b *DevBrowser) NavigateToURL(url string) error

func (*DevBrowser) OpenBrowser

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

func (*DevBrowser) Options added in v0.4.3

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

Options returns the available auto-start options

func (*DevBrowser) ProcessPendingReload added in v0.5.5

func (b *DevBrowser) ProcessPendingReload()

func (*DevBrowser) Reload

func (b *DevBrowser) Reload() error

func (*DevBrowser) RequiredWindowSize added in v0.5.5

func (b *DevBrowser) RequiredWindowSize(reqW, reqH int) (int, int)

RequiredWindowSize returns the physical window size needed to show a requested viewport of (reqW, reqH) without DevTools covering any of it, clamped to the detected monitor. It never returns less than the window's current size: growth is one-directional, the existing window size is a floor. If the monitor size has not been detected yet, it is detected now (mirrors the lazy-detect in GetPresetSize).

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) SaveGeometry added in v0.3.23

func (b *DevBrowser) SaveGeometry(x, y, width, height int64)

SaveGeometry applies CDP-reported window bounds to the browser state and persists any changes to the store. Extracted from checkAndSaveGeometry so tests can exercise the save logic without a real CDP connection.

func (*DevBrowser) SetBrowserPositionAndSize added in v0.3.19

func (b *DevBrowser) SetBrowserPositionAndSize(newConfig string) (err error)

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) SetReadyForTest added in v0.5.5

func (b *DevBrowser) SetReadyForTest(ready bool)

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) StartWithDetectedSize added in v0.3.19

func (b *DevBrowser) StartWithDetectedSize()

startWithDetectedSize updates the browser size if it hasn't been configured yet and we have detected a monitor size.

func (*DevBrowser) StatusMessage added in v0.2.6

func (h *DevBrowser) StatusMessage() string

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

func (*DevBrowser) Value added in v0.2.6

func (h *DevBrowser) Value() string

Value returns current auto-start setting as "on" or "off"

type EmulateDeviceArgs added in v0.3.19

type EmulateDeviceArgs struct {
	Mode     string
	Device   string
	Capture  bool
	Selector string
}

func (*EmulateDeviceArgs) DecodeFields added in v0.3.26

func (m *EmulateDeviceArgs) DecodeFields(r model.FieldReader)

func (*EmulateDeviceArgs) EncodeFields added in v0.3.26

func (m *EmulateDeviceArgs) EncodeFields(w model.FieldWriter)

func (*EmulateDeviceArgs) IsNil added in v0.3.26

func (m *EmulateDeviceArgs) IsNil() bool

func (*EmulateDeviceArgs) ModelName added in v0.3.25

func (m *EmulateDeviceArgs) ModelName() string

func (*EmulateDeviceArgs) Pointers added in v0.3.19

func (m *EmulateDeviceArgs) Pointers() []any

func (*EmulateDeviceArgs) Schema added in v0.3.19

func (m *EmulateDeviceArgs) Schema() []model.Field

func (*EmulateDeviceArgs) Validate added in v0.3.19

func (m *EmulateDeviceArgs) Validate(action byte) error

type EmulateDeviceArgsList added in v0.3.25

type EmulateDeviceArgsList []*EmulateDeviceArgs

func (*EmulateDeviceArgsList) Append added in v0.3.25

func (s *EmulateDeviceArgsList) Append() model.Fielder

func (*EmulateDeviceArgsList) At added in v0.3.25

func (*EmulateDeviceArgsList) DecodeFields added in v0.3.26

func (s *EmulateDeviceArgsList) DecodeFields(_ model.FieldReader)

func (*EmulateDeviceArgsList) EncodeFields added in v0.3.26

func (s *EmulateDeviceArgsList) EncodeFields(_ model.FieldWriter)

func (*EmulateDeviceArgsList) IsNil added in v0.3.26

func (s *EmulateDeviceArgsList) IsNil() bool

func (*EmulateDeviceArgsList) Len added in v0.3.25

func (s *EmulateDeviceArgsList) Len() int

func (*EmulateDeviceArgsList) Pointers added in v0.3.25

func (s *EmulateDeviceArgsList) Pointers() []any

func (*EmulateDeviceArgsList) Schema added in v0.3.25

func (s *EmulateDeviceArgsList) Schema() []model.Field

type EvaluateJSArgs added in v0.3.19

type EvaluateJSArgs struct {
	Script       string
	AwaitPromise bool
}

func (*EvaluateJSArgs) DecodeFields added in v0.3.26

func (m *EvaluateJSArgs) DecodeFields(r model.FieldReader)

func (*EvaluateJSArgs) EncodeFields added in v0.3.26

func (m *EvaluateJSArgs) EncodeFields(w model.FieldWriter)

func (*EvaluateJSArgs) IsNil added in v0.3.26

func (m *EvaluateJSArgs) IsNil() bool

func (*EvaluateJSArgs) ModelName added in v0.3.25

func (m *EvaluateJSArgs) ModelName() string

func (*EvaluateJSArgs) Pointers added in v0.3.19

func (m *EvaluateJSArgs) Pointers() []any

func (*EvaluateJSArgs) Schema added in v0.3.19

func (m *EvaluateJSArgs) Schema() []model.Field

func (*EvaluateJSArgs) Validate added in v0.3.19

func (m *EvaluateJSArgs) Validate(action byte) error

type EvaluateJSArgsList added in v0.3.25

type EvaluateJSArgsList []*EvaluateJSArgs

func (*EvaluateJSArgsList) Append added in v0.3.25

func (s *EvaluateJSArgsList) Append() model.Fielder

func (*EvaluateJSArgsList) At added in v0.3.25

func (*EvaluateJSArgsList) DecodeFields added in v0.3.26

func (s *EvaluateJSArgsList) DecodeFields(_ model.FieldReader)

func (*EvaluateJSArgsList) EncodeFields added in v0.3.26

func (s *EvaluateJSArgsList) EncodeFields(_ model.FieldWriter)

func (*EvaluateJSArgsList) IsNil added in v0.3.26

func (s *EvaluateJSArgsList) IsNil() bool

func (*EvaluateJSArgsList) Len added in v0.3.25

func (s *EvaluateJSArgsList) Len() int

func (*EvaluateJSArgsList) Pointers added in v0.3.25

func (s *EvaluateJSArgsList) Pointers() []any

func (*EvaluateJSArgsList) Schema added in v0.3.25

func (s *EvaluateJSArgsList) Schema() []model.Field

type FillElementArgs added in v0.3.19

type FillElementArgs struct {
	Selector  string
	Value     string
	WaitAfter int64
	Timeout   int64
}

func (*FillElementArgs) DecodeFields added in v0.3.26

func (m *FillElementArgs) DecodeFields(r model.FieldReader)

func (*FillElementArgs) EncodeFields added in v0.3.26

func (m *FillElementArgs) EncodeFields(w model.FieldWriter)

func (*FillElementArgs) IsNil added in v0.3.26

func (m *FillElementArgs) IsNil() bool

func (*FillElementArgs) ModelName added in v0.3.25

func (m *FillElementArgs) ModelName() string

func (*FillElementArgs) Pointers added in v0.3.19

func (m *FillElementArgs) Pointers() []any

func (*FillElementArgs) Schema added in v0.3.19

func (m *FillElementArgs) Schema() []model.Field

func (*FillElementArgs) Validate added in v0.3.19

func (m *FillElementArgs) Validate(action byte) error

type FillElementArgsList added in v0.3.25

type FillElementArgsList []*FillElementArgs

func (*FillElementArgsList) Append added in v0.3.25

func (s *FillElementArgsList) Append() model.Fielder

func (*FillElementArgsList) At added in v0.3.25

func (*FillElementArgsList) DecodeFields added in v0.3.26

func (s *FillElementArgsList) DecodeFields(_ model.FieldReader)

func (*FillElementArgsList) EncodeFields added in v0.3.26

func (s *FillElementArgsList) EncodeFields(_ model.FieldWriter)

func (*FillElementArgsList) IsNil added in v0.3.26

func (s *FillElementArgsList) IsNil() bool

func (*FillElementArgsList) Len added in v0.3.25

func (s *FillElementArgsList) Len() int

func (*FillElementArgsList) Pointers added in v0.3.25

func (s *FillElementArgsList) Pointers() []any

func (*FillElementArgsList) Schema added in v0.3.25

func (s *FillElementArgsList) Schema() []model.Field

type GetAssetArgs added in v0.3.29

type GetAssetArgs struct {
	Url string
}

func (*GetAssetArgs) DecodeFields added in v0.3.29

func (m *GetAssetArgs) DecodeFields(r model.FieldReader)

func (*GetAssetArgs) EncodeFields added in v0.3.29

func (m *GetAssetArgs) EncodeFields(w model.FieldWriter)

func (*GetAssetArgs) IsNil added in v0.3.29

func (m *GetAssetArgs) IsNil() bool

func (*GetAssetArgs) ModelName added in v0.3.29

func (m *GetAssetArgs) ModelName() string

func (*GetAssetArgs) Pointers added in v0.3.29

func (m *GetAssetArgs) Pointers() []any

func (*GetAssetArgs) Schema added in v0.3.29

func (m *GetAssetArgs) Schema() []model.Field

func (*GetAssetArgs) Validate added in v0.3.29

func (m *GetAssetArgs) Validate(action byte) error

type GetAssetArgsList added in v0.3.29

type GetAssetArgsList []*GetAssetArgs

func (*GetAssetArgsList) Append added in v0.3.29

func (s *GetAssetArgsList) Append() model.Fielder

func (*GetAssetArgsList) At added in v0.3.29

func (s *GetAssetArgsList) At(i int) model.Fielder

func (*GetAssetArgsList) DecodeFields added in v0.3.29

func (s *GetAssetArgsList) DecodeFields(_ model.FieldReader)

func (*GetAssetArgsList) EncodeFields added in v0.3.29

func (s *GetAssetArgsList) EncodeFields(_ model.FieldWriter)

func (*GetAssetArgsList) IsNil added in v0.3.29

func (s *GetAssetArgsList) IsNil() bool

func (*GetAssetArgsList) Len added in v0.3.29

func (s *GetAssetArgsList) Len() int

func (*GetAssetArgsList) Pointers added in v0.3.29

func (s *GetAssetArgsList) Pointers() []any

func (*GetAssetArgsList) Schema added in v0.3.29

func (s *GetAssetArgsList) Schema() []model.Field

type GetConsoleArgs added in v0.3.19

type GetConsoleArgs struct {
	Lines int64
}

func (*GetConsoleArgs) DecodeFields added in v0.3.26

func (m *GetConsoleArgs) DecodeFields(r model.FieldReader)

func (*GetConsoleArgs) EncodeFields added in v0.3.26

func (m *GetConsoleArgs) EncodeFields(w model.FieldWriter)

func (*GetConsoleArgs) IsNil added in v0.3.26

func (m *GetConsoleArgs) IsNil() bool

func (*GetConsoleArgs) ModelName added in v0.3.25

func (m *GetConsoleArgs) ModelName() string

func (*GetConsoleArgs) Pointers added in v0.3.19

func (m *GetConsoleArgs) Pointers() []any

func (*GetConsoleArgs) Schema added in v0.3.19

func (m *GetConsoleArgs) Schema() []model.Field

func (*GetConsoleArgs) Validate added in v0.3.19

func (m *GetConsoleArgs) Validate(action byte) error

type GetConsoleArgsList added in v0.3.25

type GetConsoleArgsList []*GetConsoleArgs

func (*GetConsoleArgsList) Append added in v0.3.25

func (s *GetConsoleArgsList) Append() model.Fielder

func (*GetConsoleArgsList) At added in v0.3.25

func (*GetConsoleArgsList) DecodeFields added in v0.3.26

func (s *GetConsoleArgsList) DecodeFields(_ model.FieldReader)

func (*GetConsoleArgsList) EncodeFields added in v0.3.26

func (s *GetConsoleArgsList) EncodeFields(_ model.FieldWriter)

func (*GetConsoleArgsList) IsNil added in v0.3.26

func (s *GetConsoleArgsList) IsNil() bool

func (*GetConsoleArgsList) Len added in v0.3.25

func (s *GetConsoleArgsList) Len() int

func (*GetConsoleArgsList) Pointers added in v0.3.25

func (s *GetConsoleArgsList) Pointers() []any

func (*GetConsoleArgsList) Schema added in v0.3.25

func (s *GetConsoleArgsList) Schema() []model.Field

type GetContentArgs added in v0.3.19

type GetContentArgs struct {
}

func (*GetContentArgs) DecodeFields added in v0.3.26

func (m *GetContentArgs) DecodeFields(r model.FieldReader)

func (*GetContentArgs) EncodeFields added in v0.3.26

func (m *GetContentArgs) EncodeFields(w model.FieldWriter)

func (*GetContentArgs) IsNil added in v0.3.26

func (m *GetContentArgs) IsNil() bool

func (*GetContentArgs) ModelName added in v0.3.25

func (m *GetContentArgs) ModelName() string

func (*GetContentArgs) Pointers added in v0.3.19

func (m *GetContentArgs) Pointers() []any

func (*GetContentArgs) Schema added in v0.3.19

func (m *GetContentArgs) Schema() []model.Field

func (*GetContentArgs) Validate added in v0.3.19

func (m *GetContentArgs) Validate(action byte) error

type GetContentArgsList added in v0.3.25

type GetContentArgsList []*GetContentArgs

func (*GetContentArgsList) Append added in v0.3.25

func (s *GetContentArgsList) Append() model.Fielder

func (*GetContentArgsList) At added in v0.3.25

func (*GetContentArgsList) DecodeFields added in v0.3.26

func (s *GetContentArgsList) DecodeFields(_ model.FieldReader)

func (*GetContentArgsList) EncodeFields added in v0.3.26

func (s *GetContentArgsList) EncodeFields(_ model.FieldWriter)

func (*GetContentArgsList) IsNil added in v0.3.26

func (s *GetContentArgsList) IsNil() bool

func (*GetContentArgsList) Len added in v0.3.25

func (s *GetContentArgsList) Len() int

func (*GetContentArgsList) Pointers added in v0.3.25

func (s *GetContentArgsList) Pointers() []any

func (*GetContentArgsList) Schema added in v0.3.25

func (s *GetContentArgsList) Schema() []model.Field

type GetErrorsArgs added in v0.3.19

type GetErrorsArgs struct {
	Limit int64
}

func (*GetErrorsArgs) DecodeFields added in v0.3.26

func (m *GetErrorsArgs) DecodeFields(r model.FieldReader)

func (*GetErrorsArgs) EncodeFields added in v0.3.26

func (m *GetErrorsArgs) EncodeFields(w model.FieldWriter)

func (*GetErrorsArgs) IsNil added in v0.3.26

func (m *GetErrorsArgs) IsNil() bool

func (*GetErrorsArgs) ModelName added in v0.3.25

func (m *GetErrorsArgs) ModelName() string

func (*GetErrorsArgs) Pointers added in v0.3.19

func (m *GetErrorsArgs) Pointers() []any

func (*GetErrorsArgs) Schema added in v0.3.19

func (m *GetErrorsArgs) Schema() []model.Field

func (*GetErrorsArgs) Validate added in v0.3.19

func (m *GetErrorsArgs) Validate(action byte) error

type GetErrorsArgsList added in v0.3.25

type GetErrorsArgsList []*GetErrorsArgs

func (*GetErrorsArgsList) Append added in v0.3.25

func (s *GetErrorsArgsList) Append() model.Fielder

func (*GetErrorsArgsList) At added in v0.3.25

func (*GetErrorsArgsList) DecodeFields added in v0.3.26

func (s *GetErrorsArgsList) DecodeFields(_ model.FieldReader)

func (*GetErrorsArgsList) EncodeFields added in v0.3.26

func (s *GetErrorsArgsList) EncodeFields(_ model.FieldWriter)

func (*GetErrorsArgsList) IsNil added in v0.3.26

func (s *GetErrorsArgsList) IsNil() bool

func (*GetErrorsArgsList) Len added in v0.3.25

func (s *GetErrorsArgsList) Len() int

func (*GetErrorsArgsList) Pointers added in v0.3.25

func (s *GetErrorsArgsList) Pointers() []any

func (*GetErrorsArgsList) Schema added in v0.3.25

func (s *GetErrorsArgsList) Schema() []model.Field

type GetNetworkLogsArgs added in v0.3.19

type GetNetworkLogsArgs struct {
	Filter string
	Limit  int64
}

func (*GetNetworkLogsArgs) DecodeFields added in v0.3.26

func (m *GetNetworkLogsArgs) DecodeFields(r model.FieldReader)

func (*GetNetworkLogsArgs) EncodeFields added in v0.3.26

func (m *GetNetworkLogsArgs) EncodeFields(w model.FieldWriter)

func (*GetNetworkLogsArgs) IsNil added in v0.3.26

func (m *GetNetworkLogsArgs) IsNil() bool

func (*GetNetworkLogsArgs) ModelName added in v0.3.25

func (m *GetNetworkLogsArgs) ModelName() string

func (*GetNetworkLogsArgs) Pointers added in v0.3.19

func (m *GetNetworkLogsArgs) Pointers() []any

func (*GetNetworkLogsArgs) Schema added in v0.3.19

func (m *GetNetworkLogsArgs) Schema() []model.Field

func (*GetNetworkLogsArgs) Validate added in v0.3.19

func (m *GetNetworkLogsArgs) Validate(action byte) error

type GetNetworkLogsArgsList added in v0.3.25

type GetNetworkLogsArgsList []*GetNetworkLogsArgs

func (*GetNetworkLogsArgsList) Append added in v0.3.25

func (s *GetNetworkLogsArgsList) Append() model.Fielder

func (*GetNetworkLogsArgsList) At added in v0.3.25

func (*GetNetworkLogsArgsList) DecodeFields added in v0.3.26

func (s *GetNetworkLogsArgsList) DecodeFields(_ model.FieldReader)

func (*GetNetworkLogsArgsList) EncodeFields added in v0.3.26

func (s *GetNetworkLogsArgsList) EncodeFields(_ model.FieldWriter)

func (*GetNetworkLogsArgsList) IsNil added in v0.3.26

func (s *GetNetworkLogsArgsList) IsNil() bool

func (*GetNetworkLogsArgsList) Len added in v0.3.25

func (s *GetNetworkLogsArgsList) Len() int

func (*GetNetworkLogsArgsList) Pointers added in v0.3.25

func (s *GetNetworkLogsArgsList) Pointers() []any

func (*GetNetworkLogsArgsList) Schema added in v0.3.25

func (s *GetNetworkLogsArgsList) Schema() []model.Field

type GetPerformanceArgs added in v0.3.19

type GetPerformanceArgs struct {
}

func (*GetPerformanceArgs) DecodeFields added in v0.3.26

func (m *GetPerformanceArgs) DecodeFields(r model.FieldReader)

func (*GetPerformanceArgs) EncodeFields added in v0.3.26

func (m *GetPerformanceArgs) EncodeFields(w model.FieldWriter)

func (*GetPerformanceArgs) IsNil added in v0.3.26

func (m *GetPerformanceArgs) IsNil() bool

func (*GetPerformanceArgs) ModelName added in v0.3.25

func (m *GetPerformanceArgs) ModelName() string

func (*GetPerformanceArgs) Pointers added in v0.3.19

func (m *GetPerformanceArgs) Pointers() []any

func (*GetPerformanceArgs) Schema added in v0.3.19

func (m *GetPerformanceArgs) Schema() []model.Field

func (*GetPerformanceArgs) Validate added in v0.3.19

func (m *GetPerformanceArgs) Validate(action byte) error

type GetPerformanceArgsList added in v0.3.25

type GetPerformanceArgsList []*GetPerformanceArgs

func (*GetPerformanceArgsList) Append added in v0.3.25

func (s *GetPerformanceArgsList) Append() model.Fielder

func (*GetPerformanceArgsList) At added in v0.3.25

func (*GetPerformanceArgsList) DecodeFields added in v0.3.26

func (s *GetPerformanceArgsList) DecodeFields(_ model.FieldReader)

func (*GetPerformanceArgsList) EncodeFields added in v0.3.26

func (s *GetPerformanceArgsList) EncodeFields(_ model.FieldWriter)

func (*GetPerformanceArgsList) IsNil added in v0.3.26

func (s *GetPerformanceArgsList) IsNil() bool

func (*GetPerformanceArgsList) Len added in v0.3.25

func (s *GetPerformanceArgsList) Len() int

func (*GetPerformanceArgsList) Pointers added in v0.3.25

func (s *GetPerformanceArgsList) Pointers() []any

func (*GetPerformanceArgsList) Schema added in v0.3.25

func (s *GetPerformanceArgsList) Schema() []model.Field

type GetSourceArgs added in v0.3.29

type GetSourceArgs struct {
	Selector string
}

func (*GetSourceArgs) DecodeFields added in v0.3.29

func (m *GetSourceArgs) DecodeFields(r model.FieldReader)

func (*GetSourceArgs) EncodeFields added in v0.3.29

func (m *GetSourceArgs) EncodeFields(w model.FieldWriter)

func (*GetSourceArgs) IsNil added in v0.3.29

func (m *GetSourceArgs) IsNil() bool

func (*GetSourceArgs) ModelName added in v0.3.29

func (m *GetSourceArgs) ModelName() string

func (*GetSourceArgs) Pointers added in v0.3.29

func (m *GetSourceArgs) Pointers() []any

func (*GetSourceArgs) Schema added in v0.3.29

func (m *GetSourceArgs) Schema() []model.Field

func (*GetSourceArgs) Validate added in v0.3.29

func (m *GetSourceArgs) Validate(action byte) error

type GetSourceArgsList added in v0.3.29

type GetSourceArgsList []*GetSourceArgs

func (*GetSourceArgsList) Append added in v0.3.29

func (s *GetSourceArgsList) Append() model.Fielder

func (*GetSourceArgsList) At added in v0.3.29

func (*GetSourceArgsList) DecodeFields added in v0.3.29

func (s *GetSourceArgsList) DecodeFields(_ model.FieldReader)

func (*GetSourceArgsList) EncodeFields added in v0.3.29

func (s *GetSourceArgsList) EncodeFields(_ model.FieldWriter)

func (*GetSourceArgsList) IsNil added in v0.3.29

func (s *GetSourceArgsList) IsNil() bool

func (*GetSourceArgsList) Len added in v0.3.29

func (s *GetSourceArgsList) Len() int

func (*GetSourceArgsList) Pointers added in v0.3.29

func (s *GetSourceArgsList) Pointers() []any

func (*GetSourceArgsList) Schema added in v0.3.29

func (s *GetSourceArgsList) Schema() []model.Field

type GetStorageArgs added in v0.3.29

type GetStorageArgs struct {
	Type string
}

func (*GetStorageArgs) DecodeFields added in v0.3.29

func (m *GetStorageArgs) DecodeFields(r model.FieldReader)

func (*GetStorageArgs) EncodeFields added in v0.3.29

func (m *GetStorageArgs) EncodeFields(w model.FieldWriter)

func (*GetStorageArgs) IsNil added in v0.3.29

func (m *GetStorageArgs) IsNil() bool

func (*GetStorageArgs) ModelName added in v0.3.29

func (m *GetStorageArgs) ModelName() string

func (*GetStorageArgs) Pointers added in v0.3.29

func (m *GetStorageArgs) Pointers() []any

func (*GetStorageArgs) Schema added in v0.3.29

func (m *GetStorageArgs) Schema() []model.Field

func (*GetStorageArgs) Validate added in v0.3.29

func (m *GetStorageArgs) Validate(action byte) error

type GetStorageArgsList added in v0.3.29

type GetStorageArgsList []*GetStorageArgs

func (*GetStorageArgsList) Append added in v0.3.29

func (s *GetStorageArgsList) Append() model.Fielder

func (*GetStorageArgsList) At added in v0.3.29

func (*GetStorageArgsList) DecodeFields added in v0.3.29

func (s *GetStorageArgsList) DecodeFields(_ model.FieldReader)

func (*GetStorageArgsList) EncodeFields added in v0.3.29

func (s *GetStorageArgsList) EncodeFields(_ model.FieldWriter)

func (*GetStorageArgsList) IsNil added in v0.3.29

func (s *GetStorageArgsList) IsNil() bool

func (*GetStorageArgsList) Len added in v0.3.29

func (s *GetStorageArgsList) Len() int

func (*GetStorageArgsList) Pointers added in v0.3.29

func (s *GetStorageArgsList) Pointers() []any

func (*GetStorageArgsList) Schema added in v0.3.29

func (s *GetStorageArgsList) Schema() []model.Field

type GetStylesArgs added in v0.3.29

type GetStylesArgs struct {
	Selector string
	Sheet    int64
}

func (*GetStylesArgs) DecodeFields added in v0.3.29

func (m *GetStylesArgs) DecodeFields(r model.FieldReader)

func (*GetStylesArgs) EncodeFields added in v0.3.29

func (m *GetStylesArgs) EncodeFields(w model.FieldWriter)

func (*GetStylesArgs) IsNil added in v0.3.29

func (m *GetStylesArgs) IsNil() bool

func (*GetStylesArgs) ModelName added in v0.3.29

func (m *GetStylesArgs) ModelName() string

func (*GetStylesArgs) Pointers added in v0.3.29

func (m *GetStylesArgs) Pointers() []any

func (*GetStylesArgs) Schema added in v0.3.29

func (m *GetStylesArgs) Schema() []model.Field

func (*GetStylesArgs) Validate added in v0.3.29

func (m *GetStylesArgs) Validate(action byte) error

type GetStylesArgsList added in v0.3.29

type GetStylesArgsList []*GetStylesArgs

func (*GetStylesArgsList) Append added in v0.3.29

func (s *GetStylesArgsList) Append() model.Fielder

func (*GetStylesArgsList) At added in v0.3.29

func (*GetStylesArgsList) DecodeFields added in v0.3.29

func (s *GetStylesArgsList) DecodeFields(_ model.FieldReader)

func (*GetStylesArgsList) EncodeFields added in v0.3.29

func (s *GetStylesArgsList) EncodeFields(_ model.FieldWriter)

func (*GetStylesArgsList) IsNil added in v0.3.29

func (s *GetStylesArgsList) IsNil() bool

func (*GetStylesArgsList) Len added in v0.3.29

func (s *GetStylesArgsList) Len() int

func (*GetStylesArgsList) Pointers added in v0.3.29

func (s *GetStylesArgsList) Pointers() []any

func (*GetStylesArgsList) Schema added in v0.3.29

func (s *GetStylesArgsList) Schema() []model.Field

type InspectElementArgs added in v0.3.19

type InspectElementArgs struct {
	Selector string
}

func (*InspectElementArgs) DecodeFields added in v0.3.26

func (m *InspectElementArgs) DecodeFields(r model.FieldReader)

func (*InspectElementArgs) EncodeFields added in v0.3.26

func (m *InspectElementArgs) EncodeFields(w model.FieldWriter)

func (*InspectElementArgs) IsNil added in v0.3.26

func (m *InspectElementArgs) IsNil() bool

func (*InspectElementArgs) ModelName added in v0.3.25

func (m *InspectElementArgs) ModelName() string

func (*InspectElementArgs) Pointers added in v0.3.19

func (m *InspectElementArgs) Pointers() []any

func (*InspectElementArgs) Schema added in v0.3.19

func (m *InspectElementArgs) Schema() []model.Field

func (*InspectElementArgs) Validate added in v0.3.19

func (m *InspectElementArgs) Validate(action byte) error

type InspectElementArgsList added in v0.3.25

type InspectElementArgsList []*InspectElementArgs

func (*InspectElementArgsList) Append added in v0.3.25

func (s *InspectElementArgsList) Append() model.Fielder

func (*InspectElementArgsList) At added in v0.3.25

func (*InspectElementArgsList) DecodeFields added in v0.3.26

func (s *InspectElementArgsList) DecodeFields(_ model.FieldReader)

func (*InspectElementArgsList) EncodeFields added in v0.3.26

func (s *InspectElementArgsList) EncodeFields(_ model.FieldWriter)

func (*InspectElementArgsList) IsNil added in v0.3.26

func (s *InspectElementArgsList) IsNil() bool

func (*InspectElementArgsList) Len added in v0.3.25

func (s *InspectElementArgsList) Len() int

func (*InspectElementArgsList) Pointers added in v0.3.25

func (s *InspectElementArgsList) Pointers() []any

func (*InspectElementArgsList) Schema added in v0.3.25

func (s *InspectElementArgsList) Schema() []model.Field

type InterceptRequestArgs added in v0.3.29

type InterceptRequestArgs struct {
	Action string
	Filter string
	Limit  int64
}

func (*InterceptRequestArgs) DecodeFields added in v0.3.29

func (m *InterceptRequestArgs) DecodeFields(r model.FieldReader)

func (*InterceptRequestArgs) EncodeFields added in v0.3.29

func (m *InterceptRequestArgs) EncodeFields(w model.FieldWriter)

func (*InterceptRequestArgs) IsNil added in v0.3.29

func (m *InterceptRequestArgs) IsNil() bool

func (*InterceptRequestArgs) ModelName added in v0.3.29

func (m *InterceptRequestArgs) ModelName() string

func (*InterceptRequestArgs) Pointers added in v0.3.29

func (m *InterceptRequestArgs) Pointers() []any

func (*InterceptRequestArgs) Schema added in v0.3.29

func (m *InterceptRequestArgs) Schema() []model.Field

func (*InterceptRequestArgs) Validate added in v0.3.29

func (m *InterceptRequestArgs) Validate(action byte) error

type InterceptRequestArgsList added in v0.3.29

type InterceptRequestArgsList []*InterceptRequestArgs

func (*InterceptRequestArgsList) Append added in v0.3.29

func (*InterceptRequestArgsList) At added in v0.3.29

func (*InterceptRequestArgsList) DecodeFields added in v0.3.29

func (s *InterceptRequestArgsList) DecodeFields(_ model.FieldReader)

func (*InterceptRequestArgsList) EncodeFields added in v0.3.29

func (s *InterceptRequestArgsList) EncodeFields(_ model.FieldWriter)

func (*InterceptRequestArgsList) IsNil added in v0.3.29

func (s *InterceptRequestArgsList) IsNil() bool

func (*InterceptRequestArgsList) Len added in v0.3.29

func (s *InterceptRequestArgsList) Len() int

func (*InterceptRequestArgsList) Pointers added in v0.3.29

func (s *InterceptRequestArgsList) Pointers() []any

func (*InterceptRequestArgsList) Schema added in v0.3.29

func (s *InterceptRequestArgsList) Schema() []model.Field

type InterceptedRequest added in v0.3.29

type InterceptedRequest struct {
	URL          string
	Method       string
	RequestBody  string
	ResponseBody string
	Status       int
}

type JSError

type JSError struct {
	Message      string
	Source       string // File/URL where error occurred
	LineNumber   int
	ColumnNumber int
	StackTrace   string
	Timestamp    time.Time
}
type NavigateArgs struct {
	Url string
}
func (m *NavigateArgs) DecodeFields(r model.FieldReader)
func (m *NavigateArgs) EncodeFields(w model.FieldWriter)
func (m *NavigateArgs) IsNil() bool
func (m *NavigateArgs) ModelName() string
func (m *NavigateArgs) Pointers() []any
func (m *NavigateArgs) Schema() []model.Field
func (m *NavigateArgs) Validate(action byte) error
type NavigateArgsList []*NavigateArgs
func (s *NavigateArgsList) Append() model.Fielder
func (s *NavigateArgsList) At(i int) model.Fielder
func (s *NavigateArgsList) DecodeFields(_ model.FieldReader)
func (s *NavigateArgsList) EncodeFields(_ model.FieldWriter)
func (s *NavigateArgsList) IsNil() bool
func (s *NavigateArgsList) Len() int
func (s *NavigateArgsList) Pointers() []any
func (s *NavigateArgsList) Schema() []model.Field

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 OpenBrowserArgs added in v0.3.19

type OpenBrowserArgs struct {
	Port  string
	Https bool
}

func (*OpenBrowserArgs) DecodeFields added in v0.3.26

func (m *OpenBrowserArgs) DecodeFields(r model.FieldReader)

func (*OpenBrowserArgs) EncodeFields added in v0.3.26

func (m *OpenBrowserArgs) EncodeFields(w model.FieldWriter)

func (*OpenBrowserArgs) IsNil added in v0.3.26

func (m *OpenBrowserArgs) IsNil() bool

func (*OpenBrowserArgs) ModelName added in v0.3.25

func (m *OpenBrowserArgs) ModelName() string

func (*OpenBrowserArgs) Pointers added in v0.3.19

func (m *OpenBrowserArgs) Pointers() []any

func (*OpenBrowserArgs) Schema added in v0.3.19

func (m *OpenBrowserArgs) Schema() []model.Field

func (*OpenBrowserArgs) Validate added in v0.3.19

func (m *OpenBrowserArgs) Validate(action byte) error

type OpenBrowserArgsList added in v0.3.25

type OpenBrowserArgsList []*OpenBrowserArgs

func (*OpenBrowserArgsList) Append added in v0.3.25

func (s *OpenBrowserArgsList) Append() model.Fielder

func (*OpenBrowserArgsList) At added in v0.3.25

func (*OpenBrowserArgsList) DecodeFields added in v0.3.26

func (s *OpenBrowserArgsList) DecodeFields(_ model.FieldReader)

func (*OpenBrowserArgsList) EncodeFields added in v0.3.26

func (s *OpenBrowserArgsList) EncodeFields(_ model.FieldWriter)

func (*OpenBrowserArgsList) IsNil added in v0.3.26

func (s *OpenBrowserArgsList) IsNil() bool

func (*OpenBrowserArgsList) Len added in v0.3.25

func (s *OpenBrowserArgsList) Len() int

func (*OpenBrowserArgsList) Pointers added in v0.3.25

func (s *OpenBrowserArgsList) Pointers() []any

func (*OpenBrowserArgsList) Schema added in v0.3.25

func (s *OpenBrowserArgsList) Schema() []model.Field

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 SaveScreenshotArgs added in v0.5.1

type SaveScreenshotArgs struct {
	Dir       string
	Name      string
	Selector  string
	Fullpage  bool
	Overwrite bool
}

func (*SaveScreenshotArgs) DecodeFields added in v0.5.1

func (m *SaveScreenshotArgs) DecodeFields(r model.FieldReader)

func (*SaveScreenshotArgs) EncodeFields added in v0.5.1

func (m *SaveScreenshotArgs) EncodeFields(w model.FieldWriter)

func (*SaveScreenshotArgs) IsNil added in v0.5.1

func (m *SaveScreenshotArgs) IsNil() bool

func (*SaveScreenshotArgs) ModelName added in v0.5.1

func (m *SaveScreenshotArgs) ModelName() string

func (*SaveScreenshotArgs) Pointers added in v0.5.1

func (m *SaveScreenshotArgs) Pointers() []any

func (*SaveScreenshotArgs) Schema added in v0.5.1

func (m *SaveScreenshotArgs) Schema() []model.Field

func (*SaveScreenshotArgs) Validate added in v0.5.1

func (m *SaveScreenshotArgs) Validate(action byte) error

type SaveScreenshotArgsList added in v0.5.1

type SaveScreenshotArgsList []*SaveScreenshotArgs

func (*SaveScreenshotArgsList) Append added in v0.5.1

func (s *SaveScreenshotArgsList) Append() model.Fielder

func (*SaveScreenshotArgsList) At added in v0.5.1

func (*SaveScreenshotArgsList) DecodeFields added in v0.5.1

func (s *SaveScreenshotArgsList) DecodeFields(_ model.FieldReader)

func (*SaveScreenshotArgsList) EncodeFields added in v0.5.1

func (s *SaveScreenshotArgsList) EncodeFields(_ model.FieldWriter)

func (*SaveScreenshotArgsList) IsNil added in v0.5.1

func (s *SaveScreenshotArgsList) IsNil() bool

func (*SaveScreenshotArgsList) Len added in v0.5.1

func (s *SaveScreenshotArgsList) Len() int

func (*SaveScreenshotArgsList) Pointers added in v0.5.1

func (s *SaveScreenshotArgsList) Pointers() []any

func (*SaveScreenshotArgsList) Schema added in v0.5.1

func (s *SaveScreenshotArgsList) Schema() []model.Field

type ScreenshotArgs added in v0.3.19

type ScreenshotArgs struct {
	Fullpage bool
}

func (*ScreenshotArgs) DecodeFields added in v0.3.26

func (m *ScreenshotArgs) DecodeFields(r model.FieldReader)

func (*ScreenshotArgs) EncodeFields added in v0.3.26

func (m *ScreenshotArgs) EncodeFields(w model.FieldWriter)

func (*ScreenshotArgs) IsNil added in v0.3.26

func (m *ScreenshotArgs) IsNil() bool

func (*ScreenshotArgs) ModelName added in v0.3.25

func (m *ScreenshotArgs) ModelName() string

func (*ScreenshotArgs) Pointers added in v0.3.19

func (m *ScreenshotArgs) Pointers() []any

func (*ScreenshotArgs) Schema added in v0.3.19

func (m *ScreenshotArgs) Schema() []model.Field

func (*ScreenshotArgs) Validate added in v0.3.19

func (m *ScreenshotArgs) Validate(action byte) error

type ScreenshotArgsList added in v0.3.25

type ScreenshotArgsList []*ScreenshotArgs

func (*ScreenshotArgsList) Append added in v0.3.25

func (s *ScreenshotArgsList) Append() model.Fielder

func (*ScreenshotArgsList) At added in v0.3.25

func (*ScreenshotArgsList) DecodeFields added in v0.3.26

func (s *ScreenshotArgsList) DecodeFields(_ model.FieldReader)

func (*ScreenshotArgsList) EncodeFields added in v0.3.26

func (s *ScreenshotArgsList) EncodeFields(_ model.FieldWriter)

func (*ScreenshotArgsList) IsNil added in v0.3.26

func (s *ScreenshotArgsList) IsNil() bool

func (*ScreenshotArgsList) Len added in v0.3.25

func (s *ScreenshotArgsList) Len() int

func (*ScreenshotArgsList) Pointers added in v0.3.25

func (s *ScreenshotArgsList) Pointers() []any

func (*ScreenshotArgsList) Schema added in v0.3.25

func (s *ScreenshotArgsList) Schema() []model.Field

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.

type Store added in v0.3.19

type Store interface {
	Get(key string) (string, error)
	Set(key, value string) error
}

type SwipeElementArgs added in v0.3.19

type SwipeElementArgs struct {
	Selector  string
	Direction string
	Distance  int64
}

func (*SwipeElementArgs) DecodeFields added in v0.3.26

func (m *SwipeElementArgs) DecodeFields(r model.FieldReader)

func (*SwipeElementArgs) EncodeFields added in v0.3.26

func (m *SwipeElementArgs) EncodeFields(w model.FieldWriter)

func (*SwipeElementArgs) IsNil added in v0.3.26

func (m *SwipeElementArgs) IsNil() bool

func (*SwipeElementArgs) ModelName added in v0.3.25

func (m *SwipeElementArgs) ModelName() string

func (*SwipeElementArgs) Pointers added in v0.3.19

func (m *SwipeElementArgs) Pointers() []any

func (*SwipeElementArgs) Schema added in v0.3.19

func (m *SwipeElementArgs) Schema() []model.Field

func (*SwipeElementArgs) Validate added in v0.3.19

func (m *SwipeElementArgs) Validate(action byte) error

type SwipeElementArgsList added in v0.3.25

type SwipeElementArgsList []*SwipeElementArgs

func (*SwipeElementArgsList) Append added in v0.3.25

func (s *SwipeElementArgsList) Append() model.Fielder

func (*SwipeElementArgsList) At added in v0.3.25

func (*SwipeElementArgsList) DecodeFields added in v0.3.26

func (s *SwipeElementArgsList) DecodeFields(_ model.FieldReader)

func (*SwipeElementArgsList) EncodeFields added in v0.3.26

func (s *SwipeElementArgsList) EncodeFields(_ model.FieldWriter)

func (*SwipeElementArgsList) IsNil added in v0.3.26

func (s *SwipeElementArgsList) IsNil() bool

func (*SwipeElementArgsList) Len added in v0.3.25

func (s *SwipeElementArgsList) Len() int

func (*SwipeElementArgsList) Pointers added in v0.3.25

func (s *SwipeElementArgsList) Pointers() []any

func (*SwipeElementArgsList) Schema added in v0.3.25

func (s *SwipeElementArgsList) Schema() []model.Field

type UserInterface added in v0.3.19

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

Directories

Path Synopsis
Package cdproto provides the Chrome DevTools Protocol commands, types, and events for the cdproto domain.
Package cdproto provides the Chrome DevTools Protocol commands, types, and events for the cdproto domain.
accessibility
Package accessibility provides the Chrome DevTools Protocol commands, types, and events for the Accessibility domain.
Package accessibility provides the Chrome DevTools Protocol commands, types, and events for the Accessibility domain.
animation
Package animation provides the Chrome DevTools Protocol commands, types, and events for the Animation domain.
Package animation provides the Chrome DevTools Protocol commands, types, and events for the Animation domain.
audits
Package audits provides the Chrome DevTools Protocol commands, types, and events for the Audits domain.
Package audits provides the Chrome DevTools Protocol commands, types, and events for the Audits domain.
autofill
Package autofill provides the Chrome DevTools Protocol commands, types, and events for the Autofill domain.
Package autofill provides the Chrome DevTools Protocol commands, types, and events for the Autofill domain.
backgroundservice
Package backgroundservice provides the Chrome DevTools Protocol commands, types, and events for the BackgroundService domain.
Package backgroundservice provides the Chrome DevTools Protocol commands, types, and events for the BackgroundService domain.
browser
Package browser provides the Chrome DevTools Protocol commands, types, and events for the Browser domain.
Package browser provides the Chrome DevTools Protocol commands, types, and events for the Browser domain.
cachestorage
Package cachestorage provides the Chrome DevTools Protocol commands, types, and events for the CacheStorage domain.
Package cachestorage provides the Chrome DevTools Protocol commands, types, and events for the CacheStorage domain.
cast
Package cast provides the Chrome DevTools Protocol commands, types, and events for the Cast domain.
Package cast provides the Chrome DevTools Protocol commands, types, and events for the Cast domain.
cdp
css
Package css provides the Chrome DevTools Protocol commands, types, and events for the CSS domain.
Package css provides the Chrome DevTools Protocol commands, types, and events for the CSS domain.
database
Package database provides the Chrome DevTools Protocol commands, types, and events for the Database domain.
Package database provides the Chrome DevTools Protocol commands, types, and events for the Database domain.
debugger
Package debugger provides the Chrome DevTools Protocol commands, types, and events for the Debugger domain.
Package debugger provides the Chrome DevTools Protocol commands, types, and events for the Debugger domain.
deviceaccess
Package deviceaccess provides the Chrome DevTools Protocol commands, types, and events for the DeviceAccess domain.
Package deviceaccess provides the Chrome DevTools Protocol commands, types, and events for the DeviceAccess domain.
deviceorientation
Package deviceorientation provides the Chrome DevTools Protocol commands, types, and events for the DeviceOrientation domain.
Package deviceorientation provides the Chrome DevTools Protocol commands, types, and events for the DeviceOrientation domain.
dom
Package dom provides the Chrome DevTools Protocol commands, types, and events for the DOM domain.
Package dom provides the Chrome DevTools Protocol commands, types, and events for the DOM domain.
domdebugger
Package domdebugger provides the Chrome DevTools Protocol commands, types, and events for the DOMDebugger domain.
Package domdebugger provides the Chrome DevTools Protocol commands, types, and events for the DOMDebugger domain.
domsnapshot
Package domsnapshot provides the Chrome DevTools Protocol commands, types, and events for the DOMSnapshot domain.
Package domsnapshot provides the Chrome DevTools Protocol commands, types, and events for the DOMSnapshot domain.
domstorage
Package domstorage provides the Chrome DevTools Protocol commands, types, and events for the DOMStorage domain.
Package domstorage provides the Chrome DevTools Protocol commands, types, and events for the DOMStorage domain.
emulation
Package emulation provides the Chrome DevTools Protocol commands, types, and events for the Emulation domain.
Package emulation provides the Chrome DevTools Protocol commands, types, and events for the Emulation domain.
eventbreakpoints
Package eventbreakpoints provides the Chrome DevTools Protocol commands, types, and events for the EventBreakpoints domain.
Package eventbreakpoints provides the Chrome DevTools Protocol commands, types, and events for the EventBreakpoints domain.
extensions
Package extensions provides the Chrome DevTools Protocol commands, types, and events for the Extensions domain.
Package extensions provides the Chrome DevTools Protocol commands, types, and events for the Extensions domain.
fedcm
Package fedcm provides the Chrome DevTools Protocol commands, types, and events for the FedCm domain.
Package fedcm provides the Chrome DevTools Protocol commands, types, and events for the FedCm domain.
fetch
Package fetch provides the Chrome DevTools Protocol commands, types, and events for the Fetch domain.
Package fetch provides the Chrome DevTools Protocol commands, types, and events for the Fetch domain.
har
Package har provides the Chrome DevTools Protocol commands, types, and events for the HAR domain.
Package har provides the Chrome DevTools Protocol commands, types, and events for the HAR domain.
headlessexperimental
Package headlessexperimental provides the Chrome DevTools Protocol commands, types, and events for the HeadlessExperimental domain.
Package headlessexperimental provides the Chrome DevTools Protocol commands, types, and events for the HeadlessExperimental domain.
heapprofiler
Package heapprofiler provides the Chrome DevTools Protocol commands, types, and events for the HeapProfiler domain.
Package heapprofiler provides the Chrome DevTools Protocol commands, types, and events for the HeapProfiler domain.
indexeddb
Package indexeddb provides the Chrome DevTools Protocol commands, types, and events for the IndexedDB domain.
Package indexeddb provides the Chrome DevTools Protocol commands, types, and events for the IndexedDB domain.
input
Package input provides the Chrome DevTools Protocol commands, types, and events for the Input domain.
Package input provides the Chrome DevTools Protocol commands, types, and events for the Input domain.
inspector
Package inspector provides the Chrome DevTools Protocol commands, types, and events for the Inspector domain.
Package inspector provides the Chrome DevTools Protocol commands, types, and events for the Inspector domain.
io
Package io provides the Chrome DevTools Protocol commands, types, and events for the IO domain.
Package io provides the Chrome DevTools Protocol commands, types, and events for the IO domain.
layertree
Package layertree provides the Chrome DevTools Protocol commands, types, and events for the LayerTree domain.
Package layertree provides the Chrome DevTools Protocol commands, types, and events for the LayerTree domain.
log
Package log provides the Chrome DevTools Protocol commands, types, and events for the Log domain.
Package log provides the Chrome DevTools Protocol commands, types, and events for the Log domain.
media
Package media provides the Chrome DevTools Protocol commands, types, and events for the Media domain.
Package media provides the Chrome DevTools Protocol commands, types, and events for the Media domain.
memory
Package memory provides the Chrome DevTools Protocol commands, types, and events for the Memory domain.
Package memory provides the Chrome DevTools Protocol commands, types, and events for the Memory domain.
network
Package network provides the Chrome DevTools Protocol commands, types, and events for the Network domain.
Package network provides the Chrome DevTools Protocol commands, types, and events for the Network domain.
overlay
Package overlay provides the Chrome DevTools Protocol commands, types, and events for the Overlay domain.
Package overlay provides the Chrome DevTools Protocol commands, types, and events for the Overlay domain.
page
Package page provides the Chrome DevTools Protocol commands, types, and events for the Page domain.
Package page provides the Chrome DevTools Protocol commands, types, and events for the Page domain.
performance
Package performance provides the Chrome DevTools Protocol commands, types, and events for the Performance domain.
Package performance provides the Chrome DevTools Protocol commands, types, and events for the Performance domain.
performancetimeline
Package performancetimeline provides the Chrome DevTools Protocol commands, types, and events for the PerformanceTimeline domain.
Package performancetimeline provides the Chrome DevTools Protocol commands, types, and events for the PerformanceTimeline domain.
preload
Package preload provides the Chrome DevTools Protocol commands, types, and events for the Preload domain.
Package preload provides the Chrome DevTools Protocol commands, types, and events for the Preload domain.
profiler
Package profiler provides the Chrome DevTools Protocol commands, types, and events for the Profiler domain.
Package profiler provides the Chrome DevTools Protocol commands, types, and events for the Profiler domain.
pwa
Package pwa provides the Chrome DevTools Protocol commands, types, and events for the PWA domain.
Package pwa provides the Chrome DevTools Protocol commands, types, and events for the PWA domain.
runtime
Package runtime provides the Chrome DevTools Protocol commands, types, and events for the Runtime domain.
Package runtime provides the Chrome DevTools Protocol commands, types, and events for the Runtime domain.
security
Package security provides the Chrome DevTools Protocol commands, types, and events for the Security domain.
Package security provides the Chrome DevTools Protocol commands, types, and events for the Security domain.
serviceworker
Package serviceworker provides the Chrome DevTools Protocol commands, types, and events for the ServiceWorker domain.
Package serviceworker provides the Chrome DevTools Protocol commands, types, and events for the ServiceWorker domain.
storage
Package storage provides the Chrome DevTools Protocol commands, types, and events for the Storage domain.
Package storage provides the Chrome DevTools Protocol commands, types, and events for the Storage domain.
systeminfo
Package systeminfo provides the Chrome DevTools Protocol commands, types, and events for the SystemInfo domain.
Package systeminfo provides the Chrome DevTools Protocol commands, types, and events for the SystemInfo domain.
target
Package target provides the Chrome DevTools Protocol commands, types, and events for the Target domain.
Package target provides the Chrome DevTools Protocol commands, types, and events for the Target domain.
tethering
Package tethering provides the Chrome DevTools Protocol commands, types, and events for the Tethering domain.
Package tethering provides the Chrome DevTools Protocol commands, types, and events for the Tethering domain.
tracing
Package tracing provides the Chrome DevTools Protocol commands, types, and events for the Tracing domain.
Package tracing provides the Chrome DevTools Protocol commands, types, and events for the Tracing domain.
webaudio
Package webaudio provides the Chrome DevTools Protocol commands, types, and events for the WebAudio domain.
Package webaudio provides the Chrome DevTools Protocol commands, types, and events for the WebAudio domain.
webauthn
Package webauthn provides the Chrome DevTools Protocol commands, types, and events for the WebAuthn domain.
Package webauthn provides the Chrome DevTools Protocol commands, types, and events for the WebAuthn domain.
Package chromedp is a high level Chrome DevTools Protocol client that simplifies driving browsers for scraping, unit testing, or profiling web pages using the CDP.
Package chromedp is a high level Chrome DevTools Protocol client that simplifies driving browsers for scraping, unit testing, or profiling web pages using the CDP.
device
Package device contains device emulation definitions for use with chromedp's Emulate action.
Package device contains device emulation definitions for use with chromedp's Emulate action.
kb
Package kb provides keyboard mappings for Chrome DOM Keys for use with input events.
Package kb provides keyboard mappings for Chrome DOM Keys for use with input events.
Package httphead contains utils for parsing HTTP and HTTP-grammar compatible text protocols headers.
Package httphead contains utils for parsing HTTP and HTTP-grammar compatible text protocols headers.
Package humanize converts boring ugly numbers to human-friendly strings and back.
Package humanize converts boring ugly numbers to human-friendly strings and back.
english
Package english provides utilities to generate more user-friendly English output.
Package english provides utilities to generate more user-friendly English output.
Package intern interns strings.
Package intern interns strings.
cmd/pixelmatch command
Package pool contains helpers for pooling structures distinguishable by size.
Package pool contains helpers for pooling structures distinguishable by size.
pbufio
Package pbufio contains tools for pooling bufio.Reader and bufio.Writers.
Package pbufio contains tools for pooling bufio.Reader and bufio.Writers.
pbytes
Package pbytes contains tools for pooling byte pool.
Package pbytes contains tools for pooling byte pool.
Package screenresolution is used to retrieve the current screen resolution.
Package screenresolution is used to retrieve the current screen resolution.
cmd/boottime command
ws
Package ws implements a client and server for the WebSocket protocol as specified in RFC 6455.
Package ws implements a client and server for the WebSocket protocol as specified in RFC 6455.
autobahn command
wsutil
Package wsutil provides utilities for working with WebSocket protocol.
Package wsutil provides utilities for working with WebSocket protocol.

Jump to

Keyboard shortcuts

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