Проверка электронной почты с помощью gmail-tester и Playwright

Введение

В этой статье мы создадим несколько простых тестов для проверки электронной почты. Если вы работаете с системами, отправляющими электронные письма, и вам нужно проверять их получение, то инструменты, о которых пойдет речь, – это то, что вам нужно.

Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ

Предусловия

Команды

В credentials.json хранятся значения из OAuth2 Authentication file..

Для генерации token.json необходимо выполнить следующую команду:

node node_modules/gmail-tester/init.js credentials.json token.json my-email-address@gmail.com

Она выполняется с помощью node, а запускаемый скрипт находится по этому пути в вашем проекте: node_modules/gmail-tester/init.js

Замените адрес электронной почты на тот, который вы хотите использовать (это должен быть тот же адрес, который использовался для создания файла аутентификации).

Структура проекта

После получения необходимых файлов аутентификации можно структурировать проект следующим образом:

Структура проекта

Если вы планируете поместить его в репозиторий, убедитесь, что аутентификация и другие конфиденциальные данные хранятся в другом месте.

Аутентификация

В этой папке мы будем хранить наш credentials.json:

{
    "installed":{
       "client_id":"",
       "project_id":"",
       "auth_uri":"https://accounts.google.com/o/oauth2/auth",
       "token_uri":"https://oauth2.googleapis.com/token",
       "auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs",
       "client_secret":"",
       "redirect_uris":[
          "http://localhost"
       ]
    }
 }

И наш token.json:

{
    "access_token":"",
    "refresh_token":"",
    "scope":"https://www.googleapis.com/auth/gmail.readonly",
    "token_type":"Bearer",
    "expiry_date":
 }

Конфигурация

В папке config находится файл email-config, в котором хранятся параметры для проверки, такие как 'subject',  'from'и 'to'.

Мы также установим значения для определения времени ожидания 'wait_time_sec' и максимального времени ожидания 'max_wait_time_sec':

import path from "path";
import { fileURLToPath } from "url";

const __dirname = path.dirname(fileURLToPath(import.meta.url));

// config.js
export default {
    credentialsPath: path.resolve(__dirname, "credentials.json"),
    tokenPath: path.resolve(__dirname, "token.json"),
    options: {
      subject: "test email",
      from: "my-email-address@gmail.com",
      to: "my-email-address@gmail.com",
      wait_time_sec: 10,
      max_wait_time_sec: 30,
      include_body: true
    }
  };

Тесты

import gmail from "gmail-tester";
import config from "./config.js";
import { test, expect } from '@playwright/test';

test('has email', async () => {
  const email = gmail.check_inbox(config.credentialsPath, config.tokenPath, config.options);
  expect(await email).toBeTruthy();
});

Выполнение теста

Этот тест выполняется достаточно быстро и предоставляет информацию о запрашиваемых параметрах:

Заключение

Это простая база для создания полного набора тестов проверки электронной почты, настолько подробного или сложного, насколько это необходимо. Надеемся, что это статья поможет повысить ценность вашего продукта и избавит вас от ручного процесса проверки и верификации почтовых интеграций.

Перевод статьи «Email verification with gmail-tester and Playwright».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *