Playwright · mindrally — скилл для Claude Code: тестирование веб-приложений
Скилл для автоматизации end-to-end тестов веб-приложений на TypeScript и JavaScript. Учит агента писать тесты по best practices: правильные локаторы, web-first assertions, отсутствие hardcoded таймаутов.
npx skills add Mindrally/skills --skill playwright -a claude-codeЧто делает playwright
Скилл содержит методологию и примеры кода для написания надёжных E2E-тестов с Playwright. Охватывает структуру тестов с помощью fixtures, стратегии поиска элементов (getByRole, getByLabel, getByTestId), а также web-first assertions, которые автоматически ждут и повторяют попытки. Включает конфигурацию для запуска тестов в Chrome, Firefox и на мобильных устройствах.
Агент научится создавать тесты, которые следят за критическими пользовательскими путями, избегая хрупких селекторов и случайных таймаутов. Помогает организовать чистое состояние тестов через beforeEach и afterEach, а также извлечь повторяемую логику в helper-функции.
Какие задачи решает
- написать E2E-тесты для веб-приложения с правильными локаторами
- избежать flaky-тестов с hardcoded таймаутами и нестабильными селекторами
- настроить параллельный запуск тестов в разных браузерах
- добавить скриншоты и трассировки только при падении
- проверить логин, навигацию и критические бизнес-потоки
Примеры запросов агенту
- Напиши E2E-тест для авторизации пользователя с Playwright, используя getByLabel для полей и getByRole для кнопки
- Добавь конфигурацию Playwright с запуском в Chrome, Firefox и на мобильном, включи скриншоты при ошибках
- Перепиши старый тест с XPath на getByRole и удали все waitForTimeout
Как установить playwright
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill playwright -a claude-code2Вручную: положить файлы
~/.claude/skills/playwright/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/playwright/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill playwright -a codex2Вручную: положить файлы
.agents/skills/playwright/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill playwright -a cursor2Вручную: положить файлы
.cursor/skills/playwright/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Mindrally/skills playwright2Вручную: положить файлы
.github/skills/playwright/SKILL.md1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill playwright -a gemini-cli2Командой платформы
gemini skills install https://github.com/Mindrally/skills --path playwrightВручную: положить файлы
.devin/skills/playwright/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill playwright -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о playwright
Как установить Playwright скилл в Claude Code?
Выполни npx skills add Mindrally/skills --skill playwright -a claude-code, затем скилл загрузится в ~/.claude/skills/playwright/SKILL.md и будет доступен агенту.
Зачем этот скилл нужен разработчику?
Он учит агента писать end-to-end тесты по best practices: правильные локаторы вместо хрупких CSS-селекторов, web-first assertions вместо hardcoded таймаутов, и конфигурацию для запуска в разных браузерах.
Какие локаторы рекомендует скилл?
В приоритете: getByRole (доступность), getByLabel (для инпутов), getByText (видимый текст), getByTestId (если есть data-testid) и getByPlaceholder. Избегай CSS-селекторов вроде .btn-primary.
Исходный текст
SKILL.md · Apache-2.0
---
name: playwright
description: Playwright end-to-end testing best practices for web applications, covering test design, locator strategies, and assertion patterns.
metadata:
maintainer: Mindrally
source: https://github.com/Mindrally/skills
---
# Playwright Testing Best Practices
You are a Senior QA Automation Engineer expert in TypeScript, JavaScript, and Playwright end-to-end testing.
## Test Design Principles
### Test Structure
- Create descriptive test names that clearly explain expected behavior
- Use Playwright fixtures (`test`, `page`, `expect`) for test isolation
- Implement `test.beforeEach` and `test.afterEach` for clean state management
- Keep tests DRY by extracting reusable logic into helper functions
```typescript
import { test, expect } from '@playwright/test';
test.describe('User Authentication', () => {
test.beforeEach(async ({ page }) => {
await page.goto('/login');
});
test('should login successfully with valid credentials', async ({ page }) => {
await page.getByLabel('Email').fill('[email protected]');
await page.getByLabel('Password').fill('password123');
await page.getByRole('button', { name: 'Sign In' }).click();
await expect(page.getByRole('heading', { name: 'Dashboard' })).toBeVisible();
});
});
```
## Locator Strategy
### Recommended Locators
- `page.getByRole()` - Best for accessibility and user perspective
- `page.getByLabel()` - For form inputs with labels
- `page.getByText()` - For elements with visible text
- `page.getByTestId()` - When `data-testid` attributes exist
- `page.getByPlaceholder()` - For inputs with placeholder text
```typescript
// Recommended
await page.getByRole('button', { name: 'Submit' }).click();
await page.getByLabel('Email address').fill('[email protected]');
// Avoid
await page.locator('.btn-primary').click();
```
## Assertions and Waits
### Web-First Assertions
Prefer web-first assertions that automatically wait and retry:
- `toBeVisible()` - Element is visible
- `toHaveText()` - Element has specific text
- `toHaveValue()` - Input has specific value
- `toHaveURL()` - Page URL assertion
```typescript
// Recommended - web-first assertions
await expect(page.getByRole('alert')).toBeVisible();
await expect(page).toHaveURL('/dashboard');
// Avoid - hardcoded timeouts
await page.waitForTimeout(5000); // Never do this
```
### Waiting Best Practices
- Avoid hardcoded timeouts
- Use `page.waitForLoadState()` for navigation
- Use `page.waitForResponse()` for API calls
## Configuration
```typescript
import { defineConfig, devices } from '@playwright/test';
export default defineConfig({
testDir: './tests',
fullyParallel: true,
retries: process.env.CI ? 2 : 0,
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: 'mobile', use: { ...devices['iPhone 13'] } },
],
});
```
## Best Practices
- Focus on critical user paths reflecting real behavior
- Keep tests independent and deterministic
- Add JSDoc comments for helper functions
- Implement proper error handling and logging
© Mindrally · Apache-2.0 · Mindrally/skills
Похожие скиллы
Все скиллы по теме «Тесты и QA» →Сначала — playwright от других авторов.