Issue: #426 Issue: #427 Issue: #428 Issue: #431 Issue: #432 Issue: #434 User-Visible: no
Пробы гарда исключений (#404)
Здесь лежат фикстуры, которые должны падать: каждая проверяет, что гард «uncaught exception внутри карточки» умеет краснеть, а не только объявлен.
Три причины, по которым это отдельный каталог, а не demo/smoke_* и не
demo/fixtures/:
- Не
smoke_*— иначе шарды CI будут гонять заведомо красный файл и покрасят себя. - Не
demo/fixtures/— этот каталог входит в корпусsourceFingerprint(scripts/source-fingerprint.mjs), то есть каждый новый.mjsтам объявляет устаревшими закоммиченный бандл, скриншот-индекс документации и golden-индекс. Пробы гарда ни одного пикселя не касаются, платить пересъёмкой за них нечем. - Каталог, а не файл — проб несколько, и они читаются как набор.
Запускает их verify-guard.mjs; он же вызывается из job «Смоки в браузере»
и служит guard'ом мутантов в scripts/mutation-gate.mjs.
Одна проба живёт не здесь: --guard-probe у demo/benchmark_backdrop_decode.mjs
(#430). Benchmark нельзя переселить в этот каталог — его запускают руками при
рекалибровке порогов, — поэтому verify-guard.mjs умеет запускать файл выше
каталога и с аргументами. Режим --guard-probe пропускает все замеры, бросает
одно исключение внутри страницы и обязан выйти с кодом 1.
Новый benchmark, открывающий страницу Playwright, обязан получить такой же
режим и запись здесь: этого требует test/smoke-harness-contract.test.mjs, и
требует статически — потому что динамическое доказательство возможно только
там, где есть браузер.