fix(banner): Footer-Erreichbarkeit prüfen — kein HIGH/MEDIUM bei nicht-blockierendem Banner

User-Bug (BMW): Banner überlagert, aber Footer-Links (Impressum/DSE) bleiben
klickbar → fehlender In-Banner-Link ist dann nur Best Practice, kein Verstoß.
banner_text_checker misst per Playwright-trial-Klick, ob der Footer-Impressum/
DSE-Link trotz Banner erreichbar ist: erreichbar → LOW/Best-Practice (+ Borlabs-
Consent-Historie-Hinweis), blockiert → HIGH/MEDIUM wie bisher. browser_cross_
finding: redundante (nicht footer-bewusste) "Link im Banner fehlt"-Befunde raus.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Benjamin Admin
2026-06-13 15:57:07 +02:00
parent d1ea54b378
commit 8d0da710d5
2 changed files with 61 additions and 32 deletions
@@ -126,24 +126,10 @@ def build_cross_findings(matrix: dict | None) -> list[dict]:
"vom Tracking-Schutz des Browsers.",
})
# ── Oberfläche (Banner-Links) durchgängig fehlend ────────────────────
if all(not _s(r).get("surface", {}).get("has_impressum_link") for r in data):
out.append({
"title": "Impressum-Link im Banner fehlt (alle Browser)",
"detail": "In keiner Engine ist aus dem Banner ein Impressum "
"erreichbar.",
"severity": "MEDIUM", "affected": _labels(data),
"measure": "Impressum-Link im Banner ergänzen (§ 5 DDG).",
})
if all(not _s(r).get("surface", {}).get("has_dse_link") for r in data):
out.append({
"title": "Datenschutz-Link im Banner fehlt (alle Browser)",
"detail": "In keiner Engine ist aus dem Banner die "
"Datenschutzerklärung erreichbar.",
"severity": "MEDIUM", "affected": _labels(data),
"measure": "Link zur Datenschutzerklärung im Banner ergänzen "
"(Art. 13 DSGVO).",
})
# Hinweis: Impressum/DSE-Link-im-Banner wird NICHT mehr hier als pauschales
# MEDIUM geflaggt. Der per-Engine-Check (banner_text_checker) ist footer-
# bewusst: ist der Footer-Link trotz Banner erreichbar → LOW/Best Practice
# statt Verstoss. Doppel-/Falsch-Flag hier vermieden.
# ── Coverage-Hinweis: nicht getestete Browser ────────────────────────
if missing: