Files
obsidian-vault/work/macos-ui-tests-pr7562-pr7592-results-2026-10-23.md
T

14 KiB
Raw Blame History

date, status, tags, prs
date status tags prs
2026-10-23 stopped-by-user
work
macos
testing
ci
7562
7592

macOS UI tests: результаты PR #7562 и #7592

Статус: работы остановлены пользователем 23 октября 2026 года. Задача не завершена. Автоматизация ci-pr-7562 переведена в PAUSED; активных локальных контроллеров квалификации не обнаружено. Новые сборки, тесты и изменения не запускаются. Все три незавершённых GitHub Actions run отменены; терминальные статусы GitHub подтверждены. Завершённый Performance run сохранён.

Стек и сохранённый код

  • PR #7562: main → codex/prebuilt-macos-ui-tests, head a5db06b1ad14f59ed41821b3ec9561670231486c.
  • PR #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, точный head PR1 a5db06b…: success, фактически выполнено 5 тестов, 0 skipped, 0 failed. Подтверждено конечной JSON summary и журналом job 120273644724. Это результат конкретного Performance workflow, не всех suites/OS.
  • Выборочно подтверждено реальное выполнение текущего native UI: job 120275173593, HTTPSUpgradeUITests, macOS 14/internal: executed=4, skipped=1, failed=0, passed=true. Полный UI workflow не был завершён к моменту остановки.

Текущие CI runs

  • PR1 UI 39909724376: head a5db06b…, остановлен по поручению пользователя.
  • PR1 Sync 39909727852: тот же head, остановлен по поручению пользователя.
  • PR1 Performance 39909721173: success, сохранён завершённый результат.
  • PR2 UI 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, официальная schema Apple.

Незавершённым остаётся 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 не закрывались и не сливались. Работы и мониторинг не возобновлять без нового прямого поручения пользователя.