File size: 1,477 Bytes
95f8c4b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
"""Unit tests for direct Chromium process launcher and args."""

from __future__ import annotations

import os

from aistudio_api.infrastructure.browser.browser_engine import (
    _derive_stable_fingerprint_seed,
    build_chromium_args,
    find_chromium_executable,
)


def test_derive_stable_fingerprint_seed_is_deterministic():
    seed1 = _derive_stable_fingerprint_seed("/tmp/profile1")
    seed2 = _derive_stable_fingerprint_seed("/tmp/profile1")
    seed3 = _derive_stable_fingerprint_seed("/tmp/profile2")

    assert seed1 == seed2
    assert seed1 != seed3
    assert 10000 <= seed1 <= 99999


def test_build_chromium_args_contains_stealth_and_mobile_optimizations():
    args = build_chromium_args(
        port=9222,
        user_data_dir="/tmp/test_profile",
        headless=True,
    )

    args_str = " ".join(args)
    assert "--remote-debugging-port=9222" in args_str
    assert "--user-data-dir=/tmp/test_profile" in args_str
    assert "--no-sandbox" in args_str
    assert "--disable-dev-shm-usage" in args_str
    assert "--disable-gpu" in args_str
    assert "--in-process-gpu" in args_str
    assert "--js-flags=--max-old-space-size=128" in args_str
    assert "--force-webrtc-ip-handling-policy=disable_non_proxied_udp" in args_str
    assert "--headless=new" in args_str


def test_find_chromium_executable_locates_binary():
    executable = find_chromium_executable()
    assert os.path.exists(executable)
    assert os.access(executable, os.X_OK)