pw-init — скилл для Claude Code: что делает и как установить
Разворачивает Playwright для сквозного тестирования в веб-проектах. Находит фреймворк, создаёт конфиг, структуру папок e2e, стартовый тест и пайплайн CI.
/plugin marketplace add alirezarezvani/claude-skills
/plugin install pw@claude-code-skillsЧто делает pw-init
Скилл анализирует проект через субагент Explore: считывает package.json на наличие Next.js, React с Vite, Vue/Nuxt или Angular, проверяет наличие tsconfig.json и смотрит существующие тесты. Затем он запускает установку @playwright/test с системными браузерами и генерирует playwright.config.ts с подходящим портом локального сервера.
Дальше ассистент создаёт структуру директории e2e/ с фикстурами, Page Object и базовым тестом страницы, обновляет .gitignore и добавляет команды запуска в секцию scripts. Если обнаружена папка .github/workflows/ или конфигурация GitLab CI, скилл генерирует готовый файл пайплайна с сохранением артефактов отчётов.
В финале выполняется запуск npx playwright test, чтобы сразу проверить работоспособность сборки. Ставить скилл стоит тем, кто добавляет e2e-тесты в проект с нуля и не хочет тратить время на ручную подгонку конфигурации.
Какие задачи решает
- развернуть окружение Playwright с готовой структурой каталогов e2e
- сгенерировать playwright.config.ts под порты Next.js, Vite, Nuxt или Angular
- добавить GitHub Actions или GitLab CI для сквозных тестов
- настроить npm-скрипты для обычного, UI и отладочного запуска тестов
Примеры запросов агенту
- set up playwright
- add e2e tests
- init playwright
Как установить pw-init
1Через маркетплейс плагинов
/plugin marketplace add alirezarezvani/claude-skills/plugin install pw@claude-code-skillsКоманда ставит плагин pw целиком, со всеми его скиллами
2Через Skills CLI (Vercel)
npx skills add alirezarezvani/claude-skills --skill pw-init -a claude-code3Вручную: положить файлы
~/.claude/skills/pw-init/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/pw-init/
Вручную: положить файлы
.agents/skills/pw-init/SKILL.mdДля всех проектов — ~/.agents/skills/
Вручную: положить файлы
.cursor/skills/pw-init/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install alirezarezvani/claude-skills pw-init2Вручную: положить файлы
.github/skills/pw-init/SKILL.mdКомандой платформы
gemini skills install https://github.com/alirezarezvani/claude-skills --path engineering-team/playwright-pro/skills/pw-initВручную: положить файлы
.devin/skills/pw-init/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Из того же набора349
Весь набор →Похожие
Вопросы о pw-init
Как установить pw-init в Claude Code?
Установите скилл командой npx skills add alirezarezvani/claude-skills --skill pw-init -a claude-code или добавьте каталог через /plugin marketplace add alirezarezvani/claude-skills.
Что делает pw-init?
Он определяет веб-фреймворк проекта, устанавливает пакеты Playwright, создаёт структуру папки e2e/, генерирует первый тест и настраивает конфигурацию для CI.
Как скилл настраивает локальный сервер в playwright.config.ts?
Конфигурация зависит от зависимостей в package.json: для Vite выставляется порт 5173, для Next.js и Nuxt — 3000, для Angular — 4200, а без распознанного фреймворка блок webServer исключается.
Исходный текст
SKILL.md · MIT
---
name: "pw-init"
description: >-
Set up Playwright in a project. Use when user says "set up playwright",
"add e2e tests", "configure playwright", "testing setup", "init playwright",
or "add test infrastructure".
---
# Initialize Playwright Project
Set up a production-ready Playwright testing environment. Detect the framework, generate config, folder structure, example test, and CI workflow.
## Steps
### 1. Analyze the Project
Use the `Explore` subagent to scan the project:
- Check `package.json` for framework (React, Next.js, Vue, Angular, Svelte)
- Check for `tsconfig.json` → use TypeScript; otherwise JavaScript
- Check if Playwright is already installed (`@playwright/test` in dependencies)
- Check for existing test directories (`tests/`, `e2e/`, `__tests__/`)
- Check for existing CI config (`.github/workflows/`, `.gitlab-ci.yml`)
### 2. Install Playwright
If not already installed:
```bash
npm init playwright@latest -- --quiet
```
Or if the user prefers manual setup:
```bash
npm install -D @playwright/test
npx playwright install --with-deps chromium
```
### 3. Generate `playwright.config.ts`
Adapt to the detected framework:
**Next.js:**
```typescript
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
testDir: './e2e',
fullyParallel: true,
forbidOnly: !!process.env.CI,
retries: process.env.CI ? 2 : 0,
workers: process.env.CI ? 1 : undefined,
reporter: [
['html', { open: 'never' }],
['list'],
],
use: {
baseURL: 'http://localhost:3000',
trace: 'on-first-retry',
screenshot: 'only-on-failure',
},
projects: [
{ name: "chromium", use: { ...devices['Desktop Chrome'] } },
{ name: "firefox", use: { ...devices['Desktop Firefox'] } },
{ name: "webkit", use: { ...devices['Desktop Safari'] } },
],
webServer: {
command: 'npm run dev',
url: 'http://localhost:3000',
reuseExistingServer: !process.env.CI,
},
});
```
**React (Vite):**
- Change `baseURL` to `http://localhost:5173`
- Change `webServer.command` to `npm run dev`
**Vue/Nuxt:**
- Change `baseURL` to `http://localhost:3000`
- Change `webServer.command` to `npm run dev`
**Angular:**
- Change `baseURL` to `http://localhost:4200`
- Change `webServer.command` to `npm run start`
**No framework detected:**
- Omit `webServer` block
- Set `baseURL` from user input or leave as placeholder
### 4. Create Folder Structure
```
e2e/
├── fixtures/
│ └── index.ts # Custom fixtures
├── pages/
│ └── .gitkeep # Page object models
├── test-data/
│ └── .gitkeep # Test data files
└── example.spec.ts # First example test
```
### 5. Generate Example Test
```typescript
import { test, expect } from '@playwright/test';
test.describe('Homepage', () => {
test('should load successfully', async ({ page }) => {
await page.goto('/');
await expect(page).toHaveTitle(/.+/);
});
test('should have visible navigation', async ({ page }) => {
await page.goto('/');
await expect(page.getByRole('navigation')).toBeVisible();
});
});
```
### 6. Generate CI Workflow
If `.github/workflows/` exists, create `playwright.yml`:
```yaml
name: "playwright-tests"
on:
push:
branches: [main, dev]
pull_request:
branches: [main, dev]
jobs:
test:
timeout-minutes: 60
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: lts/*
- name: "install-dependencies"
run: npm ci
- name: "install-playwright-browsers"
run: npx playwright install --with-deps
- name: "run-playwright-tests"
run: npx playwright test
- uses: actions/upload-artifact@v4
if: ${{ !cancelled() }}
with:
name: "playwright-report"
path: playwright-report/
retention-days: 30
```
If `.gitlab-ci.yml` exists, add a Playwright stage instead.
### 7. Update `.gitignore`
Append if not already present:
```
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/
```
### 8. Add npm Scripts
Add to `package.json` scripts:
```json
{
"test:e2e": "playwright test",
"test:e2e:ui": "playwright test --ui",
"test:e2e:debug": "playwright test --debug"
}
```
### 9. Verify Setup
Run the example test:
```bash
npx playwright test
```
Report the result. If it fails, diagnose and fix before completing.
## Output
Confirm what was created:
- Config file path and key settings
- Test directory and example test
- CI workflow (if applicable)
- npm scripts added
- How to run: `npx playwright test` or `npm run test:e2e`
© Alireza Rezvani · MIT · alirezarezvani/claude-skills