93 lines
9.6 KiB
Markdown
93 lines
9.6 KiB
Markdown
# 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.
|