Skip to main content

screenshot_demo/
screenshot_demo.rs

1use anyhow::Result;
2use headless_engine::browser::tab::BrowserTab;
3use headless_engine::network::fingerprint::DeviceProfile;
4use std::fs;
5
6#[tokio::main]
7async fn main() -> Result<()> {
8    println!(">>> Testing Pure-Rust Vector SVG & Wireframe Screenshot Rendering...");
9
10    let mut tab = BrowserTab::with_profile(DeviceProfile::ChromeWindows)?;
11    tab.navigate("https://news.ycombinator.com/").await?;
12
13    let shot = tab.screenshot().expect("Expected screenshot");
14    println!("  * Dimensions: {}x{}", shot.width, shot.height);
15    println!("  * Elements Rendered: {}", shot.element_count);
16    println!("  * SVG Payload Size: {} bytes", shot.svg.len());
17
18    // Save SVG file
19    fs::write("screenshot.svg", &shot.svg)?;
20    println!("  * Saved screenshot to 'screenshot.svg'");
21
22    // Print text wireframe preview
23    println!("\n>>> ASCII WIREFRAME PREVIEW (FOR AGENT VISION TOKENS):");
24    let preview: String = shot
25        .layout_wireframe
26        .lines()
27        .take(18)
28        .collect::<Vec<_>>()
29        .join("\n");
30    println!("{}", preview);
31
32    Ok(())
33}