Home > Software engineering >  How run multiple test spec without define absolute path repeatly in Cypress
How run multiple test spec without define absolute path repeatly in Cypress

Time:01-15

Based on the Cypress documentation, we can run multiple test files using this syntax

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

My question is when I have to run 4 of 10 test files in the same folder i have to define like this,

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

Can we make simplify it, idk is cypress has a feature for defining the spec folder?

So if we can define the folder test spec path like specFolder = cypress/e2e/**/ and I just write script

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

CodePudding user response:

You can run all tests in a specified directory as documented here https://docs.cypress.io/guides/guides/command-line#cypress-run-spec-lt-spec-gt

So try to run all the tests in a directory like so

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

CodePudding user response:

You can use a a little javascript in cypress.config.js to do it, but instead of --spec option specify the tests in an --env variable.

// 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}'
  },
});

Called with script

// package.json

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

Run output:

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
  • Related