Установка скиллов и плагинов OpenClaw осуществляется на ваш страх и риск. Все файлы были получены из открытых источников и предоставляются «как есть». Мы не гарантируем их корректную работу, безопасность или совместимость с вашей системой. Перед установкой настоятельно рекомендуется ознакомиться с содержимым кода и убедиться, что вы понимаете, какие изменения будут внесены в вашу систему.
Создавайте надежные, быстрые и поддерживаемые end-to-end тесты с использованием Playwright и Cypress. Такие тесты дают уверенность при релизе, позволяют находить регрессии раньше пользователей и обеспечивают стабильность CI/CD пайплайнов.
Что внутри
- Рекомендации по тестовой пирамиде (когда использовать E2E, а когда — нет)
- Ключевые принципы: поведение важнее реализации, независимость тестов, детерминированные ожидания
- Паттерны Playwright и Cypress
- Стратегии выбора селекторов
- Визуальное и accessibility-тестирование
- Подходы к отладке и устранению flaky-тестов
- Интеграция с CI/CD
Когда использовать E2E тесты
- Тестирование критических пользовательских сценариев (логин, регистрация, checkout)
- Отладка нестабильных (flaky) тестов
- Настройка CI/CD пайплайнов с браузерными тестами
- Проверка сложных пользовательских взаимодействий
- Выбор между unit / integration / E2E тестированием
Пирамида тестирования
/\ /E2E\ ← Мало: только критические сценарии /─────\ /Integr\ ← Больше: взаимодействия компонентов /────────\ /Unit Tests\ ← Много: быстрые и изолированные тесты /────────────\
Правило: если поломка функции критична для бизнеса — покрывайте E2E тестом. Если нет — используйте более быстрые уровни тестирования.
Что тестировать с помощью E2E
- Ключевые пользовательские сценарии (login → dashboard → действие)
- Многошаговые процессы (онбординг, checkout)
- Интеграцию с реальными API
- Кроссбраузерную совместимость
- Аутентификацию и авторизацию
Что НЕ тестировать через E2E
- Логику на уровне функций (используйте unit-тесты)
- API-контракты (integration-тесты)
- Крайние случаи (слишком медленно)
- Внутреннюю реализацию
Ключевые принципы
- Тестируйте поведение, а не реализацию — проверяйте то, что видит пользователь
- Независимость тестов — каждый тест сам создает и очищает данные
- Детерминированные ожидания — никаких фиксированных таймаутов
- Стабильные селекторы — используйте роли, label и data-testid
- Скорость — параллелизация, мокирование и оптимизация
Стратегия селекторов
Приоритет выбора селекторов:
- Роли (getByRole)
- Label (getByLabel)
- data-testid
- Текст
- CSS-классы (избегать)
Паттерны Playwright
Пример конфигурации:
// playwright.config.ts
import { defineConfig, devices } from "@playwright/test";
export default defineConfig({
testDir: "./e2e",
timeout: 30000,
expect: { timeout: 5000 },
fullyParallel: true,
retries: process.env.CI ? 2 : 0,
use: {
baseURL: "http://localhost:3000",
trace: "on-first-retry",
screenshot: "only-on-failure"
}
});
Рекомендуется использовать Page Object Model для инкапсуляции логики страниц и повышения поддерживаемости тестов.
Паттерны Cypress
- Создание кастомных команд
- Перехват сетевых запросов
- Мокирование API
Борьба с flaky-тестами
- Избегайте фиксированных ожиданий (waitForTimeout)
- Используйте ожидания по состоянию (waitFor)
- Изолируйте тесты
- Устраняйте гонки данных
- Добавляйте трассировку и логи
Отладка тестов
- Запуск в headed-режиме
- Использование trace viewer
- Скриншоты и видео при падениях
- Пошаговое выполнение тестов
Дополнительные практики
- Визуальное регрессионное тестирование
- Accessibility-проверки (axe-core)
- Параллельный запуск тестов
- CI/CD интеграция (например, GitHub Actions)
Вывод
E2E тесты — это инструмент для проверки того, что система работает целиком. Они должны покрывать только критические пользовательские сценарии, быть быстрыми, стабильными и легко поддерживаемыми. Правильное применение паттернов позволяет избежать flaky-тестов и значительно повысить уверенность в релизах.
Файл из источника