- Remove mkdocs files (requirements.txt, CNAME) - Add CLI documentation: build.md, release.md, php.md, run.md - Add configuration.md with full reference - Add examples/ directory with sample configurations: - go-cli-release.yaml - wails-desktop-release.yaml - php-laravel-release.yaml - linuxkit-server.yml - linuxkit-docker-format.yml - full-release.yaml - minimal-release.yaml - official-repos.yaml - Flatten existing framework docs into framework/ - Update index.md as CLI entry point Ready for VitePress integration with core-php/docs. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.6 KiB
3.6 KiB
WebView Service
The WebView service (pkg/webview) provides programmatic interaction with web content in your application windows.
Features
- JavaScript execution
- DOM manipulation
- Element interaction (click, type, select)
- Console message capture
- Screenshots
- Network request monitoring
- Performance metrics
Basic Usage
import "github.com/Snider/Core/pkg/webview"
// Create service
wv := webview.New()
// Set Wails app reference
wv.SetApp(app)
JavaScript Execution
// Execute JavaScript and get result
result, err := wv.ExecJS("main", `
document.title
`)
// Execute complex scripts
result, err := wv.ExecJS("main", `
const items = document.querySelectorAll('.item');
Array.from(items).map(el => el.textContent);
`)
DOM Interaction
Click Element
err := wv.Click("main", "#submit-button")
err := wv.Click("main", ".nav-link:first-child")
Type Text
err := wv.Type("main", "#search-input", "hello world")
Select Option
err := wv.Select("main", "#country-select", "US")
Check/Uncheck
err := wv.Check("main", "#agree-checkbox", true)
Hover
err := wv.Hover("main", ".dropdown-trigger")
Scroll
// Scroll to element
err := wv.Scroll("main", "#section-3", 0, 0)
// Scroll by coordinates
err := wv.Scroll("main", "", 0, 500)
Element Information
Query Selector
elements, err := wv.QuerySelector("main", ".list-item")
Element Info
info, err := wv.GetElementInfo("main", "#user-card")
// Returns: tag, id, classes, text, attributes, bounds
Computed Styles
styles, err := wv.GetComputedStyle("main", ".button",
[]string{"color", "background-color", "font-size"})
DOM Tree
tree, err := wv.GetDOMTree("main", 5) // max depth 5
Console Messages
// Setup console listener
wv.SetupConsoleListener()
// Inject capture script
wv.InjectConsoleCapture("main")
// Get messages
messages := wv.GetConsoleMessages("all", 100)
messages := wv.GetConsoleMessages("error", 50)
// Clear buffer
wv.ClearConsole()
// Get errors only
errors := wv.GetErrors(50)
Screenshots
// Full page screenshot (base64 PNG)
data, err := wv.Screenshot("main")
// Element screenshot
data, err := wv.ScreenshotElement("main", "#chart")
// Export as PDF
pdfData, err := wv.ExportToPDF("main", map[string]any{
"margin": 20,
})
Page Information
// Get current URL
url, err := wv.GetURL("main")
// Get page title
title, err := wv.GetTitle("main")
// Get page source
source, err := wv.GetPageSource("main")
// Navigate
err := wv.Navigate("main", "https://example.com")
Network Monitoring
// Inject network interceptor
wv.InjectNetworkInterceptor("main")
// Get captured requests
requests, err := wv.GetNetworkRequests("main", 100)
// Clear request log
wv.ClearNetworkRequests("main")
Performance Metrics
metrics, err := wv.GetPerformance("main")
// Returns: loadTime, domContentLoaded, firstPaint, etc.
Resource Listing
resources, err := wv.GetResources("main")
// Returns: scripts, stylesheets, images, fonts, etc.
Visual Debugging
// Highlight element temporarily
err := wv.Highlight("main", "#target-element", 2000) // 2 seconds
Window Listing
windows := wv.ListWindows()
for _, w := range windows {
fmt.Println(w.Name)
}
Frontend Usage
The WebView service is primarily used server-side for:
- Automated testing
- AI assistant interactions (via MCP)
- Scripted UI interactions
For normal frontend development, use standard DOM APIs directly.