即使使用 --spec 参数,cypress 也会运行所有测试文件

cypress runs all test files even when --spec parameter is used

我有两个 cypress 测试文件,SmokeTest.spec.ts 和 ProfileTest.spec.ts。我想在无头模式下一次 运行 一个文件。我使用以下命令:npm run cy:run --headless --spec cypress/integration/SmokeTest/SmokeTest.spec.ts

尽管我使用了 --spec 参数,但两个测试文件 运行 都处于无头模式。

我也试过在测试文件路径周围添加单引号,如下所示:--spec 'cypress/integration/SmokeTest/SmokeTest.spec.ts' 结果相同

为什么要 运行 这两个测试?

能否请您在 package.json 文件的脚本下添加以下内容。

 "scripts": {
    "cy:smoketest-only": "cypress run --headless --spec cypress/integration/SmokeTest/SmokeTest.spec.ts --browser electron"
  }

或使用全局模式:

 "scripts": {
        "cy:smoketest-only": "cypress run --headless --spec cypress/integration/SmokeTest/**/* --browser electron"
      }

然后 运行 从项目根文件夹的命令提示符中执行以下命令

npm run cy:smoketest-only

您也可以使用以下命令来 运行 单个规范文件 -

npx cypress run --spec "cypress/integration/SmokeTest/SmokeTest.spec.ts" --headless --browser chrome

cy:run 是 package.json 中的脚本条目,它调用 cypress run.

{
  ...
  "scripts": {
    "cy:run": "cypress run"

要将额外的参数传递给脚本,您必须在它们之前加上 --(注意双破折号前后有空格)。

参见npm-run-script

The special option -- is used by getopt to delimit the end of the options. npm will pass all the arguments after the -- directly to your script

您不需要向 package.json 添加额外的脚本。

Cypress docs

中也有注明

When calling a command using npm run, you need to pass the command’s arguments using the -- string. For example, if you have the following command defined in your package.json

{ "scripts": { "cy:run": "cypress run" } }

…and want to run tests from a single spec file and record the results on the Dashboard, the command should be:

npm run cy:run -- --record --spec "cypress/integration/my-spec.js"

您的特定命令行是

npm run cy:run -- --headless --spec cypress/integration/SmokeTest/SmokeTest.spec.ts