К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

playwright-skill — скилл для Claude Code: автоматизация браузера

Скилл для написания и запуска Playwright-скриптов прямо в редакторе. Автоматически находит dev-серверы, делает скриншоты, проверяет адаптивность, тестирует логины и валидирует работу сайта.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add lackeyjb/playwright-skill --skill playwright-skill -a claude-code
Открыть на GitHub

Что делает playwright-skill

playwright-skill оборачивает Playwright API в удобный интерфейс для браузерной автоматизации. Скилл автоматически обнаруживает запущенные локальные серверы, позволяет писать переиспользуемые тесты и запускать их с помощью node "$SKILL_DIR/run.js" <script.js>. Поддерживает скриншоты в полную высоту, проверку адаптивности под мобильные и десктопные размеры, тестирование логинов и навигации, проверку ссылок.

Внутри — Playwright с встроенными помощниками для обнаружения серверов, управления браузером, обработки куки-баннеров и сохранения скриншотов. Используется видимый браузер по умолчанию. Скилл работает с переменными окружения: TARGET_URL для целевого адреса, PW_ARTIFACT_DIR для артефактов, PW_SCRIPT_DIR для сохранения скриптов в проект.

Требует Node.js 20+, npm и доступ в сеть на первой установке для инсталляции Playwright и Chromium. Совместим с Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI и OpenCode.

Какие задачи решает

  • написать Playwright-скрипт для тестирования сайта
  • проверить внешний вид страницы на мобильных и десктопных размерах
  • автоматизировать логин и навигацию по сайту
  • сделать скриншот и проверить, что элемент загрузился корректно
  • найти и протестировать все ссылки на странице

Примеры запросов агенту

  • Напиши Playwright-скрипт, который откроет localhost:3000 и сделает скриншот
  • Проверь, что сайт выглядит правильно на мобильном (390x844) и десктопе (1440x900)
  • Автоматизируй логин на сайт, используя тестовые учётные данные, и сделай скриншот дашборда

Как установить playwright-skill

1Через Skills CLI (Vercel)

npx skills add lackeyjb/playwright-skill --skill playwright-skill -a claude-code

2Вручную: положить файлы

~/.claude/skills/playwright-skill/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/playwright-skill/

Похожие

argent-screenshot-diff software-mansion Сравнивает скриншоты до и после изменений в UI: ловит сдвиги в раскладке, отступах, цвете и рендере текста. Claude Code CX Codex Cursor +1 24 900установок data-quality-frameworks Seth Hobson Скилл помогает проверять качество данных через Great Expectations, dbt-тесты и контракты данных. Подойдёт для пайплайнов, CI/CD и контроля схем. Claude Code CX Codex Cursor 11 230установок dependency-upgrade Seth Hobson Скилл помогает планировать крупные обновления зависимостей, проверять совместимость и проводить апгрейд по этапам. Подойдёт для framework-обновлений и breaking changes. Claude Code CX Codex Cursor 11 079установок bats-testing-patterns Ryan Snodgrass Скилл помогает писать и запускать тесты shell-скриптов через Bats. Подойдёт для TDD, CI/CD и проверки ошибок в bash, sh и dash. Claude Code CX Codex Cursor 11 000установок airflow-dag-patterns Seth Hobson Скилл помогает проектировать DAG в Apache Airflow, связывать задачи и проверять пайплайны. Подойдёт для ETL, пакетных заданий и отладки запусков. Claude Code CX Codex Cursor 11 000установок workflow-patterns Seth Hobson Помогает вести задачи по TDD-процессу Conductor: писать тесты до кода, проходить контрольные точки и фиксировать прогресс. Подойдёт для работы по плану задачи. Claude Code CX Codex Cursor 11 000установок improve-codebase-architecture Matt Pocock Скилл ищет архитектурные узкие места в кодовой базе и показывает варианты углубления модулей в HTML-отчёте. Подойдёт для ревью перед рефакторингом. Claude Code 1 163 035установок design-taste-frontend Leonxlnx Скилл задаёт арт-дирекцию для публичных страниц и рабочих экранов, а затем проверяет результат в браузере по скриншотам. Нужен, когда интерфейс выглядит шаблонным или недоработанным. Claude Code CX Codex Cursor +1 673 100установок

