fix — скилл для Claude: починка падающих Playwright-тестов
Разбирает падающий или нестабильный Playwright-тест по категориям и доводит его до стабильного прохождения. Пригодится, когда тест падает в CI, а локально проходит.
/plugin marketplace add alirezarezvani/claude-skills
/plugin install pw@claude-code-skillsЧто делает 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-skills2Через Skills CLI (Vercel)
npx skills add alirezarezvani/claude-skills --skill fix -a claude-code3Вручную: положить файлы
~/.claude/skills/fix/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/fix/
Вручную: положить файлы
.agents/skills/fix/SKILL.mdДля всех проектов — ~/.agents/skills/
Вручную: положить файлы
.cursor/skills/fix/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install alirezarezvani/claude-skills fix2Вручную: положить файлы
.github/skills/fix/SKILL.mdКомандой платформы
gemini skills install https://github.com/alirezarezvani/claude-skills --path engineering-team/playwright-pro/skills/fixВручную: положить файлы
.devin/skills/fix/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Claude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
Похожие
Вопросы о 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