Smoke-тест приёма заявок через Web3Forms
Назначение
Чек-лист подтверждает работу короткой и подробной формы, проверку телефона и фактическую доставку заявки на правильный email.
Схема аналогична проекту deputat36/bm:
- пользователь заполняет короткую форму;
- при необходимости раскрывает дополнительные поля;
- Web3Forms отправляет email-копию;
- сайт показывает
/spasibo/; - при ошибке остаются SMS, MAX, ВКонтакте, Web Share и копирование текста;
- будущий Supabase endpoint может работать параллельно в режиме
hybrid.
До теста
- GitHub Pages успешно собрал актуальный
main. - Открывается
https://sterlikova-ipoteka.ru/online-zayavka/. - Сразу видны имя, телефон, город, способ связи и задача.
- Стоимость, взнос, доход и банковская история скрыты внутри «Добавить подробности».
- В форме видна кнопка «Отправить заявку онлайн» после подготовки текста.
- Страница
/spasibo/имеетnoindex, follow. - Страница
/personal-data-consent/открывается из чекбокса согласия. - В
_config.ymlустановленоlead_capture.mode: web3forms. lead_capture.web3forms_access_keyимеет UUID-формат.lead_capture.endpointостаётся пустым.
Тестовая ссылка
Открыть форму с тестовой атрибуцией:
https://sterlikova-ipoteka.ru/online-zayavka/?source=%2Fuslugi%2Fpodbor-ipoteki%2F&utm_source=smoke&utm_medium=test&utm_campaign=web3forms_launch&utm_content=desktop
Для мобильной проверки заменить utm_content=desktop на utm_content=mobile.
Проверка телефонного поля
Выполнить до отправки реальной тестовой заявки:
- Ввести
89031234567— поле должно показать+7 (903) 123-45-67. - Очистить и ввести
+79031234567— результат должен быть тем же. - Ввести неполный номер — подготовка заявки должна быть заблокирована понятной ошибкой.
- Ввести больше 10 цифр после
+7— лишняя цифра не должна скрываться, поле должно показать ошибку. - Исправить номер — ошибка и
aria-invalidдолжны исчезнуть. - Убедиться, что имя и телефон не сохраняются в localStorage или sessionStorage.
Ожидаемые цели после подключения Метрики:
online_application_phone_errorпри ошибочном номере;- обычный переход к
online_application_prepareпосле исправления.
Тест A: короткая заявка
Использовать явно тестовые значения:
- имя:
Тест Web3Forms; - телефон: рабочий тестовый номер владельца проекта;
- город:
Борисоглебск; - сценарий:
Первичная консультация и подбор ипотеки; - дополнительные поля не раскрывать;
- комментарий не заполнять.
Последовательность:
- Заполнить обязательные поля.
- Установить чекбокс согласия.
- Нажать «Проверить и подготовить заявку».
- Проверить сформированный текст:
- присутствует request ID;
- источник
/uslugi/podbor-ipoteki/; - указан город;
- указан сценарий;
- дополнительные значения обозначены как неуказанные;
- нет паспортных или банковских документов.
- Нажать «Отправить заявку онлайн».
- Убедиться, что кнопка переходит в состояние отправки и защищена от повторного клика.
- Дождаться перехода на
/spasibo/. - Проверить номер обращения, сценарий, город и технический статус.
- Убедиться, что номер телефона на странице не выводится.
Тест B: подробная заявка
Открыть новую форму и раскрыть «Добавить подробности».
Заполнить:
- объект:
Квартира на вторичном рынке; - стоимость:
Тест 4 500 000; - первоначальный взнос:
Тест 900 000; - доход:
Официальная работа; - история банков:
Тестовая заявка, не обрабатывать как клиента; - комментарий:
SMOKE TEST. После проверки письмо удалить.
Проверить:
- раскрытие не сбрасывает основные поля;
- дополнительные сведения попали в подготовленный текст;
- в email присутствуют объект, стоимость, взнос, доход, банковская история и комментарий;
- событие
online_application_more_openсрабатывает после подключения Метрики; - новая заявка получает новый request ID.
Проверка email
В рабочем почтовом ящике проверить:
- письмо поступило;
- определён фактический адрес получателя Web3Forms;
- письмо не попало в спам;
- тема начинается с
Новая заявка ипотечному брокеру; - присутствуют имя, телефон и город;
- присутствуют сценарий и request ID;
- для подробного теста присутствуют объект, стоимость и взнос;
- присутствует страница-источник;
- присутствуют
utm_source=smoke,utm_medium=test,utm_campaign=web3forms_launch; - присутствуют квалификация и приоритет;
- присутствует дата отправки;
- письмо читается на телефоне и компьютере.
Если письмо пришло не тому получателю, приём заявок нельзя считать введённым в эксплуатацию. Нужно создать отдельный Web3Forms access key для подтверждённого рабочего email и заменить только lead_capture.web3forms_access_key в _config.yml.
Проверка повторной отправки
- Во время одного запроса повторный клик заблокирован.
- После успешной отправки повторный клик невозможен из-за перехода на
/spasibo/. - Новая заявка получает другой request ID.
- На странице благодарности не сохраняется телефон.
- Безопасная сводка получает
expires_atи перестаёт использоваться через 24 часа.
Web3Forms сам по себе не обеспечивает бизнес-дедупликацию. Постоянная идемпотентность по request ID будет реализована в Supabase backend v2.
Проверка ошибки
Ошибку проверять только в тестовой ветке или локально, временно подменив URL Web3Forms на недоступный HTTPS-адрес.
Ожидаемое поведение:
- появляется понятное сообщение об ошибке;
- страница не переходит на
/spasibo/; - готовый текст остаётся в поле;
- работает копирование;
- доступно SMS;
- открывается ВКонтакте;
- можно скопировать номер для MAX;
- работает системное меню «Поделиться», если поддерживается браузером.
После проверки тестовую подмену обязательно удалить.
Проверка таймаута
При искусственно зависшем запросе через время из lead_capture.timeout_ms должны выполниться условия:
- запрос отменён через
AbortController; - показано сообщение о таймауте;
- кнопка позволяет повторить отправку;
- резервные способы остаются доступными.
Проверка антиспама
- Honeypot скрыт от обычного пользователя.
- Заполненный honeypot блокирует онлайн-отправку.
- Слишком быстрая отправка блокируется клиентской проверкой.
- Блокировка не показывает злоумышленнику внутренние детали.
Клиентский антиспам не заменяет server-side rate limit. Он будет добавлен при подключении Supabase в режиме hybrid.
Проверка мобильного интерфейса
На ширине экрана около 360–430 px проверить:
- нет горизонтальной прокрутки;
- обязательные поля отображаются в одну колонку;
- «Добавить подробности» удобно нажимается;
- клавиатура телефона открывается для номера;
- кнопка подготовки занимает доступную ширину;
- кнопки после подготовки заявки располагаются одна под другой;
- липкая панель не закрывает согласие и кнопку отправки;
- после ошибки фокус возвращается к телефонному полю.
Проверка аналитики
После подключения Яндекс Метрики проверить цели:
online_application_click;online_application_prefill;online_application_start;online_application_more_open;online_application_phone_error;online_application_prepare;online_application_direct_attempt;online_application_direct_success;lead_submit;lead_thankyou_view.
lead_submit означает успешный технический ответ Web3Forms. Фактическую доставку подтверждает наличие письма в рабочем ящике.
Результат запуска
Зафиксировать:
- дата и время теста;
- устройство и браузер;
- короткий или подробный сценарий;
- request ID;
- адрес получателя;
- время доставки письма;
- папка, куда поступило письмо;
- результат перехода на
/spasibo/; - результат телефонной проверки;
- результат fallback-теста;
- найденные ошибки;
- ответственный за обработку реальных заявок.
После успешного теста удалить тестовые письма и не использовать тестовые записи как реальных клиентов.