Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
alirezarezvani avatar

Playwright Pro

  • 604 installs
  • 23.5k repo stars
  • Updated July 17, 2026
  • alirezarezvani/claude-skills

playwright-pro is a Claude Code skill that teaches reliable, auto-retrying Playwright web-first assertions for developers who need stable end-to-end tests on dynamic UIs.

About

playwright-pro is a reference skill from alirezarezvani/claude-skills that catalogs Playwright web-first assertions designed to auto-retry until timeout, making them safe for dynamic content and flaky timing. The skill covers visibility checks like toBeVisible and toBeHidden, text matchers including toHaveText and toContainText, input value assertions, and attribute or class validation with regex support. Developers reach for playwright-pro when Playwright tests fail intermittently because imperative checks run before the DOM settles, or when they want a consistent assertion style across a TypeScript test suite. The excerpts show concrete TypeScript patterns using expect(locator) against real UI states rather than manual waits or sleep calls.

  • Web-first assertions with automatic retry until timeout
  • Covers visibility, text, value, attributes, state, count, CSS and screenshots
  • Page-level URL, title and full-page screenshot assertions
  • Explicit anti-patterns section to prevent common test mistakes
  • Designed for agentic workflows using Claude Code or Cursor

Playwright Pro by the numbers

  • 604 all-time installs (skills.sh)
  • Ranked #595 of 2,159 Testing & QA skills by installs in the Skillselion catalog
  • Security screen: MEDIUM risk (skills.sh audit)
  • Data as of Jul 31, 2026 (Skillselion catalog sync)
npx skills add https://github.com/alirezarezvani/claude-skills --skill playwright-pro

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs604
repo stars23.5k
Security audit2 / 3 scanners passed
Last updatedJuly 17, 2026
Repositoryalirezarezvani/claude-skills

How do you stop flaky Playwright UI assertions?

Write reliable, auto-retrying Playwright assertions that survive dynamic UIs and flaky timing.

Who is it for?

Frontend and QA engineers maintaining Playwright end-to-end suites on SPAs, dashboards, or other UIs where elements load asynchronously.

Skip if: Teams that only need unit or API tests without browser automation, or projects not using Playwright as the E2E runner.

When should I use this skill?

Playwright tests flake on timing, or the developer asks which expect() matchers to use for dynamic DOM content.

What you get

A consistent catalog of web-first Playwright assertion patterns using expect(locator) for visibility, text, values, attributes, and classes in TypeScript tests.

  • Web-first assertion reference patterns
  • Stable expect(locator) examples for dynamic UIs

By the numbers

  • Covers five assertion families: visibility, text, value, attributes, and class or id checks

Files

SKILL.mdMarkdownGitHub ↗

Playwright Pro

Production-grade Playwright testing toolkit for AI coding agents.

Available Commands

When installed as a Claude Code plugin, these are available as /pw: commands:

CommandWhat it does
/pw:initSet up Playwright — detects framework, generates config, CI, first test
/pw:generate <spec>Generate tests from user story, URL, or component
/pw:reviewReview tests for anti-patterns and coverage gaps
/pw:fix <test>Diagnose and fix failing or flaky tests
/pw:migrateMigrate from Cypress or Selenium to Playwright
/pw:coverageAnalyze what's tested vs. what's missing
/pw:testrailSync with TestRail — read cases, push results
/pw:browserstackRun on BrowserStack, pull cross-browser reports
/pw:reportGenerate test report in your preferred format

Quick Start Workflow

The recommended sequence for most projects:

1. /pw:init          → scaffolds config, CI pipeline, and a first smoke test
2. /pw:generate      → generates tests from your spec or URL
3. /pw:review        → validates quality and flags anti-patterns      ← always run after generate
4. /pw:fix <test>    → diagnoses and repairs any failing/flaky tests  ← run when CI turns red

