Любая фича с видимой/внешней составляющей (новый виджет, оверлей, изменение layout, темизации, статус-бара, дерева файлов и т.п.) обязана принести сценарий-демо и скриншот в PR:
- Добавь или обнови сценарий в
e2e/scenarios/(*.scenario.ts) — код, который поднимает настоящий редактор headless, шлёт нужные команды и снимает кадр(ы). Формат —defineScenario({ name, open, run }); за образец возьмиe2e/scenarios/quickOpen.scenario.ts. - Прогони
npm run screenshots— сгенерит PNG вscreenshots/(каталог в.gitignore) +screenshots/INDEX.md. - Приложи получившиеся PNG к телу PR (способ — ниже).
GitHub показывает картинки в теле PR только по URL, а из CLI нельзя залить их в user-content CDN (это только drag-drop в вебе). Поэтому кладём PNG в эфемерную orphan-ветку pr-assets/<имя-фича-ветки> (без общей истории — только блобы картинок) и ссылаемся по commit-SHA. Пламбинг ниже не трогает рабочее дерево:
# из корня репо, после `npm run screenshots`; репо должен быть публичным (иначе camo не отрендерит raw)
E=$(git hash-object -w screenshots/<shot1>.png)
O=$(git hash-object -w screenshots/<shot2>.png)
R=$(printf 'Ephemeral screenshot assets for the <branch> PR. Safe to delete after merge.\n' | git hash-object -w --stdin)
T=$(printf '100644 blob %s\t<shot1>.png\n100644 blob %s\t<shot2>.png\n100644 blob %s\tREADME.md\n' "$E" "$O" "$R" | git mktree)
C=$(git commit-tree "$T" -m "chore: ephemeral screenshot assets for <branch> PR") # orphan: без -p
git push origin "$C:refs/heads/pr-assets/<branch>"
# в теле PR ссылайся по SHA (однозначно, без проблем со слэшем в имени ветки):
# После мерджа/закрытия PR ветку чистим: git push origin --delete pr-assets/<branch>.
Подробности и как это гоняется в CI — TESTING.md (раздел «E2E → Скриншот-демо»).