Рендер сцен
Chromium / ANGLE SwiftShader, программный WebGL в GitHub Actions; 1200×800, 390×520, 320×520. Полный bloom храма дополнительно проверен при 1200×800.
Матрица проверок · 2026-10-18
У каждой проверки есть шаги, ожидаемый результат и подтверждение. Так видно, что исправлено и что ещё требует отдельного испытания.
«Подтверждено» относится к указанному методу и среде. Программный WebGL в CI не заменяет проверку на физическом телефоне.


Chromium / ANGLE SwiftShader, программный WebGL в GitHub Actions; 1200×800, 390×520, 320×520. Полный bloom храма дополнительно проверен при 1200×800.
Node.js: реальные объекты Three.js, геометрия, материалы и источники света; GPU и Canvas2D подменены. Контроллер проверен с моделью DOM.
Chromium 1440×960, 390×844, 320×740. В проверках iframe используется тестовый дочерний документ. Пиксели 3D проверяются отдельно в репозиториях сцен.
Firefox 141.0 и Playwright WebKit 26.0 на Ubuntu, Xvfb, Mesa llvmpipe. Каждый движок исполнил 48 проверок рендера двух сцен. В отчётах сохранены версии и GL-диагностика; маскированное имя GPU браузера не считается подтверждением аппаратуры.
Firefox 141.0 и Playwright WebKit 26.0: карточки, PDF и iframe-контракт на 1440/390/320 px. На 390 px отдельно загружены опубликованные реальные сцены внутри школьного iframe. В этой композиции школьные файлы текущего checkout обслуживаются под её production origin; страницы сцен не подменяются.
| Проверка | Что сделать | Что должно получиться | Как проверили и что получили | Статус |
|---|---|---|---|---|
| P01Программа | Открыть карточку Design Lab
|
В карточке есть декодируемый кадр 3D-комнаты. В выбранной программе показана панель модели и плана. | Chromium: карточки, image.decode(), видимость панели; 1440 / 390 / 320. PASS на 1440/390/320 px: карточки, изображения и выбранная панель модели проверены браузером. Школьный Chromium · 3 размера · PASS ↗ |
Подтверждено |
| P02Программа | Выбрать программу и открыть план
|
В плане шесть этапов, задания ведут к существующим неделям, PDF содержит программу и четыре учебных примера. | Chromium + разбор PDF; 1440 / 390 / 320. PASS на 1440/390/320 px: шесть этапов, переходы к неделям 4–6 и содержимое PDF с четырьмя примерами сохранены. Школьный Chromium · 3 размера · PASS ↗ |
Подтверждено |
| P03Программа | Переключить Комната → Храм → Комната
|
При выборе меняется постер; выбор вкладки сам по себе не загружает WebGL. iframe появляется после запуска. | Chromium; состояние панели и адрес iframe; дочерний документ заменён fixture. PASS: переключения меняют постер; выбор вкладки не запускает WebGL. После клика создаётся iframe нужной сцены. Школьный Chromium · 3 размера · PASS ↗ |
Подтверждено |
| P04Программа | Запустить 3D и сменить программу
|
Одновременно существует не больше одного iframe; остановка и смена программы удаляют предыдущий. | Chromium; контроль DOM iframe с тестовым дочерним документом. PASS: запуск и повтор создают один iframe; остановка, смена сцены и программы удаляют его. Школьный Chromium · 3 размера · PASS ↗ |
Подтверждено |
| P05Программа | Увести превью за экран и вернуть его
|
Дочерний документ получает active:false вне экрана и active:true при возвращении. | Chromium + контракт postMessage. Фоновая вкладка проверяется отдельно в T06. PASS: школьный iframe-fixture получает active=false вне экрана и active=true после возврата. Часы реальных сцен проверены отдельно. Школьный Chromium · 3 размера · PASS ↗ |
Подтверждено |
| P06Программа | Ошибка загрузки модели / постороннее сообщение
|
Чужие сообщения не открывают сцену; ошибка возвращает постер и кнопку повтора, повтор создаёт один iframe. | Chromium; управляемые сообщения из тестового iframe. PASS: сообщения с чужими origin/source игнорируются; ошибка от выбранного iframe возвращает постер и кнопку повторного запуска. Школьный Chromium · 3 размера · PASS ↗ |
Подтверждено |
| R01Комната | 8 сочетаний ламп × яркость 0/25/50/75/100 × день/ночь
|
В 80 состояниях интенсивность, эмиссия материалов и отметки включения на схеме согласованы. | verify-lighting.mjs: реальные объекты Three.js + SVG; GPU подменён. 80 сочетаний пройдены. Проверка мощности покрывает отдельные пресеты в контроллере, а не все 80 строк. CI комнаты ↗ Сохранённый JSON комнаты ↗ |
Подтверждено |
| R02Комната | Проверить пресеты и возврат к вечернему свету
|
Состояние ламп вечера полностью восстанавливается; вечерний и выключенный режимы дают непустые кадры. | Three.js: сравнение материалов и интенсивностей; WebGL: кадры evening/away. Возврат параметров подтверждён контрактом. WebGL подтвердил видимые изменения света; пиксельное совпадение повторного вечера не заявляется. CI комнаты ↗ Сохранённый JSON комнаты ↗ |
Подтверждено |
| R03Комната | Яркость 100% → 0% при включённых переключателях
|
При 0% нет эмиссии ламп; изменение ползунка не создаёт свет при выключенных лампах. Экспозиция при диммировании постоянна. | Three.js: интенсивность и материалы. WebGL: 0/100%, разность кадров и средняя яркость. Контракт и пиксельные сравнения пройдены. Небольшая фоновая подсветка намеренно сохраняет читаемый силуэт комнаты. CI комнаты ↗ Сохранённый JSON комнаты ↗ |
Подтверждено |
| R04Комната | Включать подвес и торшер по отдельности
|
У каждой лампы есть направление и ограниченные тени; источник не заперт внутри собственного плафона; отдельная лампа осветляет кадр. | Three.js: raycasting и параметры теней. SwiftShader: рост яркости для каждой лампы. Три источника прошли проверки геометрии и WebGL. Отсутствие всех визуальных артефактов теней этим не доказано. CI комнаты ↗ Сохранённый JSON комнаты ↗ |
Подтверждено |
| R05Комната | Схема ↔ 3D, ракурс, изменение размера
|
Отложенный выбор ракурса сохраняется; схема использует текущее состояние; геометрия комнаты помещается в оба ракурса. Кадры плана и модели различаются. | Контроллер с моделью DOM; Three.js проекция границ; WebGL-кадры двух камер. Контракт состояния и границ пройден; WebGL подтвердил различные камеры и размещение органов управления. CI комнаты ↗ Сохранённый JSON комнаты ↗ |
Подтверждено |
| R06Комната | Ошибка рендера / потеря WebGL → повторный запуск
|
Возвращается управляемая схема; повтор создаёт новый renderer и применяет актуальные параметры. | verify-camera.mjs: модель DOM и renderer с внедрёнными ошибками. Сценарии восстановления пройдены. Настоящая потеря аппаратного GPU-контекста не воспроизводилась. CI комнаты ↗ Сохранённый JSON комнаты ↗ |
Подтверждено |
| T01Храм | Запустить полное качество с bloom
|
В sampler2D передаются Texture, нет чтения собственного draw buffer. Полный bloom запускается без ошибок консоли и активных шейдеров. | Three.js: контракт проходов. Chromium WebGL: настоящий high/bloom. Типы и буферы проверены; реальный программный WebGL выполнил high-пайплайн без зарегистрированных ошибок. CI храма ↗ Сохранённый JSON храма ↗ |
Подтверждено |
| T02Храм | Накопить несколько уровней свечения
|
Дополнительный уровень свечения складывается с содержимым назначения, а не стирает его. | verify-scene.mjs: наблюдение вызовов renderer и реальных материалов Three.js. Контракт сохранения буфера пройден. Попиксельная форма каждого уровня bloom отдельно не сравнивалась. CI храма ↗ Сохранённый JSON храма ↗ |
Подтверждено |
| T03Храм | Сравнить экспозицию low/high и безопасные пределы
|
Экспозиция конечна и ограничена 0.6–1.4. При 140% средняя яркость выше, чем при 60%, в обоих режимах; кадры не пустые. | Three.js: значения экспозиции. SwiftShader: средняя яркость и разность PNG. Оба режима прошли сравнение 60/140%; API проверен также на 100%. Точное совпадение цветов low/high не требуется. CI храма ↗ Сохранённый JSON храма ↗ |
Подтверждено |
| T04Храм | Проверить световые переходы в GLSL
|
В проверенных GLSL нет smoothstep с обратными числовыми границами; активные шейдеры сцен не сообщают об ошибке. | Проверка строк реальных ShaderMaterial + запуск WebGL low/high. Контракт GLSL пройден; low/high рендер без ошибок. Дождь в WebGL-превью выключен — его видимая анимация отдельно не проверялась. CI храма ↗ Сохранённый JSON храма ↗ |
Подтверждено |
| T05Храм | Пауза → изменить свет и ракурс → продолжить
|
Рендер по запросу работает, фаза освещения при паузе не изменяется, возобновление не включает время простоя. | Three.js: снимки интенсивностей и uT; модель контроллера проверяет вызовы setPaused. Фаза и пауза проверены по состоянию сцены; анимация после следующего интервала возобновляется. CI храма ↗ Сохранённый JSON храма ↗ |
Подтверждено |
| T06Храм | Скрыть вкладку → вернуться
|
Время простоя не двигает свет и не считается медленным кадром для адаптивного разрешения. | verify-scene.mjs: часы и pixel ratio; verify-startup.mjs: visibilitychange/pageshow. Регрессия времени и подключение событий пройдены с моделируемыми часами и DOM. CI храма ↗ Сохранённый JSON храма ↗ |
Подтверждено |
| T07Храм | Страница храма: кадр модели → настоящее 3D → восстановление после сбоя
|
До WebGL виден растровый кадр настоящей модели. На 1200/390/320 px сцена читаема, управление расположено под ней. Свет и ракурс меняют настоящий 3D-кадр. Отмена, сбой сети и тайм-аут возвращают управляемый постер; поздний импорт не запускает отменённую сцену, повтор сохраняет настройки. | verify-startup.mjs: модель DOM и ошибки renderer, включая сохранение успешного первого кадра после 26 секунд синхронной инициализации. verify-fullpage.mjs: настоящая dist/index.html, растровый постер, декодирование, геометрия элементов и PNG-разности в Chromium/SwiftShader, Firefox и Playwright WebKit на Linux/Mesa. Полная страница: 1200×900, 390×900, 320×900. Отмена и сбой сети — на 390 px во всех трёх движках; истечение реальных 12 секунд ожидания асинхронного модуля — только Chromium. PASS на точном commit d8cd29e4cde05a306dd1791c78abad9124c2311d: Chromium 140.0.7339.16 — 55 full-page проверок; Firefox 141.0 и Playwright WebKit 26.0 — по 51. Все три отчёта без ошибок. На 1200/390/320 px подтверждены растровый кадр модели до WebGL, размещение управления, настоящий 3D-свет и камера. Во всех движках пройдены отмена с поздним импортом и повтор после сетевого сбоя; в Chromium дополнительно пройден реальный 12-секундный тайм-аут асинхронного импорта и повтор. Контроллер отдельно сохраняет успешный первый кадр после 26 секунд синхронной инициализации. Физический аппаратный сбой WebGL не воспроизводился. Chromium · основная страница + контракты · PASS ↗ Firefox/WebKit · основная страница · PASS ↗ Full-page сценарий · точный d8cd29e ↗ chromium · 55 PASS · JSON ↗ firefox · 51 PASS · JSON ↗ webkit · 51 PASS · JSON ↗ |
Подтверждено |
| V01Обе сцены | Настоящий рендер 3D на 1200/390/320 px
|
Кадр не пустой и не почти целиком чёрный/белый; органы управления помещаются; доверенные сообщения управляют видимостью, чужой origin не возобновляет сцену. | Chromium / ANGLE SwiftShader. PNG: яркость, дисперсия и диапазон; DOM и postMessage. Обе сцены прошли три ширины. Это адаптивные viewport-проверки на программном WebGL, а не испытание трёх устройств. CI комнаты ↗ CI храма ↗ Сохранённый JSON комнаты ↗ Сохранённый JSON храма ↗ |
Подтверждено |
| D01Физический телефон | Xiaomi: Chrome и встроенный браузер
|
Проверить плавность, тени, нагрев, потерю контекста и возврат из фонового режима. | Ручная проверка на устройстве Не выполнялось в этой итерации. Нет доступа к измерениям на физическом телефоне. |
Не запускали |
| D02Другие браузеры | Safari/iOS и аппаратные GPU
|
Проверить работу на Safari/iOS и видеодрайверах реальных устройств. | Отдельный прогон на физических устройствах Пока не выполнялось. Linux WebKit и Firefox проверяются отдельно и не заменяют испытание Safari/iOS и аппаратных GPU. |
Не запускали |
| B01Firefox | Firefox: настоящий рендер комнаты и храма
|
Непустая 3D-модель, изменение света и камер, читаемое управление на 1200/390/320 px. | Playwright Firefox, Ubuntu, Xvfb и программная графика Mesa; реальная геометрия и шейдеры. PASS: комната 28 и храм 20 проверок; реальные WebGL-кадры и свет на 1200/390/320 px. Версия движка: Firefox 141.0. Комната · firefox · PASS ↗ Храм · firefox · PASS ↗ |
Подтверждено |
| B02WebKit | WebKit: настоящий рендер комнаты и храма
|
Непустая 3D-модель, изменение света и камер, читаемое управление на 1200/390/320 px. | Playwright WebKit, Ubuntu, Xvfb и программная графика Mesa; реальная геометрия и шейдеры. PASS: комната 28 и храм 20 проверок; реальные WebGL-кадры и свет на 1200/390/320 px. Версия движка: WebKit 26.0 на Linux; это не Safari/iOS. Комната · webkit · PASS ↗ Храм · webkit · PASS ↗ |
Подтверждено |
| B03Firefox | Firefox: превью внутри программы и учебный план
|
Карточка и план читаются, 3D запускается и останавливается, ошибки сохраняют постер; переходы ведут к реальным неделям обучения. | Playwright Firefox, Ubuntu; 1440/390/320 px; контракт родительского iframe и отдельное реальное встраивание. PASS: 246 проверок карточек, плана, PDF и iframe на 1440/390/320 px. Отдельно обе опубликованные модели запущены внутри программы на 390 px: реальный WebGL, свет, пауза/возобновление и остановка. firefox · программа + настоящее 3D · PASS ↗ |
Подтверждено |
| B04WebKit | WebKit: превью внутри программы и учебный план
|
Карточка и план читаются, 3D запускается и останавливается, ошибки сохраняют постер; переходы ведут к реальным неделям обучения. | Playwright WebKit, Ubuntu; 1440/390/320 px; контракт родительского iframe и отдельное реальное встраивание. PASS: 246 проверок карточек, плана, PDF и iframe на 1440/390/320 px. Отдельно обе опубликованные модели запущены внутри программы на 390 px: реальный WebGL, свет, пауза/возобновление и остановка. webkit · программа + настоящее 3D · PASS ↗ |
Подтверждено |
В этой области нет проверок с выбранным статусом.
Отчёты JSON сохранены в репозитории; кадры доступны в CI и карточках программы. Результаты относятся к указанным версиям кода; последующие изменения требуют нового прогона.
Commit: edd3866867eb8e5122e861835a413219df0b0349
Артефакт: qa-webgl-temple
Commit: 4d2c0710e253fcec02f21cac4078f5efe589ce80
Артефакт: qa-webgl-room
Commit: dffe8418fb050b16b663a618974e988bd18446ba
Артефакт: ai-path-responsive-previews: скриншоты и PDF
Commit: 0753c78c8a00f62257457680780f609c9577e2b8
Артефакт: qa-webgl-room-firefox
Commit: 23dd1f81a38bd6026f7a45b3fbd302bdb9191832
Артефакт: qa-webgl-temple-firefox
Commit: 0753c78c8a00f62257457680780f609c9577e2b8
Артефакт: qa-webgl-room-webkit
Commit: 23dd1f81a38bd6026f7a45b3fbd302bdb9191832
Артефакт: qa-webgl-temple-webkit
Commit: 93b7dfca0dc0ceffb75e1bb121ebb28d12b3a4cd
Артефакт: qa-3d-program-firefox
Commit: 93b7dfca0dc0ceffb75e1bb121ebb28d12b3a4cd
Артефакт: qa-3d-program-webkit
Commit: d8cd29e4cde05a306dd1791c78abad9124c2311d
Артефакт: qa-webgl-temple / qa-fullpage/report.json
Commit: d8cd29e4cde05a306dd1791c78abad9124c2311d
Артефакт: qa-webgl-temple-firefox / qa-fullpage-firefox/report.json
Commit: d8cd29e4cde05a306dd1791c78abad9124c2311d
Артефакт: qa-webgl-temple-webkit / qa-fullpage-webkit/report.json