Тестирование беспарольного входа без хаоса в почтовом ящике

Беспарольный вход выглядит просто на демо. Пользователь вводит email. Приходит магическая ссылка. Сессия начинается.

В стейджинге этот процесс становится запутанным. Ссылки попадают в общие почтовые ящики или на старые алиасы. Это создает лишний шум.

К беспарольной аутентификации нужно относиться как к единой системе. Вам необходимо протестировать JavaScript-клиент, Node.js-бэкенд, доставку писем и сессию. Если вы проигнорируете почтовый ящик, вы можете выпустить сломанный флоу, даже если ваши API-тесты пройдены успешно.

Распространенные ошибки включают:

  • Бэкенд отправляет две ссылки после повторной попытки.
  • Письмо ведет на неверный хост.
  • Старая ссылка работает дольше, чем должна.
  • Фронтенд помечает пользователя как вошедшего в систему до того, как установится cookie.

Используйте изолированный почтовый ящик для каждого запуска тестов. Это предотвратит попадание тестовых данных в рабочие почтовые ящики команды. Для стейджинга используйте сервисы временной почты, чтобы разделять запуски.

Изоляция упрощает отладку. Если тест проваливается, вы должны видеть один почтовый ящик и один путь пользователя. Вы должны точно знать, какое сообщение относится к какой сборке.

Хороший тест проверяет эти шаги по порядку:

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

На стороне Node.js прикрепляйте correlation ID к вашим логам. Используйте его от момента запроса до отправки письма и создания финальной сессии. Это поможет найти баги, если письма приходят с задержкой или дублируются.

Не заменяйте все свои тесты тестами через email. Используйте быстрые юнит-тесты для логики токенов и правил сессий. Используйте путь через email, чтобы доказать, что реальный пользовательский опыт работает корректно.

Чек-лист перед релизом:

  • Один запрос на вход создает только одну активную ссылку.
  • Последнее письмо легко распарсить в стейджинге.
  • Ссылка работает на правильном хосте.
  • Ссылку нельзя использовать повторно.
  • Выход из системы и повторный вход создают чистый новый токен.

Источник: https://dev.to/ryanlee91/how-to-test-passwordless-login-emails-in-javascript-without-inbox-chaos-56d0