test: for tools - generators, text and verdicts, smoke

This commit is contained in:
2026-09-26 04:39:01 +05:00
parent 468beec998
commit ca016ada43
9 changed files with 108 additions and 33 deletions
+3 -3
View File
@@ -51,9 +51,9 @@
только если темы нет в существующем документе; иначе обновляется источник
истины.
## Текущий baseline Q6d
## Текущий baseline Q6e
На момент фиксации Q6d:
На момент фиксации Q6e:
- production registry содержит 122 инструмента;
- `pnpm --dir web check` проходит без ошибок и предупреждений;
@@ -61,7 +61,7 @@
- `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;
- `pnpm verify` проходит; production E2E — 121 passed, 0 skipped.
- `pnpm verify` проходит; production E2E — 161 passed, 0 skipped.
Baseline и следующий шаг поддерживаются в `docs/plan-codebase-quality.md`.
+5 -2
View File
@@ -107,8 +107,8 @@
## Качество production UI
Q5–Q6d закрывают известные preview-проблемы и baseline special fixtures;
активных `test.fixme` в e2e больше нет.
Q5–Q6e закрывают известные preview-проблемы, special fixtures и registry-wide
smoke; активных `test.fixme` в e2e больше нет.
- [x] Генераторы auto-run без кнопки Generate — `web/e2e/generators.spec.ts`.
- [x] `resize-png` и `crop-png` используют размеры текущего source через общий
@@ -119,6 +119,9 @@ Q5–Q6d закрывают известные preview-проблемы и basel
обновляет alert — `web/e2e/i18n.spec.ts`.
- [x] Malformed/special PNG fixtures: CRC, truncated, palette и 16-bit проходят
через upload без краша — `web/e2e/png-fixtures.spec.ts`.
- [x] Registry-wide smoke покрывает все 122 инструмента по input/result-типу —
`web/e2e/tools-smoke.spec.ts`, `generators.spec.ts`,
`text-and-verdicts.spec.ts`.
- [ ] Ошибка декодирования изображения из `createImageBitmap` пока показывается
сырым сообщением браузера; нужен `ToolError`-маппер и i18n-ключ. Это
продуктовая задача, не Q6d.
+6 -3
View File
@@ -96,10 +96,10 @@
корректный (не «кракозябры»).
- [ ] remove-background на сложной полупрозрачности — края не «звенят».
## G. Закрытые Q5/Q6b/Q6c/Q6d-проблемы
## G. Закрытые Q5/Q6b/Q6c/Q6d/Q6e-проблемы
> Q5/Q6b/Q6c/Q6d-проблемы закрыты автоматическими тестами; для ручной проверки
> остаются субъективные сценарии разделов A–F.
> Q5/Q6b/Q6c/Q6d/Q6e-проблемы закрыты автоматическими тестами; для ручной
> проверки остаются субъективные сценарии разделов A–F.
- [x] **Генераторы:** auto-run по дефолтам, результат и изменение параметра без
кнопки Generate. `web/e2e/generators.spec.ts`.
@@ -117,6 +117,9 @@
сигнатуры, quality 10/90 меняет размер файла; `web/e2e/pipeline.spec.ts`.
- [x] **Malformed/special PNG:** CRC, truncated, palette и 16-bit fixtures
проходят через upload без краша; `web/e2e/png-fixtures.spec.ts`.
- [x] **Registry smoke:** все 122 production tools имеют специализированный
browser smoke по input/result-типу; `web/e2e/tools-smoke.spec.ts`,
`generators.spec.ts`, `text-and-verdicts.spec.ts`.
## Как долго
+21 -5
View File
@@ -1,9 +1,9 @@
# План: линтеры, тесты и качество кодовой базы
> Статус: **draft — Q0–Q5 и Q6a–Q6d готовы к ревью; Q6e — следующий этап**.
> Статус: **draft — Q0–Q5 и Q6a–Q6e готовы к ревью; Q6f — следующий этап**.
>
> Источник: `docs/backlog.md`, аудит конфигурации `web/`, e2e-тестов и
> инфраструктурных скриптов. Q0–Q5 и Q6a–Q6d выполнены; Q6e–Q8 выполняются
> инфраструктурных скриптов. Q0–Q5 и Q6a–Q6e выполнены; Q6f–Q8 выполняются
> отдельными атомарными шагами.
>
> Цель: сделать качество кодовой базы воспроизводимым, убрать ложную «зелёность»
@@ -259,10 +259,26 @@ CRC/truncated отклоняются без падения, ancillary CRC и х
- Сырое сообщение браузера при decode-ошибке не локализуется в Q6d; это
отдельная задача в backlog.
#### Q6e–Q6f. Оставшиеся направления
#### Q6e. Registry-wide smoke
- smoke всех типов инструментов из registry;
- component-тесты `SchemaToolView`, `SchemaPreview` и schema fields;
**Статус:** выполнен. Smoke расширен до всех 122 production tools из registry:
image→image, image→text, text→image, generator input→image и verdict. FileResult
и malformed/special PNG не дублируются — они уже покрыты Q6b/Q6d.
- `tools-smoke.spec.ts` расширен image/text-output кейсами, включая все
незакрытые color/geometry инструменты.
- `generators.spec.ts` использует единый data-harness для всех генераторов;
`single-color-png` сохраняет отдельную проверку auto-run/размеров.
- Text-input сценарии используют общий `renderText` helper, включая
`data-uri-to-png`.
- Component-тесты не добавлены: Vitest работает в node без DOM/Testing Library,
а текущий e2e-контракт уже покрывает поведение preview. Выбор test seam или
DOM-окружения перенесён в Q6f.
#### Q6f. Component coverage, browser matrix и visual gates
- решить, нужен ли чистый seam для `SchemaFields`/view-model или полноценное
DOM-окружение для `SchemaToolView`/`SchemaPreview`;
- browser matrix, mobile viewport, visual snapshots и coverage thresholds.
Не применять один одинаковый smoke-сценарий к image-, text-, generator- и
+7 -6
View File
@@ -62,15 +62,16 @@ browser-контракт: critical CRC и truncated отклоняются, anci
## 5. Helpers и `test.fixme`
`web/e2e/helpers/page.ts` владеет общими операциями `openTool`, `uploadImage`,
`resultImage`, `sourceImage`, `verdictStatus`, `textResult`, `errorAlert`,
`emptyState`, `rangeInput`, `downloadResult`, `downloadResultFile` и
`downloadResultBytes`. Специфика должна вызывать эти helpers, а не повторять
raw-селекторы. Инструменты с `result: "files"` проверяются отдельным
ZIP-сценарием: общий image-smoke не применяется к ним.
`renderText`, `resultImage`, `sourceImage`, `verdictStatus`, `textResult`,
`errorAlert`, `emptyState`, `rangeInput`, `downloadResult`, `downloadResultFile`
и `downloadResultBytes`. Специфика должна вызывать эти helpers, а не повторять
raw-селекторы. Harness выбирается по контракту: image — upload + `resultImage`,
text — `renderText` + результат, generator — auto-run без upload, verdict —
`verdictStatus`, files — отдельный ZIP-сценарий.
`test.fixme` допускается только для зарегистрированной проблемы в backlog или
checklist. В комментарии указывается ссылка на неё. После исправления тест и
ссылка обновляются вместе; в текущем Q6d baseline активных fixme нет.
ссылка обновляются вместе; в текущем Q6e baseline активных fixme нет.
## 6. Проверки