#![cfg(feature = "integration")]
mod common;
use viewpoint_core::ProxyConfig;
#[tokio::test]
async fn test_context_with_proxy() {
common::init_tracing();
let browser = common::launch_browser().await;
let context = browser
.new_context_builder()
.proxy(ProxyConfig::new("http://proxy.example.com:8080"))
.build()
.await
.expect("Failed to create context with proxy");
assert!(!context.is_closed());
browser.close().await.expect("Failed to close browser");
}
#[tokio::test]
async fn test_context_with_proxy_credentials() {
common::init_tracing();
let browser = common::launch_browser().await;
let context = browser
.new_context_builder()
.proxy(
ProxyConfig::new("http://proxy.example.com:8080")
.credentials("user", "password"),
)
.build()
.await
.expect("Failed to create context with proxy credentials");
assert!(!context.is_closed());
browser.close().await.expect("Failed to close browser");
}
#[tokio::test]
async fn test_context_with_socks5_proxy() {
common::init_tracing();
let browser = common::launch_browser().await;
let context = browser
.new_context_builder()
.proxy(ProxyConfig::new("socks5://proxy.example.com:1080"))
.build()
.await
.expect("Failed to create context with SOCKS5 proxy");
assert!(!context.is_closed());
browser.close().await.expect("Failed to close browser");
}
#[tokio::test]
async fn test_context_with_proxy_bypass() {
common::init_tracing();
let browser = common::launch_browser().await;
let context = browser
.new_context_builder()
.proxy(
ProxyConfig::new("http://proxy.example.com:8080")
.bypass("localhost,127.0.0.1,.internal.example.com"),
)
.build()
.await
.expect("Failed to create context with proxy bypass");
assert!(!context.is_closed());
browser.close().await.expect("Failed to close browser");
}
#[tokio::test]
async fn test_context_with_full_proxy_config() {
common::init_tracing();
let browser = common::launch_browser().await;
let context = browser
.new_context_builder()
.proxy(
ProxyConfig::new("http://proxy.example.com:8080")
.credentials("user", "password")
.bypass("localhost,127.0.0.1"),
)
.build()
.await
.expect("Failed to create context with full proxy config");
let page = context.new_page().await.expect("Failed to create page");
assert!(!page.is_closed());
browser.close().await.expect("Failed to close browser");
}
#[tokio::test]
async fn test_multiple_contexts_with_different_proxies() {
common::init_tracing();
let browser = common::launch_browser().await;
let context1 = browser
.new_context_builder()
.proxy(ProxyConfig::new("http://proxy1.example.com:8080"))
.build()
.await
.expect("Failed to create context1");
let context2 = browser
.new_context_builder()
.proxy(ProxyConfig::new("http://proxy2.example.com:8080"))
.build()
.await
.expect("Failed to create context2");
let context3 = browser
.new_context()
.await
.expect("Failed to create context3");
assert!(!context1.is_closed());
assert!(!context2.is_closed());
assert!(!context3.is_closed());
browser.close().await.expect("Failed to close browser");
}