TUI-Tool zum automatischen Scannen von Websites auf JavaScript Console-Errors und HTTP-Fehler (404, 5xx). Eingabe ist eine Website-URL oder Sitemap-URL (XML). Bei Domain-URLs wird die Sitemap automatisch ueber robots.txt und typische Pfade gefunden. Ergebnisse werden live in einer Terminal-UI angezeigt und koennen als HTML- und JSON-Reports exportiert werden.
Keine Abhaengigkeiten noetig - kein Python, kein Git, kein Chrome.
# Linux/macOS
curl -fsSL https://raw.githubusercontent.com/michaelblaess/console-error-scanner/main/install.sh | bash
# Windows PowerShell
irm https://raw.githubusercontent.com/michaelblaess/console-error-scanner/main/install.ps1 | iexDanach ein neues Terminal oeffnen und loslegen:
console-error-scanner https://www.example.comEinfach den Installer erneut ausfuehren - erkennt vorhandene Installation und ueberschreibt.
# Linux/macOS
rm -rf ~/.console-error-scanner ~/.local/bin/console-error-scanner
# Windows PowerShell
Remove-Item -Recurse "$env:LOCALAPPDATA\console-error-scanner"| OS | Programm | Wrapper / PATH |
|---|---|---|
| Linux | ~/.console-error-scanner/ |
~/.local/bin/console-error-scanner |
| macOS | ~/.console-error-scanner/ |
~/.local/bin/console-error-scanner |
| Windows | %LOCALAPPDATA%\console-error-scanner\ |
...\bin\console-error-scanner.cmd (automatisch im PATH) |
# Nur Domain angeben - Sitemap wird automatisch gesucht
console-error-scanner https://www.example.com
# Oder direkte Sitemap-URL
console-error-scanner https://www.example.com/sitemap.xml
# Mit mehr parallelen Tabs (Standard: 8)
console-error-scanner https://www.example.com --concurrency 12
# Nur bestimmte URLs scannen
console-error-scanner https://www.example.com --filter /produkte
# Nur console.error erfassen (ohne Warnings)
console-error-scanner https://www.example.com --console-level error
# Authentifizierung per Cookie (z.B. fuer Testumgebungen)
console-error-scanner https://test.example.com --cookie auth=token123
# Mehrere Cookies setzen
console-error-scanner https://test.example.com --cookie auth=token123 --cookie session=abc
# Bekannte Fehler per Whitelist ignorieren
console-error-scanner https://www.example.com --whitelist whitelist.json
# Cookie-Consent NICHT akzeptieren (Banner wird nur per CSS versteckt)
console-error-scanner https://www.example.com --no-consent
# Reports automatisch speichern
console-error-scanner https://www.example.com --output-json report.json --output-html report.html
# Browser sichtbar starten (Debugging)
console-error-scanner https://www.example.com --no-headless| Parameter | Kurz | Default | Beschreibung |
|---|---|---|---|
URL |
(pflicht) | URL der Website oder Sitemap (XML). Bei Domain-URLs wird die Sitemap automatisch gesucht | |
--concurrency |
-c |
8 | Max parallele Browser-Tabs |
--timeout |
-t |
30 | Timeout pro Seite in Sekunden |
--output-json |
JSON-Report automatisch speichern | ||
--output-html |
HTML-Report automatisch speichern | ||
--no-headless |
false | Browser sichtbar starten | |
--filter |
-f |
Nur URLs scannen die TEXT enthalten | |
--console-level |
warn | error, warn, all | |
--user-agent |
Chrome 131 | Custom User-Agent String | |
--cookie |
Cookie setzen (NAME=VALUE), mehrfach verwendbar | ||
--whitelist |
-w |
Pfad zur Whitelist-JSON (bekannte Fehler ignorieren) | |
--no-consent |
false | Cookie-Consent NICHT akzeptieren (Banner wird nur versteckt) |
- error - Nur
console.error()erfassen - warn -
console.error()+console.warn()(Standard) - all - Alle Console-Ausgaben (
error,warn,info,log,debug)
- Sitemap Auto-Discovery: Bei Domain-URLs wird die Sitemap automatisch ueber robots.txt und typische Pfade (/sitemap.xml, /sitemap/sitemap.xml, ...) gefunden
- Consent-Banner Behandlung: 3-Phasen-Consent (JavaScript-API, Button-Klick Fallback, CSS-Hide) fuer Usercentrics, OneTrust, CookieBot und generische Banner. Per
n-Taste oder--no-consentumschaltbar zwischen Akzeptieren und nur Verstecken - CSP-Violation Erkennung: Erkennt Content Security Policy Verstoesze via
pageerrorEvents - Fehlgeschlagene Requests: Erkennt abgebrochene/fehlgeschlagene Netzwerk-Requests
- Cookie-Authentifizierung: Zugriff auf geschuetzte Testumgebungen per
--cookieParameter - Whitelist: Bekannte Fehler per Wildcard-Pattern ignorieren (z.B. attachShadow, AppInsights)
- Live-Updates: Ergebnisse erscheinen sofort waehrend des Scans in der Tabelle
- Auto-Scroll: Tabelle scrollt automatisch zur aktuell gescannten URL mit
- Settings-Persistenz: Theme und Consent-Modus werden gespeichert
- Scan-History: Vorherige Scans koennen per
h-Taste wiederhergestellt werden
| Taste | Aktion |
|---|---|
s |
Scan starten |
r |
HTML + JSON Reports speichern |
t |
Top 10 Fehler anzeigen |
h |
Scan-History anzeigen |
n |
Consent-Toggle (AN = akzeptieren, AUS = nur Banner verstecken) |
l |
Log-Bereich ein/ausblenden |
e |
Nur fehlerhafte URLs anzeigen |
c |
Log in Zwischenablage kopieren |
/ |
Filter-Eingabe fokussieren |
ESC |
Filter leeren |
+ / - |
Log-Bereich vergroessern/verkleinern |
i |
Info-Dialog |
q |
Beenden |
Mit einer Whitelist-Datei koennen bekannte, irrelevante Fehler ignoriert werden. Die Datei ist im JSON-Format:
{
"description": "Known Bugs - diese Fehler werden ignoriert",
"patterns": [
"*Failed to execute 'attachShadow' on 'Element'*",
"*AppInsights nicht gefunden*",
"*carouselWrapper is not initialized yet*",
"HTTP 404:*tracking.js*",
"*https://googleads.g.doubleclick.net*"
]
}Pattern-Syntax (fnmatch):
*= beliebig viele Zeichen?= genau ein Zeichen- Matching ist case-insensitive
- Wird gegen die Fehlermeldung (
PageError.message) gematcht - Betrifft alle Fehlertypen: Console Errors, Warnings, CSP Violations, HTTP-Fehler
Status-Anzeige:
- OK - Keine Fehler
- WARN - Nur Warnings (keine echten Fehler)
- ERR - Echte (nicht-whitelisted) Fehler vorhanden
- IGN - Seite hat nur whitelisted Fehler (gelb)
- Whitelisted Fehler erscheinen in einer eigenen "Ignored"-Spalte und als gedimmte Sektion in der Detail-Ansicht
Eine Beispiel-Whitelist liegt im Repository unter whitelist.json.
Der Scanner versucht beim Start den System-Chrome zu nutzen (channel="chrome").
Falls Chrome nicht installiert ist, wird das gebundelte Chromium als Fallback verwendet.
| Variante | Groesse | Voraussetzung |
|---|---|---|
| System-Chrome (bevorzugt) | 0 MB extra | Chrome installiert |
| Gebundeltes Chromium (Fallback) | +150 MB | Keine |
- Retry-Logik: 3 Versuche pro Seite mit exponential Backoff (5s, 10s, 20s)
- Browser-Recovery: Automatischer Neustart bei Crash
- Netzwerk-Check: HEAD-Request vor jedem Retry
- Graceful Degradation: Fehlgeschlagene URLs werden markiert, Scan laeuft weiter
- Fehler-Deduplizierung: Doppelte Fehlermeldungen werden automatisch zusammengefuehrt
# Windows
setup-dev-environment.bat
run.bat https://www.example.com
# Linux/macOS
./setup-dev-environment.sh
./run.sh https://www.example.comDas Setup erstellt eine virtuelle Umgebung (.venv), installiert alle Abhaengigkeiten und laedt den Chromium-Browser herunter.
Voraussetzungen: Python 3.10+
# 1. Virtuelle Umgebung erstellen
python -m venv .venv
.venv\Scripts\activate # Windows
source .venv/bin/activate # Linux/macOS
# 2. Paket installieren
pip install -e .
# 3. Playwright Chromium-Browser installieren
playwright install chromiumBei SSL-Problemen im Firmennetz:
pip install --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org -e .# Windows
build-dist.bat
# Linux/macOS
./build-dist.shErstellt dist/console-error-scanner/ - den Ordner zippen und weitergeben. Kein Python noetig auf dem Zielrechner.
-
Version-Tag setzen und pushen:
git tag v1.0.0 git push origin v1.0.0
-
GitHub Actions baut automatisch fuer alle Plattformen:
console-error-scanner-win-x64.zipconsole-error-scanner-linux-x64.tar.gzconsole-error-scanner-macos-arm64.tar.gz
-
Release wird automatisch auf GitHub erstellt mit den Build-Artefakten.
src/console_error_scanner/
__main__.py CLI Entry Point (argparse)
app.py Textual App (Hauptklasse)
app.tcss Textual CSS (Layout)
models/
scan_result.py ScanResult, PageError, Enums
sitemap.py Sitemap-Parser + Auto-Discovery
history.py Scan-History Persistenz
settings.py Settings Persistenz (Theme, Consent)
whitelist.py Whitelist (Wildcard-Pattern Matching)
widgets/
results_table.py DataTable mit Filter + Auto-Scroll
error_detail_view.py Detail-Ansicht rechts
summary_panel.py Zusammenfassung oben
screens/
error_detail.py Modal: Fehlerdetails
top_errors.py Modal: Top 10 Fehler Chart
history.py Modal: Scan-History
about.py Modal: About-Dialog
services/
scanner.py Playwright Scanner (Retry, Recovery)
reporter.py HTML + JSON Report-Generator