feat(b17): Akkordeon-Expansion im Audit-Walk (Stufe 2, #7)
Nach jedem Compliance-Doc-Aufruf werden alle Akkordeons /
<details> / [aria-expanded=false] / Trigger-Patterns geklickt
und im Video aufgenommen.
- _expand_accordions(): 7 Selektor-Patterns, max 25 Expansionen
pro Seite, Dedup nach inner_text (verhindert Endlos-Loops bei
nesteten Strukturen). Scroll-into-view + click + 400ms warten
sicher dass das Klick-Result im Video erfasst wird.
- _visit_link(): Returns (nav_event, expand_event) Tuple. Expand
läuft nur bei HTTP 2xx + ohne nav-error.
- 1500ms post-expand wait gibt der Kamera Zeit, den finalen
Zustand mitzuschneiden.
Backend B17 render: "expand_accordions" Action wird als "5
Akkordeon/Details-Sektion(en) entfaltet" gerendert. Bei 0:
"Keine Akkordeons gefunden" (neutraler Hinweis, kein Fehler).
Real-World-Smoke gegen Elli:
Impressum: 0 Akkordeons (keine)
Datenschutzerkl: 5 Akkordeons aufgeklappt
Nutzungsbeding: 0 Akkordeons
Video-Größe verdoppelt sich (581 KB → 1.14 MB) — Reviewer sieht
jetzt den vollen DSE-Vendor-Tabellen-Inhalt im Video.
Tests: 10/10 grün (+2 für Akkordeon-Render-Pfade).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -98,6 +98,10 @@ def _render(walk: dict) -> str:
|
||||
detail = "Kein Accept-Button gefunden"
|
||||
elif act == "discover_footer_links":
|
||||
detail = f"{a.get('count', 0)} Compliance-Links im Footer"
|
||||
elif act == "expand_accordions":
|
||||
n = a.get("expanded", 0)
|
||||
detail = (f"{n} Akkordeon/Details-Sektion(en) entfaltet"
|
||||
if n else "Keine Akkordeons gefunden")
|
||||
rows.append(
|
||||
f"<tr><td style='padding:4px 8px;font-family:monospace;"
|
||||
f"color:#475569;'>{html.escape(ts)}</td>"
|
||||
|
||||
Reference in New Issue
Block a user