如何通过将Cypress指定为项目来使其运行特定的测试文件夹?

时间:2019-01-16 13:31:58

标签: javascript command-line cypress

我具有以下与赛普拉斯一起使用的目录结构:

cypress-automation
    cypress
        fixtures
        integration
           apps
              pulse
              smhw-prod
              smhw-qa
                  folder-a
                       sample-spec.js
        examples
        plugins
        screenshots
        support
        videos
        node_modules
        cypress.json // this is where the file currently is
        package-lock.json
        package.json

期望

我想做的是在smhw-qa文件夹中运行所有测试(其中有许多规范文件)..并能够使用CLI使用--project命令通过此测试

当前,如果我只运行`--run``而没有任何其他参数的所有spec文件,则从所有文件夹开始运行,这是不希望的,因为有多个应用程序“项目”(smhw-qa,smhw-产品等)。这将允许我仅根据需要从单个文件夹运行规范文件。

我也知道使用--run命令来“运行”特定的文件夹,但是我想使用“项目”来组织这些测试,以便以后识别它们更容易。

我看了看一下显示--project命令用法的文档,但是我需要帮助了解我还需要设置什么才能使此工作生效。因此,我指的是package.json文件。

到目前为止我尝试过的事情
我尝试遵循此处提供的用于测试“嵌套文件夹”的示例: https://github.com/cypress-io/cypress-test-nested-projects

package.json:添加了以下脚本:

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "smhw-qa": "cypress run --project ./cypress/integration/apps/smhw-qa"
  },

当我像这样通过终端运行此程序时:

➜  cypress-automation npx cypress run --project ./cypress/integration/apps/smhw-qa

我得到一个错误:

Can't run because no spec files were found.

We searched for any files inside of this folder:

/Users/jaswindersingh/Documents/cypress-automation/cypress/integration/apps/smhw-qa/cypress/integration

我想念什么吗?我的cypress.json文件应该位于其他位置吗?

我希望能够将“应用程序”中的每个文件夹设置为项目,然后使用cypress run --project命令运行这些项目。

这也将使我在连接CI时更容易运行特定的测试文件夹,从而在我选择时仅运行特定的项目(及其规范文件)。

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找--spec path/to/folder/*.js

您可以在文件夹甚至文件夹的所有子文件夹中运行所有测试,

ex / npx cypress run --spec cypresss/integration/subsetA/**/*-spec.js

将在cypress / integration的“ subsetA”文件夹下的所有文件夹中运行所有.js规范。

因此,在您的情况下:npx cypress run --spec cypress/integration/apps/smhw-qa/**/*-spec.js应该可以解决问题。

https://docs.cypress.io/guides/guides/command-line.html#How-to-run-commands

答案 1 :(得分:0)

在我的例子中,我有一个包含多个项目的角度工作区,我移动了这个子项目中的 cypress 文件夹和 cypress.json 文件,例如 ./projects/app1。

然后在配置文件中添加"integrationFolder":"e2e/cypress/integration",指定测试目录。

将这些脚本添加到 package.json

cypress open --project ./projects/app1

cypress run --project ./projects/app1

并且只执行或打开来自 e2e/cypress/integration 目录的测试。

希望这会有所帮助。