diff --git a/personal/projects/virfield.md b/personal/projects/virfield.md index 2ec2e0b3..1e2786f8 100755 --- a/personal/projects/virfield.md +++ b/personal/projects/virfield.md @@ -66,8 +66,7 @@ Node VM quotas реализованы и установлены в `aee89c1`: CP - **Нет общего каталога (VMShare) в Tart lease:** worktree и DerivedData копируются rsync по тому же абсолютному пути (`/Users/admin/...`, гостевой пользователь тоже `admin`), чтобы pre-actions схемы работали без правок. - **Схема `macOS UI Tests CI` не собирает приложение** (CI скачивает notarized Review app): нужно отдельно собрать `macOS Browser Review` и `macOS tests-server` в ту же DerivedData. - **Keychain в golden:** login keychain заблокирован в GUI-сессии → `DuckDuckGo Review` падает в `Database.init()` (fatalError при регистрации value transformers — ключ шифрования из keychain). CI-аналог (`fastlane create_keychain_ui_tests`: DefaultKeychain/`default`, default + unlock) через SSH не помогает: разблокировка действует только в audit session SSH, а в GUI SecurityAgent показывает модальный запрос пароля и блокирует запуск. `launchctl asuser` → «Operation not permitted»; `osascript … Terminal do script` → AppleEvent timeout из-за модального окна. Разблокировка через `open /tmp/unlock-kc.command` (GUI-сессия) недостаточна: каждое SSH-подключение — новая audit session, и `xcodebuild`, запущенный по SSH, видит keychain заблокированным. Рабочий вариант: `security unlock-keychain` в том же скрипте/сессии, что запускает `xcodebuild` (как CI-раннер). Побочный эффект: брошенный модальный запрос SecurityAgent остаётся на экране (SIGTERM игнорирует, нужен `kill -9`) и перекрывает окно браузера — тесты падают с «Not hittable» (так испорчен первый прогон). Предложение: рецепт `uitest-27-v1` должен готовить default keychain без пароля/разблокированный для любых сессий, либо Virfield должен давать способ выполнять команды в GUI-сессии. -- **Разрешение дисплея гостя 1024×768 pt (2048×1536 px)**, CI выставляет 1920×1080 (`screenresolution set 1920x1080x32@60`). В низком окне Settings пункт сайдбара General обрезан снизу, клик промахивается → `DownloadsUITests` (и все тесты, настраивающие General через `disableWarnBeforeQuitting`) падают только в VM. В госте нет `screenresolution`/`displayplacer`. Предложение: задавать размер дисплея в шаблоне/lease (Tart `--display`) не меньше 1920×1080 для uitest-профиля. -- Хост собирает Xcode 27.1, в госте Xcode 27.0 — `test-without-building` работает, несовместимостей не обнаружено. +- **Разрешение дисплея гостя 1024×768 pt (2048×1536 px)**, CI выставляет 1920×1080 (`screenresolution set 1920x1080x32@60`). В низком окне Settings пункт сайдбара General обрезан снизу, клик промахивается → `DownloadsUITests` (и все тесты, настраивающие General через `disableWarnBeforeQuitting`) падают только в VM. В госте нет `screenresolution`/`displayplacer`. Режимы виртуального дисплея заканчиваются на 2048×1536 (4:3), 1920×1080 недоступен; обход: свой Swift-скрипт (`CGBeginDisplayConfiguration` + `CGConfigureDisplayWithDisplayMode` + `CGCompleteDisplayConfiguration(.permanently)`) ставит 1920×1440 1x — `CGDisplaySetDisplayMode` без транзакции действует только на процесс и не сохраняется. Предложение: задавать размер дисплея в шаблоне/lease (Tart `--display`) не меньше 1920×1080 (лучше 16:9) для uitest-профиля, либо ставить такой режим в рецепте `uitest-27-v1`.- Хост собирает Xcode 27.1, в госте Xcode 27.0 — `test-without-building` работает, несовместимостей не обнаружено. ## Каноническая документация