Email 如何在Cypress中发送包含测试报告的电子邮件
我正在努力实现以下目标:Email 如何在Cypress中发送包含测试报告的电子邮件,email,cypress,nodemailer,test-reporting,Email,Cypress,Nodemailer,Test Reporting,我正在努力实现以下目标: 创建一个只包含测试名称和状态(失败/通过)的简单测试报告 通过电子邮件以基本HTML格式发送此报告 为此,我需要: 基本报告程序而不是默认报告程序 图书馆,可以发送电子邮件。我已经试过了nodemailer。但是,当我将其与Cypress解决方案连接时,它不会发送任何电子邮件。我尝试了不同的邮箱帐户(nodeEmailer.createTestAccount(),一个来自我的公司,一个来自SendGrid),但这不起作用(我没有收到任何电子邮件) 关于第2点,这里是我使
nodemailer
。但是,当我将其与Cypress解决方案连接时,它不会发送任何电子邮件。我尝试了不同的邮箱帐户(nodeEmailer.createTestAccount()
,一个来自我的公司,一个来自SendGrid),但这不起作用(我没有收到任何电子邮件)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);
}
});
(()=>{
var nodeEmailer=require('nodeEmailer');
var sgTransport=require('nodemailer-sendgrid-transport');
变量选项={
认证:{
api_用户:“sendgrid_用户”,
api_键:“sendgrid_APIKEY”
}
}
var client=nodeEmailer.createTransport(sgTransport(选项));
var电子邮件={
from:'from_MAIL.PL',
致:“to_MAIL.PL”,
主题:“你好”,
文字:“你好,世界”,
html:“你好,世界”
};
client.sendMail(电子邮件、函数(错误、信息){
如果(错误){
console.log(错误);
}
否则{
console.log('发送的消息:'+信息响应);
}
});
})) 是Node.js的模块,因此需要在Cypress任务中运行它
将其添加到您的/cypress/plugins/index.js文件中
const sendAnEmail=(message)=>{
const nodemailer=require('nodemailer');
const sgTransport=require('nodemailer-sendgrid-transport');
常量选项={
认证:{
api_用户:“sendgrid_用户”,
api_键:“sendgrid_APIKEY”
}
}
const client=nodemailer.createTransport(sgTransport(选项));
常量电子邮件={
from:'from_MAIL.PL',
致:“to_MAIL.PL”,
主题:“你好”,
文本:消息,
html:“你好,世界”
};
client.sendMail(电子邮件、函数(错误、信息){
返回err?err.message:'已发送的消息:'+info.response;
});
}
module.exports=(打开,配置)=>{
关于(‘任务’{
发送邮件(信息){
返回sendAnEmail(消息);
}
})
}
然后在测试中(或在所有测试的/cypress/support/index.js中)
(()=>{
cy.task('sendMail','这将输出到电子邮件地址')
.then(result=>console.log(result));
})
这是本例的一个基本重构,您可以根据自己的需求进行调整。您所说的“不工作”到底是什么意思?你能回答这个问题并添加任何错误消息或跳出原因吗?@Robert我会更新,但问题是t没有发送任何电子邮件。我目前不知道为什么我想从Index.js发送这封电子邮件,因为这需要在所有测试之后完成(
之后
部分)。我也可以在那里运行此任务吗?因此,您的两个示例都将在index.js中。是的,您可以在after()中运行任务。
hook in/cypress/support/index.js(不要与定义任务的/cypress/plugins/index.js混淆)。谢谢!现在一切都清楚了。发送电子邮件非常有效。我只是想知道如何准备一份简单的测试报告