6.4 KiB
6.4 KiB
П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, W3C WebDriver Working Draft 25.10.2022 и датированная WCAG 2.1 Recommendation 05.06.2018. В тексте статус 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 и перезапись архива не применялись.