Каждый элемент интерфейса → что проверить → чем покрыто → живая ссылка для ручного тыка. Статус PASS = покрывающий автотест зелёный.
| Группа | Элемент / проверка | Покрытие | Статус | Проверить вживую |
| Меню | «Начать новую игру» — старт сцены 0 | TC-02b | PASS | открыть |
| Меню | «Продолжить» при сейве — главная кнопка, ведёт на сохранённую сцену | UX-01 | PASS | открыть |
| Меню | «Начать» при сейве → диалог перезаписи (Да/Нет) | UX-02 | PASS | открыть |
| Меню | «Карта пройденного» появляется после финала, прыжок на сцену | UX-08 | PASS | открыть |
| Меню | «Словарь» — экран терминов | UX-06 | PASS | открыть |
| Меню | «Настройки» / «О проекте» — экраны адресуемы историей | NAV-06 | PASS | открыть |
| Меню | Hero-арт меню (фон сцены 0, blur) | TC-06 | PASS | открыть |
| Первый запуск | Экран выбора языка показывается один раз | UX-07 | PASS | открыть |
| Сцена | Текст сцены рендерится без запрещённой разметки | TC-03 | PASS | открыть |
| Сцена | Арт сцены загружается (webp) | TC-17 | PASS | открыть |
| Сцена | Кнопки выборов ≥ tap-target, не вылезают за панель | TC-16b | PASS | открыть |
| Сцена | Переход по выбору; browser back возвращает prev-сцену | NAV-03 | PASS | открыть |
| Сцена | Чип «Глава N» на сцене; нет на прологе | UX-04 | PASS | открыть |
| Сцена | Термин-ссылка → модалка глоссария | UX-06 | PASS | открыть |
| Сцена | 🔊-тумблер + миг-подсказка до первого включения | UX-05 | PASS | открыть |
| Сцена | Нет горизонтального overflow (mobile/desktop) | TC-16 | PASS | открыть |
| Гибель | Первая гибель → поддерживающий хинт; вторая — без | DTH-01 | PASS | открыть |
| Гибель | «Попробуй ещё раз» ведёт к главе | DTH-02 | PASS | открыть |
| Гибель | Хинт персистентен после reload | DTH-03 | PASS | открыть |
| Настройки | Темы ×4 (system/dark/light/cosmos) — кнопки переключают | TC-21 | PASS | открыть |
| Настройки | Слайдер размера шрифта — persist после reload | UX-03 | PASS | открыть |
| Настройки | Слайдер громкости + выбор мелодии | manual | РУЧН. | открыть |
| Настройки | Селект языка: смена ru→en без потери позиции | TC-07 | PASS | открыть |
| Финал | Сцена 27.3 + кнопка оценки → Google Play (web: https) | Б5.4 | РУЧН. | открыть |
| О проекте | Ссылки web/privacy открываются; privacy.html = 200 | Б5 | PASS | открыть |
| Навигация | Refresh на ?scene=N восстанавливает сцену | NAV-05 | PASS | открыть |
| Навигация | ?atlas редиректит на kq-atlas.pages.dev | NAV-07 | PASS | открыть |
| Атлас | tree→scene: back/forward истории; grid⇄tree | ATL-01 | PASS | открыть |
| Языки ×10 | Обход 111 сцен без ошибок на каждом языке | TC-06 | PASS | открыть |
| Языки ×10 | CJK-глифы не tofu (zh/ja) | TC-17 | PASS | открыть |
| a11y | axe: 0 critical/serious (dark/light/choices/экраны) | TC-21 | PASS | открыть |
| Оффлайн | Web: бандл self-contained; APK: все ассеты внутри | A-02 | PASS | открыть |
| APK | platform=app: store_url=market://, обход 111 сцен | В4 | PASS | открыть |
Проекты: chromium (прод-бандл 4173) · app (Android-режим 4174) · atlas (4175). Файлы: tests/e2e/*.spec.ts
| ID | Тест | Спек [проект] | Статус | Время |
|---|
| TC-21 | TC-21 a11y axe dark-тема: 0 critical/serious | a11y.spec.ts [chromium] | PASS | 16.9с |
| TC-21 | TC-21 a11y axe light-тема: 0 critical/serious | a11y.spec.ts [chromium] | PASS | 7.1с |
| TC-21 | TC-21 a11y axe сцена сChoices + image (игровой экран): 0 critical/serious | a11y.spec.ts [chromium] | PASS | 5.1с |
| TC-21 | TC-21 a11y axe экран settings: 0 critical/serious | a11y.spec.ts [chromium] | PASS | 2.9с |
| TC-21 | TC-21 a11y axe экран about: 0 critical/serious | a11y.spec.ts [chromium] | PASS | 2.9с |
| TC-21 | TC-21 a11y axe экран death: 0 critical/serious | a11y.spec.ts [chromium] | PASS | 2.5с |
| TC-21 | TC-21 a11y axe экран final: 0 critical/serious | a11y.spec.ts [chromium] | PASS | 2.4с |
| FIX-1 | FIX-1 превью настроек меняется при смене схемы | bugcheck.spec.ts [chromium] | PASS | 13.4с |
| FIX-2 | FIX-2 трёхуровневый SFX: пульсар верный / warp петля / whoosh гибель | bugcheck.spec.ts [chromium] | PASS | 8.6с |
| FIX-3 | FIX-3 Чередовать: по ended играет music-2, потом обратно music-1 | bugcheck.spec.ts [chromium] | PASS | 3.3с |
| DTH-01 | DTH-01 death-hint: первая гибель — подсказка, вторая — без неё | death.spec.ts [chromium] | PASS | 17.4с |
| DTH-02 | DTH-02 death-retry: «Попробуй ещё раз» ведёт к главе главы | death.spec.ts [chromium] | PASS | 3.3с |
| DTH-03 | DTH-03 death-hint персистент: после reload хинта уже нет | death.spec.ts [chromium] | PASS | 4.5с |
| TC-05 | TC-05 autoplay обходит все 111 сцен без ошибок | gate.spec.ts [chromium] | PASS | 13.8с |
| TC-03 | TC-03 текст движка = text/ru.json (плейсхолдеры → URL) | gate.spec.ts [chromium] | PASS | 9.5с |
| TC-06 | TC-06 render-smoke: граф идентичен, экраны не в ошибке | gate.spec.ts [chromium] | PASS | 1.9с |
| TC-02b | TC-02b меню: старт-сцена рисуется, Продолжить скрыт без сейва | gate.spec.ts [chromium] | PASS | 2.6с |
| TC-06 | TC-06 render-smoke ×языки: каждый собранный язык обходит 111 сцен без ошибок | i18n.spec.ts [chromium] | PASS | 24.7с |
| TC-07 | TC-07 смена языка ru→en без потери позиции и сейва | i18n.spec.ts [chromium] | PASS | 3.1с |
| TC-16 | TC-16 DOM-layout: scene-text рендерится, нет горизонтального overflow | layout.spec.ts [chromium] | PASS | 15.2с |
| TC-16b | TC-16b choices: кнопки не сжаты ниже tap-target и не вылезают за панель | layout.spec.ts [chromium] | PASS | 6.3с |
| TC-17 | TC-17 PNG-сцен ≥20: рендер и запись без ошибок | layout.spec.ts [chromium] | PASS | 9.1с |
| TC-17 | TC-17 tofu zh/ja: глифы CJK отличается от replacement-char (иначе env-limited) | layout.spec.ts [chromium] | PASS | 0.9с |
| NAV-03 | NAV-03 scene→choice→back: prev-сцена через браузерный back | nav.spec.ts [chromium] | PASS | 14.9с |
| NAV-05 | NAV-05 refresh на ?scene=13 восстанавливает ту же сцену | nav.spec.ts [chromium] | PASS | 5.1с |
| NAV-06 | NAV-06 меню→настройки→back: экраны адресуемы историей | nav.spec.ts [chromium] | PASS | 4.9с |
| NAV-07 | NAV-07 ?atlas редиректит на kq-atlas.pages.dev | nav.spec.ts [chromium] | PASS | 1.8с |
| UX-01 | UX-01 continue: Продолжить ведёт на сохранённую сцену | ux.spec.ts [chromium] | PASS | 17.3с |
| UX-02 | UX-02 overwrite: Начать при сейве спрашивает диалогом | ux.spec.ts [chromium] | PASS | 6.8с |
| UX-03 | UX-03 persist: размер шрифта сохраняется после reload | ux.spec.ts [chromium] | PASS | 3.8с |
| UX-04 | UX-04 chapter-chip: глава на сцене, нет на прологе | ux.spec.ts [chromium] | PASS | 2.0с |
| UX-05 | UX-05 sound-hint: 🔇 пульсирует до включения | ux.spec.ts [chromium] | PASS | 1.6с |
| UX-06 | UX-06 glossary: термин в сцене → модалка; экран словаря | ux.spec.ts [chromium] | PASS | 1.7с |
| UX-07 | UX-07 langpick: первый запуск показывает выбор языка | ux.spec.ts [chromium] | PASS | 1.6с |
| UX-08 | UX-08 map: после финала в меню есть карта, прыжок на сцену | ux.spec.ts [chromium] | PASS | 2.1с |
| Б5 | Б5 preview: /=200, /privacy.html=200, /_headers-статика, __test есть | web.spec.ts [chromium] | PASS | 2.5с |
| Б5.4 | Б5.4 web-режим: platform=web, store_url резолвится в https Play | web.spec.ts [chromium] | PASS | 1.8с |
| В4 | В4 app-smoke: __test.platform()==="app" | app-smoke.spec.ts [app] | PASS | 0.8с |
| В4 | В4 app-smoke: платформенный store_url = market:// (app-ветка) | app-smoke.spec.ts [app] | PASS | 0.7с |
| В4 | В4 app-smoke: обход 111 сцен без ошибок в app-режиме | app-smoke.spec.ts [app] | PASS | 1.3с |
| ATL-01 | ATL-01 tree→scene: back возвращает дерево, forward — сцену (кросс-домен) | atlas.spec.ts [atlas] | PASS | 2.2с |
| ATL-02 | ATL-02 все элементы атласа — реальные ссылки с href | atlas.spec.ts [atlas] | PASS | 1.0с |
| ATL-03 | ATL-03 ctrl+click открывает сцену в новой вкладке | atlas.spec.ts [atlas] | PASS | 1.3с |
| ATL-04 | ATL-04 grid⇄tree: view-параметр адресуем историей | atlas.spec.ts [atlas] | PASS | 1.2с |
| ID | Проверка | Статус | Детали |
| C-01 | Сцены: ровно 111 узлов | PASS | 111 узлов |
| C-02 | Рёбра графа: 171 переход | PASS | 171 рёбер |
| C-03 | Локали: 10 файлов text/<lang>.json | PASS | de, en, es, fr, id, ja, pt-BR, ru, tr, zh-CN |
| C-04 | app.json: langs ⊇ собранные | PASS | app.langs=[en,es,pt-BR,fr,de,ru,zh-CN,ja,tr,id] |
| C-05 | Ключи сцен: паритет всех локалей к ru (111) | PASS | 111 ключей × все языки |
| C-06 | UI-строки: паритет всех ui/<lang>.json к ru | PASS | 62 ключей × все языки |
| C-07 | Разметка: нет запрещённых тегов в телах сцен (все языки) | PASS | чисто |
| C-08 | Арт: все уникальные webp собраны в dist/web/assets | PASS | 129 собрано / 100 уникальных (96 имён — арт переиспользуется между сценами) |
| C-09 | Звуки: ≥10 sfx в dist/web/sfx | PASS | 20 файлов |
| C-10 | Глоссарий: файл терминов существует и непустой | PASS | 1 терминов в glossary.ts |
| A-01 | APK: файл существует и > 1 МБ | PASS | kosmoquest-debug-2.0.0-20261015b.apk, 16.8 МБ, 2026-10-15 |
| A-02 | APK: весь арт внутри (webp = уникальным исходникам) | PASS | 129 webp в assets/public |
| A-03 | APK: звуки внутри (≥11 m4a: sfx+музыка) | PASS | 25 m4a |
| A-04 | APK: index.html бандла внутри | PASS | assets/public/index.html есть |