mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
test: add coverage
This commit is contained in:
+4
-2
@@ -51,9 +51,9 @@
|
||||
только если темы нет в существующем документе; иначе обновляется источник
|
||||
истины.
|
||||
|
||||
## Текущий baseline Q6f.3
|
||||
## Текущий baseline Q6f.4
|
||||
|
||||
На момент фиксации Q6f.3:
|
||||
На момент фиксации Q6f.4:
|
||||
|
||||
- production registry содержит 122 инструмента;
|
||||
- `pnpm --dir web check` проходит без ошибок и предупреждений;
|
||||
@@ -61,6 +61,8 @@
|
||||
- `pnpm --dir web test:rules` — 4 test files / 74 tests;
|
||||
- `pnpm --dir web lint:all` — 0 errors и 0 i18n warnings; остаются 4 unused
|
||||
design tokens от token audit;
|
||||
- coverage `src/lib` — statements 91.77%, branches 83.3%, functions 74.31%,
|
||||
lines 92.53% при порогах 90 / 82 / 72 / 91;
|
||||
- `pnpm verify` проходит;
|
||||
- `pnpm --dir web test:e2e` — 276 тестов в четырёх проектах: 276 passed, 0
|
||||
skipped, 0 failed. Отказ декодера битого PNG зафиксирован per-engine в
|
||||
|
||||
@@ -331,11 +331,33 @@ Firefox и WebKit для browser-critical спецификаций и mobile Chr
|
||||
- Локальный прогон: 276 passed, 0 skipped, 0 failed. Visual snapshots и coverage
|
||||
thresholds не добавлялись — это Q6f.4.
|
||||
|
||||
#### Q6f.4. Оставшиеся направления
|
||||
#### Q6f.4. Coverage thresholds
|
||||
|
||||
- visual snapshots для kit/критичных экранов;
|
||||
- coverage thresholds для `web/src/lib/`;
|
||||
- при необходимости отдельное решение по DOM-тестам `SchemaToolView`/controls.
|
||||
**Статус:** выполнен для чистой логики. Vitest считает покрытие только по
|
||||
`src/lib`, с явным списком исключений, и `pnpm verify` падает при падении ниже
|
||||
порога.
|
||||
|
||||
- `web/vitest.config.ts`: provider `v8`, `reporter: text-summary`, пороги
|
||||
statements 90, branches 82, functions 72, lines 91.
|
||||
- Пороги поставлены на 1.5–2.5 п.п. ниже измеренного baseline (91.77 / 83.3 /
|
||||
74.31 / 92.53), поэтому gate ловит регрессию, а не текущий долг.
|
||||
- Scope — логика, которую node-Vitest вообще может исполнить. Исключены
|
||||
браузерные модули `core/domText.ts` и `core/io.ts` (canvas,
|
||||
`createImageBitmap`), data-модули `i18n/en.ts`, `i18n/ru.ts`, `tool-icons.ts`,
|
||||
rune-файлы `*.svelte.ts`, entry worker-а и type-only `components/define.ts`.
|
||||
Причина каждого исключения зафиксирована в конфиге и в
|
||||
`docs/testing-strategy.md`.
|
||||
- `registry/*` (47–81% statements, 25–47% functions) в scope остаётся: это
|
||||
обычная непокрытая логика, а не ограничение окружения. Покрывается e2e-smoke
|
||||
Q6e, но unit-порог её не скрывает.
|
||||
- `verify` теперь выполняет `test:coverage` вместо `test`: набор тестов тот же,
|
||||
двойного прогона нет.
|
||||
- Порог functions самый слабый (74.31% против 91.77%): добавление инструмента с
|
||||
непокрытым `run` быстрее всего опускает именно его. Это ожидаемо, порог держит
|
||||
запас.
|
||||
- DOM-тесты `SchemaToolView`/controls и visual snapshots не начаты: браузерные
|
||||
модули исключены сознательно, а baselines snapshots платформенные и должны
|
||||
рождаться на Linux.
|
||||
|
||||
Не применять один одинаковый smoke-сценарий к image-, text-, generator- и
|
||||
file-result-инструментам.
|
||||
|
||||
+19
-1
@@ -14,7 +14,8 @@ pnpm verify
|
||||
`verify` выполняет последовательно:
|
||||
|
||||
1. `pnpm --dir web check` — SvelteKit sync и `svelte-check`.
|
||||
2. `pnpm --dir web test` — полный Vitest-набор.
|
||||
2. `pnpm --dir web test:coverage` — полный Vitest-набор вместе с
|
||||
coverage-гейтом.
|
||||
3. `pnpm --dir web test:rules` — отдельный быстрый прогон тестов ESLint-правил.
|
||||
4. `pnpm --dir web lint:all` — ESLint, Stylelint и token audit.
|
||||
5. `pnpm --dir web exec prettier --check .` — форматирование кода `web/`.
|
||||
@@ -24,6 +25,23 @@ pnpm verify
|
||||
Полный `test` уже включает тесты lint-правил; отдельный `test:rules` в `verify`
|
||||
оставлен как явный быстрый диагностический этап.
|
||||
|
||||
## Coverage
|
||||
|
||||
`pnpm --dir web test:coverage` считает покрытие только по `src/lib` и падает
|
||||
ниже порога. Scope и список исключений — в `web/vitest.config.ts`, обоснование —
|
||||
в `docs/testing-strategy.md`.
|
||||
|
||||
| Метрика | Порог | Baseline |
|
||||
| ---------- | ----- | -------- |
|
||||
| statements | 90 | 91.77% |
|
||||
| branches | 82 | 83.3% |
|
||||
| functions | 72 | 74.31% |
|
||||
| lines | 91 | 92.53% |
|
||||
|
||||
Порог — нижняя граница от текущего baseline, а не оценка качества: он блокирует
|
||||
регрессию и не требует сначала закрывать весь долг. Локальный замер занимает ~30
|
||||
с, поэтому отдельного прогона в `verify` нет — `test:coverage` заменяет `test`.
|
||||
|
||||
## E2E
|
||||
|
||||
E2E не входит в `verify`, потому что Playwright поднимает build и статический
|
||||
|
||||
@@ -68,6 +68,25 @@ browser-контракт: critical CRC и truncated отклоняются дв
|
||||
`src/**/*.test.ts`; DOM, hydration и пользовательские потоки — в Playwright.
|
||||
Component-тесты не дублируют e2e-контракт.
|
||||
|
||||
### Что попадает в coverage
|
||||
|
||||
Coverage-гейт считает только `src/lib` и только то, что node-Vitest способен
|
||||
исполнить. Исключения в `web/vitest.config.ts` и их причины:
|
||||
|
||||
| Исключение | Причина |
|
||||
| ------------------------------------------- | ------------------------------------------- |
|
||||
| `**/*.test.ts`, `**/test-helpers.ts` | сами тесты |
|
||||
| `**/*.svelte.ts` | runes, не работают в node |
|
||||
| `executor/executor.worker.ts` | entry worker, исполняется только в браузере |
|
||||
| `components/define.ts` | type-only, нет исполняемого кода |
|
||||
| `core/domText.ts`, `core/io.ts` | canvas, `createImageBitmap`, нужен браузер |
|
||||
| `i18n/en.ts`, `i18n/ru.ts`, `tool-icons.ts` | данные, а не логика |
|
||||
|
||||
`registry/*` в scope остаётся: низкое покрытие там — это непокрытая логика, а не
|
||||
следствие окружения. Исключение браузерных модулей означает, что переход
|
||||
браузерного кода в scope — отдельное решение, связанное с DOM-тестами или visual
|
||||
snapshots, а не молчаливое расширение списка исключений.
|
||||
|
||||
## 5. Helpers и `test.fixme`
|
||||
|
||||
`web/e2e/helpers/page.ts` владеет общими операциями `openTool`, `uploadImage`,
|
||||
|
||||
Reference in New Issue
Block a user