cypress-cucumber-preprocessor仅记录testRunStarted和testRunFinished至messages.ndjson问题
解决cypress-cucumber-preprocessor仅输出testRunStarted和testRunFinished到messages.ndjson的问题
检查步骤定义路径匹配
确认你的步骤定义文件完全匹配配置中stepDefinitions指定的路径:- 配置中的路径是
cypress/e2e/features/*.js和cypress/support/step_definitions/**/*.js,要确保所有.feature对应的步骤定义文件都在这些路径范围内,注意路径的大小写(Linux/macOS系统大小写敏感),避免拼写错误。 - 比如如果步骤定义放在
cypress/e2e/features/step_definitions下,当前配置的第一个路径cypress/e2e/features/*.js不会匹配子目录里的文件,需要调整为cypress/e2e/features/**/*.js。
- 配置中的路径是
规范nonGlobalStepDefinitions的使用
开启nonGlobalStepDefinitions: true后,必须从预处理器导入步骤定义方法,不能使用全局挂载的版本:// 正确写法 import { Given, When, Then } from '@badeball/cypress-cucumber-preprocessor'; Given("我访问首页", () => { cy.visit("/"); });如果直接使用全局的
Given/When/Then,步骤不会被预处理器识别,导致messages日志缺失。验证版本兼容性
确认@badeball/cypress-cucumber-preprocessor和Cypress的版本兼容,不同版本组合可能存在日志输出的bug。可以查看预处理器的版本匹配说明,必要时升级或降级其中一方,比如尝试将两者都更新到最新稳定版测试。确认.feature文件被正确执行
运行测试时查看Cypress Runner界面,确认.feature文件中的场景、步骤确实被执行,而不是被跳过或未加载:- 检查Cypress配置文件(
cypress.config.js/cypress.config.ts)中的e2e.specPattern是否包含.feature文件,默认是**/*.cy.{js,jsx,ts,tsx},需要添加**/*.feature才能识别Cucumber测试文件。
- 检查Cypress配置文件(
排查输出路径权限
确保cypress/messages.ndjson所在目录存在且有写入权限,虽然文件已生成,但权限不足可能导致中间日志无法追加写入。可以尝试手动删除该文件后重新运行测试,观察是否能生成完整日志。简化配置排查冲突
暂时注释掉json和html输出配置,只保留messages相关配置,重新运行测试:{ "messages": { "enabled": true, "output": "cypress/messages.ndjson" }, "nonGlobalStepDefinitions": true, "stepDefinitions": [ "cypress/e2e/features/*.js", "cypress/support/step_definitions/**/*.js" ] }如果此时日志正常输出,说明多输出配置存在冲突,再逐步恢复其他配置排查问题。
内容的提问来源于stack exchange,提问作者Cam
相关产品推荐
相关产品推荐

