invisible_playwright/tests
feder-cr 29262a644e webgl: ship only the GPU buckets that pass tampering_ml + decouple render-noise seed
Cut the per-seed WebGL persona to the two renderer buckets that score clean on
FP Pro tampering_ml across seeds (AMD Radeon R9 200 Series and Intel Arc A750),
weighted 70/30, cross-vendor so the fleet isn't one fixed GPU. Every NVIDIA
bucket and the integrated/ancient Intel buckets are penalised, so they're out.

The canvas/WebGL render-image hash turned out to be the dominant tampering_ml
driver, not the attributes, so the render-noise seed (zoom.stealth.fpp.hw_seed)
is now decoupled from the identity seed and drawn from a calibrated clean pool.
Per-seed determinism and per-user diversity are preserved.

Also in this change:
- audio maxChannelCount is stereo-dominant per class (it reflects the output
  device, not the GPU; the old tables over-emitted 5.1/7.1 surround)
- route discrete Intel Arc desktop cards to a discrete-GPU class (not integrated)
- condition the whole sampled profile on the exposed GPU class via the sampler's
  evidence path, so cores/screen/storage stay coherent with the declared GPU
- apply per-named-font width factors on Windows/macOS so canvas measureText
  widths don't collapse to a single value

12/12 seeds clean on tampering_ml (worst 0.29), bot and anti-detect negative,
and the fingerprint stays identical across repeated runs of the same seed.
2026-06-14 11:53:33 +02:00
..
unit fix: humanize pref namespace + async headless cloak 2026-06-12 17:31:31 +02:00
vendor test: add fpscanner + CreepJS to the offline real-detector gate 2026-06-11 20:19:19 +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_cloak.py ci: macOS gate tolerates the runner's missing WebGL; add verify-cloak 2026-06-11 17:18:02 +02: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: add fpscanner + CreepJS to the offline real-detector gate 2026-06-11 20:19:19 +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 ci: macOS gate tolerates the runner's missing WebGL; add verify-cloak 2026-06-11 17:18:02 +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 headless: cloak on Windows/macOS, Xvfb on Linux; CI cloak + webgl-masking guards 2026-06-11 11:58:14 +02:00
test_imports.py tests: add/update tests/test_imports.py 2026-05-15 20:01:53 -07:00
test_integration.py webgl: ship only the GPU buckets that pass tampering_ml + decouple render-noise seed 2026-06-14 11:53:33 +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 fix: humanize pref namespace + async headless cloak 2026-06-12 17:31:31 +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 webgl: ship only the GPU buckets that pass tampering_ml + decouple render-noise seed 2026-06-14 11:53:33 +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 webgl: ship only the GPU buckets that pass tampering_ml + decouple render-noise seed 2026-06-14 11:53:33 +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