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

bogh5gae  于 2023-06-28  发布在  Java
关注(0)|答案(4)|浏览(188)

我有下面的目录结构来使用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文件夹中的所有测试(其中有许多spec文件)。并能够使用CLI使用--project命令传递此信息。
目前,如果我只运行--run``而不使用任何其他参数,所有文件夹中的所有规范文件都将开始运行,这是不可取的,因为在此结构中有多个应用程序“项目”(smhw-qa,smhw-prod等)。这将允许我只从一个文件夹中运行所需的等级库文件。 我也知道使用--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文件应该位于其他地方吗?
我希望能够将“apps”中的每个文件夹设置为项目,然后能够使用cypress run --project命令运行这些项目。
当我连接CI时,这也将使运行特定的测试文件夹变得更容易,以便只有特定的项目(及其spec文件)在我选择时运行。

imzjd6km

imzjd6km1#

我想你在找--spec path/to/folder/*.js
您可以运行文件夹中的所有测试,甚至可以运行文件夹的所有子文件夹,
ex/ npx cypress run --spec cypress/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

ctrmrzij

ctrmrzij2#

在我的例子中,我有一个包含多个项目的angular workspace,我将cypress文件夹和cypress.json文件移动到了这个子项目中,例如./projects/app1
然后在配置文件中添加"integrationFolder": "e2e/cypress/integration",以指定tests目录。
将这些脚本添加到package.json
cypress open --project ./projects/app1
cypress run --project ./projects/app1
并且只执行或打开e2e/cypress/integration目录中的测试。

n3ipq98p

n3ipq98p3#

我有一个问题,运行所有的测试文件从一个目录与

"cypress run --headed --no-exit --spec 'cypress/integration/sometests/*'"

Cypress只运行了第一个测试文件,然后就停止了。
我已经尝试了所有的组合 .js,-spec.js等,问题是--no-exit标志。删除-没有出口解决了我的问题。
另外,我注意到根据cypress文档www.example.com,路径应该用引号括起来https://docs.cypress.io/guides/guides/command-line#How-to-run-commands

qoefvg9y

qoefvg9y4#

如果需要从不同的文件夹或同时从多个文件夹运行等级库,请使用下一个命令:

"cypress run --record --key=your-key-if-needed --spec cypress/e2e/folder1/**/*,cypress/e2e/folder2/**/*.cy.js,cypress/e2e/folder3/**/*.cy.js"

您可以指定spec子文件夹或spec名称,而不是**

相关问题