Software Testing  

Data-Driven Testing with Playwright

Playwright Test makes it easy to implement this pattern using JavaScript or TypeScript.

Using Inline Data

import { test, expect } from '@playwright/test';

const testData = [
  { username: 'user1', password: 'pass1' },
  { username: 'user2', password: 'pass2' },
];

test.describe('Login Tests - Data Driven', () => {
  testData.forEach(({ username, password }) => {
    test(`Login test for ${username}`, async ({ page }) => {
      await page.goto('https://example.com/login');
      await page.fill('#username', username);
      await page.fill('#password', password);
      await page.click('button[type="submit"]');
      await expect(page).toHaveURL(/dashboard/);
    });
  });
});

Using External JSON File

Create a file named loginData.json:

[
  { "username": "user1", "password": "pass1" },
  { "username": "user2", "password": "pass2" }
]

Then use the following test file:

import { test, expect } from '@playwright/test';
import testData from './loginData.json';

test.describe('Login Tests - JSON Data', () => {
  testData.forEach(({ username, password }) => {
    test(`Login test for ${username}`, async ({ page }) => {
      await page.goto('https://example.com/login');
      await page.fill('#username', username);
      await page.fill('#password', password);
      await page.click('button[type="submit"]');
      await expect(page).toHaveURL(/dashboard/);
    });
  });
});

Enhancements

CI Integration

Add Playwright tests to GitHub Actions, Azure DevOps, or Jenkins.

- name: Run Playwright Tests
  run: npx playwright test

Reporting

Use built-in HTML reporter:

npx playwright show-report

Or integrate with Allure for advanced reporting:

npm install -D allure-playwright