← 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