0Что понадобится
- Chrome 110+ (stable; желательно и beta) на 2+ ОС из матрицы (§7).
- Google-аккаунт — для реальной работы в Docs и Drive.
- Fixture-документ — эталонный Google Doc с заголовками, таблицей,
изображением, формулой, рисунком, комментариями, цветными выделениями и RTL-абзацем.
Все визуальные проверки — на нём, ради детерминированности.
- Собранный билд: распакованный zip или
dist/.
1Установка расширения (unpacked)
- Скачать zip с главной и распаковать в отдельную папку.
Либо собрать из исходников: npm install → npm run build (создаёт dist/).
- Chrome →
chrome://extensions/ → включить Режим разработчика (справа вверху).
- «Загрузить распакованное расширение» → выбрать распакованную папку.
- Убедиться: расширение появилось, ошибок нет, иконка в тулбаре.
⚠️ Отключи другие dark-расширения (Dark Reader и т.п.) для docs.google.com и
drive.google.com — иначе двойная инверсия. Это НЕ баг DocsNight (§10 п.3).
2Smoke-проверка
Две минуты. Если падает — дальше нет смысла.
Провал любого S1–S4 → критично: зафиксировать и остановиться.
3Happy path
HP-1 — Установка → мгновенная ценность
- Чистый профиль Chrome + установленный DocsNight.
- Открыть fixture по прямой ссылке.
- Ожидаемо: первый видимый кадр тёмный (нет белой вспышки даже на долю
секунды); UI и лист документа тёмные, текст читаемый; левая панель «структура/вкладки»
тоже тёмная, а не белый прямоугольник.
HP-2 — Полный цикл управления
- Открыт fixture, тема ON (Invert).
- Popup → Dim → лист приглушается (серый), инверсии нет, картинки в норме.
- Popup → выключить тему → страница мгновенно в оригинальных цветах, без перезагрузки.
- Popup → включить → снова тёмная.
- Alt+Shift+D → тема переключается (как toggle).
- Перезапустить браузер, открыть Docs → сохранилось последнее состояние.
4Режимы фильтра документа
Проверить: активен ровно один режим,
изменение без перезагрузки, режим сохраняется после reload.
5Google Drive
- Открыть
drive.google.com при включённой теме.
- Ожидаемо: шапка, левая панель (Мой диск / Корзина…), чипы фильтров,
тулбар и список файлов — тёмные; имена файлов читаемы.
- Открыть предпросмотр изображения или PDF (двойной клик по файлу).
- Ожидаемо: рамка и панели предпросмотра тёмные,
само изображение / страница PDF — в оригинальных цветах, не инвертированы.
- Выключить тему на вкладке Docs → перейти на вкладку Drive → Drive стал светлым (единый toggle).
- Открыть контекстное меню файла (ПКМ) и меню «Создать».
- Ожидаемо: меню тёмные; иконки типов файлов и аватары — в оригинальных
цветах (регрессия v0.2.0).
v0.2.0: Drive темится инверсией всей страницы. Побочный эффект — нативно-тёмные элементы
Drive (например, тост «Ваши файлы синхронизируются») становятся светлыми. Ожидаемо,
не заводить (§10 п.6).
5аGoogle Sheets и списочные страницы новое в v0.3.0
- Открыть любую таблицу
docs.google.com/spreadsheets/d/… при включённой теме.
- Ожидаемо: тёмные — шапка, меню, тулбар, строка формул вместе с
полем имени ячейки, нижняя панель с ярлыками листов, боковые панели, всплывающие
меню и пузыри-подсказки.
- Переключить режим фильтра в popup: Invert → Dim → None.
- Ожидаемо: сетка меняется так же, как лист документа в Docs (§4). Шапка и
панели остаются тёмными во всех трёх режимах.
- Открыть
docs.google.com/document/u/0/ и /spreadsheets/u/0/ (списки файлов).
- Ожидаемо: страница тёмная целиком, превью документов в списке —
в оригинальных цветах.
- Открыть презентацию (
/presentation/d/…) или форму (/forms/d/…).
- Ожидаемо: страница остаётся светлой, как без расширения.
Это не баг — §10 п.7.
v0.3.0: инъекция расширена с /document/d/* на весь docs.google.com.
Новых прав расширение при этом не запрашивает — хост и раньше был в host_permissions (§9, SEC-3).
6Синхронизация вкладок
- Открыть 3 вкладки: 2× Docs + 1× Drive, тема ON.
- В popup вкладки №1 выключить тему.
- Ожидаемо: все 3 вкладки становятся светлыми менее чем за ~1 секунду,
без «залипших» полутёмных элементов.
- Быстро пощёлкать toggle 5 раз подряд → все вкладки сходятся к финальному состоянию, артефактов нет.
7Матрица окружений
Прогнать §2–§6 на каждой конфигурации, плюс все 3 filter-режима.
8Edge cases
EC-1 — Печать
- Тема ON, Invert, открыт fixture.
- Ctrl/Cmd+P → окно предпросмотра печати.
- Ожидаемо: документ в оригинальных цветах — тема и фильтры при печати отключаются.
EH-1 — Первый запуск / очистка данных
chrome://settings → очистить данные сайта для docs.google.com (или новый профиль).
- Открыть Docs.
- Ожидаемо: тема применяется сразу (default ON), без ошибок в консоли (F12 → Console).
EH-3 — Деградация при «сломанных» селекторах для продвинутого QA
- Открыть Docs, F12 → Console.
- Симулировать поломку canary:
document.querySelector('#docs-chrome')?.removeAttribute('id');
document.querySelector('#docs-menubar')?.removeAttribute('id');
- Ожидаемо: UI-тема снимается целиком (никаких частично
покрашенных элементов); в консоли ровно одно предупреждение
[DocsNight] UI selectors mismatch… с версией theme-map;
исходящих сетевых запросов — 0.
9Приватность и безопасность
Обязательный блок — провал здесь блокирует релиз.
SEC-1 — Ноль сетевых запросов
- F12 → вкладка Network, очистить лог.
- Выполнить: загрузка Docs, 3× toggle, смена фильтра, деградация (§8 EH-3).
- Ожидаемо: от расширения не уходит ни одного запроса
(fetch / XHR / beacon / websocket).
SEC-3 — Минимум прав
chrome://extensions/ → DocsNight → Подробности.
- Ожидаемо: только доступ к
docs.google.com и
drive.google.com + storage. Никаких «доступ ко всем сайтам», tabs, истории.
SEC-2 — Изоляция содержимого
Расширение не должно читать или логировать текст документа. Косвенная
проверка: в Application → Local Storage для docs.google.com ключ
docsnight:state содержит только {enabled, filterMode} —
никакого текста документа или URL.
10Известные ограничения — это не баги
- Invert инвертирует изображения («негатив») — по природе canvas Docs. Решение — режим Dim или None.
- Совместная работа: тема видна только тебе; соавторы видят оригинал.
- Конфликт с другими dark-расширениями на docs/drive — отключить их для этих сайтов.
- Временная деградация UI при обновлениях Google — чинится в течение суток.
- Баннер «Войти / Запросить права» у документа, открытого анонимно — светлый; у залогиненного не появляется.
- Нативно-тёмные элементы Drive становятся светлыми (тост синхронизации) — следствие инверсии всей страницы Drive.
- Slides и Forms не темятся вообще (v0.3.0): карты селекторов для них нет,
а покрасить половину интерфейса хуже, чем не красить.
- Картинки внутри самого документа в режиме Invert — негатив. Это п.1, но
повторим отдельно: не регрессия v0.3.0, а природа canvas-рендеринга Docs. Решение отложено
осознанно; обход для читателя — режим Dim или None.
11Шаблон баг-репорта
Заголовок: [DocsNight] <краткая суть>
Окружение: ОС + версия Chrome (stable/beta), версия расширения (manifest 0.3.1)
Поверхность: Docs / Drive | Режим: Invert / Dim / None | Тема: ON/OFF
Шаги воспроизведения:
1. …
Ожидаемо: …
Фактически: …
Скриншот/скринкаст: (обязательно для визуальных)
Console (F12): текст ошибок/предупреждений, если есть
Network: были ли исходящие запросы от расширения (да/нет)
Частота: всегда / иногда / 1 раз
Блокеры: сеть ≠ 0; права шире
storage + 2 host; «сломанная каша» вместо чистой деградации; белая вспышка при загрузке;
нечитаемый текст.
12Definition of Done
- HP-1, HP-2 — зелёные на fixture, на 2+ машинах
- EH-1, EH-3, EC-1 (печать) — зелёные
- Drive + предпросмотр медиа без фильтра — зелёные
- SEC-1 (0 сети), SEC-3 (права) — зелёные
- Матрица §7 пройдена (Chrome stable/beta × ОС × 3 режима)
- Все найденные блокеры исправлены и перепроверены
- Известные ограничения (§10) отражены в описании CWS и FAQ