use std::time::Duration;
use viewpoint_core::{Browser, DocumentLoadState};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Launching browser...");
let browser = Browser::launch()
.headless(true)
.timeout(Duration::from_secs(30))
.launch()
.await?;
println!("Browser launched successfully!");
let context = browser.new_context().await?;
println!("Created browser context: {}", context.id());
let page = context.new_page().await?;
println!("Created page with target: {}", page.target_id());
println!("\nNavigating to example.com...");
let response = page.goto("https://example.com").goto().await?;
println!("Navigation complete! URL: {}", response.url());
println!("\nNavigating to httpbin.org with DomContentLoaded wait...");
let response = page
.goto("https://httpbin.org/html")
.wait_until(DocumentLoadState::DomContentLoaded)
.timeout(Duration::from_secs(15))
.goto()
.await?;
println!("Navigation complete! URL: {}", response.url());
println!("\nNavigating with custom referer...");
let response = page
.goto("https://httpbin.org/headers")
.referer("https://google.com")
.wait_until(DocumentLoadState::Load)
.goto()
.await?;
println!("Navigation complete! URL: {}", response.url());
println!("\nClosing browser...");
browser.close().await?;
println!("Done!");
Ok(())
}