是否可以动态跳过赛普拉斯测试之一 - 意味着一个功能文件及其步骤定义?

Is it possible to skip dynamically one of the Cypress tests - meaning one feature file and with its step definitions?

我有一个功能文件列表和相关步骤定义列表。每个功能文件都指的是网站的某些特定功能。 根据 package.json 中定义的一些代表网站主题的环境变量,我可能需要 完全跳过 一些功能文件(显然还有它们的步骤定义),由于缺少某些特定主题的功能。

给出一些代码示例:

  "test:cy:run:daylight": "PORT=9000 CYPRESS_THEME=daylight cypress run",
  "test:cy:run:darkness": "PORT=9001 CYPRESS_THEME=darkness cypress run",

功能文件列表:

daylight.feature
afternoon.feature
evening.feature
night.feature

相对定义:

daylight.spec.js
afternoon.spec.js
evening.spec.js
night.spec.js

所以在 CYPRESS_THEME=darkness 的情况下,我想从我的测试过程中完全跳过功能 evening.featurenight.feature

怎么做?想法?

这个例子是假数据,我的真实场景包括更多的功能和主题,所以不幸的是在不同的文件夹中拆分测试或使用 Cypress 标签不是一个有效的选择。

我想到的另一个效率不高的想法是在 Cypress.env('THEME') 但显然我不想采用这种方法。

还有什么吗?谢谢

您可以将测试拆分到 2 个文件夹中,并且 运行 只有此文件夹中的文件

cypress run --spec "cypress/integration/daylight/**/*"

或者您可以使用标签并 运行 使用正确的标签进行测试

cypress run --record --tag "daylight"

正确的答案是标记测试,运行 只标记特定的标记...如果存在这样的功能。我相信@mosaad 在他的第二点上是错误的;根据我的理解,--tag 命令行参数只是将元数据添加到 运行。它不限制哪些规范文件获得 运行.

如果我是你,我会尝试对你的文件夹结构进行创意。或者,您可以实施 this person's workaround,这对我来说似乎有点沉重,但可能会完成工作。