test_youtube_screenshot/
test_youtube_screenshot.rs1use 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!("================================================================================");
9 println!(">>> REAL RASTER PNG SCREENSHOT TEST (PURE RUST RESVG + TINY-SKIA)");
10 println!("================================================================================\n");
11
12 let url = "https://www.youtube.com/results?search_query=more+suhagan";
13 println!("[1] Navigating to target URL: {}", url);
14
15 let mut tab = BrowserTab::with_profile(DeviceProfile::ChromeWindows)?;
16 let report = tab.navigate(url).await?;
17
18 println!(" * HTTP Status: {}", report.status);
19 println!(" * Final URL: {}", report.final_url);
20 println!(" * Page Title: {}", report.page_title);
21 println!(" * HTML Size: {} bytes", report.html_bytes);
22
23 let results = tab
25 .extract_search_results()
26 .expect("Expected search results");
27 println!(
28 "\n[2] Extracted Video Results Found: {}",
29 results.video_results.len()
30 );
31 for (i, v) in results.video_results.iter().take(5).enumerate() {
32 println!(" [{}] Title: {}", i + 1, v.title);
33 println!(" Channel: {} | Duration: {}", v.channel, v.duration);
34 }
35
36 println!("\n[3] Capturing Real Binary PNG Screenshot with live image assets...");
38 let shot = tab.screenshot_async().await.expect("Expected screenshot");
39 println!(" * Dimensions: {}x{}", shot.width, shot.height);
40 println!(" * Rendered Visual Elements: {}", shot.element_count);
41 println!(" * Real PNG File Size: {} bytes", shot.png_bytes.len());
42 println!(" * Base64 Data URL Prefix: {}...", &shot.png_base64[..50]);
43
44 fs::write("youtube_screenshot.png", &shot.png_bytes)?;
46 println!(" -> Successfully wrote real binary image: 'youtube_screenshot.png'");
47
48 fs::write("youtube_screenshot.svg", &shot.svg)?;
50 println!(" -> Successfully wrote vector SVG file: 'youtube_screenshot.svg'");
51
52 println!("\n================================================================================");
53 println!(">>> REAL PNG SCREENSHOT GENERATED WITHOUT CHROMIUM (<30MB RAM)!");
54 println!("================================================================================");
55
56 Ok(())
57}