Skill

Playwright E2E Testing

Playwright end-to-end testing patterns including page object models, test scenarios, visual regression, and CI/CD integration. Use when building E2E tests, testing web applications, automating browser interactions, implementing page objects, running Playwright tests, debugging E2E failures, or when user mentions Playwright, E2E, browser automation, page object model, POM, visual regression, or end-to-end testing.

From testing
Install
1
Run in your terminal
$
npx claudepluginhub vanman2024/dev-lifecycle-marketplace --plugin testing
Tool Access

This skill uses the workspace's default tool permissions.

Supporting Assets
View in Repository
examples/basic-usage.md
examples/ci-cd-integration.md
examples/debugging-techniques.md
examples/page-object-pattern.md
examples/visual-regression-testing.md
scripts/debug-playwright.sh
scripts/generate-pom.sh
scripts/init-playwright.sh
scripts/run-playwright.sh
scripts/run-visual-regression.sh
templates/e2e-test-form.spec.ts
templates/e2e-test-login.spec.ts
templates/page-object-advanced.ts
templates/page-object-basic.ts
templates/playwright.config.ts
templates/visual-regression.spec.ts
Skill Content

Playwright E2E Testing

CRITICAL: The description field above controls when Claude auto-loads this skill.

Overview

Provides comprehensive Playwright end-to-end testing patterns including:

  • Page Object Model (POM) implementation
  • Test scenario scaffolding
  • Visual regression testing
  • CI/CD integration workflows
  • Debugging techniques
  • Browser automation patterns

Instructions

1. Initialize Playwright Project

Use scripts/init-playwright.sh to set up a new Playwright project:

bash scripts/init-playwright.sh [project-path]

This will:

  • Install Playwright dependencies
  • Create playwright.config.ts from template
  • Set up test directory structure
  • Install browsers
  • Create initial test examples

2. Generate Page Object Models

Use scripts/generate-pom.sh to create Page Object Model classes:

bash scripts/generate-pom.sh <page-name> <url> [output-dir]

This will:

  • Create page object class with base structure
  • Add common locators and methods
  • Generate TypeScript interface
  • Include usage examples

3. Run Playwright Tests

Use scripts/run-playwright.sh to execute tests:

bash scripts/run-playwright.sh [test-pattern] [browser] [options]

Options:

  • Test pattern: Specific test file or glob pattern
  • Browser: chromium, firefox, webkit, or all
  • Options: --headed, --debug, --trace, --ui

4. Debug Test Failures

Use scripts/debug-playwright.sh for debugging:

bash scripts/debug-playwright.sh <test-file>

This will:

  • Run test in headed mode with slowMo
  • Enable trace recording
  • Open Playwright Inspector
  • Generate debug screenshots

5. Visual Regression Testing

Use scripts/run-visual-regression.sh for visual testing:

bash scripts/run-visual-regression.sh [test-pattern] [update-snapshots]

This will:

  • Run visual regression tests
  • Compare against baseline snapshots
  • Generate diff images for failures
  • Update snapshots if requested

Available Scripts

  • init-playwright.sh: Initialize Playwright project with configuration
  • run-playwright.sh: Execute Playwright tests with various options
  • generate-pom.sh: Generate Page Object Model classes
  • debug-playwright.sh: Run tests in debug mode with inspector
  • run-visual-regression.sh: Execute visual regression tests

Templates

Configuration

  • playwright.config.ts: Comprehensive Playwright configuration with multiple browsers, reporters, and settings

Page Objects

  • page-object-basic.ts: Basic Page Object Model template
  • page-object-advanced.ts: Advanced POM with complex interactions and waiting strategies

Test Scenarios

  • e2e-test-login.spec.ts: Login flow E2E test with authentication
  • e2e-test-form.spec.ts: Form submission and validation test
  • visual-regression.spec.ts: Visual regression testing example

Examples

  • basic-usage.md: Simple Playwright setup and first test
  • page-object-pattern.md: Implementing Page Object Model pattern
  • visual-regression-testing.md: Setting up visual regression tests
  • ci-cd-integration.md: Configuring Playwright in CI/CD pipelines
  • debugging-techniques.md: Debugging failing E2E tests

Page Object Model Pattern

Structure

class PageName {
  readonly page: Page;
  readonly locators: { /* selectors */ };

  constructor(page: Page) { /* ... */ }

  async navigateTo() { /* ... */ }
  async performAction() { /* ... */ }
  async verifyState() { /* ... */ }
}

Benefits

  • Separation of concerns (test logic vs page structure)
  • Reusability across multiple tests
  • Easier maintenance when UI changes
  • Clear test readability

Best Practices

Test Organization

  • Use Page Object Model for maintainability
  • Group related tests in describe blocks
  • Keep tests independent and isolated
  • Use beforeEach for common setup

Selectors

  • Prefer data-testid attributes
  • Use accessible roles when possible
  • Avoid fragile CSS selectors
  • Document selector strategies

Waiting Strategies

  • Use auto-waiting (built-in)
  • Explicit waits for dynamic content
  • waitForLoadState for navigation
  • waitForSelector for element visibility

Visual Regression

  • Create stable baseline snapshots
  • Use consistent viewport sizes
  • Mask dynamic content (dates, random IDs)
  • Update snapshots carefully

CI/CD Integration

  • Run in headless mode
  • Parallelize tests across workers
  • Generate HTML reports
  • Upload trace files on failure
  • Cache browser binaries

Debugging Tips

Playwright Inspector

  • Set PWDEBUG=1 environment variable
  • Use page.pause() in test code
  • Step through actions
  • Inspect element locators

Trace Viewer

  • Enable trace: 'on-first-retry'
  • View network activity
  • Inspect console logs
  • Review screenshots and video

Screenshots and Videos

  • Take screenshots on failure
  • Record videos for flaky tests
  • Use fullPage screenshots
  • Compare visual differences

Requirements

  • Node.js 18+ installed
  • Playwright 1.40+ recommended
  • TypeScript for type safety
  • Test files use .spec.ts extension
  • Page objects in separate files/directories
  • Clear naming conventions for tests and page objects
Stats
Parent Repo Stars1
Parent Repo Forks0
Last CommitNov 9, 2025