PassFront
  1. PassFront
  2. База знаний
  3. E2E и инструменты

Что такое flaky-тесты и как с ними бороться?

E2E и инструменты

Flaky-тест — тест, который то проходит, то падает без изменений в коде. Такие тесты разрушают доверие к набору.

Частые причины

  • Жёсткие паузы sleep вместо ожидания условия.
  • Гонки между интерфейсом и сетью, неготовый DOM.
  • Зависимость от порядка тестов и общего состояния (база, localStorage).
  • Реальное время, случайные числа и внешние сервисы.
  • Нестабильные селекторы и анимации.

Как лечить

  • Ждать условие, а не время: автоожидание Playwright, findBy, waitFor.
  • Изолировать тесты: свежие данные и чистое состояние для каждого.
  • Подменять время и сеть, не обращаться к внешним сервисам.
  • Использовать стабильные селекторы по роли и тексту.
  • На CI включить повторный запуск с отчётом, чтобы ловить нестабильные тесты, и вести список на исправление.
// плохо
await page.waitForTimeout(3000);
// хорошо
await expect(page.getByText('Готово')).toBeVisible();

Коротко для собеседования

Flaky-тест — следствие гонок и общего состояния. Лечим ожиданием условий, изоляцией и подменой нестабильных зависимостей, а не повторными запусками.

Другие вопросы раздела