use viewpoint_core::DocumentLoadState;
use viewpoint_test::{TestHarness, expect, expect_page};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
tracing_subscriber::fmt().with_env_filter("info").init();
println!("=== Viewpoint Test Framework Example ===\n");
println!("1. Creating test harness...");
let harness = TestHarness::new().await?;
let page = harness.page();
println!(" Browser launched, page ready.\n");
println!("2. Navigating to example.com...");
page.goto("https://example.com")
.wait_until(DocumentLoadState::DomContentLoaded)
.goto()
.await?;
println!(" Navigation complete.\n");
println!("3. Verifying page title...");
expect_page(page).to_have_title("Example Domain").await?;
println!(" Title verified: 'Example Domain'\n");
println!("4. Finding heading element...");
let heading = page.locator("h1");
expect(&heading).to_be_visible().await?;
println!(" Heading is visible.\n");
println!("5. Verifying heading text...");
expect(&heading).to_have_text("Example Domain").await?;
println!(" Heading text verified.\n");
println!("6. Verifying page URL...");
expect_page(page)
.to_have_url_containing("example.com")
.await?;
println!(" URL contains 'example.com'.\n");
println!("7. Reading text content...");
let text = heading.text_content().await?;
println!(" Heading text: {text:?}\n");
println!("8. Counting paragraph elements...");
let paragraphs = page.locator("p");
let count = paragraphs.count().await?;
println!(" Found {count} paragraph(s).\n");
println!("9. Test complete! Browser will close automatically.\n");
println!("=== Example Complete ===");
Ok(())
}