OpenClaw · Playwright · JUnit · Traces · Mac distant · 2026

2026 OpenClaw front sur Mac distant :
JUnit XML fusionné, index des traces et extraits stderr en une seule synthèse de porte PR

06.05.2026 CI front et automatisation Playwright 8 min de lecture

Public : équipes qui fragmentent Playwright sur Apple Silicon mais se retrouvent encore avec trois fils d’artefacts par pull request. Ce HowTo fige la convention de chemins, une stratégie de seuils, un gabarit côté passerelle et des règles de retry pour qu’OpenClaw renvoie un bloc Markdown unique, lisible par les humains et acceptable pour les règles de branche. Croisez avec le playbook fusion des shards, le résumé trace et HAR, et les jetons et observabilité auth lorsque le bruit de connexion envahit stderr. Slug : 2026-openclaw-remote-mac-playwright-junit-pr-summary-howto.html.

La protection de branche exige un seul junit.xml, les relecteurs veulent des phrases courtes, et la sécurité refuse les traces complètes dans le chat. Agrégez de façon déterministe sur le Mac distant qui exécute WebKit, puis passez par OpenClaw avec du Markdown modèle et des liens courts uniquement.

Points de douleur typiques : (1) chaque shard pousse son propre XML et la porte lit le mauvais fichier ; (2) les archives trace existent mais personne ne relie les échecs aux noms de fichiers ; (3) stderr est énorme, donc ignoré ; (4) les retries de passerelle créent des doublons de commentaires PR ; (5) la dérive de gabarit entre dépôts rend les synthèses incomparables.

00 Matrice de forme du signal

Approche Compatible porte Lisible en revue Risque opérationnel
JUnit par shard seulement Faible Bruyant Checks requis faciles à mal configurer
JUnit fusionné + journaux bruts dans le chat Fort Médiocre Fuite de secrets si stderr non filtré
JUnit fusionné, index trace, queue de stderr, gabarit passerelle Fort Fort Exige discipline des chemins et POST idempotent

01 Convention des chemins de rapports

Traitez .openclaw/reports/$GIT_SHA/ comme immuable pour une tentative de pipeline. Après merge-reports, émettez merged/junit.xml, merged/summary.json, merged/traces/index.json qui associe testId aux chemins de zip, et merged/stderr/shard-*.tail.txt. Ne faites pas transiter d’énormes traces dans le modèle : stockez-les à côté du HTML et référencez des URL présignées dans l’index.

Gardez les caches navigateur hors de la copie de workspace synchronisée. En cas de porte rouge, uploadez le tarball junit + index + queues stderr vers votre stockage Mac-backed, pas le corps du commentaire.

02 Stratégie de seuils

Versionnez une table du type max_failures_listed = 12, max_slow_tests = 5, stderr_lines = 40, flake_budget_percent = 15, quarantine_tag = @quarantine. Au-delà, affichez … plus N autres avec un lien vers le rapport HTML fusionné sur l’hôte loué.

Quand junit expose des retries, listez l’horodatage de la première défaillance pour la revue ; conservez les statistiques de flakiness dans summary.json plutôt que dans le paragraphe narratif.

  • Garde-fou vérifiable : GitHub « required checks » consomment un seul chemin junit ; le fan-in avant upload est obligatoire.
  • Garde-fou vérifiable : quarante lignes de stderr tiennent généralement dans un client mail mobile sans couper la pile utile.
  • Garde-fou vérifiable : des URL présignées entre cinq minutes et une heure équilibrent confort et risque d’exfiltration.

03 Gabarit côté passerelle

Versionnez les charges utiles en pw_junit_summary/v1. La passerelle remplit les trous du gabarit pour failedTests, slowTests, traceLinks, stderrShards et flakeBudget ; toute clé inconnue fait échouer la validation. Retournez du Markdown pour Git et le même JSON structuré pour les journaux.

Préfixez les commentaires avec <!-- openclaw-pwjunit:$GIT_SHA --> pour que les relances mettent à jour le même bloc sans spam.

04 Échec et nouvelle tentative

Réessayez le POST OpenClaw trois fois avec des délais 2 s, 8 s, 20 s sur 429, 502, 503. Conservez Idempotency-Key: $GIT_SHA:$PIPELINE_ID:pwjunit. Sur 403 côté Git, rafraîchissez les jetons d’application selon la doc du fournisseur.

Si la fusion échoue sur un blob de shard partiel, relancez ce shard puis fusionnez de nouveau — n’éditez jamais le XML à la main ou les durées seront faussées.

05 Esquisse de script et étapes reproductibles

Un pilote bash ou Node sur le Mac s’exécute après la fermeture des navigateurs. L’esquisse ci-dessous omet les secrets ; adaptez les chemins à votre orchestrateur.

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. Exportez GIT_SHA, les identifiants de pipeline et vérifiez que le junit fusionné existe octet pour octet depuis l’hôte de fan-in.
  2. Régénérez summary.json et assertez que les comptes d’échecs correspondent au tableau HTML à un test près.
  3. Parcourez les identifiants de tests en échec, attachez les chemins trace et placez les IDs inconnus dans une section remédiation.
  4. Tronquez stderr par shard et appliquez la même liste d’allowlist de redaction que votre collecteur de journaux.
  5. Rendez le gabarit passerelle, POSTez avec marqueurs, vérifiez que le commentaire PR a été mis à jour plutôt que dupliqué.
  6. Archivez tout le répertoire .openclaw/reports/$GIT_SHA en un seul tarball pour le support si la porte reste rouge.
Synthèse

Un junit.xml fusionné, un index trace léger et des extraits stderr courts rendent OpenClaw utile plutôt que bavard. Louer un Mac distant dédié pour colocaliser exécutions WebKit, hôte de fusion et stockage d’artefacts stabilise cette chaîne semaine après semaine.

Pour aller plus loin sur le site public : index du blog, page d’accueil et achat ou location sans compte — parcours adaptés si vous voulez verrouiller la même classe de nœuds Apple Silicon pour vos portes E2E.

Mac distant · WebKit · portes CI

Colocalisez la fusion Playwright, les portes JUnit et les digest OpenClaw

Gardez le fan-in junit, le stockage des traces et les appels passerelle sur la même classe de Mac distant que vous utilisez pour WebKit. Comparez les nœuds sur la page tarifs, consultez aide pour SSH et VNC, puis passez par achat ou location lorsque vous voulez industrialiser la pipeline.

Hôte de fusion JUnit Index trace Fidélité WebKit
Louer un Mac pour les portes JUnit