Automatisation Web · Mac distant · 2026

2026 OpenClaw, front-end terrain :
trace Playwright trace.zip + HAR sur Mac distant — étapes de reproduction minimale renvoyées vers la PR

09.04.2026 Livraison front & QA 10 min de lecture

Les échecs E2E « instables » cessent d’être opaques lorsque la chaîne est reproductible : exporter un trace.zip Playwright, le coupler à un HAR découpé, et laisser OpenClaw sur un Mac loué produire pr_min_repro_summary.md — le même récit que toute équipe attend (URL, étapes, requête fatale, identifiant de build). Ce guide est le HowTo de ce pipeline : paramètres d’export, décompression et champs utiles, secrets masqués, gabarit Markdown, puis commentaire sur la PR ou webhook en option. Il prolonge le triage des journaux E2E sur Mac distant, les schémas auto-correctifs Playwright et Playwright conteneurisé à côté des flux Safari ; lorsque l’échec vient du JS minifié, enchaînez avec les résumés PR basés sur les source maps.

01 Paramètres d’export trace : aligner la CI et le Mac

Les traces ne servent que si chaque exécuteur les enregistre de la même façon. Dans playwright.config, fixez use.trace sur un mode documenté — on pour les branches courtes de reproduction, retain-on-failure ou on-first-retry pour les suites bruyantes afin de borner la taille des artefacts. Harmonisez les politiques screenshot et video avec la trace : si les captures sont only-on-failure, indiquez-le en pied de résumé pour éviter que les relecteurs cherchent des pixels jamais enregistrés.

Pour une capture ponctuelle depuis un poste développeur, préférez les drapeaux CLI que l’équipe a validés, par exemple --trace on avec un canal navigateur figé, et écrivez la sortie sous .openclaw/reports/<git-sha>/traces/ sur le Mac distant. Associez un petit run_meta.json : dépôt, SHA, version Playwright, URL de base et mode d’auth (none, cookie, storageState) sans y coller de secrets.

Traitez la trace comme une preuve, pas comme l’intégralité du ticket : votre automatisation doit toujours pouvoir extraire texte et faits réseau sans ouvrir le viewer graphique. Cette discipline rend interchangeables workers Mac headless et runners cloud. Pour les suites WebKit, le même agencement s’accorde bien avec les tests de compatibilité Safari avec Playwright sur Mac distant.

02 Dézipper trace.zip et sortir ce que les relecteurs lisent en premier

Une archive trace Playwright est un paquet structuré. Après unzip (ou dépaquetage streamé en Node), priorisez trois couches : actions et timings dans le fichier trace principal (souvent trace.trace), réseau via trace.network ou événements réseau embarqués, et console ou erreurs page rattachées à l’index de l’étape en échec. Votre script d’extraction doit produire trace_signals.json avec : URL finale, viewport, dernière erreur de navigation le cas échéant, titres d’étapes ordonnés, identifiant d’étape où l’assertion a échoué, et jusqu’à une vingtaine de lignes réseau (méthode, url, statut, timing).

Normalisez les URL : retirez les clés de requête volatiles (anti-cache oui ; identifiants de session non), repliez les ports par défaut, et mappez localhost vers le nom de service documenté (web, api). S’il existe plusieurs onglets, conservez l’onglet propriétaire de l’échec et abandonnez les onglets de fond sauf s’ils ont émis des requêtes sur le chemin critique.

Règle d’hygiène

Ne copiez jamais l’état de stockage brut, les cookies ni des fragments JWT dans un JSON qu’OpenClaw va rendre. Si l’auth est nécessaire pour reproduire, décrivez le mécanisme (« connexion utilisateur de test via fichier storageState dans secret CI ») plutôt que de coller des valeurs.

03 Découpe du HAR : le plus petit fichier qui « condamne » encore le bug

Exportez le HAR depuis le contexte Playwright ou le navigateur lorsque vous voulez une preuve HTTP parallèle à la trace. Le HAR brut est bruyant et risqué. Appliquez un passage de découpe déterministe :

Règle Pourquoi
Conserver origine + préfixe de chemin de la fonctionnalité testée Préserve les chaînes de redirection et les appels API sans domaines d’analytique parasites.
Supprimer Authorization, Cookie et en-têtes propriétaires Évite les fuites d’identifiants dans les PR et le chat.
Tronquer les corps de réponse (ou les omettre) pour les 200 Réduit la taille ; ne gardez des corps que pour les 4xx/5xx cités dans le résumé.
Plafonner le nombre d’entrées (par ex. 80) après tri par heure de début Garde le Markdown et les charges webhook lisibles sur mobile.

