如何解决如何在赛普拉斯中发送带有测试报告的电子邮件
我正在努力实现以下目标:
要做到这一点,我需要:
- 一个基本的报告器而不是默认的
- 库,可以发送电子邮件。我已经尝试过
nodemailer
。但是,当我将它与 Cypress 解决方案连接时,它没有发送任何电子邮件。我尝试了不同的邮箱帐户(nodemailer.createTestAccount()
,一个来自我的公司,一个来自 SendGrid),但这不起作用(我没有收到任何电子邮件)
关于第 2 点,这是我使用的代码示例。这是 index.js 文件中的代码 - 我需要在所有测试后发送:
after(() => {
var nodemailer = require('nodemailer');
var sgTransport = require('nodemailer-sendgrid-transport');
var options = {
auth: {
api_user: 'sendgrid_USER',api_key: 'sendgrid_APIKEY'
}
}
var client = nodemailer.createTransport(sgTransport(options));
var email = {
from: 'FROM_MAIL.PL',to: 'TO_MAIL.PL',subject: 'Hello',text: 'Hello world',html: '<b>Hello world</b>'
};
client.sendMail(email,function(err,info){
if (err ){
console.log(error);
}
else {
console.log('Message sent: ' + info.response);
}
});
});
解决方法
Nodemailer 是 Node.js 的一个模块,因此您需要在 Cypress 任务中运行它。
将此添加到您的 /cypress/plugins/index.js 文件
const sendAnEmail = (message) => {
const nodemailer = require('nodemailer');
const sgTransport = require('nodemailer-sendgrid-transport');
const options = {
auth: {
api_user: 'sendgrid_USER',api_key: 'sendgrid_APIKEY'
}
}
const client = nodemailer.createTransport(sgTransport(options));
const email = {
from: 'FROM_MAIL.PL',to: 'TO_MAIL.PL',subject: 'Hello',text: message,html: '<b>Hello world</b>'
};
client.sendMail(email,function(err,info) {
return err? err.message : 'Message sent: ' + info.response;
});
}
module.exports = (on,config) => {
on('task',{
sendMail (message) {
return sendAnEmail(message);
}
})
}
然后在测试中(或在 /cypress/support/index.js 中用于所有测试)
after(() => {
cy.task('sendMail','This will be output to email address')
.then(result => console.log(result));
})
这是示例 here 的基本重构,您可以根据自己的要求进行调整。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。