From 19dbc139a879b31ef9dee735ea96b2d7b2aa3e69 Mon Sep 17 00:00:00 2001 From: s0k0l Date: Fri, 6 Nov 2026 14:58:49 +0300 Subject: [PATCH] =?UTF-8?q?fix(tests):=20=D0=B7=D0=B0=D1=84=D0=B8=D0=BA?= =?UTF-8?q?=D1=81=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20DPR=20=D0=B2?= =?UTF-8?q?=20test=5Fcaptcha=5Fimage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Скриншот капчи снимается в физических пикселях (CSS-размер × device_scale_factor). Тест сравнивал результат с жёстко заданным (120, 40) без учёта, что profile.py при каждой новой сессии берёт случайный правдоподобный DPR из датасета browserforge — тест падал, когда выпадало DPR != 1 (например, 180×60 при DPR=1.5). Co-Authored-By: Claude Sonnet 5 --- tests/browser/test_e2e.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/browser/test_e2e.py b/tests/browser/test_e2e.py index 5379813..d38b1cf 100644 --- a/tests/browser/test_e2e.py +++ b/tests/browser/test_e2e.py @@ -264,6 +264,14 @@ def test_captcha_image(client, captcha_site, monkeypatch): import struct from twocaptcha import TwoCaptcha + # скриншот снимается в физических пикселях (CSS-размер × device_scale_factor); фиксируем DPR=1, + # иначе размер PNG зависит от случайного отпечатка browserforge (экран/DPR — #109) + monkeypatch.setattr(profile, "generate_fingerprint", lambda: { + "screen": {"width": profile.MIN_SCREEN[0], "height": profile.MIN_SCREEN[1]}, + "device_scale_factor": 1, + "canvas_seed": 1, + }) + sent = {} def fake_solve(self, **kwargs):