Files
huncode d78abe253f
Build and deploy / deploy (push) Successful in 18s
revise October 2022 UI tests articles
2026-07-31 14:08:28 +03:00

34 lines
6.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# П56 · 2022-10 · Проверки пользовательского сценария — три прохода саморевью
## Рамка пакета
- Slug: `editorial-2022-10-practice-ui-tests`, `editorial-2022-10-mechanism-ui-tests`, `editorial-2022-10-field-ui-tests`.
- Голос: М5, начало 2022 года; короткая прагматичная техническая речь. Объект разбора — один flaky e2e-паттерн: произвольный wait после действия вместо наблюдаемого условия.
- Граница: package не запускает браузер, Playwright, WebDriver, DOM, таймер, сеть, selector, trace или метрику. Fixture — только deterministic in-memory transition model; `requestId` и acknowledgement — учебные значения.
- Sidecar содержит ровно пять новых файлов. Registry, README, `articles.json`, очередь, Git и предыдущие месяцы не менялись.
## Проход 1 — факты и техника
- Источники проверены как первичные/официальные и доступные к октябрю 2022 года: immutable [Playwright assertions commit af0d2936 от 07.10.2022](https://github.com/microsoft/playwright/blob/af0d2936ac6e8780214c251ff58a5e7d6eba41ca/docs/src/test-assertions-js.md), [W3C WebDriver Working Draft 25.10.2022](https://www.w3.org/TR/2022/WD-webdriver2-20221025/) и [датированная WCAG 2.1 Recommendation 05.06.2018](https://www.w3.org/TR/2018/REC-WCAG21-20180605/). В тексте статус WD указан именно как Working Draft; documentation commit не назван текущей документацией.
- Убрана ложная логика: прошедшая секунда не считается готовностью, а локальный acknowledgement не называется ответом сервера. Retrying assertions у Playwright описаны только как ожидание выбранного condition до timeout; выбор condition остаётся задачей UI-contract.
- Независимая правка редактора: первоначальный rollback возвращал и счётчик запросов, из-за чего новая попытка повторно получала `request-01` и теоретически могла принять поздний ответ первой попытки. Теперь rollback возвращает только pre-submit UI-снимок с черновиком, но сохраняет монотонный счётчик: вторая попытка получает `request-02`, а старый acknowledgement явно отклоняется.
- `runUiTestsFixture()` проверяет четырнадцать свойств только локальной модели: boundary без browser/timer, named pending state, submit guard, stale acknowledgement, recovery, сохранение черновика без ложного success при rollback, монотонность request id, accepted и duplicate reply. Нет assertion о реально запущенном UI или статистике.
## Проход 2 — голос, полнота и объём
- Первые два абзаца каждой статьи дают проблему и цену: arbitrary wait даёт флак, ложный зелёный CI и диагностику без наблюдаемого перехода.
- Маршрут в каждой статье строится как «симптом → причина → проверка → действие», с отдельной границей, rollback и следующим шагом. Есть таблица, нумерованный маршрут, исполнимый code/example, figure с alt/caption и проверяемые источники.
- Размер проверяется внутри revision builder без списка источников: 6 498 / 7 291 / 7 403 знака; audit подтверждает диапазон 5 000–15 000 и минимум 8 минут чтения.
## Проход 3 — визуал, безопасность и выпуск
- SVG разделяют вопросы: state contract, intent/transition/observation и diagnosis/rollback. В них нет `script`, `foreignObject`, внешних URL, `data:image` или интерактивного поведения.
- После независимой правки повторно выполнены `node --check web/scripts/upgrade-2022-10.mjs` — PASS; `node web/scripts/upgrade-2022-10.mjs --verify-fixture` — PASS 14/14; `cd web && npm run audit:draft -- scripts/upgrade-2022-10.mjs` — PASS; import-safe export без `date`/`author`, XML-проверка, safety scan и Sharp-review всех трёх SVG на ширине 375 px — PASS. Детали относятся только к sidecar и не являются публикацией.
- При приёмке пакет добавлен в registry поверх исходных slug; `articles.json`, даты и автор не менялись. README обновлён с 169 до 172 принятых материалов из 358. Чужие sidecar-файлы не затрагивались.
## Интеграционная приёмка
- Строгий аудит опубликованного overlay прошёл для всех трёх slug: 6 498 / 7 471 / 7 467 знаков, по одной figure, table и code example. Отдельная проверка merge подтверждает исходные даты и автора `DarkRiDDeR` для всех трёх записей.
- `npm run build` в `web/` завершился успешно: production-сборка сгенерировала 374 статические страницы. Неподдерживаемые локальные npm-конфигурации выдали только предупреждения; TypeScript и Next.js завершились без ошибки.
- Перед commit дополнительно требуется только `git diff --check`, проверка точного списка staged-файлов и проверка отношения к `origin/master`; reset и перезапись архива не применялись.