Вопросы о playwright-skill

Как установить playwright-skill в Claude Code?

Запусти npx skills add lackeyjb/playwright-skill --skill playwright-skill -a claude-code. Скилл установится в ~/.claude/skills/playwright-skill.

Что делает playwright-skill?

Позволяет писать и запускать Playwright-скрипты для браузерной автоматизации: тестировать сайты, проверять адаптивность, автоматизировать логины, валидировать функциональность и делать скриншоты.

Какие требования для работы скилла?

Нужны Node.js 20+, npm и доступ в сеть при первой установке. На первый запуск скилл самостоятельно установит Playwright и Chromium через npm run setup.

Исходный текст

SKILL.md · MIT
---
name: playwright-skill
description: Complete browser automation with Playwright. Auto-detects dev servers, writes reusable test scripts, and supports screenshots, responsive checks, UX validation, login flows, link checks, and arbitrary browser automation. Use when the user wants to test a website, automate browser interactions, validate web functionality, or perform browser-based testing.
license: MIT
compatibility: Requires Node.js 20+, npm, and network access on first setup to install Playwright and Chromium.
metadata:
  author: lackeyjb
  version: "5.0.0"
allowed-tools: Bash(node:*) Bash(npm:*) Read Write
---

# Playwright Browser Automation

Write and execute focused Playwright scripts for the user's request. Prefer the
skill's executor and helpers, but use the full Playwright API when needed.

## Path resolution

This skill can be installed in several locations, so resolve its directory
first. Set `SKILL_DIR` to the directory containing this SKILL.md file, then run
the commands below as written:

```bash
export SKILL_DIR=<absolute path of the directory containing this SKILL.md>
export TMP_DIR="$(node -p 'require("node:os").tmpdir()')"
```

If shell state does not persist between commands, substitute the literal paths
for `$SKILL_DIR` and `$TMP_DIR` in each command instead.

Common installation paths:

- Plugin system: `~/.claude/plugins/marketplaces/playwright-skill/skills/playwright-skill`
- Manual global: `~/.claude/skills/playwright-skill`
- Project-specific: `<project>/.claude/skills/playwright-skill`

## Workflow

1. For localhost work, detect running servers before writing a URL:

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

   Use the only result automatically. Ask which URL to use when there are
   multiple results. Ask for a URL or offer to start a server when none exist.
2. Write reusable scripts to `$TMP_DIR/playwright-test-*.js` unless the user
   asks to save them in the project. Use `PW_SCRIPT_DIR` to preserve scripts.
3. Use a visible browser by default. Use `headless: true` only when requested
   or when the environment has no display.
4. Put the target URL in a constant or environment variable.
5. Run scripts with `node "$SKILL_DIR/run.js" <script.js>`.
6. Report actions, failures, and artifact paths. Do not claim success without
   checking the resulting page.

## Setup

Run once:

```bash
cd "$SKILL_DIR" && npm run setup
```

This installs Playwright and Chromium. Use `cd "$SKILL_DIR" && npm run
install-all-browsers` when Firefox or WebKit is required.

## Minimal example

```javascript
const os = require('node:os');
const path = require('node:path');
const { chromium } = require('playwright');

const targetUrl = process.env.TARGET_URL || 'http://localhost:3000';
const artifactDir = process.env.PW_ARTIFACT_DIR || os.tmpdir();

(async () => {
  const browser = await chromium.launch({ headless: false });
  try {
    const page = await browser.newPage();
    await page.goto(targetUrl);
    console.log('Page loaded:', await page.title());
    await page.screenshot({ path: path.join(artifactDir, 'page.png'), fullPage: true });
  } finally {
    await browser.close();
  }
})();
```

Run it:

```bash
node "$SKILL_DIR/run.js" "$TMP_DIR/playwright-test-page.js"
```

For short one-off tasks, use inline execution:

```bash
node "$SKILL_DIR/run.js" -e "const browser = await chromium.launch({headless: false}); try { const page = await browser.newPage(); await page.goto('https://example.com'); console.log(await page.title()); } finally { await browser.close(); }"
```

The `-e` process exits as soon as the snippet settles, so close the browser
inside the snippet.

## Current Playwright patterns

Prefer locators that describe what a user sees, in this order:

