/** * Аргументы запуска Chromium для съёмки документации (#410, #424). * * Модуль отдельный и чистый намеренно: `capture.mjs` — исполняемый скрипт, * который при импорте поднимает браузер и снимает набор. Тест, желающий * прочитать эти константы, не должен запускать съёмку внутри `npm test` — тот * же приём и та же причина, что у `clip.mjs`. * * Первые три флага фиксируют растеризацию текста и цветовой профиль: именно они * убрали основную часть дрейфа в #410. * * Последние два добавлены в #424 и обязаны стоять вместе — по отдельности ни * один дрейф не убирает (проверено перебором, восемь прогонов на конфигурацию): * * - `--disable-partial-raster` запрещает переиспользовать ранее нарисованные * куски тайла. С включённой частичной растеризацией кадр зависит от того, * что композитор рисовал ДО него, то есть от истории прогона; * - `--run-all-compositor-stages-before-draw` заставляет пройти все стадии * композитора до отрисовки, иначе снимок берётся на полпути и «докрутка» * каждый раз происходит по-своему. * * Подпись дефекта, ради которого это сделано: один-два случайных кадра из * десяти расходятся между прогонами на единицы пикселей и два уровня, при этом * внутри одного процесса всё стабильно. */ export const DETERMINISTIC_ARGS = [ '--force-color-profile=srgb', '--font-render-hinting=none', '--disable-lcd-text', '--disable-partial-raster', '--run-all-compositor-stages-before-draw', ];