Ошибка консоли не равна неперехваченному исключению.
Собирайте сообщения консоли и ошибки страницы отдельно, затем проверяйте результат сценария.

Переведенное издание. Технические идентификаторы остаются в своей первоначальной форме.

Тест проходит последнее утверждение, хотя во время действия страница пишет ошибку в консоль. В другом запуске скрипт выбрасывает неперехваченное исключение, но нужный заголовок остаётся видимым. Это разные сигналы. Сбор одного не описывает другой.
Page API документирует события console для вызовов консольного API и pageerror для неперехваченных исключений. ConsoleMessage предоставляет тип и текст. Сохраняйте канал в записи, чтобы сообщение уровня error не превратилось в выдуманный диагноз исключения.
Подключите обработчик до действия
В вымышленной странице одна кнопка вызывает console.error, другая планирует выброс Error. Нет внешних ресурсов или клиентских данных. Тест начинает слушать до клика и проверяет событие через его канал.
const pending = page.waitForEvent('console', message =>
message.type() === 'error' && message.text() === 'demo diagnostic'
);
await page.getByRole('button', { name: 'Log demo error' }).click();
const message = await pending;
expect(message.text()).toBe('demo diagnostic');Нужны раннер Playwright, импорт expect и локальная кнопка. Ожидание начинается до клика, чтобы поймать быстрое событие. Оно сопоставляет точную вымышленную строку, не каждую ошибку приложения. Для исключений регистрируйте отдельный pageerror.
Демонстрация подтверждает: контролируемый console.error создаёт нужное сообщение без добавления pageerror. Отдельный запланированный throw создаёт pageerror с нужным текстом. Это поведение фикстуры, не классификация всех диагностик браузера или политик библиотечного журнала.
Отделите сбор от правила выпуска
Получение события само по себе не создаёт неуспешного утверждения. Явно определите, какие неожиданные события блокируют сценарий, какие известные сообщения разрешены и кто отвечает за исключения. Список разрешений должен быть узким и проверяемым, не отключать весь канал.
Проверьте источник сообщения и действие перед выводом о причине. Консоль может описывать обработанную ситуацию, исключение относиться к работе вне видимого заголовка. Ни одно отдельно не доказывает сохранение записи. Сохраняйте проверки результата сценария.
Если подготовка или переход произошли до подключения, список неполон за этот период. Укажите окно наблюдения. Пустой список не означает исправность приложения, когда запуск или другая нужная страница не наблюдались.
Защитите диагностические файлы
Аргументы и ошибки могут содержать сведения записи, токены или URL. Собирайте необходимое и очищайте перед передачей. Возможность читать аргументы не разрешает публиковать их целиком. Здесь только фиксированные вымышленные строки.
При ревью созданного теста проверьте время подключения, фильтр и утверждение, использующее результат. AnyTest описывает исследование приложений и тесты для человека. Конкретная функция мониторинга консоли не заявлена. Укажите канал, действие, ожидаемый результат и недостающие данные.
Обработчик одной страницы не описывает отдельно открытое окно. Связывайте данные с исходной страницей и периодом. Перед объединением списков для решения о выпуске проверьте пробелы покрытия.
Общие вопросы
Всегда ли console.error означает неперехваченное исключение?
Нет. Сообщения и исключения приходят по разным каналам.
Делает ли прослушивание тест неуспешным?
Нет. Нужны утверждение или явное правило обработки данных.