Files
huncode 3d310bd605
Build and deploy / deploy (push) Successful in 16s
revise August 2023 e2e stability articles
2026-07-31 15:08:57 +03:00

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