mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
refactor: separate schema preview logic
This commit is contained in:
+3
-3
@@ -51,13 +51,13 @@
|
||||
только если темы нет в существующем документе; иначе обновляется источник
|
||||
истины.
|
||||
|
||||
## Текущий baseline Q6f.1
|
||||
## Текущий baseline Q6f.2
|
||||
|
||||
На момент фиксации Q6f.1:
|
||||
На момент фиксации Q6f.2:
|
||||
|
||||
- production registry содержит 122 инструмента;
|
||||
- `pnpm --dir web check` проходит без ошибок и предупреждений;
|
||||
- `pnpm --dir web test` — 42 test files / 460 tests;
|
||||
- `pnpm --dir web test` — 43 test files / 465 tests;
|
||||
- `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;
|
||||
|
||||
+4
-2
@@ -107,8 +107,8 @@
|
||||
|
||||
## Качество production UI
|
||||
|
||||
Q5–Q6f.1 закрывают известные preview-проблемы, special fixtures, smoke и
|
||||
layout-инварианты; активных `test.fixme` в e2e больше нет.
|
||||
Q5–Q6f.2 закрывают известные preview-проблемы, special fixtures, smoke и
|
||||
layout/view-model инварианты; активных `test.fixme` в e2e больше нет.
|
||||
|
||||
- [x] Генераторы auto-run без кнопки Generate — `web/e2e/generators.spec.ts`.
|
||||
- [x] `resize-png` и `crop-png` используют размеры текущего source через общий
|
||||
@@ -124,6 +124,8 @@ layout-инварианты; активных `test.fixme` в e2e больше
|
||||
`text-and-verdicts.spec.ts`.
|
||||
- [x] Layout-группировка вынесена в `resolveLayoutGroups` и покрыта
|
||||
unit-тестами; `SchemaFields.svelte` использует общий seam.
|
||||
- [x] `SchemaPreview` view-model вынесена в `buildSchemaPreviewModel` и покрыта
|
||||
unit-тестами для всех input/result-типов.
|
||||
- [ ] Component-тесты `SchemaToolView`/`SchemaPreview` требуют отдельного
|
||||
решения: node Vitest не имеет DOM/canvas, а e2e уже покрывает поведение.
|
||||
- [ ] Ошибка декодирования изображения из `createImageBitmap` пока показывается
|
||||
|
||||
@@ -96,10 +96,10 @@
|
||||
корректный (не «кракозябры»).
|
||||
- [ ] remove-background на сложной полупрозрачности — края не «звенят».
|
||||
|
||||
## G. Закрытые Q5/Q6b/Q6c/Q6d/Q6e/Q6f.1-проблемы
|
||||
## G. Закрытые Q5/Q6b/Q6c/Q6d/Q6e/Q6f.1/Q6f.2-проблемы
|
||||
|
||||
> Q5/Q6b/Q6c/Q6d/Q6e/Q6f.1-проблемы закрыты автоматическими тестами; для ручной
|
||||
> проверки остаются субъективные сценарии разделов A–F.
|
||||
> Q5/Q6b/Q6c/Q6d/Q6e/Q6f.1/Q6f.2-проблемы закрыты автоматическими тестами; для
|
||||
> ручной проверки остаются субъективные сценарии разделов A–F.
|
||||
|
||||
- [x] **Генераторы:** auto-run по дефолтам, результат и изменение параметра без
|
||||
кнопки Generate. `web/e2e/generators.spec.ts`.
|
||||
@@ -122,6 +122,8 @@
|
||||
`generators.spec.ts`, `text-and-verdicts.spec.ts`.
|
||||
- [x] **Layout resolver:** `resolveLayoutGroups` покрыт unit-тестами; UI
|
||||
группировка полей использует тот же seam.
|
||||
- [x] **Preview model:** `buildSchemaPreviewModel` покрывает source/result
|
||||
values, формат и `hasResult` для image/text/verdict/files.
|
||||
|
||||
## Как долго
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# План: линтеры, тесты и качество кодовой базы
|
||||
|
||||
> Статус: **draft — Q0–Q5 и Q6a–Q6f.1 готовы к ревью; Q6f.2 — следующий этап**.
|
||||
> Статус: **draft — Q0–Q5 и Q6a–Q6f.2 готовы к ревью; Q6f.3 — следующий этап**.
|
||||
>
|
||||
> Источник: `docs/backlog.md`, аудит конфигурации `web/`, e2e-тестов и
|
||||
> инфраструктурных скриптов. Q0–Q5 и Q6a–Q6f.1 выполнены; Q6f.2–Q8 выполняются
|
||||
> инфраструктурных скриптов. Q0–Q5 и Q6a–Q6f.2 выполнены; Q6f.3–Q8 выполняются
|
||||
> отдельными атомарными шагами.
|
||||
>
|
||||
> Цель: сделать качество кодовой базы воспроизводимым, убрать ложную «зелёность»
|
||||
@@ -287,11 +287,21 @@ image→image, image→text, text→image, generator input→image и verdict. F
|
||||
отдельным решением Q6f.2.
|
||||
- Новые зависимости, vitest-конфиг и browser matrix не добавлялись.
|
||||
|
||||
#### Q6f.2–Q6f.4. Оставшиеся направления
|
||||
#### Q6f.2. SchemaPreview model seam
|
||||
|
||||
- выбрать чистый seam для `SchemaPreview`/view-model или DOM-окружение для
|
||||
`SchemaToolView`/`SchemaPreview`;
|
||||
- browser matrix, mobile viewport, visual snapshots и coverage thresholds.
|
||||
**Статус:** выполнен. Вычисления `sourceValue`, `resultValue`, `formatValue` и
|
||||
`hasResult` вынесены в `buildSchemaPreviewModel`; Svelte-компонент использует
|
||||
модель, а unit-тесты проверяют все input/result-ветки без DOM.
|
||||
|
||||
- Translator передаётся в модель явно, поэтому unit-тесты не зависят от locale
|
||||
state и проверяют только view-model.
|
||||
- image/text/verdict/files и пустые результаты покрыты в `pnpm verify`.
|
||||
- Новые зависимости, vitest-конфиг и browser matrix не добавлялись.
|
||||
|
||||
#### Q6f.3–Q6f.4. Оставшиеся направления
|
||||
|
||||
- browser matrix, mobile viewport, visual snapshots и coverage thresholds;
|
||||
- при необходимости отдельное решение по DOM-тестам `SchemaToolView`/controls.
|
||||
|
||||
Не применять один одинаковый smoke-сценарий к image-, text-, generator- и
|
||||
file-result-инструментам.
|
||||
|
||||
@@ -59,9 +59,10 @@ browser-контракт: critical CRC и truncated отклоняются, anci
|
||||
только для ограниченного ожидания hydration или асинхронного результата; он не
|
||||
должен превращать проверку продукта в бесконечный retry.
|
||||
|
||||
Чистая логика схемы и layout (defaults, sanitization, `resolveLayoutGroups`)
|
||||
проверяется в `src/**/*.test.ts`; DOM, hydration и пользовательские потоки — в
|
||||
Playwright. Component-тесты не дублируют e2e-контракт.
|
||||
Чистая логика схемы, layout и preview-модели (defaults, sanitization,
|
||||
`resolveLayoutGroups`, `buildSchemaPreviewModel`) проверяется в
|
||||
`src/**/*.test.ts`; DOM, hydration и пользовательские потоки — в Playwright.
|
||||
Component-тесты не дублируют e2e-контракт.
|
||||
|
||||
## 5. Helpers и `test.fixme`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user