Как разобрать редкое зависание page.goto в Firefox, когда readyState уже complete: разделить браузерное событие load, ожидание навигации Playwright и готовность приложения, не отключая таймауты.
Разведите три понятия готовности страницы
Документация Playwright объясняет, что базовый переход ждёт browser load event, а современные приложения могут продолжать hydration и ленивую загрузку позже. Поэтому запишите отдельно: завершился ли promise page.goto, чему равен document.readyState и стал ли доступен один конкретный элемент приложения. Не используйте факт видимой отрисовки как синоним завершённой навигации. Выберите тестовую страницу без персональных данных и фиксируйте временные метки относительно начала перехода. Если элемент интерактивен, но promise всё ещё ждёт, это граница между приложением и учётом навигации, а не готовый диагноз.
Сохраните штатный таймаут и один сценарий
API page.goto поддерживает waitUntil со значениями load, domcontentloaded и commit, а navigation timeout задаётся отдельно. Для исходной диагностики оставьте существующие настройки: отключение таймаута превращает редкий сбой в бесконечное ожидание и стирает измерение. Используйте один URL, один context и одну последовательность событий; не добавляйте повторную навигацию как «лечение» до сохранения первого результата. Запишите URL без query-токенов, выбранный waitUntil, установленный timeout и момент события load. Если есть редиректы, отметьте конечный origin, не раскрывая закрытый домен.
Сравните браузер и контрольный URL
Запустите минимальный сценарий в Firefox и одном контрольном браузере Playwright, затем на простой локальной странице без framework hydration. Получатся четыре клетки: два браузера × приложение/простая страница. Повторите только один раз при расхождении; не воспроизводите опубликованные в issue длинные серии на рабочей инфраструктуре. Если сбой следует за приложением во всех браузерах, исследуйте его lifecycle. Если только за Firefox на обоих URL, пакет полезен команде Playwright. Если результат не повторяется, сохраните trace одной неудачной попытки после проверки содержимого, а не заявляйте исчезновение дефекта.
Сформируйте временную шкалу для поддержки
В отчёте укажите версии Playwright и браузера, ОС, waitUntil, timeout, последовательность request/response/load, readyState и готовность одного нейтрального locator. Полные trace и HAR могут содержать cookies, заголовки, URL и тела ответов: просмотрите их до публикации либо воспроизведите на локальной странице. Не делайте вывод «страница полностью загружена» только по readyState complete; документация разделяет lifecycle и позднюю работу приложения. Issue подтверждает обсуждение редкого ожидания в одной конфигурации, а статья даёт только безопасный формат доказательств.
Материал подготовлен редакцией VOne с применением ИИ для lifecycle-временной шкалы; семантика load, waitUntil и timeout проверена по Playwright, данные единичного issue не выданы за измерение продукта.
Источники и проверка
- Playwright — Navigations проверено 2026-08-10
- Playwright API — page.goto проверено 2026-08-10
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.