[2026-10-23] eagle: work/_index.md work/macos-ui-tests-pr7562-pr7592-results-2026-10-23.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-23 12:47:25 +06:00
1 parent e521d1f00d
commit 92a7212915
2 files changed
+102

No files matched your search

+2
View File
@@ -1,3 +1,5 @@
# Work
[[projects/ios-duck-ai-toggle]] | [[projects/ios-demo-tracker]] | [[projects/vscode-migration/vscode-migration]]
[[macos-ui-tests-pr7562-pr7592-results-2026-10-23|macOS UI tests — результаты PR #7562 и #7592, работы остановлены]]
@@ -0,0 +1,100 @@
---
date: '2026-10-23'
status: stopped-by-user
tags:
- work
- macos
- testing
- ci
prs:
- 7562
- 7592
---
# macOS UI tests: результаты PR #7562 и #7592
Статус: **работы остановлены пользователем 23 октября 2026 года**. Задача не завершена. Автоматизация `ci-pr-7562` переведена в `PAUSED`; активных локальных контроллеров квалификации не обнаружено. Новые сборки, тесты и изменения не запускаются. Все три незавершённых GitHub Actions run отменены; терминальные статусы GitHub подтверждены. Завершённый Performance run сохранён.
## Стек и сохранённый код
- [PR #7562](https://github.com/duckduckgo/apple-browsers/pull/7562): `main → codex/prebuilt-macos-ui-tests`, head `a5db06b1ad14f59ed41821b3ec9561670231486c`.
- [PR #7592](https://github.com/duckduckgo/apple-browsers/pull/7592): `codex/prebuilt-macos-ui-tests → codex/macos12-test-support`, head `12a187ff86d6599293f3061e125eed69e5355bf7`.
- Оба PR — draft; изменения закоммичены и опубликованы. Оба рабочих дерева при остановке чистые.
- PR1 содержит общую схему артефактов и штатный native XCTest для macOS 14+. PR2 добавляет только поддержку macOS 12; дочерний PR можно исключить без включения адаптера в native-путь.
- Рабочие деревья: `/Users/admin/DuckDuckGo/apple-browsers.git/prebuilt-macos-ui-tests` и `/Users/admin/DuckDuckGo/apple-browsers.git/macos12-test-support`.
## Что исправлено
1. Упаковщик больше не ожидает фиксированное имя приложения: находит единственный экспортированный `DuckDuckGo*.app` и сохраняет его версионированное имя. Коммит PR1 `c9fb27e22f60187c78295d5b432f0ac2c5476bec`.
2. Native-потребители UI, Sync и Performance устанавливают парное приложение через `--app`. Коммит `e49d10a40c50176d657af92189f3424d1e05f948`.
3. Исправлена конфигурация целевого приложения: после сборки с `TEST_TARGET_NAME=` явно сбрасывается `UseUITargetAppProvidedByTests=false`. Итог native-тестов берётся из конечного отчёта `xcresulttool`, включая фактическое число тестов, skips и failures. Коммит `4a81f3027b817d506bd90fb874ab0ec4fa3213d7`.
4. Для четырёх тестовых UI runner задан явный `CODE_SIGN_ENTITLEMENTS` с App Sandbox=false: class fixtures должны запускать reset helper. Один `ENABLE_APP_SANDBOX=NO` не отключал автоматически добавляемую Xcode песочницу; это воспроизведено отдельной native-сборкой Xcode 27.1, явный файл entitlements проверен через codesign. Подпись и песочница браузера не изменялись. Коммит `a5db06b1ad14f59ed41821b3ec9561670231486c`.
5. В macOS 12 адаптер сохраняет точные entitlements исходного native runner при переподписи копии Xcode 13; они входят в ключ compatibility cache. Коммит PR2 `40093aac23be577964e91e93b5527e87d2ced6af`.
6. Для Xcode<27 `build.sh` временно сохраняет project/local `Package.resolved`, позволяет этому компилятору разрешить граф по подходящим manifests и восстанавливает исходные файлы при успехе и ошибке. Проверена сохранность незакоммиченного lockfile после сбоя. Это исправляет прежний crash Xcode при surplus pins (`IDESwiftPackageCore / NSMutableArray insertObjects`, counts 42/41 и 41/40).
## Подтверждённые проверки
- Скриптовые проверки PR1: **29/29 passed**; PR2: **34/34 passed**. Это проверки скриптов, не полный runtime UI/Sync на всех OS.
- Проверки plist/project прошли. Для ранее изменённых Swift-файлов проходил strict SwiftLint; последние исправления затрагивали Python, конфигурацию и entitlements.
- [Performance run 39909721173](https://github.com/duckduckgo/apple-browsers/actions/runs/39909721173), точный head PR1 `a5db06b…`: **success**, фактически выполнено **5 тестов, 0 skipped, 0 failed**. Подтверждено конечной JSON summary и журналом job `120273644724`. Это результат конкретного Performance workflow, не всех suites/OS.
- Выборочно подтверждено реальное выполнение текущего native UI: [job 120275173593](https://github.com/duckduckgo/apple-browsers/actions/runs/39909724376/job/120275173593), HTTPSUpgradeUITests, macOS 14/internal: executed=4, skipped=1, failed=0, passed=true. Полный UI workflow не был завершён к моменту остановки.
## Текущие CI runs
- PR1 [UI 39909724376](https://github.com/duckduckgo/apple-browsers/actions/runs/39909724376): head `a5db06b…`, остановлен по поручению пользователя.
- PR1 [Sync 39909727852](https://github.com/duckduckgo/apple-browsers/actions/runs/39909727852): тот же head, остановлен по поручению пользователя.
- PR1 [Performance 39909721173](https://github.com/duckduckgo/apple-browsers/actions/runs/39909721173): success, сохранён завершённый результат.
- PR2 [UI 39909798220](https://github.com/duckduckgo/apple-browsers/actions/runs/39909798220): head `12a187f…`, остановлен по поручению пользователя.
Перед запросами отмены эти незавершённые runs не имели подтверждённых job failures в проверенных снимках. Частично зелёные jobs не означают полный pass. Отмену по поручению пользователя нельзя считать падением кода.
Конечные состояния подтверждены 23 октября 2026, **12:46:31 Asia/Bishkek** (06:46:31 UTC): UI PR1 39909724376 — completed/cancelled; Sync PR1 39909727852 — completed/cancelled; UI PR2 39909798220 — completed/cancelled; Performance PR1 39909721173 — completed/success. Снимок сохранён в `stopped-by-user.json`.
## macOS 12: что действительно проверено
Временная VM: `lease-376c79688b0798560d528772ecf89dd6`, ARM, macOS 12.7.6 / 21H1320, Xcode 13.4.1 / 13F100. Lease expiry: **24 октября 2026, 10:58:20 Asia/Bishkek** (04:58:20 UTC).
- Пользователь разрешил unattended UI Automation; режим был настроен.
- Native readiness probe: **1/1 passed** — реальный запуск приложения, клик, чтение Accessibility. Это только проверка среды, не runtime PR.
- На текущем head PR2 `12a187f…` прошли **5/5 loader-only** проверок: DMG UI/Performance/Sync; App Store UI/Sync App Store. Приложение при них не запускалось.
- **Ни один runtime-этап текущего head на macOS 12 не начат.**
- Контроллер `head-12a187/qualify.py` завершён. Его первая попытка ошибочно запросила `appstore/performance`, которого нет в схеме и опубликованном manifest; получен `StopIteration`. Это ошибка локального сценария квалификации, а не missing-symbol/runtime-дефект PR. Список исправлен; недостающий App Store Sync loader отдельно успешно проверен. Исходный неуспешный журнал сохранён.
- Состояние перед остановкой: `awaiting_downloads_access`, `runtime_started=false`, `controller_terminal=true`; подтверждающий readiness marker не создавался.
## Почему подготовка среды осталась незавершённой
В предыдущем runtime-прогоне старого head `695ef15b09c8dd9df0fa1293a709e2208023b694` браузер создавал PDF, но XCTest runner зависал при чтении атрибутов файла в Downloads. TCC-журнал указал `kTCCServiceSystemPolicyDownloadsFolder` для `com.duckduckgo.UI-Tests.xctrunner`; screenshot xcresult показал модальный запрос **Legacy-Runner → Downloads**.
У App Store браузера проверено наличие `com.apple.security.files.downloads.read-write=true`. Запрос относился к отдельному процессу runner. Этот же диалог перекрывал print panel, вызывая вторичные ошибки меню Save as PDF и AX timeout. Не следует менять selectors или пропускать PrintingTests, не устранив setup.
Существующий `prepare-host.py` проверяет запуск/клик/AX, но не доступ реального XCTest runner к тестовым файлам. Автоматический воспроизводимый setup **не реализован до конца**; ручное разрешение в одной VM не решило бы эту недоработку.
Автоматическая проверка разрешений отклонила попытку ограниченного нажатия OK для Downloads, потребовав явного согласия на persistent TCC-доступ. Изменения не выполнены; TCC.db не редактировалась, доступ не выдавался, Screen Sharing не использовался.
Проверено `profiles status -type enrollment`: DEP No, MDM No. Штатная автоматическая доставка такого разрешения через PPPC требует user-approved MDM; сама эта VM к MDM не подключена. Источники: [Apple PPPC](https://support.apple.com/en-au/guide/deployment/dep38df53c2a/web), [официальная schema Apple](https://github.com/apple/device-management/blob/release/mdm/profiles/com.apple.TCC.configuration-profile-policy.yaml).
Незавершённым остаётся Settings → NSPathCell → FileProvider coverage, полный UI, sandbox leg и Sync/Performance runtime текущего PR на macOS 12. Заявлений «production-ready» или «all mac12 suites pass» нет.
## Какие старые результаты нельзя засчитывать
На старых heads `e49… / 695…` UI/Performance jobs могли быть зелёными при class setup exception **No target application path specified via test configuration**. xcodebuild возвращал 0, observer показывал запланированное число тестов, хотя настоящий XCTest не выполнял методы. Эти зелёные статусы — ложные; новый parser и target configuration исправлены отдельно.
Старый macOS 12 этап `critical-production` на `695…`: requested=34, executed=32, failed_methods=4, passed=false. Прошли 26 search-тестов и часть других методов, но это **не проверка текущего head**. Результаты экспортированы, восстановление keychain подтверждено. Последний SSH exit=255 не является первопричиной четырёх test failures; удалённый supervisor завершился ошибкой.
Диагностическая попытка с сохранённым старым sandbox=true выявила `xcrun: error: cannot be used within an App Sandbox`; это тоже не текущая runtime-квалификация.
## Артефакты и восстановление контекста
Основной каталог: `/Users/admin/DuckDuckGo/apple-browsers.git/ci-validation-7562-7592-20261023`.
- `head-12a187/preflight-summary.json` — пять loader-проверок текущего head.
- `head-12a187/state.json` — состояние до остановки; `attempt-1-state.json`, `qualify-attempt-1.py` и `controller.log` сохраняют исходную ошибку сценария.
- `readiness-summary.json` — native readiness 1/1.
- `results/critical-production/` — старые результаты, xcresults и логи; head указан в корневом `state.json`.
- `entitlements-diagnostic/` — отдельная неуспешная диагностическая попытка.
- `stopped-by-user.json` — снимок остановки и конечных статусов CI.
- Логи script tests: `/private/tmp/ddg-pr-stack-20261023/parent-script-tests.log` и `child-script-tests.log`.
- Screenshot Downloads prompt: `/private/tmp/ddg-printing-32-attachments/F3925F17-1A19-4743-8643-39F2E7DD5945.jpeg`.
Пользователь разрешил одноразовый Sync account через официальный `duckduckgo/sync_crypto` с удалением после тестов, однако **аккаунт не создавался**, recovery code не передавался. Клон генератора собран в `sync-crypto/`; pin `b5a3ccb343817e592daaa0c3bb191fdcf731b9c8`.
VM и рабочие деревья не удалялись; PR не закрывались и не сливались. Работы и мониторинг не возобновлять без нового прямого поручения пользователя.