mirror of
https://github.com/Ku6epXBOCTuK/easy-png-tools.git
synced 2026-11-13 17:08:20 +00:00
test: less fragile - use semantic locators\helpers
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
# План: линтеры, тесты и качество кодовой базы
|
||||
|
||||
> Статус: **draft — Q0–Q3 готовы к ревью; Q4 — следующий этап**.
|
||||
> Статус: **draft — Q0–Q4 готовы к ревью; Q5 — следующий этап**.
|
||||
>
|
||||
> Источник: `docs/backlog.md`, аудит конфигурации `web/`, e2e-тестов и
|
||||
> инфраструктурных скриптов. Q0–Q3 выполнены; Q4–Q8 выполняются отдельными
|
||||
> инфраструктурных скриптов. Q0–Q4 выполнены; Q5–Q8 выполняются отдельными
|
||||
> атомарными шагами.
|
||||
>
|
||||
> Цель: сделать качество кодовой базы воспроизводимым, убрать ложную «зелёность»
|
||||
@@ -152,36 +152,30 @@ pnpm --dir web test:e2e
|
||||
- Проверены production build, verify и отдельный E2E smoke production-маршрутов.
|
||||
|
||||
**Результат:** `/v1/**`, UI-v1-файлы и legacy-конфигурация отсутствуют;
|
||||
следующий этап — Q4.
|
||||
следующий этап — Q5.
|
||||
|
||||
### Q4. Тестовый контракт e2e
|
||||
|
||||
**Оценка:** M. **Зависимости:** Q0–Q3, решение по i18n и генераторам.
|
||||
**Статус:** выполнен. **Проверено:** `pnpm verify` и полный Playwright smoke
|
||||
проходят; 105 тестов passed, 4 known-issue теста skipped. **Оценка:** M.
|
||||
**Зависимости:** Q0–Q3.
|
||||
|
||||
- Основной locator: `role`, `aria-*`, `getByLabel`, stable `id`/`href`.
|
||||
- `data-testid` использовать только там, где семантического API недостаточно:
|
||||
source, result, empty-state, download.
|
||||
- Убрать зависимость от:
|
||||
- абсолютных чисел `TOTAL`/`GROUPS`;
|
||||
- точного количества fuzzy-search результатов;
|
||||
- внутренних CSS-классов;
|
||||
- `img[alt="Result image"]`;
|
||||
- полных локализованных предложений.
|
||||
- Для каталога проверять конкретные инструменты и согласованность отображённых
|
||||
карточек общему числу, а не фиксированное число `122`.
|
||||
- Централизовать helpers для открытия инструмента, загрузки, результата, ошибки
|
||||
и download.
|
||||
- Зафиксировать locator/i18n/fixture/fixme-политику в
|
||||
`docs/testing-strategy.md`; детали конкретных тестов оставлять рядом с ними.
|
||||
- В unit-тестах проверять ключи через `t()` и i18n helpers. В e2e проверять
|
||||
поведение и отдельный i18n smoke; `data-i18n-key` добавлять только при
|
||||
реальной необходимости тестировать ключ в DOM.
|
||||
- Убрать нестандартные символы из поведенческих ожиданий (`→`, длинные тире,
|
||||
`×`); названия тестов не переписывать механически без необходимости.
|
||||
- Исправить stale-проверки темы, source-locator и locale assertions.
|
||||
- Добавлен `docs/testing-strategy.md` с locator, fixture, i18n и `test.fixme`
|
||||
policy.
|
||||
- В production markup добавлены только разрешённые hooks для source/result/
|
||||
verdict/empty-state; текстовые элементы получили accessible labels, фильтры —
|
||||
`aria-pressed`, а каталог — семантические heading/status landmarks.
|
||||
- E2E переведён на `role`, label и stable `href`; удалены `TOTAL`/`GROUPS`,
|
||||
exact fuzzy counts, internal CSS selectors, `alt`-locators и полные verdict
|
||||
strings. Точные verdict-переводы перенесены в unit-тесты.
|
||||
- Helpers централизованы в `web/e2e/helpers/page.ts`; исправлены stale
|
||||
theme/source/locale checks. Theme fixme снят.
|
||||
- Q5-фиксы resize/crop, generator, Reset и error-сценария не смешивались с этим
|
||||
этапом.
|
||||
|
||||
**Готово, когда:** изменение формулировки, класса или порядка элементов не
|
||||
ломает поведенческий тест без изменения пользовательского контракта.
|
||||
**Результат:** изменение формулировки, класса или порядка элементов не ломает
|
||||
поведенческий тест без изменения пользовательского контракта; следующий этап —
|
||||
Q5.
|
||||
|
||||
### Q5. Закрыть известные preview-баги
|
||||
|
||||
@@ -379,9 +373,9 @@ refactor, новые i18n-правила и исправление продук
|
||||
|
||||
## 7. Решения, которые нужно принять на ревью
|
||||
|
||||
- Какие semantic locators и допустимые `data-testid` закрепить в Q4?
|
||||
- Какие browser/e2e проверки должны быть обязательными для PR, а какие —
|
||||
отдельным ночным прогоном?
|
||||
- Какой default выбрать для `resize-png` и `crop-png` при загрузке?
|
||||
- Подтверждаем ли auto-run генераторов без кнопки Generate?
|
||||
- Что именно должен делать Reset при включённом auto-run?
|
||||
- Какие i18n-сценарии проверяются в e2e, а какие остаются unit-проверками?
|
||||
- Какой независимый invalid-input сценарий заменит resize-dependent error test?
|
||||
- Какие browser/e2e проверки должны быть обязательными для PR, а какие —
|
||||
отдельным ночным прогоном?
|
||||
|
||||
Reference in New Issue
Block a user