Главная · Скиллы · playwright-best-practices

playwright-best-practicesлучшие практики Playwright

currents-dev/playwright-best-practices-skill

Комплексный справочник Playwright: E2E тесты, WebSocket тестирование, мобильная эмуляция, паттерны Page Object. От базового до продвинутого.

Установка

npx -y skills add currents-dev/playwright-best-practices-skill --skill playwright-best-practices --agent claude-code

Playwright Best Practices

Комплексное руководство по всем аспектам разработки Playwright-тестов: от написания новых тестов до отладки и поддержки существующих наборов.

Справочник по деятельности

Написание новых тестов

Когда использовать: создание новых файлов тестов, написание тест-кейсов, реализация тестовых сценариев

ЗадачаСправочные файлы
E2E-тестыtest-suite-structure.md, locators.md, assertions-waiting.md
Компонентные тестыcomponent-testing.md, test-suite-structure.md
API-тестыapi-testing.md, test-suite-structure.md
GraphQL-тестыgraphql-testing.md, api-testing.md
Визуальные регрессионные тестыvisual-regression.md, canvas-webgl.md
Структурирование кода через POMpage-object-model.md, test-suite-structure.md
Настройка тестовых данных и фикстурfixtures-hooks.md, test-data.md
Аутентификацияauthentication.md, authentication-flows.md
Тестирование дата/времениclock-mocking.md
Загрузка и скачивание файловfile-operations.md, file-upload-download.md
Формы и валидацияforms-validation.md
Drag and dropdrag-drop.md
Доступность (accessibility)accessibility.md
Безопасность (XSS, CSRF)security-testing.md
Аннотации тестовannotations.md
Теги тестовtest-tags.md
iFramesiframes.md
Canvas/WebGLcanvas-webgl.md
Интернационализация (i18n)i18n.md
Electron-приложенияelectron.md
Браузерные расширенияbrowser-extensions.md

Мобильное и адаптивное тестирование

Когда использовать: тестирование мобильных устройств, жестов, адаптивных макетов

ЗадачаСправочные файлы
Эмуляция устройствmobile-testing.md
Жесты (swipe, tap)mobile-testing.md
Viewport и breakpointmobile-testing.md
Мобильный UImobile-testing.md, locators.md

Real-Time и Browser API

Когда использовать: WebSocket, геолокация, разрешения, многовкладочные сценарии

ЗадачаСправочные файлы
WebSocket / реальное времяwebsockets.md
Геолокацияbrowser-apis.md
Разрешения браузераbrowser-apis.md
Clipboardbrowser-apis.md
Камера / микрофонbrowser-apis.md
Многовкладочные и popup-сценарииmulti-context.md
OAuth popupthird-party.md, multi-context.md

Отладка и устранение проблем

Когда использовать: падения тестов, элемент не найден, таймауты, неожиданное поведение

ЗадачаСправочные файлы
Отладка упавших тестовdebugging.md, assertions-waiting.md
Нестабильные (flaky) тестыflaky-tests.md, debugging.md, assertions-waiting.md
Нестабильность при параллельном запускеflaky-tests.md, performance.md, fixtures-hooks.md
Изоляция тестов / утечка состоянияflaky-tests.md, fixtures-hooks.md, performance.md
Проблемы с селекторамиlocators.md, debugging.md
Таймаутыassertions-waiting.md, debugging.md
Trace viewerdebugging.md
Гонки состояний (race conditions)flaky-tests.md, debugging.md, assertions-waiting.md
Console / JS ошибкиconsole-errors.md, debugging.md

Тестирование ошибок и граничных случаев

ЗадачаСправочные файлы
Error boundarieserror-testing.md
Сетевые сбоиerror-testing.md, network-advanced.md
Офлайн-режимerror-testing.md, service-workers.md
Service workersservice-workers.md
Состояния загрузкиerror-testing.md
Валидация формerror-testing.md

Многопользовательское и совместное тестирование

ЗадачаСправочные файлы
Несколько пользователей в одном тестеmulti-user.md
Совместная работа в реальном времениmulti-user.md, websockets.md
Ролевой доступmulti-user.md
Параллельные действияmulti-user.md

Архитектурные решения

ЗадачаСправочные файлы
POM vs фикстурыpom-vs-fixtures.md
Выбор типа тестаtest-architecture.md
Mock vs реальные сервисыwhen-to-mock.md
Структура набора тестовtest-suite-structure.md

