AI Skill StudioAI Skill Studio
Skills
Presets:

Target Standard & File Format

AI Agent Rules & Skills
Context Shields & Privacy (Ignore Files)
Integrations & Machine Documentation
AI Governance & Multi-Agent Planning Suite

Cursor Rule Scope

.cursor/rules/*.mdc

Scopes rule to matching files. Use **/* for global workspace scope.

When ON, Cursor injects this rule in every generation context.

Identity & Activation Rules

3 chips
Scoped domain keywords evaluated in real time
api-routescode-auditsrefactoring
Suggested Chips:

Technology Stack Context

Engineering Philosophy

Flexible & Adaptable

Architectural & Code Quality Conventions

Less rigid & configurable

Agent Behavioral Guardrails

Select active rules
Security & Trust Boundaries
Always included
  • Untrusted Content Is Data
  • Encoded Payloads
  • Least-Privilege File Access
  • Confirm Irreversible Actions
  • Secret Handling
  • Validation Failures
  • Conflicting Requests

Step-by-Step Workflow Procedures

StarCURSOR RULES
DevOps & Tooling
Cursor Rules (.mdc) Hub Directory

Playwright E2E Cursor Rules (.mdc) | Resilient Browser Automation

Generate Playwright Cursor rules enforcing user-facing locators (getByRole, getByText), auto-waiting assertions, page object models, and zero sleep() calls. 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.

Target Path
.cursor/rules/playwright.mdc
Execution Scope
Glob pattern match
Specification Format
Frontmatter MDC (.mdc)
AI Tool Support
Cursor
02 / WHY IT HELPS

What this file changes for Playwright End-to-End Testing

Without it

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.

What the file tells the agent
Strictly ban hardcoded delays (page.waitForTimeout()); rely exclusively on Playwright web-first auto-waiting assertions (expect(locator).toBeVisible()).
Prioritize user-facing accessible locators: page.getByRole(), page.getByLabel(), and page.getByTestId(); never write fragile CSS selectors or brittle XPaths.
Encapsulate multi-step interactions inside modular Page Object Models (POM) with typed parameters.
Ensure total test isolation: authenticate via storage state (storageState) instead of repeating manual UI logins in every test.
Configure trace viewer and video capture on first retry (trace: 'on-first-retry') for painless CI debugging.
03 / CODE PATTERNS

Playwright End-to-End Testing: code to avoid and code to write instead

Avoid
// 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");
});
Write instead
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/);
  });
});
04 / REPOSITORY PLACEMENT & 3-STEP TERMINAL INSTALLATION

How to Install Playwright End-to-End Testing Cursor Rules (.mdc) via Terminal

1

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:

.cursor/rules/playwright.mdc
2

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.

Raw API Stream
$mkdir -p ".cursor/rules" && curl -fsSL "https://www.devscratchpad.tech/api/raw/cursor-rules/playwright-e2e" -o ".cursor/rules/playwright.mdc"
3

Step 3: Check that Cursor uses it

Cursor picks up rules in .cursor/rules/ automatically. This one attaches when files matching its globs are in the request, or when you @-mention it.

05 / ROUTE DIRECTORY & CROSS-TOOLING
Format Pillar Hub

Cursor rules generator: .cursor/rules/*.mdc for your stack

Cursor Rules (.mdc): how it works, where the file goes, and every Cursor Rules preset.

/cursor-rules Directory
06 / RELATED DEVELOPER TOOLS

Tools for Playwright End-to-End Testing work

Browser-based utilities to test, format and inspect the code your AI tool writes. Nothing you paste is uploaded.

View all 28 tools

Live Repository & Schema Ingestion

Inspect any public or private GitHub repository, or paste SQL DDL and Prisma models directly in AI Skill Studio to auto-generate authentic rules. Zero server transmission.

Launch AI Skill Studio

Migrating from Legacy .cursorrules or CLAUDE.md?

Use the free, in-browser converter to turn one long rules file into Cursor .mdc, Claude SKILL.md or Windsurf rules.

Convert Rules Free
07 / FREQUENTLY ASKED QUESTIONS

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.