使用cypress-email-results发送测试邮件失败,plugins/index.js未运行
问题根因
Cypress 10.0 及以上版本已经调整了插件加载逻辑,不再默认自动加载 cypress/plugins/index.js 文件,这是你在文件头部加的日志无法打印、插件逻辑不执行的直接原因。
修复方案
- 打开项目根目录下的
cypress.config.js(或TS项目对应的cypress.config.ts),所有插件注册逻辑都需要写在配置文件的setupNodeEvents节点下。 - 你可以直接把原有插件逻辑迁移到配置文件中,参考配置如下:
const { defineConfig } = require("cypress"); const nodemailer = require('nodemailer'); const transporter = nodemailer.createTransport({ service: 'gmail', auth: { user: '**********@gmail.com', pass: '***********' } }); module.exports = defineConfig({ e2e: { setupNodeEvents(on, config) { require('cypress-email-results')(on, config, { email: ['***********@gmail.com'], transporter }) return config }, // 此处保留你原有的其他e2e配置,比如spec路径、baseUrl等 }, });
- 如果你想保留原有
cypress/plugins/index.js文件不做迁移,只需要在setupNodeEvents中显式引入该文件即可,不需要重复写逻辑:
setupNodeEvents(on, config) { return require('./cypress/plugins/index.js')(on, config) }
补充说明
cypress-email-results默认行为就是等所有spec文件执行完成后,聚合全量测试结果生成单封邮件发送,完全匹配你整合所有结果发单个邮件的需求,不需要额外修改插件配置。
注意Gmail账号不能直接使用登录密码配置SMTP,需要先开启账号两步验证,再生成应用专用密码填入pass字段,否则会报鉴权错误。
内容的提问来源于stack exchange,提问作者Shubham Garg
相关产品推荐
相关产品推荐

