browsing 0.1.4

Lightweight MCP/API for browser automation: navigate, get content (text), screenshot. Parallelism via RwLock.
Documentation
//! Full integration test demonstrating browsing workflow
//!
//! This test shows the expected workflow structure for browser automation:
//! 1. Create browser with headless configuration
//! 2. Configure LLM (mock in tests)
//! 3. Create DOM processor
//! 4. Create agent with task
//! 5. Run agent to completion

#[cfg(test)]
mod integration_workflow {
    #[test]
    fn test_complete_web_automation_workflow() {
        use browsing::agent::views::AgentSettings;
        use browsing::browser::BrowserProfile;

        // Step 1: Create browser with headless configuration
        let profile = BrowserProfile {
            headless: Some(true),
            user_data_dir: None,
            allowed_domains: None,
            downloads_path: Some("/tmp/browser_downloads".into()),
            proxy: None,
        };

        // Verify profile structure
        assert_eq!(profile.headless, Some(true));
        assert!(profile.downloads_path.is_some());

        // Step 2: Configure agent settings
        let settings = AgentSettings {
            use_vision: browsing::agent::views::VisionMode::Auto,
            max_failures: 3,
            use_thinking: true,
            ..Default::default()
        };

        // Verify settings structure
        assert_eq!(settings.max_failures, 3);
        assert_eq!(settings.use_thinking, true);

        // Step 3: Validate task structure
        let task = "Navigate to https://example.com and extract main heading text".to_string();
        assert!(!task.is_empty());
        assert!(task.len() > 10);

        // Step 4: Verify max steps configuration
        let max_steps = 10u32;
        assert!(max_steps > 0);
        assert!(max_steps <= 1000);
    }
}