Écrivez repro.har.trimmed.json à côté de trace_signals.json. S’il existe deux HAR (retry), conservez celui dont l’horodatage correspond à la tentative en échec enregistrée dans les métadonnées de la trace.

04 Gabarit OpenClaw : pr_min_repro_summary.md

OpenClaw ne doit pas improviser des paragraphes ; il doit remplir des emplacements depuis le JSON pour que chaque PR se lise pareil. Un gabarit utile comporte cinq blocs : Build (SHA, version Playwright, navigateur), Environnement (URL de base, feature flags on/off), Étapes de repro (numérotées, dérivées des titres d’étapes trace), Preuve réseau (trois à six lignes liant méthode, chemin, statut), et Artefacts (chemins vers le zip trace et le HAR réduit dans votre stockage sécurisé — pas d’URL publiques sauf signées et à courte durée).

  • Entrées : trace_signals.json, repro.har.trimmed.json, run_meta.json, extrait stderr Playwright optionnel.
  • Sorties : pr_min_repro_summary.md plus des valeurs status.txt du type ready, incomplete_trace ou har_redaction_failed pour les portes aval.
  • Plafond de longueur : visez moins de quatre cents mots pour que GitHub mobile et les unfurls Slack restent lisibles.
Lorsque le résumé cite un fetch en échec, incluez à la fois l’étape visible utilisateur (« Valider la facture ») et la ligne HTTP (« POST /api/invoices → 409 ») — ce couplage réduit les allers-retours en revue.

05 Optionnel : commentaire PR, CLI gh ou webhook

Reprenez la même discipline que pour les autres portes OpenClaw : moindre privilège, idempotence, aucun secret dans le corps. Sur GitHub, un workflow sur runner Mac auto-hébergé peut appeler gh pr comment avec des permissions GITHUB_TOKEN explicites, ou un PAT à granularité fine limité à un dépôt. Préfixez le commentaire d’un marqueur discret du type <!-- openclaw-min-repro-sha:abc1234 --> pour que les relances mettent à jour au lieu de spammer.

Pour le chat, envoyez du JSON vers votre passerelle comme pour les autres rapports :

curl -sS -X POST "$MIN_REPRO_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --rawfile body pr_min_repro_summary.md --arg sha "${GITHUB_SHA:-}" '{text: $body, sha: $sha}')"

Anti-rebond sur le SHA, sommeil avec backoff exponentiel sur 429, et journalisation des échecs dans status.txt plutôt que boucles de retry aveugles dans l’agent. Si la politique interdit même un HAR réduit, joignez uniquement le Markdown et laissez les binaires dans le compartiment d’artefacts.

06 FAQ dépannage

La trace s’ouvre mais les étapes semblent vides : vérifiez que vous avez capturé le bon contexte navigateur et que la trace n’a pas été tronquée par quota disque en cours d’exécution. Relancez avec le même mode trace et contrôlez la dérive de version Playwright entre portable local et worker Mac.

Le HAR ne montre que du CORS ou des échecs opaques : la trace conserve souvent les erreurs de navigation — fusionnez signaux console et réseau avant qu’OpenClaw n’écrive le résumé, et précisez si le test utilisait page.request plutôt que le fetch du navigateur.

Le webhook répond 401 : faites tourner le secret de signature, vérifiez les listes d’IP sortantes, et assurez-vous que l’échappement JSON n’a pas cassé le corps Markdown.

Commentaires PR dupliqués : récupérez les commentaires existants filtrés par marqueur, ou écrivez un petit fichier de verrou sous .openclaw/reports/<sha>/ avant le POST.

La conformité interdit de publier des dumps HTTP : gardez le HAR réduit dans un stockage approuvé ; le commentaire PR doit référencer un lien interne et n’inclure que méthode, chemin et statut — pas les corps de réponse.

À retenir

Figez modes trace et dossiers de sortie par SHA, extrayez un trace_signals.json structuré, associez-le à un repro.har.trimmed.json anonymisé, rendez pr_min_repro_summary.md via OpenClaw, puis remettez le tout avec la même rigueur jeton/webhook que vos autres portes. Un Mac distant est un excellent lieu pour faire tourner cette boucle en continu : chemins stables, marge pour grosses traces, et vérifications WebKit à proximité — sans transformer les portables en serveurs d’artefacts.

Mac distant pour pipelines trace + HAR

Hébergez OpenClaw à côté du vrai Safari

Louez un Mac mini M4 pour les jobs de dépaquetage Playwright, l’anonymisation HAR et les résumés PR 24h/24. Consultez les tarifs, le guide SSH / VNC, ou passez par Achat / location sans connexion obligatoire : choisissez une région et finalisez quand vous êtes prêt.

trace.zip découpe HAR OpenClaw

Autres runbooks : index du blog, accueil.

Louer un Mac pour OpenClaw