Тестирование фреймворков

ЗадачаСправочные файлы
React-приложенияreact.md
Angular-приложенияangular.md
Vue/Nuxt-приложенияvue.md
Next.js-приложенияnextjs.md

Инфраструктура и конфигурация

ЗадачаСправочные файлы
Настройка Playwright-проектаconfiguration.md, projects-dependencies.md
CI/CD-пайплайныci-cd.md, github-actions.md
GitHub Actionsgithub-actions.md
GitLab CIgitlab.md
Docker/контейнерыdocker.md
Глобальный setup и teardownglobal-setup.md
Зависимости проектовprojects-dependencies.md
Оптимизация производительности тестовperformance.md, test-suite-structure.md
Параллельное выполнениеparallel-sharding.md, performance.md
Покрытие тестамиtest-coverage.md
Отчёты и артефактыreporting.md

Дерево решений

Что вы делаете?
│
├─ Пишете новый тест?
│  ├─ E2E → core/test-suite-structure.md, core/locators.md, core/assertions-waiting.md
│  ├─ Компонентный → testing-patterns/component-testing.md
│  ├─ API → testing-patterns/api-testing.md
│  ├─ GraphQL → testing-patterns/graphql-testing.md
│  ├─ Визуальная регрессия → testing-patterns/visual-regression.md
│  ├─ Доступность → testing-patterns/accessibility.md
│  ├─ Мобильный / адаптивный → advanced/mobile-testing.md
│  ├─ i18n / локаль → testing-patterns/i18n.md
│  ├─ Electron → testing-patterns/electron.md
│  ├─ Браузерное расширение → testing-patterns/browser-extensions.md
│  ├─ Многопользовательский → advanced/multi-user.md
│  ├─ Форма с валидацией → testing-patterns/forms-validation.md
│  └─ Drag and drop → testing-patterns/drag-drop.md
│
├─ Тестируете конкретные возможности?
│  ├─ Загрузка/скачивание файлов → testing-patterns/file-operations.md
│  ├─ Дата/время → advanced/clock-mocking.md
│  ├─ WebSocket / реальное время → browser-apis/websockets.md
│  ├─ Геолокация / разрешения → browser-apis/browser-apis.md
│  ├─ OAuth/SSO мокинг → advanced/third-party.md
│  ├─ Платежи/email/SMS → advanced/third-party.md
│  ├─ iFrames → browser-apis/iframes.md
│  ├─ Canvas / WebGL / charts → testing-patterns/canvas-webgl.md
│  ├─ Service workers / PWA → browser-apis/service-workers.md
│  ├─ Безопасность (XSS, CSRF) → testing-patterns/security-testing.md
│  └─ Производительность / Web Vitals → testing-patterns/performance-testing.md
│
├─ Тест падает или нестабилен?
│  ├─ Расследование flaky-тестов → debugging/flaky-tests.md
│  ├─ Элемент не найден → core/locators.md
│  ├─ Таймауты → core/assertions-waiting.md
│  ├─ Race conditions → debugging/flaky-tests.md
│  ├─ Нестабильность при нескольких воркерах → debugging/flaky-tests.md, performance.md
│  ├─ Утечка состояния → debugging/flaky-tests.md, core/fixtures-hooks.md
│  ├─ Console/JS ошибки → debugging/console-errors.md
│  └─ Общая отладка → debugging/debugging.md
│
└─ Настройка инфраструктуры?
   ├─ CI/CD → infrastructure-ci-cd/ci-cd.md
   ├─ GitHub Actions → infrastructure-ci-cd/github-actions.md
   ├─ Docker → infrastructure-ci-cd/docker.md
   ├─ Шардирование / параллелизм → infrastructure-ci-cd/parallel-sharding.md
   ├─ Отчёты → infrastructure-ci-cd/reporting.md
   └─ Покрытие → infrastructure-ci-cd/test-coverage.md

Цикл проверки тестов

После написания или изменения тестов:

  1. Запустить тесты: npx playwright test --reporter=list
  2. Если тесты упали:
    • Изучить вывод ошибок и трассировку (npx playwright show-trace)
    • Исправить локаторы, ожидания или утверждения
    • Перезапустить тесты
  3. Переходить дальше только когда все тесты проходят
  4. Для критичных тестов — несколько прогонов: npx playwright test --repeat-each=5