К основному содержанию
скилл Claude Code

fix — скилл для Claude: починка падающих Playwright-тестов

Разбирает падающий или нестабильный Playwright-тест по категориям и доводит его до стабильного прохождения. Пригодится, когда тест падает в CI, а локально проходит.

Установить в Claude Code · Через маркетплейс плагинов Все способы и платформы ↓
/plugin marketplace add alirezarezvani/claude-skills
/plugin install pw@claude-code-skills
Открыть на GitHub

Что делает fix

Скилл запускает тест, чтобы поймать ошибку, затем прогоняет его повторно и с параллельными воркерами — так отделяется настоящий сбой от флаки. Дальше снимается трейс через --trace=on --retries=0, и по нему определяется причина.

Все сбои раскладываются на четыре категории: тайминги и асинхронность, изоляция тестов, окружение, инфраструктура. Для каждой свой набор правок. При таймингах waitForTimeout() меняется на web-first ассершены и добавляется недостающий await. При проблемах изоляции убирается общее изменяемое состояние между тестами и создаются данные на каждый тест. Для окружения сверяются размеры вьюпорта и рендеринг шрифтов между локалью и CI. Для инфраструктуры поднимаются таймауты и retries.

После правки тест гоняется 10 раз через --repeat-each=10 — все 10 должны пройти, иначе возврат к категоризации. В конце скилл предлагает, как не допустить повторения: retries: 2 в CI, trace: 'on-first-retry' в конфиге. Нужен установленный Playwright и запуск через npx playwright test. Ставить стоит тем, у кого тесты уже есть и периодически падают; если Playwright в проекте не используется, смысла нет.

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

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

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

  • почини падающий тест e2e/login.spec.ts
  • тест checkout падает в CI, а локально проходит — разберись
  • этот тест проходит через раз, найди причину

Как установить fix

1Через маркетплейс плагинов

/plugin marketplace add alirezarezvani/claude-skills
/plugin install pw@claude-code-skills

2Через Skills CLI (Vercel)

npx skills add alirezarezvani/claude-skills --skill fix -a claude-code

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

~/.claude/skills/fix/SKILL.md

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

Похожие

skill-creator официальный anthropics Помогает создать новый скилл, доработать существующий и проверить результат через тестовые промпты и оценки. Claude Code Claude.ai 414 180установок improve-codebase-architecture Matt Pocock Скилл ищет архитектурные узкие места в кодовой базе и показывает варианты углубления модулей в HTML-отчёте. Подойдёт для ревью перед рефакторингом. Claude Code 1 163 035установок tdd Matt Pocock Скилл управляет циклом красный-зелёный в TDD: проверяет, что тесты пишутся до кода, держит их на уровне публичных интерфейсов и не завязывает на внутреннюю структуру. Claude Code 1 141 062установок prototype Matt Pocock Создаёт временный прототип, чтобы проверить логику, модель состояния или вид интерфейса до работы над основным кодом. Claude Code 986 201установок codebase-design Matt Pocock Скилл помогает проектировать модули с небольшим интерфейсом и скрытой внутри сложностью. Подходит для рефакторинга, тестируемости и поиска чистого seam. Claude Code 850 344установок diagnosing-bugs Matt Pocock Скилл ведёт агента через воспроизводимую диагностику сложных багов и регрессий производительности. Нужен, когда код падает, работает неверно или тормозит. Claude Code 834 802установок

Вопросы о fix

Как установить fix в Claude?

Через маркетплейс плагинов: /plugin marketplace add alirezarezvani/claude-skills, затем /plugin install pw@claude-code-skills. Либо напрямую: npx skills add alirezarezvani/claude-skills --skill fix -a claude-code.

Что делает скилл fix?

Диагностирует падающий или нестабильный Playwright-тест, относит сбой к одной из четырёх категорий и применяет правку под неё. Затем проверяет стабильность 10 повторами.

Что нужно для работы скилла?

Playwright в проекте — тесты запускаются через npx playwright test. Скилл работает с файлом теста, его именем или описанием сбоя.

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

SKILL.md · MIT
---
name: "fix"
description: >-
  Fix failing or flaky Playwright tests. Use when user says "fix test",
  "flaky test", "test failing", "debug test", "test broken", "test passes
  sometimes", or "intermittent failure".
---

# Fix Failing or Flaky Tests

Diagnose and fix a Playwright test that fails or passes intermittently using a systematic taxonomy.

## Input

`$ARGUMENTS` contains:
- A test file path: `e2e/login.spec.ts`
- A test name: ""should redirect after login"`
- A description: `"the checkout test fails in CI but passes locally"`

## Steps

### 1. Reproduce the Failure

Run the test to capture the error:

```bash
npx playwright test <file> --reporter=list
```

If the test passes, it's likely flaky. Run burn-in:

```bash
npx playwright test <file> --repeat-each=10 --reporter=list
```

If it still passes, try with parallel workers:

```bash
npx playwright test --fully-parallel --workers=4 --repeat-each=5
```

### 2. Capture Trace

Run with full tracing:

```bash
npx playwright test <file> --trace=on --retries=0
```

Read the trace output. Use `/debug` to analyze trace files if available.

### 3. Categorize the Failure

Load `flaky-taxonomy.md` from this skill directory.

Every failing test falls into one of four categories:

| Category | Symptom | Diagnosis |
|---|---|---|
| **Timing/Async** | Fails intermittently everywhere | `--repeat-each=20` reproduces locally |
| **Test Isolation** | Fails in suite, passes alone | `--workers=1 --grep "test name"` passes |
| **Environment** | Fails in CI, passes locally | Compare CI vs local screenshots/traces |
| **Infrastructure** | Random, no pattern | Error references browser internals |

### 4. Apply Targeted Fix

**Timing/Async:**
- Replace `waitForTimeout()` with web-first assertions
- Add `await` to missing Playwright calls
- Wait for specific network responses before asserting
- Use `toBeVisible()` before interacting with elements

**Test Isolation:**
- Remove shared mutable state between tests
- Create test data per-test via API or fixtures
- Use unique identifiers (timestamps, random strings) for test data
- Check for database state leaks

**Environment:**
- Match viewport sizes between local and CI
- Account for font rendering differences in screenshots
- Use `docker` locally to match CI environment
- Check for timezone-dependent assertions

**Infrastructure:**
- Increase timeout for slow CI runners
- Add retries in CI config (`retries: 2`)
- Check for browser OOM (reduce parallel workers)
- Ensure browser dependencies are installed

### 5. Verify the Fix

Run the test 10 times to confirm stability:

```bash
npx playwright test <file> --repeat-each=10 --reporter=list
```

All 10 must pass. If any fail, go back to step 3.

### 6. Prevent Recurrence

Suggest:
- Add to CI with `retries: 2` if not already
- Enable `trace: 'on-first-retry'` in config
- Add the fix pattern to project's test conventions doc

## Output

- Root cause category and specific issue
- The fix applied (with diff)
- Verification result (10/10 passes)
- Prevention recommendation

© Alireza Rezvani · MIT · alirezarezvani/claude-skills

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

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

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