WINDSURF RULESPlaywright End-to-End Testing Windsurf Cascade Rules
Generate Windsurf Cascade rules for Playwright End-to-End Testing in .windsurf/rules/, with the stack's conventions and checks. Windsurf's Cascade agent reads rules from .windsurf/rules/. This rule gives Cascade the Playwright End-to-End Testing conventions, commands and patterns to avoid, so its edits follow the stack instead of generic or outdated defaults.
.windsurf/rules/playwright-e2e.mdWhat this file changes for Playwright End-to-End Testing
Windsurf's Cascade agent reads rules from .windsurf/rules/. This rule gives Cascade the Playwright End-to-End Testing conventions, commands and patterns to avoid, so its edits follow the stack instead of generic or outdated defaults.
Playwright End-to-End Testing: code to avoid and code to write instead
// 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 Windsurf Cascade Rules via Terminal
Step 1: Open Project Directory & Verify Target Placement
Open your terminal and navigate to your project root folder where the .windsurf/rules/playwright-e2e.md 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 .windsurf/rules/playwright-e2e.md:
Terminal One-Liner Install
Run directly in your project root to stream and write this rule file with one command.
mkdir -p ".windsurf/rules" && curl -fsSL "https://www.devscratchpad.tech/api/raw/windsurf-rules/playwright-e2e" -o ".windsurf/rules/playwright-e2e.md"Step 3: Check that Windsurf Cascade uses it
Cascade reads rules in .windsurf/rules/ and applies this one according to its trigger.
Windsurf rules generator: Cascade rules for your stack
Windsurf Cascade Rules: how it works, where the file goes, and every Windsurf preset.
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.
YAML to JSON / JSON to YAML Converter
Bidirectional YAML and JSON conversion with syntax validation.
Cron Expression Visualizer
Translates complex cron schedules into plain English with a 5-column breakdown grid.
CIDR Calculator & Subnet Inspector
Calculate IPv4 subnet masks, broadcast addresses, and usable ranges.
Base64 / Hex / Binary Multi-Inspector & Image Previewer
Auto-detects Base64, URL-safe Base64, Hex, Binary, URL-encoded, and Data URL input and converts it to every format, plus a Canonical Hex Dump.
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.
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.
Technical FAQ: Playwright End-to-End Testing AI Rulebooks
Where do I save this Windsurf rule?
Save it as .windsurf/rules/playwright-e2e.md in your project. Cascade picks up rules in that folder automatically.
When does Windsurf apply this rule?
According to the trigger in its frontmatter: always on, on a glob match, when Cascade decides the description fits the task, or when you @-mention it.