Перейти к основному содержимому

LIGHTHOUSE-LIFECYCLE-2026-09-18

Цель: устранить зависание production quality после последнего Lighthouse audit. Источник: пользователь сообщил о 30-минутной задержке и разрешил повторный production-запуск; исходная попытка отменена, попытка 2 запущена на том же SHA.

Исходное состояние: ветка chore/architecture-migration-complete, HEAD 5da2be7; git status --short: только ?? AGENTS.md. Рабочая инструкция сохраняется локально и не включается в публикацию.

Доказательство: GitHub Actions run 35317990790, attempt 1. Все шесть Lighthouse результатов прошли пороги; последняя строка в 07:13:52 UTC, затем отсутствует переход к E2E до отмены в 07:37:46 UTC. Cleanup перечисляет оставшиеся npm run check:lighthouse и Node-процессы. Preview запускался через оболочку npm, а cleanup останавливал только оболочку.

На macOS исходный lifecycle regression проходит; зависание доказано в Linux CI. Regression запускает настоящий desktop audit, требует завершения процесса за 60 секунд и освобождения preview-порта. Сохраняется для проверки в обеих средах.

Изменения: scripts/check-lighthouse.mjs запускает Vite напрямую через Node, поэтому cleanup останавливает сам сервер. --strictPort предотвращает скрытый переход на другой порт. scripts/test-lighthouse-lifecycle.mjs проверяет завершение audit и освобождение порта. UI, бизнес-расчёты, audit-пороги и визуальные эталоны не меняются.

  • Прочитать логи отменённой попытки и найти точку зависания.
  • Заменить npm-оболочку прямым запуском Vite.
  • Проверить lifecycle regression на исправленной версии.
  • Выполнить полный npm run quality до фактического exit code.
  • Опубликовать исправление и проверить production workflow.

Linux CI после исправления

Коммит aedb907 опубликован в main. Run 35321470183 подтвердил завершение Lighthouse и переход к E2E: зависание устранено. Quality завершился FAIL: 233 E2E PASS / 49 SKIP / 36 FAIL. Все 36 ошибок — отсутствие Linux screenshot baselines; Playwright добавляет OS в имя эталона, в репозитории были только Darwin PNG. Production deployment пропущен из-за blocking gate.

Из artifact quality-reports этого запуска вручную просмотрены 54 actual PNG для трёх страниц × шести viewport: full page, closed menu и open menu. Просмотрены 24 сравнительных листа macOS/Linux в /tmp/belf-ci-visual-review. Все элементы помещаются в своих границах; перекрытий и исчезновения содержимого не обнаружено. Width совпадает во всех 54 screenshots; full-page height отличается на 0–136 px из-за платформенных переносов/метрик текста. Эти различия сохраняются отдельно для Linux. Исходные Darwin-эталоны не изменены.

Осознанно добавлены 54 Linux baselines из просмотренных CI actual PNG в tests/e2e/navigation.spec.ts-snapshots. --update-snapshots не запускался; threshold 0.003, assertions и число сценариев сохранены. Следующий шаг — публикация baseline-файлов и повторный Linux quality gate.

Дополнительный эксперимент с исходным скриптом под CI=true на macOS: предположение о локальном зависании не подтвердилось (процесс завершился). Linux-дефект подтверждают исходные CI-логи, а его исправление — переход к E2E в новом CI. Платформенные сигналы/процессы нельзя считать идентичными.

Команды: baseline node --test scripts/test-lighthouse-lifecycle.mjs на macOS — PASS (11.4 с). Исправленная версия — PASS (10.6 с): процесс завершён, порт освобождён. Полный npm run quality — PASS, фактический exit code 0: 64 unit/component tests, coverage, architecture, cycles, bundle, links, SEO, 24 accessibility tests, все шесть Lighthouse profiles/routes; затем переход к E2E и 269 PASS / 49 SKIP / 0 FAIL. Пропуски — viewport-specific scenarios. Полный локальный лог: /tmp/belf-quality-lifecycle-2026-09-18.log.

Commit/push/deploy: исправление ещё не опубликовано на момент записи. Следующий шаг — публикация в разрешённый пользователем main и проверка Lighthouse shutdown в Linux CI. Проверки UI/цены/SEO без наблюдаемой дельты.