Ошибка HTTP всё равно является ответом HTTP.
Отделите неуспешный статус от сбоя транспорта при диагностике запроса.

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

Панель не загружается, тест ждёт requestfailed. Ничего нет: сервер вернул HTTP-ошибку. Отсутствие события не доказывает успех. Тест спрашивал о неверной границе.
Руководство использует сетевую документацию Playwright и Page с локальными запросами: контролируемый 503 и намеренный route-abort. Нет клиентского endpoint или реальной аварии. Статус и транспорт разделены.
Читайте статус явно
API описывает request, response и requestfinished для завершённого запроса. HTTP-ошибка остаётся ответом, не requestfailed. Транспорт завершён, а обещание продукта может быть нарушено.
const pending = page.waitForResponse(response =>
response.url().endsWith('/demo-unavailable')
);
await page.getByRole('button', { name: 'Load demo panel' }).click();
const response = await pending;
expect(response.status()).toBe(503);
await expect(page.getByRole('status')).toHaveText('Demo service unavailable');Нужны локальная кнопка и контролируемый сервер. Интерфейс сообщает ошибку. Ожидать 503 правильно для негативного примера, не реального успешного сценария.
Начните ожидание до действия. Выберите endpoint и идентичность по контракту. Широкий обработчик может принять посторонний ответ за доказательство.
Используйте requestfailed для его вопроса
Он описывает отсутствие нормального завершённого ответа, например транспортный сбой. Другой пример использует route.abort(). Проверяются выбранный URL и описание ошибки, не одинаковый текст во всех браузерах.
Прерывание не серверный 503. Названия и ожидания отдельные. Если оба требуют повтора, проверяйте восстановление в каждой настройке без смешения причин.
Одно событие не определяет производственную причину. Направляет расследование, но не устанавливает сервер, сетевой переход или политику. Сопоставьте доказательства в разрешённой среде.
Не путайте транспорт и продукт
Ответ может иметь допустимый статус и неправильную запись или тело ошибки. Статус - часть контракта. Проверяйте содержимое и состояние интерфейса без расширения демонстрации.
Сервер считает завершённый 503 без requestfailed. Прерывание даёт requestfailed. Это проверка семантики, не измерение надёжности и не внешняя авария.
Не повторяйте клики из-за отсутствующего события. Сервер уже мог получить операцию; повтор дублирует её. Определите границу и разрешённый повтор сначала.
Сохраняйте конкретные термины
Запишите endpoint, статус или событие, результат UI и неизвестное. Это полезнее Сеть сломалась. Защитите частные URL и данные до передачи.
AnyTest описывает тесты для ревью после исследования. Спросите о правильном событии и проверке восстановления. Сетевая реализация AnyTest не заявляется. Различайте неуспешный ответ и отсутствие завершённого ответа.
Сам факт завершения ответа не подтверждает нужный бизнес-результат. Продукт может требовать правильную запись, содержимое или полезное восстановление. Отчёт должен отделять проверенное от неизвестного. Локальная демонстрация не устанавливает причину внешнего инцидента: она изолирует два события с известными входами, чтобы последующие тесты не путали отсутствие успешной функции с отсутствием транспортного ответа.
Общие вопросы
Вызывает ли HTTP 503 requestfailed автоматически?
Нет. Это ответ; проверяйте статус явно.
Доказывает ли requestfinished успех продукта?
Нет. Транспорт, статус, содержимое и результат различны.