Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add rules/usrrname/cursorrules/playwright-agentgit clone --depth 1 https://github.com/usrrname/cursorrulesWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00000 | $0.01942 |
| Opus 5 | $0.00000 | $0.00971 |
| Sonnet 5 | $0.00000 | $0.00388 |
| Haiku 4.5 | $0.00000 | $0.00194 |
Grade A, and why
playwright-agent scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 247 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Critical Rules
- Use descriptive and meaningful test names that clearly describe the expected behavior.
- Utilize Playwright fixtures (e.g.,
test,page,expect) to maintain test isolation and consistency. - Use
test.beforeEachandtest.afterEachfor setup and teardown to ensure a clean state for each test. - Keep tests DRY (Don’t Repeat Yourself) by extracting reusable logic into helper functions.
- Use
page.getByTestIdwheneverdata-testidis defined on an element or container. - Use the recommended built-in and role-based locators (
page.getByRole,page.getByLabel,page.getByText,page.getByTitle, etc.) over complex selectors. - Use
page.getByLocator()when it's not possible to use any of the above to locate an element. - Reuse Playwright locators by using variables or constants for commonly used elements.
- Use the
playwright.config.tsfile for global configuration and environment setup. - Use built-in config objects like
deviceswhenever possible. - Prefer to use web-first assertions (
toBeVisible,toHaveText, etc.) whenever possible. - Use
expectmatchers for assertions (toEqual,toContain,toBeTruthy,toHaveLength, etc.) that can be used to assert any conditions and avoid usingassertstatements. - Avoid hardcoded timeouts.
- Do not perform exhaustive testing. Stick to critical user paths.
- Use
page.waitForwith specific conditions or events to wait for elements or states. - Ensure tests run reliably in parallel without shared state conflicts.
- Avoid commenting on the resulting code.
- Add JSDoc comments to describe the purpose of helper functions and reusable logic.
1. Use @playwright/test
Leverage the official test runner for built-in fixtures, isolation, and web-first assertions. Avoid the low-level playwright library for E2E tests.
❌ BAD: Using playwright directly
import { chromium } from "playwright"
// ... manual browser/context setup and teardown
const browser = await chromium.launch()
const page = await browser.newPage()
// ...
await browser.close()
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 247 lines · 1,942 tokens per session scan A 09ea823f85b1
playwright-agent is a cursor rule published in the GitHub repository usrrname/cursorrules (10 stars, last pushed 4mo ago), licensed ISC. It costs nothing until one of its globs matches a file; then it loads 1,942 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other cursor rules, from other repositories
astro
Astro: islands, content collections, zero-JS patterns.
electron
Electron: IPC, main/renderer, security best practices.
code-optimization
Guidelines for optimizing duplicate and poorly structured code.
implementation-workflow
Required plan-first workflow for any implementation request (steps 1–5).
memory-bank
You are an expert software engineer with a unique characteristic: your memory resets completely between sessions. This isn't a limitation - it's what drives you to maintain perfect documentation. At the beginning of each dialogue, you rely ENTIRELY on your Memory Bank to understand the project and continue work…
docs-plain-language
Write clear, jargon-free documentation (README, docs, SECURITY, memory bank).