OpenClaw · Playwright · JUnit · Trace · stderr · 2026

2026 OpenClaw Frontend-Praxis:
JUnit-XML, Trace-Index und stderr-Snippets als ein PR-Gate-Digest auf Remote Mac

6. Mai 2026 CI-Automatisierung · Frontend-QA ca. 9 Min.

Zielgruppe: Teams, die Playwright auf Apple Silicon sharden, aber im Pull Request weder drei lose Artefakt-URLs noch vollständige Trace-Zips posten wollen. Dieses HowTo fixiert Berichtpfade, eine Schwellen- und Kürzungsstrategie, eine gateway-seitige Markdown-Vorlage und Retries mit Idempotenz, damit OpenClaw genau einen lesbaren Block liefert, den Branch-Protection und Reviewer akzeptieren. Vertiefung: Shard-Merge und Flake-Grenzen, Trace- und HAR-Min-Repro-Hygiene, Token-Observability bei lauter stderr.

Branch-Protection verlangt ein einziges junit.xml, Reviewer brauchen Sätze statt Roh-XML, und InfoSec will keine vollständigen Traces im Chat. Lösung: deterministisch auf dem Remote Mac mergen, dann über OpenClaw templatisiert posten — mit kurzen Links und gekappten Listen.

Schmerzpunkte: (1) Jeder Shard schreibt eigene XML-Dateien und das Gate liest die falsche. (2) Trace-Zips existieren, aber niemand mappt Fehler-IDs auf Dateinamen. (3) stderr ist riesig und wird ignoriert. (4) Gateway-Retries erzeugen doppelte PR-Kommentare. (5) Abweichende Vorlagen zwischen Repos machen Digests unvergleichbar.

00 Entscheidungsmatrix: Signalform für Gate und Lesbarkeit

Ansatz Gate-tauglich Reviewer-lesbar Betriebsrisiko
Nur junit pro Shard Schwach Laut Required Checks leicht falsch verdrahtet
Gemergtes junit plus Roh-Logs im Chat Stark Schlecht Secrets in ungefiltertem stderr
Gemergtes junit, Trace-Index, stderr-Tail, Gateway-Vorlage Stark Stark Erfordert Pfaddisziplin und idempotenten POST

01 Schwellen-Tabelle für Parser und Kürzung (Beispiel)

Parameter Startwert Begründung
max_failures_listed 12 Mobile Mailclients und PR-Kommentarbreite
max_slow_tests 5 Flaschenhals-Signale ohne Scroll-Wüste
stderr_lines 40 Stackframes sichtbar, Tokens per Redaction
flake_budget_percent 15 Policy-Flag vor Merge trotz grünem junit
quarantine_tag @quarantine Klare Trennung produktiver vs. ausgesetzter Fälle

Zitierfähig: GitHub Required Checks erwarten einen junit-Pfad — Fan-in vor Upload ist Pflicht. Presigned URLs zwischen fünf und sechzig Minuten balancieren UX und Exfiltrationsrisiko.

02 Berichtpfade und Artefakt-Konventionen

Behandeln Sie .openclaw/reports/$GIT_SHA/ als unveränderlichen Wurzelknoten pro Pipeline-Versuch. Nach merge-reports liegen merged/junit.xml, merged/summary.json, merged/traces/index.json mit Mapping von testId zu Zip-Pfaden sowie merged/stderr/shard-*.tail.txt. Keine mehrere Megabyte großen Traces durch das Modell streamen; HTML-Report und Index neben dem Workspace, presigned URLs nur im JSON.

Browser-Caches außerhalb der Arbeitskopie halten. Bei rotem Gate junit, Index und stderr-Tarball hochladen — nie nur die Chat-Zusammenfassung.

03 Schwellen- und Kürzungsstrategie im Betrieb

Die Tabelle oben versionieren und im Repo ablegen. Überlauf wird zu … plus N weitere mit Link auf das gemergte HTML auf Ihrem Mac-basierten Host. Wenn junit Retries ausweist, erste Fehlzeitstempel für Menschen listen; Flake-Statistik bleibt in summary.json, damit das Gateway denselben JSON- und Markdown-Pfad fährt.

  • Leitplanke: Vierzig stderr-Zeilen passen in die meisten Inbox-Layouts ohne kritische Frames zu verlieren.
  • Leitplanke: Redaction-Allowlist identisch zum Log-Shipper halten, sonst driftet das Audit.
  • Leitplanke: Unbekannte Test-IDs in einen Remediation-Abschnitt schieben, nicht still löschen.

04 Gateway-seitige Vorlage und Payload-Version

Versionieren Sie Payloads als pw_junit_summary/v1. Das Gateway füllt Mustache-Löcher für failedTests, slowTests, traceLinks, stderrShards und flakeBudget; unbekannte Schlüssel brechen die Validierung absichtlich. Rückgabe: Markdown für den Git-Host plus identisches JSON für NDJSON-Logs.

PR-Kommentare mit <!-- openclaw-pwjunit:$GIT_SHA --> präfixieren, damit Wiederholungen upserten statt zu spammen.

05 Fehler-Retries, Backoff und Git-Fehlerklassen

OpenClaw-POST bis zu dreimal mit Backoff 2s, 8s, 20s bei 429, 502, 503. Header Idempotency-Key: $GIT_SHA:$PIPELINE_ID:pwjunit durchgängig setzen. Bei Git 403 App-Tokens gemäß Anbieterdokumentation erneuern — nicht raten.

Schlägt Merge wegen partieller Shard-Blobs fehl, den betroffenen Shard erneut laufen lassen und erneut mergen — XML oder Dauern niemals manuell editieren.

06 Skizze: ausführbares Skript und reproduzierbare Schritte

Ein Bash- oder Node-Treiber auf dem Mac startet, sobald Browser beendet sind. Skizze ohne Secrets:

ROOT=".openclaw/reports/${GIT_SHA}/merged"
node scripts/parse-junit.mjs "${ROOT}/junit.xml" > "${ROOT}/summary.json"
node scripts/build-trace-index.mjs --report "${ROOT}/html" > "${ROOT}/traces/index.json"
tail -n 40 "shard-${SHARD}.log" > "${ROOT}/stderr/shard-${SHARD}.tail.txt"
node scripts/render-openclaw-payload.mjs | curl -H "Idempotency-Key: ${GIT_SHA}:${PIPELINE_ID}:pwjunit" -d @- "$OPENCLAW_URL"
  1. GIT_SHA und Pipeline-IDs exportieren; merged junit byte-identisch vom Fan-in-Host verifizieren.
  2. summary.json neu erzeugen und Fehlerzähler gegen HTML-Dashboard prüfen.
  3. Fehlgeschlagene Test-IDs gehen, Trace-Pfade anhängen, unbekannte IDs dokumentieren.
  4. stderr-Tails pro Shard schneiden, Tokens redigieren.
  5. Gateway-Vorlage rendern, mit Marker posten, PR-Kommentar auf Update statt Duplikat prüfen.
  6. Bei anhaltend rotem Gate das gesamte Verzeichnis .openclaw/reports/$GIT_SHA als Tarball für Support archivieren.
Zusammenfassung

Ein gemergtes junit.xml, ein schlanker Trace-Index und kurze stderr-Auszüge machen OpenClaw nützlich statt gesprächig. Ein dedizierter Remote Mac hält WebKit-Läufe, Merge-Host und Artefaktspeicher kolokal — die Pipeline bleibt wöchentlich reproduzierbar.

Weitere Artikel im öffentlichen Technik-Blog; Produktüberblick auf der Startseite; Buchung und Pakete über Kaufen ohne Login-Zwang.

Remote Mac · WebKit · JUnit-Gates

Playwright-Merge, junit-Fan-in und OpenClaw-Digest auf einem Knoten

Halten Sie junit-Zusammenführung, Trace-Speicher und Gateway-POST auf derselben Remote-Mac-Klasse wie Ihre WebKit-Runner. Preise vergleichen, Hilfe für SSH und VNC, Kaufen wenn das Gate dauerhaft stabil sein soll.

junit-Merge-Host Trace-Index WebKit-Treue

Kaufentscheidung in einem Satz

Wer Branch-Protection und menschliche Reviews mit derselben Erzählung füttern will, braucht kolokale Apple-Hardware. Wählen Sie auf Preise ein passendes Tier, buchen Sie über Kaufen, und legen Sie .openclaw/reports/ auf dem gemieteten System als Single Source of Truth fest — dann bleibt der PR-Digest reproduzierbar.

Remote Mac für JUnit-PR-Gates