CLAUDE SKILLPlaywright End-to-End Testing Claude Skill (.md) | Free & Offline
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.
.claude/skills/playwright-e2e/SKILL.mdFailure 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 Claude Code Skills (SKILL.md) via Terminal
Step 1: Open Project Directory & Verify Target Placement
Open your terminal and navigate to your project root folder where the .claude/skills/playwright-e2e/SKILL.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 .claude/skills/playwright-e2e/SKILL.md:
Terminal One-Liner Install
Run directly in your project root to stream and write this rule file with one command.
mkdir -p ".claude/skills/playwright-e2e" && curl -fsSL "https://www.devscratchpad.tech/api/raw/claude-skills/playwright-e2e" -o ".claude/skills/playwright-e2e/SKILL.md"Step 3: Verify and Activate with AI Agent
Launch your AI coding assistant (Claude Code CLI & Desktop). The assistant will automatically discover .claude/skills/playwright-e2e/SKILL.md in your repository and apply the architectural guardrails, type constraints, and verification protocols during code generation.
Claude Code Skills (SKILL.md) Directory
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.