Playwright
Playwright is an open-source browser automation framework from Microsoft for end-to-end testing across Chromium, Firefox, and WebKit with a single API. It's known for built-in auto-waiting (no manual sleeps or explicit waits needed for most interactions), a codegen recorder, parallel execution out of the box, and a trace viewer for debugging failed runs.
Playwright's biggest practical difference from Selenium is auto-waiting: before every action, Playwright automatically waits for the target element to be visible, stable, and able to receive events, which eliminates most of the flaky-test causes that came from manually-managed explicit or implicit waits in older frameworks.
It ships with its own test runner (Playwright Test), which handles parallelization, retries, fixtures, and reporting without needing a separate framework like TestNG or JUnit bolted on. The trace viewer records a full timeline of a test run — DOM snapshots, network requests, console logs — so a failure in CI can be debugged after the fact without needing to reproduce it locally.
Because one API drives all three major browser engines, teams don't need separate frameworks or driver binaries per browser the way classic Selenium setups often ended up needing. It's become the default recommendation for new test-automation projects in QA Bash's own learning paths, alongside Cypress for teams that only need Chromium-family coverage.
Example
import { test, expect } from '@playwright/test';
test('user can log in', async ({ page }) => {
await page.goto('/login');
await page.fill('#email', 'user@test.com');
await page.click('text=Sign In');
await expect(page).toHaveURL('/dashboard');
});No explicit wait needed — Playwright waits for #email and the button automatically.