Smoke: отображение ошибок онлайн-заявки

Предусловия

1. Порядок скриптов

Подтвердить в собранной странице /online-zayavka/:

  1. application-inputs.js расположен раньше online-application.js;
  2. error UI устанавливает обёртку window.fetch до первого прямого запроса;
  3. JavaScript не содержит синтаксических ошибок.

2. Общий критерий сообщения

Для каждой ошибки прямой отправки подтвердить:

3. Validation

Вернуть HTTP 422:

{
  "ok": false,
  "success": false,
  "error_code": "validation_failed",
  "request_id": "11111111-1111-4111-8111-111111111111"
}

Ожидание:

4. Rate limit

Вернуть HTTP 429 с retry_after_seconds: 3600.

Ожидание:

Повторить с отрицательным, строковым и превышающим 24 часа значением. Время ожидания не должно отображаться.

5. Request rejected

Вернуть HTTP 202, success: false, error_code: "request_rejected".

Ожидание:

6. Backend

По очереди проверить:

Ожидание: одинаковая безопасная категория backend, готовый текст сохранён, технические детали базы отсутствуют.

7. Request errors

Проверить:

Ожидание: безопасная категория request, предложение обновить страницу или использовать резервный способ.

8. Неизвестный код

Вернуть корректный error envelope с error_code: "unknown_internal_case".

Ожидание:

9. Невалидный request ID

Вернуть телефон, email, произвольную строку и слишком длинное значение в request_id.

Ожидание:

10. Таймаут и сеть

Имитировать AbortError и сетевой отказ без JSON.

Ожидание:

11. Новая попытка

После ошибки снова нажать кнопку отправки.

Ожидание:

12. Hybrid

Настроить тестовый hybrid:

  1. Web3Forms отвечает успешно;
  2. Supabase endpoint возвращает backend_unavailable.

Ожидание:

13. Локальное хранение и аналитика

Проверить DevTools:

Критерий приёмки

Smoke пройден, когда все allowlist-коды переводятся в понятные категории, клиент видит безопасный технический номер и резервный путь, сырой код и внутренние данные не раскрываются, Web3Forms-успех не теряется, а рабочий Supabase endpoint остаётся выключенным до общей приёмки.

ЗаявкаПозвонитьВК