CURSOR RULESPlaywright E2E Cursor Rules (.mdc) | Resilient Browser Automation
Production-grade architectural rulebook for Playwright End-to-End Testing. Engineered to eliminate LLM hallucinations, enforce strict deterministic conventions, and prevent architectural drift across Cursor IDE, Claude Code CLI, and autonomous multi-agent pipelines.
.cursor/rules/playwright.mdcFailure Patterns Prevented for Playwright End-to-End Testing
AI models frequently write fragile test automation scripts with brittle CSS/XPath selectors (e.g. div > span:nth-child(3)), hardcoded page.waitForTimeout() delays, and un-isolated test state, leading to flaky test suites.
- Invokes deprecated or removed APIs from older model training weights
- Generates conflicting configuration files and invalid imports
- Silently drops type-safety, boundaries, or transaction isolation
Code Standards: Anti-Pattern vs Verified Implementation
// Flaky: Brittle selectors, arbitrary sleep timeouts, and no auto-waiting
test("bad test", async ({ page }) => {
await page.goto("/catalog");
await page.click("div.col-md-4 > button:nth-child(2)"); // Breaks on minor CSS tweak!
await page.waitForTimeout(5000); // Flaky anti-pattern!
const text = await page.innerText("#cart-total");
expect(text).toBe("1");
});import { test, expect } from "@playwright/test";
test.describe("Checkout Flow", () => {
test("allows user to complete cart purchase", async ({ page }) => {
await page.goto("/catalog");
// Accessible, user-facing locators
await page.getByRole("button", { name: "Add to Cart" }).first().click();
await page.getByRole("link", { name: "Cart (1)" }).click();
// Auto-waiting assertions
await expect(page.getByRole("heading", { name: "Your Shopping Cart" })).toBeVisible();
await page.getByRole("button", { name: "Proceed to Checkout" }).click();
await expect(page).toHaveURL(/.*checkout/);
});
});How to Install Playwright End-to-End Testing Cursor Rules (.mdc) via Terminal
Step 1: Open Project Directory & Verify Target Placement
Open your terminal and navigate to your project root folder where the .cursor/rules/playwright.mdc file will reside. Ensure the file is placed at the exact path below relative to your project root so the AI engine automatically loads it:
Step 2: Fetch Rule File via Terminal Command
Run curl, PowerShell, or wget to stream the rule directly from the DevScratchpad raw API endpoint and write it to .cursor/rules/playwright.mdc:
Terminal One-Liner Install
Run directly in your project root to stream and write this rule file with one command.
mkdir -p ".cursor/rules" && curl -fsSL "https://www.devscratchpad.tech/api/raw/cursor-rules/playwright-e2e" -o ".cursor/rules/playwright.mdc"Step 3: Verify and Activate with AI Agent
Launch your AI coding assistant (Cursor IDE & Composer). The assistant will automatically discover .cursor/rules/playwright.mdc in your repository and apply the architectural guardrails, type constraints, and verification protocols during code generation.
Cursor Rules (.mdc) Directory & Generator
Inspect the complete specification manual, glob patterns, directory rules, and all available presets in our central directory.
Technical FAQ: Playwright End-to-End Testing AI Rulebooks
Why are arbitrary sleep timeouts banned?
Arbitrary delays like waitForTimeout waste CI test execution time and still fail randomly under variable network latency. Playwright auto-waiting assertions check conditions dynamically.
Why use getByRole instead of class names?
getByRole verifies that elements are accessible to screen readers and resilient to CSS redesigns.