fix(consent-tester): Edge-Case-Befunde auch im no-banner-Frühreturn
#1/#2 (kein-Banner-affirmativ) feuerte nicht, weil der no-banner-Pfad bei Zeile 220 früh zurückkehrt — vor dem Edge-Case-Block am Funktionsende. Logik in _apply_edge_case_findings extrahiert und an BEIDEN Return-Pfaden aufgerufen (Früh-Return + Ende). Damit greift #1 jetzt auf statischen Seiten. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -83,6 +83,29 @@ class ConsentTestResult:
|
||||
banner_screenshot_b64: str = ""
|
||||
|
||||
|
||||
def _apply_edge_case_findings(result) -> None:
|
||||
"""Edge-Case-Befunde nach dem Scan — an ALLEN Return-Pfaden aufrufen (auch
|
||||
im no-banner-Fruehreturn): #1/#2 kein-Banner-affirmativ (statisch / nur
|
||||
technisch notwendig → konform, inkl. Geo-Caveat) + #3 Non-Cookie-Tracking
|
||||
(Pixel/Fingerprinting; §25 gilt auch ohne Cookies)."""
|
||||
try:
|
||||
from services.banner_text_checker import (
|
||||
build_no_banner_finding, detect_non_cookie_tracking,
|
||||
build_non_cookie_tracking_finding,
|
||||
)
|
||||
if (not result.banner_detected and not result.before_violations
|
||||
and not result.before_tracking):
|
||||
result.banner_text_violations.append(
|
||||
build_no_banner_finding(result.banner_has_dse_link))
|
||||
nct = detect_non_cookie_tracking(
|
||||
(result.before_scripts or []) + (result.accept_scripts or []))
|
||||
if nct:
|
||||
result.banner_text_violations.append(
|
||||
build_non_cookie_tracking_finding(nct))
|
||||
except Exception as e:
|
||||
logger.warning("Edge-case findings skipped: %s", e)
|
||||
|
||||
|
||||
async def run_consent_test(
|
||||
url: str, wait_secs: int = 10, categories: list[str] | None = None,
|
||||
) -> ConsentTestResult:
|
||||
@@ -217,6 +240,7 @@ async def run_consent_test(
|
||||
if not banner.detected:
|
||||
logger.info("No consent banner detected — skipping Phase B/C")
|
||||
await browser.close()
|
||||
_apply_edge_case_findings(result)
|
||||
return result
|
||||
|
||||
# ── Phase B: After rejecting ─────────────────────────
|
||||
@@ -541,27 +565,7 @@ async def run_consent_test(
|
||||
len(result.category_tests), len(result.cmp_payloads),
|
||||
)
|
||||
|
||||
# Edge-Cases: kein Banner affirmativ einordnen (#1/#2) + Non-Cookie-Tracking (#3).
|
||||
try:
|
||||
from services.banner_text_checker import (
|
||||
build_no_banner_finding, detect_non_cookie_tracking,
|
||||
build_non_cookie_tracking_finding,
|
||||
)
|
||||
# #1/#2: KEIN Banner + KEIN Tracking vor Consent → konform (statisch /
|
||||
# nur technisch notwendig), nicht still "Banner fehlt". Inkl. Geo-Caveat.
|
||||
if (not result.banner_detected and not result.before_violations
|
||||
and not result.before_tracking):
|
||||
result.banner_text_violations.append(
|
||||
build_no_banner_finding(result.banner_has_dse_link))
|
||||
# #3: Pixel/Fingerprinting (cookieloses Tracking) → §25 gilt auch ohne Cookies.
|
||||
_nct = detect_non_cookie_tracking(
|
||||
(result.before_scripts or []) + (result.accept_scripts or []))
|
||||
if _nct:
|
||||
result.banner_text_violations.append(
|
||||
build_non_cookie_tracking_finding(_nct))
|
||||
except Exception as e:
|
||||
logger.warning("Edge-case findings skipped: %s", e)
|
||||
|
||||
_apply_edge_case_findings(result)
|
||||
return result
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user