invisible_playwright/tests
feder-cr e524695088 fix(webrtc): ship the validated proxy realness config + CI guards
Audit follow-up (2026-06-10), all validated before commit.

#2 WebRTC — the shipped baseline now MATCHES the manually-validated config
(behind a residential proxy: host=<uuid>.local, srflx=proxy egress, No-Leak,
gathering completes, indistinguishable from vanilla Firefox on BrowserLeaks +
CreepJS):
  - prefs baseline obfuscate_host_addresses False->True; add
    zoom.stealth.webrtc.disable_ipv6=True; drop the dead
    media.peerconnection.ice.disableIPv6 (no-op on FF150)
  - launcher auto-derives the proxy egress IP via _geo.prepare_session_geo
    (one round-trip shared with the timezone resolution) and feeds nICEr via
    STEALTHFOX_WEBRTC_PUBLIC_IP + STEALTHFOX_WEBRTC_DISABLE_IPV6 in _build_env
    (sync + async); an explicit caller env still wins. The C++ mechanisms were
    already in firefox-9 — this activates them, no rebuild.

#1 drop orphan prefs zoom.stealth.timezone + zoom.stealth.seed (read by no C++;
   the live ones are juggler.timezone.override + zoom.stealth.fpp.hw_seed).

#3 release title 'rev N' instead of 'rev firefox-N'.

CI guards (unit, leak-safe — no real proxy/creds, the kind that would have
caught this gap at zero cost):
  - shipped-baseline guard + no-orphan-prefs (test_webrtc_realness.py)
  - egress auto-derive in _build_env (test_launcher_helpers.py)
  - prepare_session_geo returns (tz, egress) (test_geo.py)
CI keeps faking 'behind a proxy' with an in-process TCP-only SOCKS5 + RFC 5737
TEST-NET IPs; real-proxy residential realness stays a LOCAL manual gate.

449 unit pass.
2026-06-10 14:30:16 +02:00
..
unit feat: public config helpers for third-party integrations (#25) 2026-05-28 17:05:22 -07:00
vendor test(e2e): run the real detectors (BotD + FingerprintJS OSS) on CI 2026-06-09 17:53:11 +02:00
conftest.py test: activate the full e2e (browser-driving) suite + add fetch --force 2026-06-09 15:40:02 +02:00
test_async_api.py test(launcher, headless, async_api): add 32 Phase 10 gap-coverage tests 2026-05-14 12:59:47 +02:00
test_build.py tests: add wheel regression — fail if wheel has duplicate zip entries 2026-05-16 10:39:40 -07:00
test_cli.py tests: add/update tests/test_cli.py 2026-05-15 20:02:00 -07:00
test_constants.py ship: bump BINARY_VERSION to firefox-9 + refuse the broken firefox-8 (audit B5) 2026-06-09 16:02:52 +02:00
test_cross_origin_iframe.py test: activate the full e2e (browser-driving) suite + add fetch --force 2026-06-09 15:40:02 +02:00
test_detectors_e2e.py test(e2e): use the full BotD + FpJS API (per-detector + components) 2026-06-09 18:15:25 +02:00
test_download.py ship: bump BINARY_VERSION to firefox-9 + refuse the broken firefox-8 (audit B5) 2026-06-09 16:02:52 +02:00
test_e2e.py test: activate the full e2e (browser-driving) suite + add fetch --force 2026-06-09 15:40:02 +02:00
test_fingerprint_consistency.py test: activate the full e2e (browser-driving) suite + add fetch --force 2026-06-09 15:40:02 +02:00
test_fingerprint_surface.py test: drop the 15 hand-rolled test_botd_* (real BotD now runs on CI) 2026-06-09 18:02:36 +02:00
test_fpforge.py tests: add/update tests/test_fpforge.py 2026-05-15 20:01:55 -07:00
test_geo.py fix(webrtc): ship the validated proxy realness config + CI guards 2026-06-10 14:30:16 +02:00
test_geoip_update.py feat: timezone="auto" resolves from any egress + weekly geoip auto-update 2026-06-06 05:16:20 +02:00
test_headless.py test(prefs, headless): add 16 Linux-specific tests for Phase 6 + 10 2026-05-14 13:21:17 +02:00
test_imports.py tests: add/update tests/test_imports.py 2026-05-15 20:01:53 -07:00
test_integration.py fix(webrtc): ship the validated proxy realness config + CI guards 2026-06-10 14:30:16 +02:00
test_launcher_config.py feat: persistent profile dir + C7 closure (firefox-5 / 0.1.6) 2026-05-21 12:19:38 -07:00
test_launcher_helpers.py fix(webrtc): ship the validated proxy realness config + CI guards 2026-06-10 14:30:16 +02:00
test_mouse.py test: stabilize 2 e2e for CI (hover wait, webrtc srflx env-skip) 2026-06-09 17:23:46 +02:00
test_network.py test(network): add 25 unit tests for Bayesian network primitives 2026-05-14 11:24:57 +02:00
test_pin.py tests: add/update tests/test_pin.py 2026-05-15 20:01:56 -07:00
test_prefs.py fix(webrtc): ship the validated proxy realness config + CI guards 2026-06-10 14:30:16 +02:00
test_profile.py test(profile): add 43 unit tests for Profile dataclass and pin system 2026-05-14 11:46:09 +02:00
test_proxy.py tests: add/update tests/test_proxy.py 2026-05-15 20:01:54 -07:00
test_proxy_socks_auth_e2e.py test(e2e): hermetic SOCKS5 auth + routing e2e (runs on CI) 2026-06-09 17:37:40 +02:00
test_recaptcha_seed.py feat: deterministic reCAPTCHA cookie pre-seed via Bayesian browsing history 2026-05-24 20:01:26 -07:00
test_release_e2e.py test: fortress coverage for download + constants + e2e 2026-05-20 12:20:11 -07:00
test_sampler.py test(sampler): add 55 unit tests for fingerprint Bayesian sampler 2026-05-14 11:35:24 +02:00
test_service_worker.py test: activate the full e2e (browser-driving) suite + add fetch --force 2026-06-09 15:40:02 +02:00
test_version.py fix: __version__ comes from package metadata; add --version flag (#24) 2026-05-27 00:18:03 -07:00
test_webrtc_realness.py fix(webrtc): ship the validated proxy realness config + CI guards 2026-06-10 14:30:16 +02:00