Skip to content
Back to skills

Playwright

ASecurity

End-to-end testing framework for modern web apps -- browser automation, visual regression, and cross-browser testing

  • 2 stars
  • 0 votes
  • 1 copy
  • 11 views
  • Added October 26, 2026
testinggoreacttestingdebuggingapidatabase

Works with

  • api

Security analysis

A100/100

Scanned October 26, 2026

npx -y skills add nhan03bit/ultrathink --skill playwright --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Playwright?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Playwright
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/nhan03bit-playwright/badge)](https://www.skillsdirectory.com/skills/nhan03bit-playwright)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: playwright
description: End-to-end testing framework for modern web apps -- browser automation, visual regression, and cross-browser testing
layer: domain
category: testing
triggers:
  - "playwright test"
  - "e2e test"
  - "browser test"
  - "visual regression"
  - "cross-browser test"
inputs:
  - target: Page, component, or user flow to test
  - browsers: chromium | firefox | webkit | all (default: chromium)
outputs:
  - testFiles: Playwright test specs
  - testResults: Pass/fail with traces and screenshots
linksTo: [test, test-ui, testing-patterns, chrome-devtools]
linkedFrom: [test, ship]
riskLevel: low
memoryReadPolicy: selective
memoryWritePolicy: selective
sideEffects:
  - Creates test files and generates screenshots/trace files
  - Launches browser processes
---

# Playwright

End-to-end testing framework for modern web apps. Supports Chromium, Firefox, and WebKit with a single API. Auto-waits for elements, intercepts network, and captures traces for debugging.

## When to Use

- Testing critical user flows across real browsers
- Visual regression testing with screenshot comparison
- Network mocking for deterministic API responses
- Component testing with `@playwright/experimental-ct-react`

## Key Patterns

### Page Object Model
Encapsulate page interactions in classes. Tests call `loginPage.signIn(user)` instead of raw selectors. Keeps tests readable and selectors maintainable in one place.

### Locator Strategies
Prefer resilient locators: `getByRole` > `getByLabel` > `getByText` > `getByTestId`. Avoid CSS/XPath -- they break on DOM changes.

### Assertions with Auto-Retry
Use `expect(locator)` assertions -- they auto-retry until timeout. `await expect(page.getByText('Success')).toBeVisible()`. Never use `waitForTimeout`.

### Visual Comparison
`await expect(page).toHaveScreenshot('name.png')` captures and diffs screenshots. Use `maxDiffPixelRatio` for tolerance. Update baselines with `--update-snapshots`.

### Network Mocking
`await page.route('**/api/users', route => route.fulfill({ json: mockData }))` intercepts requests. Use `route.abort()` to simulate failures.

### Multi-Browser Testing
Configure `projects` in `playwright.config.ts` to run across browsers. Each project specifies a browser and viewport. CI runs all; local dev targets one.

### Fixtures and Hooks
Use `test.beforeEach` for shared setup. Custom fixtures extend `test` for reusable context like authenticated pages or seeded databases.

### Parallel Execution
Tests run in parallel by default. Use `test.describe.serial` only when order matters. Isolate state to avoid flakes.

### Trace Viewer
`npx playwright show-trace trace.zip` replays execution with DOM snapshots, network log, and console. Enable with `trace: 'on-first-retry'`.

### Component Testing
`@playwright/experimental-ct-react` mounts components in a real browser for testing interactive elements needing real DOM, CSS, and browser APIs.

## Anti-Patterns

1. **`waitForTimeout` over locator assertions** -- Flaky. Use auto-retrying `expect`.
2. **CSS/XPath over semantic locators** -- Brittle. Prefer `getByRole`, `getByTestId`.
3. **Shared mutable state** -- Tests must be independent. Use `beforeEach` for setup.
4. **Testing third-party UI** -- Mock OAuth popups and captchas at the network layer.
5. **Skipping `webServer` config** -- Let Playwright manage your dev server for reliable CI.
6. **Giant test files** -- Split by feature. One `describe` per user flow.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.