如何在protractor-jasmine2-html-reporter测试成功后自动邮件发送报告给干系人
当然可以实现!既然你已经有了protractor-jasmine2-html-reporter的配置,只需要借助Node.js的邮件库(比如nodemailer),在Protractor的测试完成钩子中添加邮件发送逻辑就行。下面是具体的实现步骤和代码示例:
实现步骤
1. 安装nodemailer依赖
首先在你的项目里安装nodemailer,这是Node.js生态中最常用的邮件发送库:
npm install nodemailer --save-dev
2. 改造Protractor配置文件
在你的protractor.conf.js中,引入nodemailer,并利用Protractor的onComplete钩子(这个钩子会在所有测试用例执行完成后触发)来实现邮件发送逻辑。
示例代码整合:
const nodemailer = require('nodemailer'); const Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter'); exports.config = { // 你已有的其他配置(比如specs、capabilities等)... // 你已有的jasmine2-html-reporter配置 onPrepare: function() { jasmine.getEnv().addReporter(new Jasmine2HtmlReporter({ dest: 'reports', // 你的报告输出目录 filename: 'my-test-report.html' })); }, // 关键:测试完成后触发的钩子 onComplete: function() { // 可选:仅当所有测试成功时才发送邮件 browser.getProcessedConfig().then(config => { const isAllTestsPassed = config.exitCode === 0; if (isAllTestsPassed) { // 1. 配置邮件传输器(以Gmail为例,其他邮箱类似) const transporter = nodemailer.createTransport({ service: 'Gmail', auth: { user: 'your-email@gmail.com', pass: 'your-app-specific-password' // Gmail需开启两步验证并生成应用密码 } }); // 2. 配置邮件内容 const mailOptions = { from: '测试执行机器人 <your-email@gmail.com>', to: 'stakeholder1@company.com, stakeholder2@company.com', // 多个收件人用逗号分隔 subject: '✅ Protractor自动化测试全部执行成功!', text: '附件为本次测试的详细报告,请查收。', attachments: [ { filename: 'my-test-report.html', path: './reports/my-test-report.html' // 对应你在reporter中配置的报告路径 } ] }; // 3. 发送邮件 transporter.sendMail(mailOptions, (error, info) => { if (error) { console.error('邮件发送失败:', error); } else { console.log('邮件已成功发送:', info.response); } }); } else { console.log('存在测试失败,跳过邮件发送'); } }); } };
3. 适配不同邮箱服务商
如果用企业邮箱(比如Outlook、腾讯企业邮等),需要调整createTransport的配置:
Outlook示例:
const transporter = nodemailer.createTransport({ host: 'smtp.office365.com', port: 587, secure: false, // 587端口用false,465端口用true auth: { user: 'your-email@outlook.com', pass: 'your-password' } });
注意事项
- 确保报告文件的路径正确:要和你在
jasmine2-html-reporter中配置的dest和filename完全对应,否则会出现附件找不到的问题。 - 邮箱权限:比如Gmail需要开启两步验证并生成应用专用密码,不能直接用登录密码;有些企业邮箱需要开启SMTP服务。
- 可选逻辑:如果不管测试成功与否都要发邮件,只需要去掉
isAllTestsPassed的判断即可。
这样就能实现测试成功完成后自动给干系人发送报告的需求啦!
内容的提问来源于stack exchange,提问作者Rajan
相关产品推荐
相关产品推荐

