All skills
jeffallan avatar

/playwright-expert

@efebc44
by jeffallanjeffallan/claude-skills12k stars
1,127

Use when writing E2E tests with Playwright, setting up test infrastructure, or debugging flaky browser tests. Invoke to write test scripts, create page objects, configure test fixtures, set up reporters, add CI integration, implement API mocking, or perform visual regression testing. Trigger terms: Playwright, E2E test, end-to-end, browser testing, automation, UI testing, visual testing, Page Object Model, test flakiness.

Use this Skill: https://skilld.dev/gh/jeffallan/claude-skills/playwright-expert

This session only. Nothing lands on disk.

referencesconfiguration.md

≈822 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Configuration

Full Configuration

// playwright.config.ts
import { defineConfig, devices } from '@playwright/test';

export default defineConfig({
  testDir: './tests',
  fullyParallel: true,
  forbidOnly: !!process.env.CI,
  retries: process.env.CI ? 2 : 0,
  workers: process.env.CI ? 1 : undefined,
  reporter: [
    ['html'],
    ['json', { outputFile: 'results.json' }],
    ['junit', { outputFile: 'results.xml' }],
  ],

  use: {
    baseURL: 'http://localhost:3000',
    trace: 'retain-on-failure',
    screenshot: 'only-on-failure',
    video: 'retain-on-failure',
    testIdAttribute: 'data-testid',
  },

  projects: [
    {
      name: 'chromium',
      use: { ...devices['Desktop Chrome'] },
    },
    {
      name: 'firefox',
      use: { ...devices['Desktop Firefox'] },
    },
    {
      name: 'webkit',
      use: { ...devices['Desktop Safari'] },
    },
    {
      name: 'mobile-chrome',
      use: { ...devices['Pixel 5'] },
    },
    {
      name: 'mobile-safari',
      use: { ...devices['iPhone 13'] },
    },
  ],

  webServer: {
    command: 'npm run dev',
    url: 'http://localhost:3000',
    reuseExistingServer: !process.env.CI,
    timeout: 120000,
  },
});

Authentication Setup

// global-setup.ts
import { chromium, FullConfig } from '@playwright/test';

async function globalSetup(config: FullConfig) {
  const browser = await chromium.launch();
  const page = await browser.newPage();

  await page.goto('http://localhost:3000/login');
  await page.getByLabel('Email').fill('user@test.com');
  await page.getByLabel('Password').fill('password');
  await page.getByRole('button', { name: 'Log in' }).click();
  await page.waitForURL(/dashboard/);

  // Save auth state
  await page.context().storageState({ path: 'auth.json' });
  await browser.close();
}

export default globalSetup;

// playwright.config.ts
export default defineConfig({
  globalSetup: require.resolve('./global-setup'),
  use: {
    storageState: 'auth.json',
  },
});

Project Dependencies

projects: [
  {
    name: 'setup',
    testMatch: /global.setup\.ts/,
  },
  {
    name: 'chromium',
    use: { ...devices['Desktop Chrome'] },
    dependencies: ['setup'],
  },
],

Environment Variables

// playwright.config.ts
export default defineConfig({
  use: {
    baseURL: process.env.BASE_URL || 'http://localhost:3000',
  },
});

// .env
BASE_URL=https://staging.example.com

CI Configuration

# .github/workflows/playwright.yml
name: Playwright Tests
on: [push, pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: npm ci
      - run: npx playwright install --with-deps
      - run: npx playwright test
      - uses: actions/upload-artifact@v4
        if: always()
        with:
          name: playwright-report
          path: playwright-report/

Quick Reference

Option Purpose
testDir Test files location
fullyParallel Run tests in parallel
retries Retry failed tests
trace Record trace on failure
webServer Start dev server
globalSetup Run before all tests
storageState Reuse auth state

Source: SKILL.md on GitHub

1 alert16d5 checks · Risk CRITICAL
  • Gen Agent Trust Hub16d

    Error: AI Analysis failed - API error after retries

  • Socket16d

    No alerts

  • Snyk16d

    Risk: LOW · No issues

  • Runlayer6mo

    6 files scanned · No issues

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at efebc44. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 months ago.

Steadyupdated 5 months ago
Other metadata
metadata
{
  "author": "https://github.com/Jeffallan",
  "version": "1.1.0",
  "domain": "quality",
  "triggers": "Playwright, E2E test, end-to-end, browser testing, automation, UI testing, visual testing",
  "role": "specialist",
  "scope": "testing",
  "output-format": "code",
  "related-skills": "test-master, react-expert, devops-engineer"
}
  • Testing
  • TypeScript
  • playwright
  • e2e-testing
  • browser-automation
  • page-object-model
  • ui-testing
  • visual-testing
  • ci-cd

README badge

README badge for jeffallan/claude-skills/playwright-expert

Writes Playwright E2E tests using the Page Object Model pattern, handles test fixtures and configuration, debugs flaky tests via trace viewer, and integrates into CI/CD pipelines. Targets browser automation workflows with role-based selectors, auto-waiting, and parallel test execution.

Generated from the current SKILL.md.

Does this skill help with visual regression testing?
Yes. The skill covers visual regression testing and includes reference guides for setting up visual comparisons as part of your test suite.
What selector strategy does this skill recommend?
Role-based selectors (getByRole, getByLabel) are preferred for resilience to styling changes. CSS class selectors are discouraged as brittle.
Does this skill cover CI/CD integration?
Yes. The skill includes guidance on adding Playwright tests to CI/CD pipelines and configuring parallel execution.
How does this skill approach flaky tests?
It provides a debugging workflow using trace viewer and screenshots, emphasizes auto-waiting over arbitrary timeouts, and recommends running tests multiple times to verify stability.
Does this skill use Page Object Model?
Yes. POM is a core pattern recommended for maintainability, with included reference guide and code examples.

Generated from the current SKILL.md. These answers refresh after source changes.