在Heroku执行New Test Run时遭遇no test specified错误求助
Heroku执行New Test Run时出现「no test specified」错误排查
问题描述
在Heroku中执行New Test Run操作时,触发了「no test specified」错误。代码仓库已关联Heroku,且已在Procfile中指定运行命令,原本期望测试能通过Procfile正常运行,附上项目的package.json配置文件,请求协助排查解决。
项目package.json配置
{ "name": "testing", "version": "1.0.0", "description": "test", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "wdio": "wdio run ./wdio.conf.js", "start": "npm start" }, "author": "****", "license": "ISC", "devDependencies": { "@wdio/local-runner": "^7.25.4", "@wdio/spec-reporter": "^8.11.2", "chromedriver": "^114.0.2", "wdio-chromedriver-service": "^8.1.1", "wdio-cucumberjs-json-reporter": "^4.4.3" }, "dependencies": { "@wdio/cli": "^7.25.4", "@wdio/cucumber-framework": "^7.25.4", "cucumber-html-reporter": "^7.1.0", "fs-extra": "^11.1.1", "properties-parser": "^0.6.0" } }
错误截图

解决方案
问题根源
Heroku默认执行npm test命令运行测试,你的package.json中test脚本就是输出「no test specified」并报错,这是错误的直接原因。另外Procfile仅用于定义应用的web/worker进程启动命令,不会被Heroku的测试流程调用,所以通过Procfile指定测试命令的方式无效。
修复方法
方法1:修改package.json的test脚本(推荐)
直接把test脚本替换为实际测试命令,让Heroku默认测试流程能正确执行你的测试:
"scripts": { "test": "wdio run ./wdio.conf.js", "wdio": "wdio run ./wdio.conf.js", "start": "node index.js" // 注意:原start脚本是递归调用npm start会导致启动失败,建议改为实际启动命令,比如node index.js }
方法2:自定义Heroku测试命令
如果不想修改package.json的test脚本,可通过Heroku配置变量指定自定义测试命令:
- 登录Heroku控制台,进入你的应用
- 进入「Settings」→「Config Vars」
- 添加新配置变量:
- 键:
HEROKU_TEST_RUN_COMMAND - 值:
npm run wdio
- 键:
- 保存后,Heroku会用该命令替代默认的
npm test执行测试
额外注意事项
- 确保
wdio.conf.js配置了无头浏览器模式(比如Chrome的--headless=new参数),Heroku环境无图形界面,非无头模式会运行失败 - 检查Heroku依赖安装配置:若设置了
NPM_CONFIG_PRODUCTION=true,devDependencies不会被安装,需调整配置或把测试相关依赖移到dependencies中,或设置NPM_CONFIG_PRODUCTION=false
内容的提问来源于stack exchange,提问作者Siddharth Mittal
相关产品推荐
相关产品推荐

