up
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
# SCREEN-007 — Аппаратная проверка устойчивости
|
||||
|
||||
Статус задачи остаётся IN_PROGRESS, пока нет результатов всей аппаратной матрицы.
|
||||
Автоматический smoke подставляет события дисплея/питания и при синтетическом
|
||||
мониторе также fullscreen. Native fullscreen остаётся для реального внешнего
|
||||
дисплея. Renderer действительно завершается SIGKILL в отдельном процессе:
|
||||
он проверяет обработчики, но не физические кабели, звук и предотвращение сна ОС.
|
||||
|
||||
## Стенд
|
||||
|
||||
Проверить macOS 13+ Intel/Apple Silicon, Windows 11 x64/ARM64, Linux x64/ARM64
|
||||
на Ubuntu 24.04 LTS и Debian 13. На Linux под Wayland требуется XWayland.
|
||||
Использовать реальный внешний дисплей в режиме расширенного рабочего стола,
|
||||
проектные файлы WAV/MP3/OGG и H.264/AAC, проверяемые переходники и аудиоустройства.
|
||||
|
||||
1. Выполнить `npm ci`, `npm run media:generate`, `npm run dev` в каталоге screen.
|
||||
2. Подготовить и выбрать игру по SCREEN-006_ACCEPTANCE.md; затем отключить сеть
|
||||
для локальных проверок. Для синтетического WAV/видео доступен тестовый режим.
|
||||
3. Пульт разместить на основном дисплее компьютера, показ открыть на внешнем.
|
||||
Проверить сообщение «Автоматический сон заблокирован на время показа».
|
||||
4. Перед каждым аварийным сценарием запустить медиа и таймер на несколько минут.
|
||||
Для одновременной проверки обоих каналов включить музыку и вступление/видео.
|
||||
Не использовать тестовый --mute-audio. Записать остальные флаги запуска.
|
||||
|
||||
## Дисплей и окно показа
|
||||
|
||||
- Отключить кабель проектора. Окно показа должно закрыться, оба канала остановиться,
|
||||
работающий таймер — остаться на паузе с сохранённым остатком. В пульте видна
|
||||
причина, блокировка сна выключена, сам пульт доступен на основном экране.
|
||||
- Вернуть кабель. Показ не открывается и звук не запускается. Открыть показ
|
||||
вручную: медиа остановлены, таймер на паузе. Отдельно продолжить таймер и медиа.
|
||||
- Повторить со сменой разрешения, масштаба и ориентации выбранного внешнего
|
||||
дисплея. Показ закрывается по той же политике; продолжение только вручную.
|
||||
- Сделать выбранный дисплей основным средствами ОС: показ закрывается,
|
||||
пульт остаётся доступен в рабочей области нового основного дисплея. Вернуть
|
||||
основной дисплей компьютера и заново выбрать внешний.
|
||||
- Выйти из fullscreen средствами ОС/Esc, если ОС это поддерживает. Показ
|
||||
закрывается с аварийной паузой таймера. Простая потеря фокуса при работе
|
||||
с пультом не должна закрывать показ.
|
||||
- Нажать обычную кнопку «Закрыть показ»: медиа останавливаются, но уже работающий
|
||||
таймер продолжает отсчёт — это прежняя политика явного закрытия.
|
||||
- Если окно показа зависло, потеряло основной документ или его renderer упал,
|
||||
оно закрывается, таймер ставится на паузу. Пульт должен оставаться доступен;
|
||||
повторный показ открывается вручную. Программный smoke проверяет эти события,
|
||||
включая настоящее принудительное завершение renderer; вызывать сбой драйвера
|
||||
или ОС вручную не требуется.
|
||||
|
||||
## Сон и звук
|
||||
|
||||
- Временно задать короткое время автоматического выключения дисплея/сна в ОС.
|
||||
Проверить, что при открытом показе компьютер и дисплей остаются активны
|
||||
дольше этого интервала: во время воспроизведения, на паузе и на статичной обложке.
|
||||
После закрытия показа/приложения прежний автоматический сон должен работать.
|
||||
Вернуть исходные настройки питания после проверки.
|
||||
- Принудительно отправить компьютер в сон, затем разбудить. Блокировка приложения
|
||||
не отменяет принудительный сон и закрытие крышки. После пробуждения пульт
|
||||
доступен, показ закрыт, звук сам не начинается, работающий таймер на паузе.
|
||||
- Перед игрой выбрать выход ОС: macOS — настройки звука, «Выход»; Windows —
|
||||
«Система → Звук»; Linux — настройки звука рабочего окружения. Проверить громкость,
|
||||
mute и пробный пуск. Повторить с кабельным/USB-выходом и HDMI.
|
||||
- После подключения/возврата HDMI проверить выбранный выход повторно: ОС может
|
||||
автоматически переключить звук на проектор. Приложение не выбирает устройство
|
||||
и не маршрутизирует звук на несколько выходов.
|
||||
|
||||
## Восстановление и сервер
|
||||
|
||||
1. Изменить размер/положение пульта, развернуть его, выбрать внешний дисплей
|
||||
и игру. Закрыть приложение и снова запустить `npm run dev` с тем же профилем ОС.
|
||||
Пульт восстанавливает размер/развёрнутое состояние в рабочей области основного
|
||||
дисплея. Готовая игра доступна офлайн, показ закрыт, звук и таймер не запущены.
|
||||
2. Повторить перезапуск с отключённым проектором и уменьшенным разрешением
|
||||
основного дисплея. Пульт должен полностью помещаться в доступную область.
|
||||
Внешний дисплей предвыбирается только при совпадении сохранённых ID и названия;
|
||||
другой экран требуется выбрать вручную. Автоматического открытия нет.
|
||||
3. Вернуть сеть и подключить управление игрой. После аварийного закрытия
|
||||
отправить телефоном команду PLAY, затем восстановить и вручную открыть показ.
|
||||
Накопленная команда не запускает звук. Следующая новая команда применяется.
|
||||
4. Закрыть приложение во время показа. Звук прекращается, блокировка сна
|
||||
освобождается, материалы остаются на диске. При повторном запуске нет автопуска.
|
||||
|
||||
Выбранная игра сохраняется механизмом SCREEN-006, настройки окон — в отдельном
|
||||
`windows.json` внутри userData. Повреждённые настройки окон заменяются безопасным
|
||||
расположением и сообщением в пульте; пакеты и секреты при этом не удаляются.
|
||||
|
||||
## Отчёт
|
||||
|
||||
Для каждого стенда записать ОС/архитектуру, CPU/RAM, версию приложения/Electron,
|
||||
режим рабочего стола (для Linux — X11 или XWayland), дисплей, кабель/переходник,
|
||||
аудиовыход, форматы, результаты каждого пункта и наблюдаемые сбои. Не передавать
|
||||
пароли, токены и файлы секретов. Аппаратные задержки пуска относятся к
|
||||
SCREEN-001/SCREEN-004; эта проверка не подтверждает p95 ≤150 мс на M1.
|
||||
Reference in New Issue
Block a user