Chrome DevTools Protocol client for browser automation
Find a file
Snider 900cb750cf
All checks were successful
Security Scan / security (pull_request) Successful in 10s
Test / test (pull_request) Successful in 30s
fix(console): buffer trim panic when limit < 100, add unit tests
CLAUDE.md: update error wrapping guidance to reflect coreerr.E() convention.

Console buffer trimming in both Webview.addConsoleMessage and
ConsoleWatcher.addMessage panicked with slice bounds out of range
when consoleLimit was smaller than 100. Use min(100, len) for safe
batch trimming.

Added 22 unit tests covering pure functions (FormatConsoleOutput,
containsString, findString, formatJSValue, getString), ConsoleWatcher
filter/count/handler logic, ExceptionWatcher operations, WaitAction
context handling, and buffer limit enforcement. Coverage: 3.2% → 16.1%.

DX audit findings:
- Error handling: clean (all coreerr.E(), no fmt.Errorf)
- File I/O: clean (no os.ReadFile/os.WriteFile — package uses HTTP/WS only)

Co-Authored-By: Virgil <virgil@lethean.io>
2026-03-17 08:54:22 +00:00
.core chore: add .core/ build and release configs 2026-03-06 18:52:37 +00:00
.forgejo/workflows ci: add Forgejo Actions test and security scan workflows 2026-02-23 03:28:08 +00:00
docs docs: add human-friendly documentation 2026-03-11 13:02:40 +00:00
.editorconfig chore: add Go repo norms (badges, contributing, lint, taskfile, editorconfig) 2026-02-23 06:45:50 +00:00
.gitignore chore: add .core/ and .idea/ to .gitignore 2026-03-15 10:17:50 +00:00
.golangci.yml chore: add Go repo norms (badges, contributing, lint, taskfile, editorconfig) 2026-02-23 06:45:50 +00:00
actions.go refactor: replace fmt.Errorf/errors.New with coreerr.E() 2026-03-16 21:10:49 +00:00
angular.go refactor: replace fmt.Errorf/errors.New with coreerr.E() 2026-03-16 21:10:49 +00:00
cdp.go refactor: replace fmt.Errorf/errors.New with coreerr.E() 2026-03-16 21:10:49 +00:00
CLAUDE.md fix(console): buffer trim panic when limit < 100, add unit tests 2026-03-17 08:54:22 +00:00
console.go fix(console): buffer trim panic when limit < 100, add unit tests 2026-03-17 08:54:22 +00:00
CONTRIBUTING.md chore: add Go repo norms (badges, contributing, lint, taskfile, editorconfig) 2026-02-23 06:45:50 +00:00
go.mod refactor: replace fmt.Errorf/errors.New with coreerr.E() 2026-03-16 21:10:49 +00:00
go.sum refactor: replace fmt.Errorf/errors.New with coreerr.E() 2026-03-16 21:10:49 +00:00
README.md chore: add Go repo norms (badges, contributing, lint, taskfile, editorconfig) 2026-02-23 06:45:50 +00:00
webview.go fix(console): buffer trim panic when limit < 100, add unit tests 2026-03-17 08:54:22 +00:00
webview_test.go fix(console): buffer trim panic when limit < 100, add unit tests 2026-03-17 08:54:22 +00:00

Go Reference License: EUPL-1.2 Go Version

go-webview

Chrome DevTools Protocol (CDP) client for browser automation, testing, and scraping. Connects to an externally managed Chrome or Chromium instance running with --remote-debugging-port=9222, providing navigation, DOM queries, click and type actions, console capture, JavaScript evaluation, screenshots, multi-tab support, viewport emulation, and a fluent ActionSequence builder. Includes Angular-specific helpers for Zone.js stability, router navigation, component introspection, and ngModel access.

Module: forge.lthn.ai/core/go-webview Licence: EUPL-1.2 Language: Go 1.25

Quick Start

import "forge.lthn.ai/core/go-webview"

wv, err := webview.New(webview.WithDebugURL("http://localhost:9222"))
defer wv.Close()

wv.Navigate("https://example.com")
wv.Click("#submit")
wv.Type("#input", "search term")
png, err := wv.Screenshot()

// Fluent action sequence
err = webview.NewActionSequence().
    Navigate("https://example.com").
    WaitForSelector("#login-form").
    Type("#email", "user@example.com").
    Click("#submit").
    Execute(ctx, wv)

Documentation

  • Architecture — CDP connection, DOM queries, console capture, Angular helpers, action system
  • Development Guide — prerequisites, build, test patterns, adding actions
  • Project History — completed phases, known limitations, future considerations

Build & Test

go test ./...
go vet ./...
go build ./...

Licence

European Union Public Licence 1.2 — see LICENCE for details.