Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

182
Views
Is it possible to create Dynamic Tests in Cypress with functions containing cypress commands

I'm trying to create multiple tests based off the number of functions in an array that I pass in, so that I can have one describe block and create tests as our project grows.

I've found multiple examples (here, real-world app examples) but all these examples create a simple array without any Cypress commands invoked. I need to pass in an array of functions that invoke Cypress (NOT Custom Commands) commands like cy.get()

What I'd like to work:

//loginPageController.js

export default class LoginPageController {
    thingOne() {
        cy.get('some things')
        expect(some assertion)
    }
    thingTwo() {
        cy.get('some other things')
        expect(another assertion)
    }
    getAllThings() {
        return [this.thingOne(), this.thingTwo()]
    }
}
//login.spec.js

import LoginPageController from '../../support/Controllers/loginPageController'
const lPC = new LoginPageController

    describe('Login Tests', function() {

        beforeEach(function() {
            cy.visit('myapp')
        })
        lPC.getAllThings().forEach(function() {
            it('tries each scenario', function() {
               // do stuff
            })
        })

Error message

The following error originated from your test code, not from Cypress.

  > Cannot call cy.get() outside a running test.

This usually happens when you accidentally write commands outside an it(...) test.

What I've tried

  1. it.forEach(getAllTheThings)('it should do the things', function(){})
  2. Setting the function as a variable in a before block const lPC.getAllThings() = allThings which actually just executes the function successfully in the before
  3. Aliasing/wrapping like cy.wrap(lPC.getAllThings()).as('allTheThings) (which is probably invalid but I'm just taking swings at this point)
  4. Using a fixture file but .js doesn't seem to be easily supported currently and I'll be passing in an array of functions, not a simple JSON object.

I'm just trying to keep things DRY and only write one describe that spits out as many tests as functions I include in that lPC.getAllThings()

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!