1. `page.getByRole()` with an accessible name
2. `page.getByLabel()` for form controls
3. `page.getByText()` for visible content
4. `page.getByTestId()` when the application provides a test contract

Actions auto-wait for actionability. Use web-first assertions or a locator's
`waitFor()` instead of `waitForSelector()`, fixed sleeps, or `networkidle`.

```javascript
await page.getByLabel('Email').fill('[email protected]');
await page.getByRole('button', { name: 'Sign in' }).click();
await page.waitForURL('**/dashboard');
await page.getByRole('heading', { name: 'Dashboard' }).waitFor();
```

## Common tasks

### Responsive checks

```javascript
{
  const os = require('node:os');
  const path = require('node:path');

  const artifactDir = process.env.PW_ARTIFACT_DIR || os.tmpdir();
  const viewports = [
    { name: 'desktop', width: 1440, height: 900 },
    { name: 'mobile', width: 390, height: 844 },
  ];

  for (const viewport of viewports) {
    await page.setViewportSize(viewport);
    await page.goto(targetUrl);
    await page.screenshot({ path: path.join(artifactDir, `${viewport.name}.png`), fullPage: true });
  }
}
```

### Login flow

Use test credentials supplied by the user. Never invent or expose real
credentials. Verify both the navigation and a post-login element.

```javascript
await page.goto(`${targetUrl}/login`);
await page.getByLabel('Email').fill(process.env.TEST_EMAIL);
await page.getByLabel('Password').fill(process.env.TEST_PASSWORD);
await page.getByRole('button', { name: /sign in|log in/i }).click();
await page.waitForURL('**/dashboard');
await page.getByRole('heading', { name: /dashboard/i }).waitFor();
```

### Save scripts and artifacts

```bash
PW_SCRIPT_DIR=./playwright-tests node "$SKILL_DIR/run.js" "$TMP_DIR/playwright-test-login.js"
PW_ARTIFACT_DIR=./playwright-artifacts node "$SKILL_DIR/run.js" "$TMP_DIR/playwright-test-page.js"
```

`PW_SCRIPT_DIR` copies file-based scripts before execution and adds a timestamp
when a filename already exists. `PW_ARTIFACT_DIR` controls helper screenshot
output; the default is the operating system temporary directory.

### Connect to an existing Chrome session

Start Chrome with remote debugging enabled, then connect with Playwright:

```javascript
const browser = await chromium.connectOverCDP('http://127.0.0.1:9222');
const page = browser.contexts()[0].pages()[0];
```

This reuses cookies and extensions in that session. Do not use it for secrets
unless the user explicitly asks; a connected browser has the user's access.

## Helpers

```javascript
const helpers = require(`${process.env.PW_SKILL_DIR}/lib/helpers`);

const servers = await helpers.detectDevServers();
const browser = await helpers.launchBrowser('chromium');
const context = await helpers.createContext(browser);
const page = await context.newPage();
await helpers.handleCookieBanner(page);
await helpers.takeScreenshot(page, 'result');
```

Available helpers are `detectDevServers`, `getExtraHeadersFromEnv`,
`launchBrowser`, `createContext`, `handleCookieBanner`, and `takeScreenshot`.
Use Playwright locators and assertions directly for actions, waits, extraction,
authentication, tables, and retries.

## Configuration

- `PW_BROWSER`: `chromium`, `firefox`, or `webkit` for `launchBrowser()`.
- `PW_CHANNEL`: installed browser channel such as `chrome` or `msedge`.
- `PW_EXECUTABLE_PATH`: explicit browser executable path.
- `PW_HEADLESS`: `true` or `false`; visible mode is the default.
- `SLOW_MO`: action delay in milliseconds.
- `PW_HEADER_NAME` and `PW_HEADER_VALUE`: one extra HTTP header.
- `PW_EXTRA_HEADERS`: JSON object of extra HTTP headers.
- `PW_SCRIPT_DIR`: directory for preserving file-based scripts.
- `PW_ARTIFACT_DIR`: directory for helper-generated screenshots.

See [API_REFERENCE.md](API_REFERENCE.md) for network interception, API mocking,
authentication state, video, visual checks, device emulation, and CI patterns.

© lackeyjb · MIT · lackeyjb/playwright-skill

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой