Engineering Playwright Test Generation

Playwright Test Prompt

getByRole over CSS chains, auto-wait over sleep, web-first assertions — Playwright tests written the way Playwright wants.

Overview

Playwright tests fail two ways: flaky (sleeps and fragile selectors) or unmaintainable (CSS chains that break on every restyle). This setup generates the Playwright contract for an E2E journey with the framework's own discipline: locate by user-facing attributes (getByRole, getByLabel) so restyles don't break tests, never sleep — auto-waiting and web-first assertions do the waiting, every test starts from a clean context, and page objects only where flows are actually reused.

Workflow

  1. Generate with the journey preset

    E2E strategy + Playwright mode: journey philosophy plus framework discipline in one contract.

  2. Audit the locators

    Every getByRole the model produces is a test that survives a restyle; every CSS chain is a future failure.

  3. Reject any sleep

    The contract bans fixed waits — if generated code sleeps, regenerate with the contract quoted back.

Why This Works

  • User-facing locators align tests with what users do, not how the DOM is shaped today
  • Auto-wait discipline removes the #1 source of E2E flake at the contract level
  • Clean-context rules keep tests independent — parallelizable and debuggable

Best for

  • Teams adopting Playwright from Selenium or Cypress
  • E2E suites where flake is the main maintenance cost
  • Modern web apps with accessible, role-labeled UI

Not for

  • Selenium projects — switch the framework mode; the discipline differs (explicit waits, stale elements)
  • API testing — Playwright can do it, but the API strategy with generic mode contracts it better

Use cases

  • Generating Playwright journeys that survive UI restyles
  • Converting sleep-ridden specs into auto-waiting ones
  • Onboarding a team to Playwright's locator philosophy

Tip: Save time by exploring related resources and tools that integrate with this workflow.

Explore all resources