OpenClaw · Playwright · Sharding · Flake · Synthèse PR · 2026

2026 OpenClaw, pratique QA front :
shards Playwright sur Mac distant, fusion des rapports, seuils flake et digest PR lisible

24.04.2026 Automatisation QA front 10 min de lecture

Public : QA front sous Playwright avec plusieurs rapports HTML, un junit partiel et des flakes qui épuisent les relances. Ce HowTo lie Mac distant et OpenClaw pour une « preuve unique » : blob fusionné, politique flake chiffrée, synthèse PR Markdown — angle distinct des boucles auto-fix. Suite : tokens et auth, traces HAR. Slug 2026-openclaw-playwright-shard-report-remote-mac.html.

Friction : (1) chaque shard publie son propre HTML sans merge-reports, donc personne ne compare les écarts de durée entre workers ; (2) la protection de branche ne lit qu’un junit.xml partiel ; (3) les cas flake relancés à l’infini masquent une vraie régression produit ; (4) OpenClaw reçoit des journaux bruts au lieu d’un digest structuré pour la revue.

01 Table des paramètres de fragmentation

Paramètre Valeur type Note Mac distant
PLAYWRIGHT_SHARD / PLAYWRIGHT_TOTAL 3 sur 8 Index stable ; total = nombre de jobs parallèles réellement provisionnés.
--shard=courant/total Miroir CLI Alignez la même paire dans les logs NDJSON OpenClaw.
--workers 1 par shard Sur Apple Silicon, limitez la contention GPU WebKit en évitant plusieurs flottes lourdes par processus.
Répertoire blob blob-report/shard-3 Un seul writer par chemin avant fusion ; jamais deux shards sur le même dossier.
Approche Horloge murale Expérience relecture Visibilité flake
Runner monolithique La plus lente Un seul rapport, confortable Les relances s’empilent sur une timeline bruyante
Shards sans fusion Brute rapide Onglets fragmentés Les taux de flake deviennent incomparables
Shards + fusion fan-in Rapide avec une étape agrégée Un HTML et un junit unifiés flake_stats.json centralisé

À retenir : reporter blobmerge-reports ; premier WebKit froid + dizaines de secondes ; calibrez sur le même Mac loué que la prod de tests.

02 Convention des répertoires de rapports

Traitez .openclaw/reports/$GIT_SHA/ comme racine contractuelle sur le Mac distant : chaque shard écrit sous raw/shard-$i/blob/, puis l’hôte fan-in exécute merge-reports vers merged/html et merged/junit.xml. Placez flake_stats.json à côté afin que les gabarits OpenClaw lisent des chemins déterministes sans parcourir l’arbre au hasard.

mkdir -p ".openclaw/reports/${GIT_SHA}/raw/shard-${SHARD}/blob"
PLAYWRIGHT_SHARD=${SHARD} PLAYWRIGHT_TOTAL=${TOTAL} npx playwright test --reporter=blob
# hôte fan-in :
npx playwright merge-reports ".openclaw/reports/${GIT_SHA}/raw/shard-"*"/blob" \
  --reporter=html,junit

03 Frontière d’appel OpenClaw

Gardez navigateurs et Playwright entièrement sur le Mac loué. Laissez la passerelle OpenClaw ingérer uniquement des artefacts structurés : totaux junit fusionnés, titres des cas en échec, écart de durée entre shards, URL d’artefacts signées. Ne poussez pas les traces brutes dans le modèle sauf triage ciblé ; préférez des liens sortants comme dans le playbook traces et HAR. Postez avec Idempotency-Key: ${GIT_SHA}:${CI_PIPELINE_ID}:pw et ancrez les commentaires <!-- openclaw-pw:${GIT_SHA} --> pour des mises à jour sans doublons.

  • La passerelle valide un schéma pw_summary/v1 avant toute écriture Git.
  • Les secrets restent sur le runner ; OpenClaw ne reçoit que des URL présignées à TTL court.
  • Si l’auth casse en milieu de run, réutilisez les champs décrits dans tokens et auth modèle plutôt que d’inférer depuis des captures partielles.

04 Exemples de formule de seuil de relance flake

Avec p probabilité d’échec par tentative et ε risque résiduel cible, p^(r+1) ≤ ε donne r_max = min(3, ceil(ln(ε)/ln(p) - 1)). Exemple p = 0,2, ε = 0,01 ⇒ deux relances après le premier essai. Budget global : flake_budget = floor(0.15 × total_tests). Marquez les flake, projet quarantaine, colonnes « premier essai / après relance » dans le HTML fusionné.

05 Dépannage des expirations courantes

  • Fixture WebKit : augmentez actionTimeout avant d’inflater aveuglément les expect ; vérifiez que plusieurs shards ne thermiquent pas la machine.
  • Navigation vers prévisualisation : synchronisez la sonde HTTP avec le rythme décrit dans hook Vercel et fumée en-têtes pour ne lancer les tests qu’après un 200 stable sur l’URL publique.
  • Étape de fusion bloquée : un blob partiel suffit à figer merge-reports ; calculez un checksum par dossier shard avant le fan-in.
  • Suite lecture : triage E2E, matrice WebKit (complément, pas doublon shard).

06 Étapes HowTo reproductibles

  1. Exporter GIT_SHA, TOTAL et SHARD par job ; refuser le démarrage si le tuple est incomplet.
  2. Installer les navigateurs une fois par image ; externaliser PLAYWRIGHT_BROWSERS_PATH hors du workspace éphémère.
  3. Exécuter les tests avec reporter blob sous .openclaw/reports/$GIT_SHA/raw/shard-$SHARD/blob.
  4. Sur l’hôte fan-in, fusionner les blobs, produire HTML et junit, puis calculer les deltas flake à partir des horodatages junit.
  5. Rédiger pr_playwright_summary.md : échecs, flakes, skew inter-shards, liens d’artefacts.
  6. Poster via OpenClaw avec la clé d’idempotence et mettre à jour le commentaire existant lorsque le SHA est inchangé.
Synthèse

Shards pour l’horloge, fusion pour le signal, flake borné, OpenClaw en Markdown ; Mac distant pour WebKit continu crédible.

Blog · accueil · tarifs · aide

Mac distant · WebKit · QA continue

Louez du matériel Apple Silicon pour pools de shards et digest OpenClaw

Colocalisez exécuteurs Playwright et hôte fan-in sur la même classe de Mac distant que vos recettes WebKit. Tarifs, aide SSH/VNC, achat ou location pour industrialiser la fusion des rapports et les synthèses PR.

Shards parallèles Digest revue Fidélité WebKit
Mac distant — shards Playwright