mirror of
https://github.com/Matysh/houseplan-card
synced 2026-09-30 19:58:50 +00:00
Issue: #426 Issue: #427 Issue: #428 Issue: #431 Issue: #432 Issue: #434 User-Visible: no
30 lines
2.4 KiB
Markdown
30 lines
2.4 KiB
Markdown
# Пробы гарда исключений (#404)
|
||
|
||
Здесь лежат фикстуры, которые **должны падать**: каждая проверяет, что гард
|
||
«uncaught exception внутри карточки» умеет краснеть, а не только объявлен.
|
||
|
||
Три причины, по которым это отдельный каталог, а не `demo/smoke_*` и не
|
||
`demo/fixtures/`:
|
||
|
||
1. **Не `smoke_*`** — иначе шарды CI будут гонять заведомо красный файл и
|
||
покрасят себя.
|
||
2. **Не `demo/fixtures/`** — этот каталог входит в корпус `sourceFingerprint`
|
||
(`scripts/source-fingerprint.mjs`), то есть каждый новый `.mjs` там объявляет
|
||
устаревшими закоммиченный бандл, скриншот-индекс документации и golden-индекс.
|
||
Пробы гарда ни одного пикселя не касаются, платить пересъёмкой за них нечем.
|
||
3. **Каталог, а не файл** — проб несколько, и они читаются как набор.
|
||
|
||
Запускает их `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`, и
|
||
требует статически — потому что динамическое доказательство возможно только
|
||
там, где есть браузер.
|