Выбор ответа Middle Тестирование обновлено

Ожидания в Playwright

Вопрос

E2E-тест в Playwright иногда падает: кнопка ещё не активна, когда по ней кликают. Что правильно?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Локатор getByRole(...).click() и expect(locator).toBeEnabled(). Действия Playwright с локаторами ждут, пока элемент станет видимым, стабильным и доступным для клика, а проверки expect(locator) переповторяются.

Варианты ответа

  1. Добавить await page.waitForTimeout(3000) перед каждым кликом по кнопке
  2. Локатор getByRole(...).click() и expect(locator).toBeEnabled()правильный ответ
  3. Увеличить таймаут всего теста до 5 минут
  4. Перезапускать тест в CI, пока не пройдёт

Разбор

Действия Playwright с локаторами ждут, пока элемент станет видимым, стабильным и доступным для клика, а проверки expect(locator) переповторяются. Фиксированная пауза либо слишком короткая (тест флакает), либо слишком длинная (тесты медленные).

  • waitForTimeout маскирует проблему и замедляет прогон.
  • Большой таймаут не устраняет гонку, только дольше ждёт падения.
  • Ретраи прячут флаки, причину всё равно нужно найти.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.