Информирование производителей браузеров о проблемах, обнаруженных в их браузерах, является неотъемлемой частью улучшения веб-платформы.
Регистрация хорошей ошибки, но требует немного работы. Ваша цель должна заключаться в том, чтобы максимально упростить для разработчиков браузера поиск того, что сломалось, достижение первопричины и, что самое важное, поиск способа ее исправить. Ошибки, которые быстро прогрессируют, как правило, быстро воспроизводятся с четким ожидаемым поведением.
Убедитесь, что это ошибка
Первый шаг — выяснить, каким должно быть «правильное» поведение.
Каково правильное поведение?
Проверьте соответствующие API-документы на MDN или попробуйте найти соответствующие спецификации. Эта информация может помочь вам решить, какой API на самом деле сломан, где он сломан и каково ожидаемое поведение.
Работает ли в другом браузере?
Поведение, которое отличается между браузерами, обычно имеет более высокий приоритет как проблема взаимодействия, особенно когда браузер, содержащий ошибку, является лишним. Попробуйте протестировать на последних версиях Chrome, Firefox, Safari и Edge, возможно, используя такой инструмент, как BrowserStack .
Если возможно, проверьте, что страница не ведет себя намеренно по-другому из-за сниффинга user agent. В Chrome DevTools попробуйте установить строку User-Agent
на другой браузер .
Он сломался в недавнем релизе?
Работало ли это как ожидалось в прошлом, но сломалось в недавнем выпуске браузера? Такие регрессии можно устранить гораздо быстрее, особенно если указать номер версии, где это работало, и номер версии, где это не удалось. Вы можете использовать такие инструменты, как BrowserStack , для проверки старых версий браузера. Используйте такие инструменты, как инструмент bisect-builds (для Chromium), для поиска изменений.
Если проблема представляет собой регрессию и ее можно воспроизвести, основную причину обычно можно быстро найти и устранить.
Наблюдается ли та же проблема у других?
Если у вас возникли проблемы, есть большая вероятность, что и у других разработчиков они тоже есть. Сначала попробуйте поискать ошибку на Stack Overflow . Это может помочь вам перевести абстрактную проблему в конкретный сломанный API, а также найти краткосрочное решение, пока ошибка не будет исправлена.
Сообщалось ли об этом ранее?
Как только вы поймете, в чем заключается ошибка, пора проверить, не сообщалось ли об этой ошибке ранее, выполнив поиск в базе данных ошибок браузера.
- Браузеры на базе Chromium: https://crbug.com
- Firefox: https://bugzilla.mozilla.org/
- Браузеры на базе Safari и WebKit: https://bugs.webkit.org/
Если вы нашли существующую ошибку, которая описывает проблему, добавьте свою поддержку, отметив звездочкой, добавив в избранное или прокомментировав ошибку. И на многих сайтах вы можете добавить себя в список CC и получать обновления, когда ошибка изменится.
Если вы решили прокомментировать ошибку, включите информацию о том, как ошибка влияет на ваш сайт. Избегайте добавления комментариев в стиле «+1», так как баг-трекеры обычно отправляют электронные письма для каждого комментария.
Сообщить об ошибке
Если об ошибке ранее не сообщалось, самое время сообщить о ней производителю браузера.
Создайте минимизированный тестовый пример
У Mozilla есть отличная статья о том, как создать минимальный тестовый случай . Короче говоря, хотя описание проблемы — это отличное начало, ничто не сравнится с предоставлением связанной демонстрации в ошибке, которая показывает проблему. Чтобы максимизировать шансы быстрого прогресса, пример должен содержать минимально возможный код, необходимый для демонстрации проблемы. Минимальный пример кода — это первое, что вы можете сделать, чтобы увеличить шансы на исправление вашей ошибки.
Вот несколько советов по минимизации тестового случая:
- Загрузите веб-страницу, добавьте
<base href="https://original.url">
и проверьте, что ошибка существует локально. Для этого может потребоваться работающий HTTPS-сервер, если URL использует HTTPS. - Протестируйте локальные файлы на последних сборках как можно большего количества браузеров.
- Попробуйте сжать все в один файл.
- Удаляйте код (начиная с тех частей, которые, как вы знаете, не нужны) до тех пор, пока ошибка не исчезнет.
- Используйте контроль версий, чтобы иметь возможность сохранять свою работу и отменять ошибки.
Разместите минимизированный тестовый пример
Если вы ищете хорошее место для размещения своего минимизированного тестового примера, есть несколько хороших мест:
Имейте в виду, что некоторые из этих сайтов отображают контент в iframe, что может привести к разному поведению функций или ошибкам.
Подайте заявку на вашу проблему
Как только вы получите свой минимальный тестовый случай, вы готовы подать этот баг. Перейдите на нужный сайт отслеживания ошибок и создайте новую проблему.
- Браузеры на базе Chromium - https://crbug.com/new
- Firefox - https://bugzilla.mozilla.org/
- Браузеры на базе Safari и WebKit - https://bugs.webkit.org/
Добавьте четкие описания и шаги для воспроизведения
Во-первых, дайте четкое описание, чтобы помочь инженерам быстро понять, в чем заключается проблема, и помочь в ее устранении.
When installing a PWA using the `beforeinstallprompt.prompt()`, the
`appinstalled` event fires before the call to `prompt()` resolves.
Далее предоставьте подробные шаги, необходимые для воспроизведения проблемы. Вот где вам понадобится ваш минифицированный тестовый случай .
What steps will reproduce the problem?
1. Go to https://basic-pwa.glitch.me/, open DevTools and look at the
console tab.
2. Click the Install button in the page, you might need to interact with
the page a bit before it becomes enabled.
3. Click Install on the browser modal install confirmation.
И наконец, опишите ожидаемый и фактический результат.
What is the expected result? In the console:
0. INSTALL: Available (logged when `beforeinstallprompt` event fired)
1. INSTALL_PROMPT_RESPONSE: {outcome: "accepted", platform: "web"}
(logged when beforeinstallprompt.prompt()` resolves)
2. INSTALL: Success (logged when `appinstalled` event fired)
What is the actual result? In the console:
0. INSTALL: Available (logged when `beforeinstallprompt` event fired)
1. INSTALL: Success (logged when `appinstalled` event fired)
2. INSTALL_PROMPT_RESPONSE: {outcome: "accepted", platform: "web"}
(logged when beforeinstallprompt.prompt()` resolves)
Для получения дополнительной информации ознакомьтесь с рекомендациями по написанию отчетов об ошибках на MDN.
Бонус: добавьте снимок экрана или скринкаст проблемы
Хотя это и не обязательно, часто бывает полезно добавить снимок экрана или скринкаст проблемы. Это особенно полезно, когда ошибки возникают после нескольких шагов или необычной активности. Скринкасты и скриншоты часто могут лучше продемонстрировать, что произошло, разработчикам браузера.
Включите сведения об окружающей среде
Некоторые ошибки воспроизводятся только на определенных операционных системах или только на определенных типах дисплеев (например, с низким или высоким разрешением). Обязательно укажите сведения о любых тестовых средах, которые вы использовали.
Сообщить об ошибке
Наконец, отправьте сообщение об ошибке. Следите за своей электронной почтой для ответов на ошибку. Обычно во время расследования у инженеров могут возникнуть дополнительные вопросы. Если у них возникнут трудности с воспроизведением проблемы, они могут связаться с вами.