← Back to library
Playwrightfixturesintermediatev1.20+
Parametrize tests with a data loop
Run the same assertion logic for multiple roles using a for...of loop over test data.
1import { test, expect } from '@playwright/test';
2
3const roles = [
4 { name: 'admin', email: 'admin@test.com', canDelete: true },
5 { name: 'editor', email: 'editor@test.com', canDelete: false },
6 { name: 'viewer', email: 'viewer@test.com', canDelete: false },
7];
8
9for (const { name, email, canDelete } of roles) {
10 test(`${name} sees correct actions`, async ({ page }) => {
11 await page.goto(`/login?email=${email}`);
12
13 const deleteBtn = page.getByRole('button', { name: 'Delete' });
14
15 if (canDelete) {
16 await expect(deleteBtn).toBeVisible();
17 } else {
18 await expect(deleteBtn).not.toBeVisible();
19 }
20 });
21}#parametrize#data-driven#loop#roles