mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
test: add download zip flow
This commit is contained in:
+4
-4
@@ -51,17 +51,17 @@
|
||||
только если темы нет в существующем документе; иначе обновляется источник
|
||||
истины.
|
||||
|
||||
## Текущий baseline Q6a
|
||||
## Текущий baseline Q6b
|
||||
|
||||
На момент фиксации Q6a:
|
||||
На момент фиксации Q6b:
|
||||
|
||||
- production registry содержит 122 инструмента;
|
||||
- `pnpm --dir web check` проходит без ошибок и предупреждений;
|
||||
- `pnpm --dir web test` — 41 test files / 445 tests;
|
||||
- `pnpm --dir web test` — 42 test files / 449 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;
|
||||
- `pnpm verify` проходит; production E2E — 109 passed, 0 skipped.
|
||||
- `pnpm verify` проходит; production E2E — 110 passed, 0 skipped.
|
||||
|
||||
Baseline и следующий шаг поддерживаются в `docs/plan-codebase-quality.md`.
|
||||
|
||||
|
||||
+9
-7
@@ -219,10 +219,12 @@ Q5 закрывает известные preview-проблемы; активн
|
||||
`result: "files"` в реестре, сериализация через executor, скачивание
|
||||
zip-архивом, грид-превью частей. Реализовано на первом потребителе
|
||||
`split-into-parts-png` (2026-09, `docs/archive/plan-split-into-parts.md`).
|
||||
**1 → many:** подключение остальных потребителей (gif-to-frames,
|
||||
separate-colors) при необходимости; формат/качество файлов внутри zip —
|
||||
отложено до UX-райза «Download» (п.7). **many → 1** (вход = архив/несколько
|
||||
картинок → единый результат): не реализовано. Зависит от batch-обработки
|
||||
архивов (п.5 идей, roadmap фаза 8 «batch-страница»). Нужна отдельная
|
||||
проработка входа (распаковка zip в браузере, порядок файлов, поведение в
|
||||
пайплайне — такие инструменты терминальны, как и 1 → many).
|
||||
Q6b закрывает контракт ZIP/download: unit-тесты `web/src/lib/zip.test.ts` и
|
||||
browser-сценарий `web/e2e/pipeline.spec.ts` проверяют имена частей и
|
||||
содержимое архива. **1 → many:** подключение остальных потребителей
|
||||
(gif-to-frames, separate-colors) при необходимости; формат/качество файлов
|
||||
внутри zip — отложено до UX-райза «Download» (п.7). **many → 1** (вход =
|
||||
архив/несколько картинок → единый результат): не реализовано. Зависит от
|
||||
batch-обработки архивов (п.5 идей, roadmap фаза 8 «batch-страница»). Нужна
|
||||
отдельная проработка входа (распаковка zip в браузере, порядок файлов,
|
||||
поведение в пайплайне — такие инструменты терминальны, как и 1 → many).
|
||||
|
||||
@@ -95,9 +95,9 @@
|
||||
корректный (не «кракозябры»).
|
||||
- [ ] remove-background на сложной полупрозрачности — края не «звенят».
|
||||
|
||||
## G. Закрытые Q5-проблемы
|
||||
## G. Закрытые Q5/Q6b-проблемы
|
||||
|
||||
> Q5-проблемы закрыты автоматическими тестами; для ручной проверки остаются
|
||||
> Q5/Q6b-проблемы закрыты автоматическими тестами; для ручной проверки остаются
|
||||
> субъективные сценарии разделов A–F.
|
||||
|
||||
- [x] **Генераторы:** auto-run по дефолтам, результат и изменение параметра без
|
||||
@@ -108,6 +108,10 @@
|
||||
auto-run завершается результатом. `web/e2e/pipeline.spec.ts`.
|
||||
- [x] **Локализация ошибок:** alert хранит key/vars, переводится при выводе и
|
||||
обновляется при смене языка. `web/e2e/i18n.spec.ts`.
|
||||
- [x] **FileResult → ZIP:** `split-into-parts-png` скачивает
|
||||
`split-into-parts-png.zip` с именованными PNG-частями; содержимое и
|
||||
сигнатуры проверяются `web/src/lib/zip.test.ts` и
|
||||
`web/e2e/pipeline.spec.ts`.
|
||||
|
||||
## Как долго
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# План: линтеры, тесты и качество кодовой базы
|
||||
|
||||
> Статус: **draft — Q0–Q5 и Q6a готовы к ревью; Q6b — следующий этап**.
|
||||
> Статус: **draft — Q0–Q5, Q6a и Q6b готовы к ревью; Q6c — следующий этап**.
|
||||
>
|
||||
> Источник: `docs/backlog.md`, аудит конфигурации `web/`, e2e-тестов и
|
||||
> инфраструктурных скриптов. Q0–Q5 и Q6a выполнены; Q6b–Q8 выполняются
|
||||
> инфраструктурных скриптов. Q0–Q5, Q6a и Q6b выполнены; Q6c–Q8 выполняются
|
||||
> отдельными атомарными шагами.
|
||||
>
|
||||
> Цель: сделать качество кодовой базы воспроизводимым, убрать ложную «зелёность»
|
||||
@@ -216,9 +216,21 @@ malformed fallback, source-aware sanitization и DOM metadata. Browser smoke
|
||||
- `debounce` покрыт fake timers; E2E подтверждает последние значения при быстрых
|
||||
последовательных изменениях генератора.
|
||||
|
||||
#### Q6b–Q6f. Оставшиеся направления
|
||||
#### Q6b. FileResult → ZIP → download
|
||||
|
||||
**Статус:** выполнен. Q6a закрыл worker-транспорт; Q6b добавил проверяемый ZIP
|
||||
seam, unit round-trip для `FileResult`, защиту пустого результата и error/busy
|
||||
контракт download. Отдельный browser-сценарий скачивает архив и проверяет имена
|
||||
частей и PNG-сигнатуры.
|
||||
|
||||
- `buildZipEntries` не зависит от DOM; `downloadZip` остаётся UI-обёрткой.
|
||||
- `SchemaToolView` переиспользует `downloadBlob`, ловит ошибки кодирования и
|
||||
блокирует повторный download на время сборки.
|
||||
- E2E использует `downloadResultFile` и `unzipSync`, не добавляя новые
|
||||
`data-testid`; files-инструменты не проходят через image-smoke.
|
||||
|
||||
#### Q6c–Q6f. Оставшиеся направления
|
||||
|
||||
- `FileResult` → ZIP → download;
|
||||
- output MIME/quality;
|
||||
- malformed и special PNG fixtures: CRC, truncated, palette, 16-bit;
|
||||
- smoke всех типов инструментов из registry;
|
||||
|
||||
@@ -61,8 +61,10 @@ CSS-классы и конкретный формат временного URL
|
||||
|
||||
`web/e2e/helpers/page.ts` владеет общими операциями `openTool`, `uploadImage`,
|
||||
`resultImage`, `sourceImage`, `verdictStatus`, `textResult`, `errorAlert`,
|
||||
`emptyState`, `rangeInput` и `downloadResult`. Специфика должна вызывать эти
|
||||
helpers, а не повторять raw-селекторы.
|
||||
`emptyState`, `rangeInput`, `downloadResult` и `downloadResultFile`. Специфика
|
||||
должна вызывать эти helpers, а не повторять raw-селекторы. Инструменты с
|
||||
`result: "files"` проверяются отдельным ZIP-сценарием: общий image-smoke не
|
||||
применяется к ним.
|
||||
|
||||
`test.fixme` допускается только для зарегистрированной проблемы в backlog или
|
||||
checklist. В комментарии указывается ссылка на неё. После исправления тест и
|
||||
|
||||
Reference in New Issue
Block a user