cypress-testrail-reporter无法提交测试结果报run_id无效错误
问题解决方案
根因说明:你使用的1.2.2版本cypress-testrail-reporter存在已知异步逻辑缺陷,自动创建测试运行的请求还未获取到返回的run_id,就提前触发了测试结果上报逻辑,导致请求路径中run_id为undefined,同时Node 15.0.0为非LTS版本,和旧版插件的异步处理逻辑存在兼容性问题。
可行解决步骤:
- 优先降级插件版本:1.2.2版本存在官方未修复的run_id丢失问题,回退到稳定的1.2.1版本即可解决绝大多数同类问题,执行命令:
npm uninstall cypress-testrail-reporter && npm install cypress-testrail-reporter@1.2.1 --save-dev - 检查cypress配置正确性:确认
cypress.config.js(或旧版的cypress.json)中reporter相关配置没有错误,示例正确配置如下:
module.exports = defineConfig({ // 其他cypress配置 reporter: 'cypress-testrail-reporter', reporterOptions: { domain: "你的testrail实例域名", username: "testrail登录账号", password: "testrail API密钥/登录密码", projectId: 你的Testrail项目数字ID, suiteId: 你的测试用例集数字ID, createTestRun: true, // 必须开启才会自动创建测试运行 runName: "Cypress自动化测试运行" // 可选,自定义测试运行名称 } })
- 若需保留1.2.2版本,可手动修复插件逻辑:打开
node_modules/cypress-testrail-reporter下的主逻辑文件,将测试结果上报的代码逻辑移动到创建测试运行请求的成功回调内,保证获取到run_id之后再执行上报操作。 - 版本兼容修复:如果以上操作都无效,将Node版本切换到14.x LTS版本,非LTS的Node 15版本对旧版依赖的回调、Promise处理逻辑存在兼容性问题,容易触发时序bug。
验证方法
完成修改后重新执行npx cypress run,查看请求日志中add_results_for_cases/后的参数为数字ID而非undefined,即代表修复成功。
内容的提问来源于stack exchange,提问作者Abdirakhman Ismail
相关产品推荐
相关产品推荐

