AgentStack
SKILL verified MIT Self-run

Playwright Skill

skill-michelve-hugin-cowork-playwright-skill · by michelve

>-

No reviews yet
0 installs
5 views
0.0% view→install

Install

$ agentstack add skill-michelve-hugin-cowork-playwright-skill

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Playwright Skill? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Current Project Context

!`ls e2e/*.spec.ts 2>/dev/null || echo 'No e2e test files found'`

Project Conventions (Draft v0)

This project uses @playwright/test with TypeScript. The conventions below take precedence over the generic skill patterns.

Formal Tests (default - use this for real tests)

  • Location: e2e/*.spec.ts
  • Run: pnpm test:e2e (headless) or pnpm test:e2e:ui (interactive)
  • Config: playwright.config.ts - baseURL is http://localhost:5173, webServer auto-starts via pnpm dev
  • No manual server detection needed - the config handles it
  • Use relative paths - page.goto("/") not page.goto("http://localhost:5173/")
  • TypeScript only - .spec.ts files, named exports, no raw .js scripts in the project

New test template:

// e2e/my-feature.spec.ts
import { expect, test } from "@playwright/test";

test("description of what it checks", async ({ page }) => {
    await page.goto("/route");
    await expect(page.locator("h1")).toBeVisible();
});

Existing example: e2e/home.spec.ts

Ad-hoc Exploration (quick visual checks only)

For rapid one-off checks where you don't need a persistent test, the generic /tmp script approach below still works. Use pnpm test:e2e:ui first - it's usually faster.


IMPORTANT - Path Resolution: This skill can be installed in different locations (plugin system, manual installation, global, or project-specific). Before executing any commands, determine the skill directory based on where you loaded this SKILL.md file, and use that path in all commands below. Replace $SKILL_DIR with the actual discovered path.

Common installation paths:

  • Plugin system: ~/.claude/plugins/marketplaces/playwright-skill/skills/playwright-skill
  • Manual global: ~/.claude/skills/playwright-skill
  • Project-specific: /.claude/skills/playwright-skill

Playwright Browser Automation

General-purpose browser automation skill. I'll write custom Playwright code for any automation task you request and execute it via the universal executor.

CRITICAL WORKFLOW - Follow these steps in order:

  1. Auto-detect dev servers - For localhost testing, ALWAYS run server detection FIRST:

``bash cd $SKILL_DIR && node -e "require('./lib/helpers').detectDevServers().then(servers => console.log(JSON.stringify(servers)))" ``

  • If 1 server found: Use it automatically, inform user
  • If multiple servers found: Ask user which one to test
  • If no servers found: Ask for URL or offer to help start dev server
  1. Write scripts to /tmp - NEVER write test files to skill directory; always use /tmp/playwright-test-*.js
  1. Use visible browser by default - Always use headless: false unless user specifically requests headless mode
  1. Parameterize URLs - Always make URLs configurable via environment variable or constant at top of script

How It Works

  1. You describe what you want to test/automate
  2. I auto-detect running dev servers (or ask for URL if testing external site)
  3. I write custom Playwright code in /tmp/playwright-test-*.js (won't clutter your project)
  4. I execute it via: cd $SKILL_DIR && node run.js /tmp/playwright-test-*.js
  5. Results displayed in real-time, browser window visible for debugging
  6. Test files auto-cleaned from /tmp by your OS

Setup (First Time)

cd $SKILL_DIR
npm run setup

This installs Playwright and Chromium browser. Only needed once.

Execution Pattern

See [examples/execution-patterns.md](examples/execution-patterns.md) for the 3-step execution workflow (detect dev servers, write test script to /tmp, execute from skill directory).

Common Patterns

See [examples/common-patterns.md](examples/common-patterns.md) for 6 ready-to-use patterns: responsive testing, login flow, form submission, broken link checking, screenshot with error handling, and responsive design testing.

Inline Execution (Simple Tasks)

For quick one-off tasks, you can execute code inline without creating files:

# Take a quick screenshot
cd $SKILL_DIR && node run.js "
const browser = await chromium.launch({ headless: false });
const page = await browser.newPage();
await page.goto('http://localhost:3001');
await page.screenshot({ path: '/tmp/quick-screenshot.png', fullPage: true });
console.log('Screenshot saved');
await browser.close();
"

When to use inline vs files:

  • Inline: Quick one-off tasks (screenshot, check if element exists, get page title)
  • Files: Complex tests, responsive design checks, anything user might want to re-run

Available Helpers & Custom HTTP Headers

See [reference/helpers-headers-guide.md](references/helpers-headers-guide.md) for helper function reference (detectDevServers, safeClick, safeType, takeScreenshot, handleCookieBanner, extractTableData) and custom HTTP header configuration.

Advanced Usage

For comprehensive Playwright API documentation, see [APIREFERENCE.md](APIREFERENCE.md):

  • Selectors & Locators best practices
  • Network interception & API mocking
  • Authentication & session management
  • Visual regression testing
  • Mobile device emulation
  • Performance testing
  • Debugging techniques
  • CI/CD integration

Tips

  • CRITICAL: Detect servers FIRST - Always run detectDevServers() before writing test code for localhost testing
  • Custom headers - Use PW_HEADER_NAME/PW_HEADER_VALUE env vars to identify automated traffic to your backend
  • Use /tmp for test files - Write to /tmp/playwright-test-*.js, never to skill directory or user's project
  • Parameterize URLs - Put detected/provided URL in a TARGET_URL constant at the top of every script
  • DEFAULT: Visible browser - Always use headless: false unless user explicitly asks for headless mode
  • Headless mode - Only use headless: true when user specifically requests "headless" or "background" execution
  • Slow down: Use slowMo: 100 to make actions visible and easier to follow
  • Wait strategies: Use waitForURL, waitForSelector, waitForLoadState instead of fixed timeouts
  • Error handling: Always use try-catch for robust automation
  • Console output: Use console.log() to track progress and show what's happening

Troubleshooting

Playwright not installed:

cd $SKILL_DIR && npm run setup

Module not found: Ensure running from skill directory via run.js wrapper

Browser doesn't open: Check headless: false and ensure display available

Element not found: Add wait: await page.waitForSelector('.element', { timeout: 10000 })

Example Usage

User: "Test if the marketing page looks good"

Claude: I'll test the marketing page across multiple viewports. Let me first detect running servers...
[Runs: detectDevServers()]
[Output: Found server on port 3001]
I found your dev server running on http://localhost:3001

[Writes custom automation script to /tmp/playwright-test-marketing.js with URL parameterized]
[Runs: cd $SKILL_DIR && node run.js /tmp/playwright-test-marketing.js]
[Shows results with screenshots from /tmp/]
User: "Check if login redirects correctly"

Claude: I'll test the login flow. First, let me check for running servers...
[Runs: detectDevServers()]
[Output: Found servers on ports 3000 and 3001]
I found 2 dev servers. Which one should I test?
- http://localhost:3000
- http://localhost:3001

User: "Use 3001"

[Writes login automation to /tmp/playwright-test-login.js]
[Runs: cd $SKILL_DIR && node run.js /tmp/playwright-test-login.js]
[Reports: ✅ Login successful, redirected to /dashboard]

Notes

  • Each automation is custom-written for your specific request
  • Not limited to pre-built scripts - any browser task possible
  • Auto-detects running dev servers to eliminate hardcoded URLs
  • Test scripts written to /tmp for automatic cleanup (no clutter)
  • Code executes reliably with proper module resolution via run.js
  • Progressive disclosure - API_REFERENCE.md loaded only when advanced features needed

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.