Как составить баг-репорт при обнаружении белого экрана на фронте
Что проверяют
Белый экран это симптом, а не причина, и проверяют, соберёте ли вы данные до того, как отдать задачу разработчику. Репорт «страница не грузится» без консоли и сети почти всегда возвращается с вопросами. Следом обычно спрашивают, какую серьёзность вы поставите.
Как отвечать
Сначала локализуйте проблему:
- консоль DevTools: белый экран в SPA чаще всего означает необработанную ошибку JavaScript. В React ошибка рендера без Error Boundary размонтирует всё дерево, и остаётся пустая страница. Скопируйте текст ошибки со стеком;
- вкладка Network: не упал ли запрос за JS-бандлом или CSS (404 после деплоя,
ChunkLoadError), что вернули запросы к API. Сохраните HAR-файл; - изоляция: повторите в инкогнито без расширений, в другом браузере, под другим пользователем, после сброса кэша;
- версия: номер сборки или коммит, стенд или прод, время воспроизведения. Если подключён Sentry или аналог, приложите ссылку на событие.
Затем структура репорта:
- заголовок: где, после какого действия и у кого. Не «Белый экран», а «Белый экран на странице заказа после оплаты с пустой корзиной»;
- шаги: с тестовыми данными, учётной записью и ролью;
- ожидаемый и фактический результат: что должно было открыться и что видно вместо этого;
- окружение: браузер с версией, ОС, устройство;
- частота: всегда, иногда, только при первом заходе после деплоя;
- вложения: скриншот консоли, видео, HAR, фрагменты логов;
- серьёзность и приоритет: если экран перекрывает основной сценарий, это блокер или критический дефект.
Где спотыкаются
Прикладывают только скриншот белой страницы. Разработчику он ничего не даёт, ценность в тексте ошибки из консоли и в статусах запросов.
Не проверяют расширения и кэш. Часть «белых экранов» воспроизводится только с блокировщиком рекламы или со старым бандлом после деплоя. Это нужно указать: в первом случае бага может не быть вовсе, во втором фронту нужна обработка ChunkLoadError.
Путают серьёзность и приоритет. Белый экран на редкой админской странице критичен по серьёзности, но может быть не срочным по приоритету, и это стоит проговорить.