Validation checkpoints:

  • After /pw:generate — always run /pw:review before committing; it catches locator anti-patterns and missing assertions automatically.
  • After /pw:fix — re-run the full suite locally (npx playwright test) to confirm the fix doesn't introduce regressions.
  • After /pw:migrate — run /pw:coverage to confirm parity with the old suite before decommissioning Cypress/Selenium tests.

Example: Generate → Review → Fix

# 1. Generate tests from a user story
/pw:generate "As a user I can log in with email and password"

# Generated: tests/auth/login.spec.ts
# → Playwright Pro creates the file using the auth template.

# 2. Review the generated tests
/pw:review tests/auth/login.spec.ts

# → Flags: one test used page.locator('input[type=password]') — suggests getByLabel('Password')
# → Fix applied automatically.

# 3. Run locally to confirm
npx playwright test tests/auth/login.spec.ts --headed

# 4. If a test is flaky in CI, diagnose it
/pw:fix tests/auth/login.spec.ts
# → Identifies missing web-first assertion; replaces waitForTimeout(2000) with expect(locator).toBeVisible()

Golden Rules

1. getByRole() over CSS/XPath — resilient to markup changes 2. Never page.waitForTimeout() — use web-first assertions 3. expect(locator) auto-retries; expect(await locator.textContent()) does not 4. Isolate every test — no shared state between tests 5. baseURL in config — zero hardcoded URLs 6. Retries: 2 in CI, 0 locally 7. Traces: 'on-first-retry' — rich debugging without slowdown 8. Fixtures over globals — test.extend() for shared state 9. One behavior per test — multiple related assertions are fine 10. Mock external services only — never mock your own app

Locator Priority

1. getByRole()        — buttons, links, headings, form elements
2. getByLabel()       — form fields with labels
3. getByText()        — non-interactive text
4. getByPlaceholder() — inputs with placeholder
5. getByTestId()      — when no semantic option exists
6. page.locator()     — CSS/XPath as last resort

What's Included

  • 9 skills with detailed step-by-step instructions
  • 3 specialized agents: test-architect, test-debugger, migration-planner
  • 55 test templates: auth, CRUD, checkout, search, forms, dashboard, settings, onboarding, notifications, API, accessibility
  • 2 MCP servers (TypeScript): TestRail and BrowserStack integrations
  • Smart hooks: auto-validate test quality, auto-detect Playwright projects
  • 6 reference docs: golden rules, locators, assertions, fixtures, pitfalls, flaky tests
  • Migration guides: Cypress and Selenium mapping tables

Integration Setup

TestRail (Optional)

export TESTRAIL_URL="https://your-instance.testrail.io"
export TESTRAIL_USER="your@email.com"
export TESTRAIL_API_KEY="your-api-key"

BrowserStack (Optional)

export BROWSERSTACK_USERNAME="your-username"
export BROWSERSTACK_ACCESS_KEY="your-access-key"

Quick Reference

See reference/ directory for:

  • golden-rules.md — The 10 non-negotiable rules
  • locators.md — Complete locator priority with cheat sheet
  • assertions.md — Web-first assertions reference
  • fixtures.md — Custom fixtures and storageState patterns
  • common-pitfalls.md — Top 10 mistakes and fixes
  • flaky-tests.md — Diagnosis commands and quick fixes

See templates/README.md for the full template index.

Related skills

How it compares

Pick playwright-pro when you need assertion syntax and retry semantics, not browser install or CI wiring.

FAQ

What Playwright assertions auto-retry?

playwright-pro recommends Playwright web-first assertions such as expect(locator).toBeVisible(), toHaveText(), toHaveValue(), and toHaveAttribute(), which auto-retry until the configured timeout instead of failing on the first DOM miss.

When should developers use web-first assertions?

playwright-pro directs developers to web-first assertions whenever UI content loads asynchronously, because matchers like toContainText(/partial/i) and toHaveClass(/active/) keep polling until the element stabilizes or times out.

Is Playwright Pro safe to install?

skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Testing & QAtestingintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.