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.
git clone --depth 1 https://github.com/willcoliveira/qualiow-playwright-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/rules/willcoliveira/qualiow-playwright-skills/cursor-rules)<a href="https://agentmods.dev/rules/willcoliveira/qualiow-playwright-skills/cursor-rules"><img src="https://agentmods.dev/badge/rules/willcoliveira/qualiow-playwright-skills/cursor-rules/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/rules/willcoliveira/qualiow-playwright-skills/cursor-rules"><img src="https://agentmods.dev/badge/rules/willcoliveira/qualiow-playwright-skills/cursor-rules.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What 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.1 | $0.00597 | $0.00597 |
| Opus 5.5 | $0.00239 | $0.00239 |
| Sonnet 5.5 | $0.00119 | $0.00119 |
| Haiku 4.5 | $0.00060 | $0.00060 |
Grade A, and why
cursor-rules 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 16d ago.
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 — 42 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Playwright E2E Rules
Full guidance: read .agents/skills/playwright-e2e/SKILL.md and follow its decision tree before {{#if HAS_TEMPLATES}}planning, generating, reviewing or debugging{{else}}writing, reviewing or debugging{{/if}} tests.
MUST
- Use web-first assertions (
await expect(locator).toBeVisible()) - Use named timeout constants, not hardcoded numbers
- Wrap page object methods in
test.step() - Keep locators as readonly class properties on page objects
- Use short inner timeouts inside
toPassblocks - Clean up test resources in
afterEachhooks - Tag tests with
{ tag: ['@smoke'] }options, not in the title - Give every absence assertion (
toBeHidden(),toHaveCount(0)) a presence anchor — prove the same locator matched first
WON'T
- Use XPath selectors
- Use
page.waitForTimeout()for synchronization - Use
{ force: true }on actions - Use
networkidleingoto()orwaitForLoadState() - Use deprecated APIs (
waitForNavigation,page.$,locator.type()) - Write custom retry/polling loops (use
toPass()orexpect.poll()) - Use
page.evaluate()as a workaround for missing locators
Working method
- Explore before generate — resolve every selector against a real page, never from source
- Below 5, emit no plan — a low confidence score means keep exploring, not caveat the proposal
- A skeleton counts as a placeholder —
TODOs and empty methods are not deliverables - No substitute exploration — if
playwright-cliis unavailable, stop and say so - Stop before applying — emit the plan, wait for approval
Selector Priority
getByRole()> 2.getByLabel()> 3.getByText()/getByPlaceholder()/getByAltText()> 4.getByTestId()> 5. CSS selector
Browser automation
Use the official playwright-cli skill (install with npx playwright cli install --skills=agents){{#if HAS_PLAYWRIGHT_159}}; debug failing tests with npx playwright test --debug=cli and playwright-cli attach as described in .agents/skills/playwright-e2e/references/agent-debugging.md{{/if}}.
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.
- 16d ago Changed · +1 lines · +30 tokens per session 1c75dfcfc379
- 1mo ago Changed · +9 lines · +144 tokens per session 8622d7c1bfdc
- 1mo ago Changed · -20 lines · +423 tokens per session c95035118437
- 1mo ago Changed · +2 lines 0f67bda01574
- 1mo ago First seen · 50 lines · 0 tokens per session scan A 413bfe7c6cb6
cursor-rules is a cursor rule published in the GitHub repository willcoliveira/qualiow-playwright-skills (18 stars, last pushed 17d ago), licensed MIT. It adds 597 tokens to every session, about $0.0024 per session on Opus 5.5. 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-30.
Other cursor rules, from other repositories
vibe-test
How to use the vibe-test MCP server for browser testing.
test-case-to-playwright
Convert Katalon True Platform/TestOps manual test cases, test suites, or requirement-linked cases into Playwright TypeScript automation. Use when you need to fetch/read Katalon Platform test cases and implement Playwright scripts, create or adapt a Playwright framework, apply Page Object Model and fixtures, or…
frontend-tests
Frontend Tests.
cypress
Cypress: cy commands, selectors, fixtures, intercepts.
playwright
Playwright: e2e testing, page objects, fixtures, assertions.
playwright-e2e-testing
E2E testing with Playwright.