124 lines
9.9 KiB
Markdown
124 lines
9.9 KiB
Markdown
# 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.
|