revise August 2023 e2e stability articles
Build and deploy / deploy (push) Successful in 16s

This commit is contained in:
2026-07-31 15:08:57 +03:00
parent 5cbd53d8ec
commit 3d310bd605
7 changed files with 966 additions and 1 deletions
+123
View File
@@ -0,0 +1,123 @@
# P66 — август 2023: стабильные e2e-тесты
## Граница пакета
Подготовлены только пять sidecar-файлов для последующей интеграции главным
агентом:
- `web/scripts/upgrade-2023-08.mjs`;
- `editorial/reviews/2023-08-draft.md`;
- `web/public/assets/editorial/2023/e2e-stability-2023-flake-classification.svg`;
- `web/public/assets/editorial/2023/e2e-stability-2023-wait-contract.svg`;
- `web/public/assets/editorial/2023/e2e-stability-2023-triage-loop.svg`.
Три замены используют точные archive slug и не содержат `date` или `author`:
| Slug | Роль | Основной текст |
| --- | --- | ---: |
| `editorial-2023-08-practice-e2e-stability` | практический маршрут | 9 694 знака |
| `editorial-2023-08-mechanism-e2e-stability` | модель контрактов | 9 423 знака |
| `editorial-2023-08-field-e2e-stability` | triage и rollback | 9 443 знака |
Registry, README, `articles.json`, очередь, Git и файлы других агентов не
менялись. Пакет не коммитился и не пушился.
## Историческая опора
Все источники являются официальными и были доступны к концу августа 2023:
- [Playwright v1.37.0](https://github.com/microsoft/playwright/releases/tag/v1.37.0) — опубликованный GitHub release от 10 августа 2023.
- [Auto-waiting, тег v1.37.0](https://raw.githubusercontent.com/microsoft/playwright/v1.37.0/docs/src/actionability.md) — для `click` перечислены attached, visible, stable, receives events и enabled; это actionability target, не бизнес-успех.
- [Retries, тег v1.37.0](https://raw.githubusercontent.com/microsoft/playwright/v1.37.0/docs/src/test-retries-js.md) — при failure worker с браузером отбрасывается, retry идёт в новом worker; `flaky` описывает failed → passed, а не причину различия.
- [Trace Viewer, тег v1.37.0](https://raw.githubusercontent.com/microsoft/playwright/v1.37.0/docs/src/trace-viewer.md) — записанный trace включает actions, snapshots, action log, source и network log; `on-first-retry` относится к первому retry.
- [Best Practices, тег v1.37.0](https://raw.githubusercontent.com/microsoft/playwright/v1.37.0/docs/src/best-practices-js.md) — изоляция, user-facing locator и web-first assertions.
## Саморевью 1 — факты и модель
- Разведены selector, actionability, readiness condition, retry и evidence.
Уникальный locator и успешный `click` нигде не выдаются за подтверждение
продуктового результата.
- `failed → passed` назван статусом двух попыток; не утверждается, что это
реальный flake, причина сбоя, медленная сеть или совместимость браузера.
- Trace описан как evidence конкретной записанной попытки. В текстах нет
заявления, что был открыт настоящий trace, video, browser или CI-report.
- Fixture создаёт только marked synthetic objects в памяти. У него нет URL,
реального `trace.zip`, video, duration, browser name, файлового чтения,
запуска Playwright или обращения к сети. Он не оценивает настоящий флак,
время или compatibility.
- Отрицательные ветки отделяют множественный selector от отсутствующего
readiness, отвергают расходящуюся retry-policy и подмену synthetic evidence
реальным artefact. План запрещает увеличивать timeout или переписывать
selector без evidence и требует condition, совпадающий с evidence.
## Саморевью 2 — голос, полнота и объём
- Голос М6 соответствует 2023 году: спокойная системная практика без
неподтверждённого опыта управления всей организацией. Утверждения привязаны
к контракту, попытке, owner, rollback и следующей проверке.
- Первые два абзаца каждой статьи называют проблему и цену: retry маскирует
первый отказ, а общий timeout ухудшает обратную связь.
- В каждой статье есть доступная таблица, самостоятельный SVG с содержательным
`alt` и подписью, исполнимый fixture, ordered route
«симптом → причина → проверка → действие», ограничения и следующий шаг.
- Проверен объём основного текста без списка источников: 9 694, 9 423 и
9 443 знака — внутри требуемых 5 000–15 000 и целевого практического
диапазона около 8–10 тысяч.
- Убраны обобщения без объекта. Timeout назван верхней границей ожидания, а
не readiness condition; trace не назначен заменой причинного анализа.
## Саморевью 3 — визуал, безопасность и выпуск
- Все три SVG прошли XML-проверку. Safety scan не нашёл `script`,
`foreignObject`, `javascript:`, `data:image` и event-handler attributes.
- Каждый SVG отрендерен Sharp при ширине 375 px. На визуальном проходе
проверены контраст, отсутствие обрезания текста, стрелки переходов и
читаемость ключевых развилок: selector/readiness/retry/evidence.
- Автоматический аудит подтвердил slug, import-safe CLI/export, отсутствие
`date`/`author`, объём, таблицы, figure/caption, пример, ordered route,
источники и наличие visual assets.
- Production build и registry-аудит намеренно не выполнялись: это sidecar без
интеграции, и их выполняет главный агент после добавления revisions в общий
registry.
## Выполненные команды
| Команда | Результат |
| --- | --- |
| `node --check web/scripts/upgrade-2023-08.mjs` | PASS |
| `node web/scripts/upgrade-2023-08.mjs --verify-fixture` | `PASS fixture: 18/18 assertions` после независимого model review |
| `npm run audit:draft -- scripts/upgrade-2023-08.mjs` из `web/` | PASS для трёх slug |
| import-safe import без `date`/`author` | `PASS import-safe: 3 revisions without date/author` |
| `xmllint --noout` для трёх SVG | PASS |
| SVG safety scan | PASS, совпадений нет |
| Sharp render 375 px для трёх SVG | PASS, выполнен визуальный проход |
## Интеграционное ревью главного агента
Проведён отдельный проход после передачи sidecar. Проверены первоисточники
Playwright по тегу `v1.37.0`: actionability для `click` не равна продуктовому
readiness; retry запускается в новом worker; `flaky` означает только
`failed → passed`; `on-first-retry` относится к записи trace первого retry.
Эти границы оставлены в тексте и в fixture, а не заменены общими обещаниями
«стабильности».
Model review нашёл две скрытые возможности подмены вывода. Классификатор теперь
принимает только согласованную retry-policy: начальная и первая повторная
попытки обе должны быть частью одной настройки с `configuredRetries = 1`.
План изменения readiness теперь обязан использовать в точности condition из
evidence; нельзя собрать правильную классификацию и затем предложить другое
ожидание. Добавлены отрицательные fixture-сценарии для обоих случаев.
Повторные результаты: `node --check` — PASS, fixture — `18/18`, черновой
аудит — 9 694 / 9 655 / 9 562 знака, строгий archive audit — PASS для трёх
archive slug. Registry содержит 193 уникальные ревизии. XML и safety scan
визуалов чисты; три PNG-рендера при 375 px просмотрены вручную. `npm run build`
сгенерировал 374 статические страницы без ошибки.
## Ограничение при передаче
Этот пакет не является доказательством стабильности существующих e2e-тестов.
Главному агенту при интеграции нужно добавить только эти три revisions в общий
overlay, затем выполнить строгий archive audit и production build в контексте
репозитория. Реальные trace, browser run, CI-данные, flake rate и browser
compatibility остаются за пределами sidecar.