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

Почему тест флаки

Вопрос

E2E-тест иногда падает в CI, локально проходит всегда. Какое исправление правильное?

await page.click('text=Сохранить');
await page.waitForTimeout(500);
const text = await page.textContent('.toast');
expect(text).toBe('Сохранено');

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

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

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

Коротко

Правильный ответ: Ждать условия: expect(locator('.toast')).toHaveText(...). Фиксированная пауза угадывает время ответа сервера: в медленном CI 500 мс не хватает.

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

  1. Увеличить waitForTimeout до 3000, чтобы CI успевал
  2. Перезапускать упавший тест до трёх раз и считать его зелёным
  3. Запускать e2e только локально, где тест стабилен
  4. Ждать условия: expect(locator('.toast')).toHaveText(...)правильный ответ

Разбор

Фиксированная пауза угадывает время ответа сервера: в медленном CI 500 мс не хватает. Web-first проверка Playwright сама повторяет попытки до таймаута и проходит, как только тост появился.

  • Пауза в 3 секунды замедлит тест и всё равно не гарантирует успех.
  • Ретраи маскируют проблему, их используют как временную меру и с отчётом о флаки.
  • Отказ от e2e в CI убирает проверку, а не причину.

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

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