fix(test): сохранять снимки GRE и VXLAN в результатах проверки

This commit is contained in:
Denozordec committed 2026-10-14 09:22:32 +07:00
1 parent af07c59ffa
commit cdb528276b
8 files changed
+101 -14

No files matched your search

+5 -1
View File
@@ -1,6 +1,6 @@
# UX/UI: протокол внешней приёмки 12.5 # UX/UI: протокол внешней приёмки 12.5
Актуальное продолжение 2026-10-14: Android227 принят по подтверждению пользователя — сайты, внешний IPv4 194.226.121.150, Ping198.18.227.1 и повторное подключение успешны.16 own objects удалены; поля исходных13 коллекций сохранены, оба CHR доступны, пароли прежние. Синхронные native packet counters не получены (sample0 peers/SA). Общая UI-регрессия226 выполняется, известны2 harness/compiler отказа. Backend ux-regression222/frontend ux-routing218. Далее — закончить226, затем тестовый S3 после получения параметров. Этап12.5 открыт. Актуальное продолжение 2026-10-14: UI226 —1366 unique accepted (основной1364 passed/2 failed; scoped5/5 recovered2), screenshots364 сохранены. Android227 human full-tunnel/reconnect accepted,16 own objects удалены, поля13 коллекций сохранены, оба CHR доступны/пароли прежние; синхронных native packet counters нет. Backend ux-regression222/frontend ux-routing218. Далее228 — S3 после получения endpoint/bucket/region/keys; этап12.5 открыт.
IPsec78: реальный PSK responder established, mode-config198.18.78.10 и online=true подтверждены API; точные собственные объекты удалены. Сертификатный/DN online, late failure и history restore остаются открытыми. [Отчёт](ux-ui/acceptance/ipsec-mode-config-2026-10-09.json), [журнал](ux-ui-progress.md). IPsec78: реальный PSK responder established, mode-config198.18.78.10 и online=true подтверждены API; точные собственные объекты удалены. Сертификатный/DN online, late failure и history restore остаются открытыми. [Отчёт](ux-ui/acceptance/ipsec-mode-config-2026-10-09.json), [журнал](ux-ui-progress.md).
@@ -2635,3 +2635,7 @@ Runtime backend ux-regression222/frontend ux-routing218. Latest backend25/UI52
### Завершение Android227 — 2026-10-14 ### Завершение Android227 — 2026-10-14
Пользователь подтвердил сайты/внешнийIPv4/Ping и повторное подключение. Все16 own objects удалены; исходные поля13 коллекций preserved, оба CHR доступны. Native sample0 peers/SA не синхронизирован с телефоном, packet counter proof отсутствует. [Приёмка/границы](ux-ui/acceptance/android227-human-acceptance-2026-10-14.json). Пользователь подтвердил сайты/внешнийIPv4/Ping и повторное подключение. Все16 own objects удалены; исходные поля13 коллекций preserved, оба CHR доступны. Native sample0 peers/SA не синхронизирован с телефоном, packet counter proof отсутствует. [Приёмка/границы](ux-ui/acceptance/android227-human-acceptance-2026-10-14.json).
## 12.5.226 — общий UI-набор и scoped recovery (2026-10-14)
1366 unique accepted:1364 primary passed/2 failed,5/5 rerun recovered2. Whole fresh zero-failure run не заявляется. Сохранены364 исходных screenshots, изменён только artifact path GRE/VXLAN теста; application/runtime unchanged. [Итог](ux-ui/acceptance/general226-ui-regression-2026-10-14.json). Далее228 — S3 prerequisites.
+1 -1
View File
@@ -1,6 +1,6 @@
# План реализации UX/UI по пятичасовым окнам # План реализации UX/UI по пятичасовым окнам
Актуальное продолжение 2026-10-14: Android227 принят по подтверждению пользователя — сайты, внешний IPv4 194.226.121.150, Ping198.18.227.1 и повторное подключение успешны.16 own objects удалены; поля исходных13 коллекций сохранены, оба CHR доступны, пароли прежние. Синхронные native packet counters не получены (sample0 peers/SA). Общая UI-регрессия226 выполняется, известны2 harness/compiler отказа. Backend ux-regression222/frontend ux-routing218. Далее — закончить226, затем тестовый S3 после получения параметров. Этап12.5 открыт. Актуальное продолжение 2026-10-14: UI226 —1366 unique accepted (основной1364 passed/2 failed; scoped5/5 recovered2), screenshots364 сохранены. Android227 human full-tunnel/reconnect accepted,16 own objects удалены, поля13 коллекций сохранены, оба CHR доступны/пароли прежние; синхронных native packet counters нет. Backend ux-regression222/frontend ux-routing218. Далее228 — S3 после получения endpoint/bucket/region/keys; этап12.5 открыт.
Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-14. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат. Общий план проекта MikrotikManager. Основан на согласованном плане из задачи; точка продолжения обновлена 2026-10-14. Источник фактического прогресса, проверок и ограничений — [журнал реализации](ux-ui-progress.md). Этот документ задаёт объём и критерии завершения, журнал фиксирует результат.
+12 -2
View File
@@ -1,6 +1,6 @@
# UX/UI: журнал реализации # UX/UI: журнал реализации
Актуальное продолжение 2026-10-14: Android227 принят по подтверждению пользователя — сайты, внешний IPv4 194.226.121.150, Ping198.18.227.1 и повторное подключение успешны.16 own objects удалены; поля исходных13 коллекций сохранены, оба CHR доступны, пароли прежние. Синхронные native packet counters не получены (sample0 peers/SA). Общая UI-регрессия226 выполняется, известны2 harness/compiler отказа. Backend ux-regression222/frontend ux-routing218. Далее — закончить226, затем тестовый S3 после получения параметров. Этап12.5 открыт. Актуальное продолжение 2026-10-14: UI226 —1366 unique accepted (основной1364 passed/2 failed; scoped5/5 recovered2), screenshots364 сохранены. Android227 human full-tunnel/reconnect accepted,16 own objects удалены, поля13 коллекций сохранены, оба CHR доступны/пароли прежние; синхронных native packet counters нет. Backend ux-regression222/frontend ux-routing218. Далее228 — S3 после получения endpoint/bucket/region/keys; этап12.5 открыт.
Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md). Общий план: [UX/UI по этапам и пятичасовым окнам](ux-ui-plan.md). План задаёт объём, этот журнал фиксирует выполненные блоки и ограничения. Записи расположены от новых к старым; подробная история этапа12 также сохранена в [ux-ui-stage-12.md](ux-ui-stage-12.md).
@@ -36,7 +36,17 @@
| 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 | | 10 | Маршрутизация, диагностика, карта и терминал | Завершён в границах локальной приёмки 2026-10-01; блоки 10.1–10.71, внешние ограничения в 10.71 |
| 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 | | 11А | Пользователи, контейнеры, сертификаты и резервные копии | Завершён в границах локальной приёмки 2026-10-01; 11А.1–11А.33, внешние ограничения в 11А.33 |
| 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 | | 11Б | Оповещения, сбор данных, интеграции, релизы и настройки | Завершён в границах локальной приёмки 2026-10-03; ограничения и evidence в11Б.7 |
| 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка12.3.83 в границах журнала. Внешняя12.5: блоки1–225 завершены в записанных scopes, этап открыт. Runtime backend ux-regression222/frontend ux-routing218; backend25/UI52 и дополнительные SQL/UDP222 прошли. | | 12 | Итоговая доступность, адаптивность, производительность и регрессия | Локальная приёмка12.3.83 в границах журнала. Внешняя12.5: блоки1–227 завершены в записанных scopes, этап открыт. Runtime backend ux-regression222/frontend ux-routing218; backend25/UI52 и дополнительные SQL/UDP222 прошли. |
## 12.5.226 — свежая общая UI-регрессия и защита пользовательских снимков (2026-10-14)
Основной configured default E2E набор229 файлов/1366 unique:1364 passed,2 failed, skipped0/flaky0, exit1, фактически40.6m. Context suites, исключённые playwright.config.ts, не включены; тесты работают по ordinary live HTTP path с подставными ответами. Это не native/production data-plane или полноценная screen-reader приёмка.
VXLAN mobile layout упал UNKNOWN при записи tracked docs/ux-ui/screens/vxlan-export-mobile.png. В gre-vxlan-layout.spec.ts оба снимка теперь сохраняются через info.outputPath, без записи документационных/user PNG. Large GRE1000 timeout пришёл на фоне browser error «An unexpected Turbopack error occurred»; первичная причина compiler error не установлена, поломка пагинации этим отказом не доказана. Приложение/vendor/ReUI/theme не менялись, требования/selectors/timeouts тестов не ослаблялись.
После завершения основной серии сохранены все364 исходных файла снимков;127 изменённых тестом восстановлены из предварительной bytehash backup, включая8 user PNG. Scoped ESLint/diff check прошли. Fresh обычный Turbopack процесс:5/5 GRE/VXLAN+large GRE passed, skipped0/flaky0. Итого1366 unique accepted =1364 primary +2 recovered; остальные3 rerun уже входили в accepted. Не заявляется whole fresh1366 zero-failure run. [Полный итог/границы](ux-ui/acceptance/general226-ui-regression-2026-10-14.json).
Runtime unchanged: backend ux-regression222/frontend ux-routing218, новые production build/deploy не требовались для test artifact path. Android227 принят по human confirmation/cleanup16 в соседней записи. Далее228 — тестовый S3 с выделенным bucket/prefix после получения endpoint/region/keys. Остальные группы матрицы и причина native intermittent401/500 остаются открытыми; этап12.5 не завершён.
## 12.5.227 — профиль StrongSwan Android для ручной full-tunnel приёмки (2026-10-14) ## 12.5.227 — профиль StrongSwan Android для ручной full-tunnel приёмки (2026-10-14)
+7 -3
View File
@@ -1,8 +1,8 @@
# Оставшаяся внешняя приёмка — 2026-10-14 # Оставшаяся внешняя приёмка — 2026-10-14
Актуальное продолжение 2026-10-14: Android227 принят по подтверждению пользователя — сайты, внешний IPv4 194.226.121.150, Ping198.18.227.1 и повторное подключение успешны.16 own objects удалены; поля исходных13 коллекций сохранены, оба CHR доступны, пароли прежние. Синхронные native packet counters не получены (sample0 peers/SA). Общая UI-регрессия226 выполняется, известны2 harness/compiler отказа. Backend ux-regression222/frontend ux-routing218. Далее — закончить226, затем тестовый S3 после получения параметров. Этап12.5 открыт. Актуальное продолжение 2026-10-14: UI226 —1366 unique accepted (основной1364 passed/2 failed; scoped5/5 recovered2), screenshots364 сохранены. Android227 human full-tunnel/reconnect accepted,16 own objects удалены, поля13 коллекций сохранены, оба CHR доступны/пароли прежние; синхронных native packet counters нет. Backend ux-regression222/frontend ux-routing218. Далее228 — S3 после получения endpoint/bucket/region/keys; этап12.5 открыт.
Это актуальная матрица после 12.5.225. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии. Это актуальная матрица после 12.5.227. Исторические записи сохраняют версии и ограничения на момент выполнения; поздние проверки ниже уточняют их. Этап 12.5 открыт. Успех в двух CHR и одном backend не означает приёмку всех конфигураций, интеграций или полной регрессии.
Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-regression222`, frontend `ux-routing218`; production lab с195 использует AUTH_REQUIRED=true и Portal1.3.1. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись. Стенд: Debian13/Compose, PostgreSQL18.6, два CHR RouterOS7.24.5. Backend `ux-regression222`, frontend `ux-routing218`; production lab с195 использует AUTH_REQUIRED=true и Portal1.3.1. Подписанные JWT/RBAC проверялись в изолированных процессах. Все собственные объекты112 удалены, исходные13 коллекций×2 (включая logging/certificates/files/routes) проверены; пароли не менялись.
@@ -17,7 +17,7 @@
| Масштаб и длительная устойчивость | Контролируемые lock/dedupe/loss/recovery и короткие native проверки | Несколько backend/worker/writers, длительный rekey/REST/traffic, physical disconnect и maximum throughput | | Масштаб и длительная устойчивость | Контролируемые lock/dedupe/loss/recovery и короткие native проверки | Несколько backend/worker/writers, длительный rekey/REST/traffic, physical disconnect и maximum throughput |
| Внешние хранилища и jobs | Локальные API/errors/RBAC/owned SQL; реальные Portal1.3.1 и Telegram доставлены195–201 | Реальные S3/provider/container/Gitea/MaxMind jobs с соответствующими endpoints/аккаунтами; private/paid credentials не выдумывать | | Внешние хранилища и jobs | Локальные API/errors/RBAC/owned SQL; реальные Portal1.3.1 и Telegram доставлены195–201 | Реальные S3/provider/container/Gitea/MaxMind jobs с соответствующими endpoints/аккаунтами; private/paid credentials не выдумывать |
| Расширенные сетевые конфигурации | GRE/WG/VXLAN/IPsec/OSPF/BFD/BGP сценарии и точные границы записаны | from-pool/EUI-64/multiple-address import/export, outer IPv6, произвольная PKI/OID/policy/path-length и длительные переходы; BFD-only gate гарантией не стал | | Расширенные сетевые конфигурации | GRE/WG/VXLAN/IPsec/OSPF/BFD/BGP сценарии и точные границы записаны | from-pool/EUI-64/multiple-address import/export, outer IPv6, произвольная PKI/OID/policy/path-length и длительные переходы; BFD-only gate гарантией не стал |
| Общий UX, доступность и производительность | Полная UI192 исторически; latest backend25/UI52, scoped contrast/live218 и keyboard206 | Финальная свежая UI-регрессия перед выпуском, профильный performance и ручная accessibility/screen-reader приёмка; scoped axe не полный WCAG | | Общий UX, доступность и производительность | Полная UI192 исторически; latest backend25/UI52, scoped contrast/live218 и keyboard206 | Свежая UI226 принята в записанных границах; профильный performance и ручная accessibility/screen-reader приёмка; scoped axe не полный WCAG |
| Границы выпуска | План/доказательства/датированные блоки сохранены; коммиты локальные | Определить требуемые конфигурации и принять результат в этих границах; невыполненные варианты остаются явными ограничениями | | Границы выпуска | План/доказательства/датированные блоки сохранены; коммиты локальные | Определить требуемые конфигурации и принять результат в этих границах; невыполненные варианты остаются явными ограничениями |
Portal offline JWT действует доexp после logout/role change; это принятая граница198, а не мгновенная revocation. Controlled Telegram unknown/retry201 не доказывает physical WAN lost ACK. User screenshots и vendor ReUI/theme сохранены. Portal offline JWT действует доexp после logout/role change; это принятая граница198, а не мгновенная revocation. Controlled Telegram unknown/retry201 не доказывает physical WAN lost ACK. User screenshots и vendor ReUI/theme сохранены.
@@ -1565,3 +1565,7 @@ Backend25/UI52, disabled33/months5 и оба IPv6 UDP/SQL worker режима п
### Завершение Android227 — 2026-10-14 ### Завершение Android227 — 2026-10-14
Пользователь подтвердил сайты/внешнийIPv4/Ping и повторное подключение. Все16 own objects удалены; исходные поля13 коллекций preserved, оба CHR доступны. Native sample0 peers/SA не синхронизирован с телефоном, packet counter proof отсутствует. [Приёмка/границы](ux-ui/acceptance/android227-human-acceptance-2026-10-14.json). Пользователь подтвердил сайты/внешнийIPv4/Ping и повторное подключение. Все16 own objects удалены; исходные поля13 коллекций preserved, оба CHR доступны. Native sample0 peers/SA не синхронизирован с телефоном, packet counter proof отсутствует. [Приёмка/границы](ux-ui/acceptance/android227-human-acceptance-2026-10-14.json).
## 12.5.226 — общий UI-набор и scoped recovery (2026-10-14)
1366 unique accepted:1364 primary passed/2 failed,5/5 rerun recovered2. Whole fresh zero-failure run не заявляется. Сохранены364 исходных screenshots, изменён только artifact path GRE/VXLAN теста; application/runtime unchanged. [Итог](ux-ui/acceptance/general226-ui-regression-2026-10-14.json). Далее228 — S3 prerequisites.
+12 -1
View File
@@ -1,6 +1,6 @@
# Этап 12: итоговая приёмка UX/UI # Этап 12: итоговая приёмка UX/UI
Актуальное продолжение 2026-10-14: Android227 принят по подтверждению пользователя — сайты, внешний IPv4 194.226.121.150, Ping198.18.227.1 и повторное подключение успешны.16 own objects удалены; поля исходных13 коллекций сохранены, оба CHR доступны, пароли прежние. Синхронные native packet counters не получены (sample0 peers/SA). Общая UI-регрессия226 выполняется, известны2 harness/compiler отказа. Backend ux-regression222/frontend ux-routing218. Далее — закончить226, затем тестовый S3 после получения параметров. Этап12.5 открыт. Актуальное продолжение 2026-10-14: UI226 —1366 unique accepted (основной1364 passed/2 failed; scoped5/5 recovered2), screenshots364 сохранены. Android227 human full-tunnel/reconnect accepted,16 own objects удалены, поля13 коллекций сохранены, оба CHR доступны/пароли прежние; синхронных native packet counters нет. Backend ux-regression222/frontend ux-routing218. Далее228 — S3 после получения endpoint/bucket/region/keys; этап12.5 открыт.
План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push. План: [ux-ui-plan.md](ux-ui-plan.md). Фактические результаты: [ux-ui-progress.md](ux-ui-progress.md). Подготовлен после сводных проверок 11Б; завершение каждого блока требует локального коммита без push.
@@ -4053,3 +4053,14 @@ PKCS#12 chain verify passed; неверный пароль отклонён, pri
Пользователь подтвердил Android: сайты открываются, внешний IPv4=194.226.121.150, Ping198.18.227.1 проходит; после отключения/повторного подключения все проверки снова успешны. Это человеческая full-tunnel приёмка. Native sample не был синхронизирован с подключением и вернул0 peers/SA, поэтому packet counter/encrypted data-plane correlation не заявляется. Числовая версия приложения/Android не получена; long rekey/Wi-Fi-mobile handover/public IPv6 не приняты. [Человеческая приёмка](ux-ui/acceptance/android227-human-acceptance-2026-10-14.json), [cleanup16](ux-ui/acceptance/phone227-cleanup-public.json), [поля13 коллекций](ux-ui/acceptance/phone227-final-audit-public.json). Общая UI-регрессия226 выполняется, результат не объявлен passed. Runtime images ux-regression222/ux-routing218 не менялись. Далее — завершить UI226, затем S3 endpoint/bucket/keys ожидаются от пользователя. Этап12.5 открыт. Пользователь подтвердил Android: сайты открываются, внешний IPv4=194.226.121.150, Ping198.18.227.1 проходит; после отключения/повторного подключения все проверки снова успешны. Это человеческая full-tunnel приёмка. Native sample не был синхронизирован с подключением и вернул0 peers/SA, поэтому packet counter/encrypted data-plane correlation не заявляется. Числовая версия приложения/Android не получена; long rekey/Wi-Fi-mobile handover/public IPv6 не приняты. [Человеческая приёмка](ux-ui/acceptance/android227-human-acceptance-2026-10-14.json), [cleanup16](ux-ui/acceptance/phone227-cleanup-public.json), [поля13 коллекций](ux-ui/acceptance/phone227-final-audit-public.json). Общая UI-регрессия226 выполняется, результат не объявлен passed. Runtime images ux-regression222/ux-routing218 не менялись. Далее — завершить UI226, затем S3 endpoint/bucket/keys ожидаются от пользователя. Этап12.5 открыт.
## 12.5.226 — свежая общая UI-регрессия и защита пользовательских снимков (2026-10-14)
Основной configured default E2E набор229 файлов/1366 unique:1364 passed,2 failed, skipped0/flaky0, exit1, фактически40.6m. Context suites, исключённые playwright.config.ts, не включены; тесты работают по ordinary live HTTP path с подставными ответами. Это не native/production data-plane или полноценная screen-reader приёмка.
VXLAN mobile layout упал UNKNOWN при записи tracked docs/ux-ui/screens/vxlan-export-mobile.png. В gre-vxlan-layout.spec.ts оба снимка теперь сохраняются через info.outputPath, без записи документационных/user PNG. Large GRE1000 timeout пришёл на фоне browser error «An unexpected Turbopack error occurred»; первичная причина compiler error не установлена, поломка пагинации этим отказом не доказана. Приложение/vendor/ReUI/theme не менялись, требования/selectors/timeouts тестов не ослаблялись.
После завершения основной серии сохранены все364 исходных файла снимков;127 изменённых тестом восстановлены из предварительной bytehash backup, включая8 user PNG. Scoped ESLint/diff check прошли. Fresh обычный Turbopack процесс:5/5 GRE/VXLAN+large GRE passed, skipped0/flaky0. Итого1366 unique accepted =1364 primary +2 recovered; остальные3 rerun уже входили в accepted. Не заявляется whole fresh1366 zero-failure run. [Полный итог/границы](ux-ui/acceptance/general226-ui-regression-2026-10-14.json).
Runtime unchanged: backend ux-regression222/frontend ux-routing218, новые production build/deploy не требовались для test artifact path. Android227 принят по human confirmation/cleanup16 в соседней записи. Далее228 — тестовый S3 с выделенным bucket/prefix после получения endpoint/region/keys. Остальные группы матрицы и причина native intermittent401/500 остаются открытыми; этап12.5 не завершён.
+5 -1
View File
@@ -1,6 +1,6 @@
# Тестовый сервер UX/UI — 2026-10-10 # Тестовый сервер UX/UI — 2026-10-10
Актуальное продолжение 2026-10-14: Android227 принят по подтверждению пользователя — сайты, внешний IPv4 194.226.121.150, Ping198.18.227.1 и повторное подключение успешны.16 own objects удалены; поля исходных13 коллекций сохранены, оба CHR доступны, пароли прежние. Синхронные native packet counters не получены (sample0 peers/SA). Общая UI-регрессия226 выполняется, известны2 harness/compiler отказа. Backend ux-regression222/frontend ux-routing218. Далее — закончить226, затем тестовый S3 после получения параметров. Этап12.5 открыт. Актуальное продолжение 2026-10-14: UI226 —1366 unique accepted (основной1364 passed/2 failed; scoped5/5 recovered2), screenshots364 сохранены. Android227 human full-tunnel/reconnect accepted,16 own objects удалены, поля13 коллекций сохранены, оба CHR доступны/пароли прежние; синхронных native packet counters нет. Backend ux-regression222/frontend ux-routing218. Далее228 — S3 после получения endpoint/bucket/region/keys; этап12.5 открыт.
| Параметр | Проверенное состояние | | Параметр | Проверенное состояние |
| --- | --- | | --- | --- |
@@ -2366,3 +2366,7 @@ Runtime backend ux-regression222/frontend ux-routing218. Latest backend25/UI52
### Завершение Android227 — 2026-10-14 ### Завершение Android227 — 2026-10-14
Пользователь подтвердил сайты/внешнийIPv4/Ping и повторное подключение. Все16 own objects удалены; исходные поля13 коллекций preserved, оба CHR доступны. Native sample0 peers/SA не синхронизирован с телефоном, packet counter proof отсутствует. [Приёмка/границы](ux-ui/acceptance/android227-human-acceptance-2026-10-14.json). Пользователь подтвердил сайты/внешнийIPv4/Ping и повторное подключение. Все16 own objects удалены; исходные поля13 коллекций preserved, оба CHR доступны. Native sample0 peers/SA не синхронизирован с телефоном, packet counter proof отсутствует. [Приёмка/границы](ux-ui/acceptance/android227-human-acceptance-2026-10-14.json).
## 12.5.226 — общий UI-набор и scoped recovery (2026-10-14)
1366 unique accepted:1364 primary passed/2 failed,5/5 rerun recovered2. Whole fresh zero-failure run не заявляется. Сохранены364 исходных screenshots, изменён только artifact path GRE/VXLAN теста; application/runtime unchanged. [Итог](ux-ui/acceptance/general226-ui-regression-2026-10-14.json). Далее228 — S3 prerequisites.
@@ -0,0 +1,56 @@
{
"date": "2026-10-14",
"block": "12.5.226",
"initial": {
"command": "playwright test --reporter=json",
"stats": {
"startTime": "2026-10-14T01:37:44.374Z",
"duration": 2438187.8600000003,
"expected": 1364,
"skipped": 0,
"unexpected": 2,
"flaky": 0
},
"files": 229,
"exitCode": 1,
"failures": [
{
"file": "gre-vxlan-layout.spec.ts",
"title": "vxlan: клавиатура и layout mobile",
"category": "UNKNOWN filesystem error while writing tracked VXLAN PNG; switched GRE/VXLAN screenshots to info.outputPath"
},
{
"file": "large-gre.spec.ts",
"title": "GRE1000: page/refresh/full search/sort/cache/export/320px",
"category": "Timeout while browser showed unexpected Turbopack error; no pagination product regression proven"
}
]
},
"rerun": {
"command": "playwright test gre-vxlan-layout.spec.ts large-gre.spec.ts --reporter=json",
"stats": {
"startTime": "2026-10-14T02:19:01.887Z",
"duration": 32941.041999999994,
"expected": 5,
"skipped": 0,
"unexpected": 0,
"flaky": 0
},
"exitCode": 0,
"compiler": "same default Turbopack in fresh Next dev process"
},
"uniqueAccepted": 1366,
"extraUniqueFromRerun": 2,
"alreadyAcceptedRepeatedInRerun": 3,
"wholeFreshZeroFailureRun": false,
"screenshots": {
"verified": 364,
"restored": 127
},
"scope": "Configured default suite: normal HTTP fixtures on live API path; explicitly ignored context suites and external native tests excluded",
"applicationChanges": 0,
"runtimeImagesUnchanged": {
"backend": "ux-regression222",
"frontend": "ux-routing218"
}
}
+3 -5
View File
@@ -1,8 +1,7 @@
import { test, expect } from "@playwright/test" import { test, expect } from "@playwright/test"
import { mkdirSync } from "node:fs"
for (const section of ["gre", "vxlan"]) for (const device of ["desktop", "mobile"] as const) { for (const section of ["gre", "vxlan"]) for (const device of ["desktop", "mobile"] as const) {
test(`${section}: клавиатура и layout ${device}`, async ({ page }) => { test(`${section}: клавиатура и layout ${device}`, async ({ page }, info) => {
await page.setViewportSize(device === "desktop" ? { width: 1440, height: 1000 } : { width: 390, height: 844 }) await page.setViewportSize(device === "desktop" ? { width: 1440, height: 1000 } : { width: 390, height: 844 })
await page.clock.install({ time: new Date("2026-09-30T05:00:00Z") }) await page.clock.install({ time: new Date("2026-09-30T05:00:00Z") })
const devices = [1, 2].map(id => ({ id, name: id === 1 ? "Основной роутер" : "Резервный роутер", host: "192.0.2." + id, enabled: true, country: "RU", status: "online", type: "exit-node" })) const devices = [1, 2].map(id => ({ id, name: id === 1 ? "Основной роутер" : "Резервный роутер", host: "192.0.2." + id, enabled: true, country: "RU", status: "online", type: "exit-node" }))
@@ -25,8 +24,7 @@ for (const section of ["gre", "vxlan"]) for (const device of ["desktop", "mobile
await expect(page.locator("tr[data-row-id]")).toHaveCount(1) await expect(page.locator("tr[data-row-id]")).toHaveCount(1)
expect(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true) expect(await page.evaluate(() => document.documentElement.scrollWidth <= innerWidth)).toBe(true)
await page.addStyleTag({ content: "nextjs-portal { display: none !important; }" }) await page.addStyleTag({ content: "nextjs-portal { display: none !important; }" })
mkdirSync("docs/ux-ui/screens", { recursive: true }) await page.screenshot({ path: info.outputPath(`${section}-${device}.png`), animations: "disabled" })
await page.screenshot({ path: `docs/ux-ui/screens/${section}-${device}.png`, animations: "disabled" })
const menu = page.getByRole("button", { name: "Действия: " + section + "-2", exact: true }) const menu = page.getByRole("button", { name: "Действия: " + section + "-2", exact: true })
await menu.focus() await menu.focus()
await page.keyboard.press("Enter") await page.keyboard.press("Enter")
@@ -45,7 +43,7 @@ for (const section of ["gre", "vxlan"]) for (const device of ["desktop", "mobile
await expect(dialog).toContainText("Резервный роутер") await expect(dialog).toContainText("Резервный роутер")
await expect(dialog).toContainText("vni=200") await expect(dialog).toContainText("vni=200")
} }
await page.screenshot({ path: `docs/ux-ui/screens/${section}-${section === "gre" ? "form" : "export"}-${device}.png`, animations: "disabled" }) await page.screenshot({ path: info.outputPath(`${section}-${section === "gre" ? "form" : "export"}-${device}.png`), animations: "disabled" })
if (section === "gre") { if (section === "gre") {
await dialog.getByRole("button", { name: "Сохранить", exact: true }).focus() await dialog.getByRole("button", { name: "Сохранить", exact: true }).focus()
await page.keyboard.press("Enter") await page.keyboard.press("Enter")