OpenClaw · Playwright sharding · merge-reports · удалённый Mac · 2026

2026: фронтенд-QA на удалённом Mac —
шарды Playwright, агрегированный отчёт, политика flake и сводка в PR через шлюз OpenClaw

24.04.2026 Фронтенд QA / автоматизация 11 мин чтения

Для кого: фронтенд QA с непрерывными прогонами на удалённом Mac и WebKit. Здесь не «один проект — один test»: матрица Playwright sharding, merge-reports, политика flake и сводка PR через OpenClaw. Внутри — таблицы параметров, каталог .openclaw/reports, границы шлюза, формула ретраев и таймауты. См. также токены и E2E-смоук, сводка knip. Боли: спам комментариев от шардов, слепая зона без merge, «дамп логов» вместо JSON-контракта. Тарифы, аренда, блог.

01 Матрица: кто публикует сводку в PR

От выбора зависит шум в PR и дедупликация вебхуков на удалённом Mac.

Стратегия Плюсы Минусы Когда выбирать
Комментарий от каждого шарда Быстрый фидбек Шум PR, плохой flake 2–3 шарда кратко
Финальный job Один Markdown после merge-reports Строгий каталог zip Основной Playwright sharding
Только Checks Тихо Нет таблицы flaky Нерелизные ветки

Сырые логи в артефактах, в PR — один блок от агрегатора с лимитом размера и ключом GIT_SHA+OPENCLAW_RUN_ID.

02 Таблица параметров шардирования

Эти переменные должны совпадать между матрицей CI, именем каталога blob и полями JSON для OpenClaw, иначе корреляция шардов с коммитом развалится ещё до merge-reports. Добавьте PROFILE смоука в имя каталога, если параллельно гоняете nightly и PR.

Параметр Типичное значение Зачем шлюзу и QA
SHARD / индекс 1..N в матрице Уникальный подкаталог отчёта и строка в таблице PR
TOTAL / число шардов равно числу параллельных джобов Проверка полноты артефактов перед слиянием
workers на шард 1–2 на UI-heavy suite Снижение конкуренции за CPU на удалённом Mac
retries проекта глобально низко, локально выше для карантина Отделение инфраструктурного flake от продукта

Одна команда запуска в README на все шарды — иначе дрейф длительностей маскирует сеть.

03 Соглашение по каталогам отчётов

Коллизии имён на томе удалённого Mac ломают merge. Корень .openclaw/reports/${OPENCLAW_RUN_ID}/, внутри shard-${SHARD}/ для blob, trace.zip только на fail.

.openclaw/reports/${OPENCLAW_RUN_ID}/
  shard-1/blob-report.zip
  shard-2/blob-report.zip
  merged/html/
  summary.pr.json

Агрегатор монтирует shard-*, делает npx playwright merge-reports, кладёт HTML в merged/html и summary.pr.json для шлюза.

  • Инвариант: один PLAYWRIGHT_VERSION на все шарды одного прогона.
  • Инвариант: не смешивать в одном каталоге отчёты разных коммитов.
  • Полезный артефакт: единый report.json после merge для счётчиков в сводке PR.

04 Границы вызова OpenClaw

Вход шлюза OpenClaw — компактный JSON: git_sha, run_id, shards_total, shards_received, счётчики, ссылка на merged HTML, топ падений без секретов. Выход — Markdown в PR; токен Git только в CI.

Если число shard-* не равно TOTAL, шлите incomplete_matrix. Idempotency-Key: ${GIT_SHA}:${PROFILE} даёт одну сводку PR на коммит.

05 Порог повторов при flake: формула и пример

Flake в матрице растёт с числом наблюдений: задайте потолок ретраев и метку карантина.

Пусть R_max — максимум ретраев на тест, W — воркеры шарда. Тогда

R_max = clamp( 1, floor( 4 / W ), 3 )

допустимый_процент_flaky = min( 3, 0.5 * sqrt( число_спек / 100 ) )

При превышении доли flaky после merge добавляйте в сводку PR блокер даже при зелёных passed.

Отдельно ведите учёт повторных успехов: если тест стабильно проходит только со второго запуска, это сигнал завести карантинный тег и снизить workers, а не повышать retries бесконечно на всей матрице.

06 Типовые таймауты и разбор

Таймаут в UI-suite часто означает не «медленный тест», а нехватку CPU при нескольких шардах на одном хосте: сначала измерьте загрузку и очередь джобов, потом трогайте expect.timeout и зафиксируйте версию WebKit на узле.

Симптом Частая причина на Mac Что проверить первым
Test timeout только в WebKit Реальный рендер медленнее чем в Chromium, мало RAM на шард Снизить workers, включить сохранение trace только на fail
Зависание на goto или API DNS или TLS к тестовому стенду из датацентра Повторить curl с раннера, сравнить с локальным VPN
Таймаут шага CI «загрузка артефактов» Слишком много trace для всех тестов Политика сэмплирования и отдельный лёгкий артефакт для шлюза

См. scrollbar-gutter Safari Chromium для отделения сети от вёрстки.

07 HowTo: семь воспроизводимых шагов

  1. OPENCLAW_RUN_ID и GIT_SHA во все шарды.
  2. blob с уникальным outputDir под .openclaw/reports/....
  3. Матрица Playwright sharding, артефакты без перезаписи.
  4. Проверка shards_received == shards_total, затем playwright merge-reports.
  5. summary.pr.json со счётчиками и ссылкой на HTML.
  6. POST в OpenClaw с Idempotency-Key и Markdown.
  7. Ночной cron на том же удалённом Mac с тем же layout.

Выделенный удалённый Mac для WebKit и ночных матриц снимает flake от плавающего пула. Тарифы, аренда, блог.

Удалённый Mac · Непрерывные прогоны QA

Выделите узел под шарды и merge-reports

WebKit и стабильные пути для Playwright sharding и OpenClaw. Тарифы, аренда, помощь, главная.

flake и пороги merge-reports OpenClaw
Mac под шарды Playwright и merge