EU-Utility/skills/playwright/SKILL.md

1.7 KiB

name description
Playwright Write, debug, and maintain Playwright tests and scrapers with resilient selectors, flaky test fixes, and CI/CD integration.

Trigger

Use when writing Playwright tests, debugging failures, scraping with Playwright, or setting up CI/CD pipelines.

Selector Priority (Always)

  1. getByRole() — accessible, resilient
  2. getByTestId() — explicit, stable
  3. getByLabel(), getByPlaceholder() — form elements
  4. getByText() — visible content (exact match preferred)
  5. CSS/XPath — last resort, avoid nth-child and generated classes

Core Capabilities

Task Reference
Test scaffolding & POMs testing.md
Selector strategies selectors.md
Scraping patterns scraping.md
CI/CD integration ci-cd.md
Debugging failures debugging.md

Critical Rules

  • Never use page.waitForTimeout() — use waitFor* methods or expect with polling
  • Always close contextsbrowser.close() or context.close() to prevent memory leaks
  • Prefer networkidle with caution — SPAs may never reach idle; use DOM-based waits instead
  • Use test.describe.configure({ mode: 'parallel' }) — for independent tests
  • Trace on failure onlytrace: 'on-first-retry' in config, not always-on

Quick Fixes

Symptom Fix
Element not found Use waitFor() before interaction, check frame context
Flaky clicks Use click({ force: true }) or waitFor({ state: 'visible' }) first
Timeout in CI Increase timeout, add expect.poll(), check viewport size
Stale element Re-query the locator, avoid storing element references
Auth lost between tests Use storageState to persist cookies/localStorage