【问题标题】:cypress runs all test files even when --spec parameter is used即使使用了 --spec 参数,cypress 也会运行所有测试文件
【发布时间】:2020-09-11 21:54:49
【问题描述】:

我有两个 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',结果相同

为什么它会同时运行两个测试?

【问题讨论】:

  • 我添加了一个答案来看看,请尝试让我知道

标签: cypress e2e-testing


【解决方案1】:

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

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

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

npm-run-script

getopt 使用特殊选项 -- 来分隔选项的结尾。 npm 会将 -- 之后的所有参数直接传递给您的脚本

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

Cypress docs中也有注明

使用 npm run 调用命令时,您需要使用 -- 字符串传递命令的参数。例如,如果您在 package.json 中定义了以下命令

{ “脚本”:{ “cy:run”:“柏树运行” } }

...并且想要从单个规范文件运行测试并将结果记录在仪表板上,命令应该是:

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

您的特定命令行将是

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

【讨论】:

  • 那行得通。谢谢。该命令只需要一个额外的“--”。
【解决方案2】:

能否请您在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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-03
      • 2018-08-18
      • 2022-01-15
      • 1970-01-01
      相关资源
      最近更新 更多