javascript 如何在Cypress中运行多个测试规范而不重复定义绝对路径

dbf7pr2w  于 2023-01-16  发布在  Java
关注(0)|答案(2)|浏览(160)

根据Cypress文档,我们可以使用以下语法运行多个测试文件

cypress run --spec "cypress/e2e/examples/actions.cy.js,cypress/e2e/examples/files.cy.js"

我的问题是,当我必须在我必须像这样定义的同一个文件夹中运行10个测试文件中的4个时,

cypress run --spec "cypress/e2e/**/test1.cy.js,cypress/e2e/**/test2.cy.js,cypress/e2e/**/test3.cy.js,cypress/e2e/**/test4.cy.js"

我们能不能简化一下,idk是不是cypress有定义规范文件夹的功能?
因此,如果我们可以定义文件夹测试规范路径(如specFolder = cypress/e2e/**/),我只需编写脚本

cypress run --spec "test1.cy.js,test2.cy.js,test3.cy.js,test4.cy.js"
yjghlzjz

yjghlzjz1#

您可以运行指定目录中的所有测试,如www.example.com中所述https://docs.cypress.io/guides/guides/command-line#cypress-run-spec-lt-spec-gt
因此,尝试运行如下目录中的所有测试

cypress run --spec "cypress/e2e/**/*
yi0zb3m4

yi0zb3m42#

您可以在cypress.config.js中使用一点javascript来完成此操作,但不要使用--spec选项,而是在--env变量中指定测试。

// cypress.config.js

const { defineConfig } = require("cypress");

module.exports = defineConfig({
  e2e: {
    setupNodeEvents(on, config) {

      if (config.env.specs) {  // only if specs are specified on CLI

        const specBase = config.specPattern.split('*')[0]  // === "cypress/e2e/"
        // temporary change to specPattern
        config.specPattern = config.env.specs.map(spec=> `${specBase}${spec}`)
      }
      return config
    },
    specPattern: 'cypress/e2e/**/*.cy.{js,jsx,ts,tsx}'
  },
});

用脚本调用

// package.json

{
  "scripts": {
    "cy:specs": "npx cypress run --env specs=[test1.cy.js,test2.cy.js]"
  }
}

运行输出:

specPattern [ 'cypress/e2e/test1.cy.js', 'cypress/e2e/test2.cy.js' ]

=====================================================================================

  (Run Starting)

  ┌─────────────────────────────────────────────────────────────────────────────────┐
  │ Cypress:        12.3.0                                                          │
  │ Browser:        Electron 106 (headless)                                         │
  │ Node Version:   v18.12.1 (C:\Program Files\nodejs\node.exe)                     │
  │ Specs:          2 found (test1.cy.js, test2.cy.js)                              │
  │ Searched:       cypress/e2e/test1.cy.js, cypress/e2e/test2.cy.js                │
  └─────────────────────────────────────────────────────────────────────────────────┘

  Running:  test1.cy.js                                                      (1 of 2)
etc

相关问题