Skip to main content

rotate_test/
rotate_test.rs

1//! Profile rotation with random async browsers.
2//!
3//! Run: CLAWSER_CHROME_PATH=out/Default/chrome.exe cargo run --manifest-path clawser-browser/Cargo.toml --example rotate_test
4
5use clawser_browser::Browser;
6
7#[tokio::main]
8async fn main() {
9    println!("=== Profile Rotation Test (async) ===\n");
10
11    for i in 0..3 {
12        println!("--- Browser {} (random profile) ---", i + 1);
13
14        let browser = Browser::builder().headful().random().build().await
15            .expect("failed to create browser");
16
17        let page = browser.navigate("about:blank").await.expect("navigate failed");
18
19        let cores = page.js("navigator.hardwareConcurrency.toString()").await.unwrap_or_default();
20        let screen = page.js("screen.width+'x'+screen.height").await.unwrap_or_default();
21        let tz = page.js("Intl.DateTimeFormat().resolvedOptions().timeZone").await.unwrap_or_default();
22        let langs = page.js("JSON.stringify(navigator.languages)").await.unwrap_or_default();
23        let gl = page.js(
24            "(function(){var c=document.createElement('canvas');var g=c.getContext('webgl');if(!g)return'no';var d=g.getExtension('WEBGL_debug_renderer_info');return d?g.getParameter(d.UNMASKED_RENDERER_WEBGL):'no'})()"
25        ).await.unwrap_or_default();
26
27        println!("  Cores: {}  Screen: {}", cores, screen);
28        println!("  GPU: {}", gl);
29        println!("  TZ: {}  Langs: {}", tz, langs);
30
31        browser.shutdown().await.expect("shutdown failed");
32        println!();
33    }
34
35    println!("=== DONE ===");
36}