← Back to library
Cypressfixturesintermediatev10+

Parametrize tests with forEach

Loop over a data array to run the same test body for multiple input sets.

1const roles = [
2  { role: 'admin',  canDelete: true  },
3  { role: 'editor', canDelete: false },
4  { role: 'viewer', canDelete: false },
5];
6
7roles.forEach(({ role, canDelete }) => {
8  it(`${role} sees correct actions`, () => {
9    cy.request('POST', '/api/login', { role }).then(({ body }) => {
10      window.localStorage.setItem('auth_token', body.token);
11    });
12
13    cy.visit('/dashboard');
14
15    if (canDelete) {
16      cy.get('[data-testid="delete-btn"]').should('be.visible');
17    } else {
18      cy.get('[data-testid="delete-btn"]').should('not.exist');
19    }
20  });
21});
#parametrize#forEach#data-driven#roles