You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:57:00