¡Hola a todos! Leer correos electrónicos en pruebas automatizadas es un truco que quizás necesites saber hacer en muchos proyectos. He aquí por qué y cómo afrontarlo... ¿Porque es esto importante? Bueno, si el sistema envía correos electrónicos, es posible que desee verificar que se estén enviando y que el contenido sea correcto, incluidos los enlaces en los que se puede hacer clic. Estos son los escenarios habituales cuando necesitas esto: Inscribirse. Muchas plataformas envían un correo electrónico de confirmación una vez que crea una cuenta y debe hacer clic en un enlace de confirmación del correo electrónico. Facturas. Si su aplicación realiza algún pago, generalmente envía un cheque o una factura por correo electrónico, por lo que es posible que desee ver si su contenido también es correcto. Resultados. Como resultados de pruebas médicas. En mi experiencia, algunos hospitales envían un correo electrónico con los resultados de las pruebas una vez realizadas (o al menos un enlace a una página personal donde puede ver el informe). … Por supuesto, esta no es la lista completa; estos son solo los casos de uso que más he conocido en mi carrera. Si no se verifican estos escenarios, los usuarios podrían no recibir correos electrónicos o recibir información incorrecta en los correos electrónicos. En uno de los proyectos, nos ayudó a encontrar temprano un token vencido. de SendGrind ¿Cuáles son las complicaciones de leer correos electrónicos en los exámenes? Leer correos electrónicos es algo complicado, pero no imposible. Los primeros clientes de correo electrónico usaban para recuperar correos electrónicos del servidor, pero hay un pequeño problema: elimina los correos electrónicos del servidor una vez que se descargan. POP3 Más tarde, apareció el protocolo , que le permite simplemente leer los correos electrónicos del servidor. IMAP El problema es - o cuando se conecta por primera vez (como cuando reinicia una prueba automatizada). algunos servicios prohíben estos protocolos hacerte confirmar tu identidad Por otro lado, algunos servicios como proporcionan una para manipular sus correos electrónicos, pero hay otro problema: la documentación y sus bibliotecas no son tan fáciles de usar (especialmente para aquellos que no trabajan mucho con pruebas de correo electrónico). Gmail API REST Aquí es donde entra en juego : una biblioteca que le permite leer correos electrónicos e incluso abrirlos en su navegador si usa herramientas de automatización del navegador como . gmail-getter npm Playwright Leer correos electrónicos de Gmail con Gmail-Getter Lo primero es lo primero: debe instalar el paquete en su proyecto: npm install gmail-getter Cree un proyecto de Google Cloud Console y obtenga credenciales Para iniciar sesión en necesita obtener credenciales: un , un y un . Estas credenciales le permiten obtener un token de acceso, que se requiere en solicitudes posteriores (como obtener una lista de correos electrónicos o un solo correo electrónico, etc.). la API de Gmail, ID de cliente Secreto de cliente token de actualización Pasos a seguir: Crea un proyecto en . Google Cloud Console Cree en la sección ( ) y descárguela. credenciales de OAuth API y servicios preferiblemente, seleccione la aplicación allí si la necesita para pruebas automatizadas de escritorio Habilite la . API de Gmail Obtenga un token de actualización. Para obtener un token de actualización, simplemente ejecute un comando en la raíz del proyecto: npx gmail-getter get-refresh-token (o en cualquier otro lugar si tienes el paquete instalado globalmente) get-refresh-token Debes colocar el archivo en un lugar donde ejecutarás el comando. credentials.json ⚠️ el nombre del archivo de credenciales distingue entre mayúsculas y minúsculas ⚠️ Obtener token de acceso Una vez realizada la configuración, deberás obtener un token de acceso en tus pruebas automatizadas. Yo diría que el mejor lugar para ello es una configuración global (una función que se ejecuta antes de que comience la ejecución de prueba). Entonces, será algo como esto: import {getToken} from 'gmail-getter' export default async function globalSetup() { process.env['ACCESS_TOKEN'] = await getToken( process.env.CLIENT_ID!, process.env.CLIENT_SECRET!, process.env.REFRESH_TOKEN! ) } El ejemplo anterior utiliza variables de entorno, para las cuales definitivamente necesitarás instalar también el paquete . dotenv Pero, si desea mantener las cosas simples, puede usar este fragmento donde necesite que se pueda acceder al token desde: const accessToken = await getToken( '<put-your-client-id-here>', '<put-your-client-secret-here>', '<put-your-refresh-token-here>' ) Obtener correos electrónicos En este momento, utiliza para encontrar el correo electrónico que necesita: la API REST de Gmail su propio lenguaje de consulta const email = await checkInbox(accessToken!, 15000, 1500, 'from:squier7 subject:Test!') El comando anterior le devuelve un objeto de correo electrónico, pero aún necesita obtener su contenido o un enlace. Reemplazar a su propia consulta siguiendo la sintaxis del enlace de arriba ☝️ from:squier7 subject:Test! Puedes analizar un enlace usando : una expresión regular const link = parseLinkFromHtml(email!, /(https:\/\/)(\S*)(gmail-getter)([\w\/\?\=\-]*)/im) Reemplace con su propia expresión regular ☝️ /(https:\/\/)(\S*)(gmail-getter)([\w\/\?\=\-]*)/im O obtenga todo el contenido HTML del correo electrónico y preséntelo en su navegador: import {getToken, parseHtml} from 'gmail-getter' import {test} from '@playwright/test' test('Render an email', async ({page}) => { const accessToken = await getToken( '<put-your-client-id-here>', '<put-your-client-secret-here>', '<put-your-refresh-token-here>' ) const email = await checkInbox(accessToken!, 15000, 1500, 'from:squier7 subject:Test!') // get an email const html = parseHtml(email!) // parse HTML from the email await page.setContent(html) // render the email in the browser }) En general ¡Creo que ahora es bastante obvio que trabajar con correos electrónicos en pruebas automatizadas puede ser complicado! Pero conocer estos trucos hace las cosas mucho más fáciles. Es posible que aún utilices otros servicios de correo electrónico o pruebes , pero te lo garantizo: no será tan fácil como en esta guía, ya que necesitarás crear tu propio asistente, como el que proporciona aquí. IMAP Gmail-getter. Puedes encontrar el en . también. ejemplo de Playwright GitHub Ejemplo de ciprés