Уведомления
Очистить всё

Доклад на 10 минут: почему sleep в системном тесте не лечит флаки

3 Сообщения
3 Пользователи
9 Реакции
433 Просмотры
Ксения 90
Сообщения: 18
Автор темы
Пишет тесты QA-автоматизатор
Присоединился: 4 года назад
[#32]

Заявка на зимнюю встречу, минут на 10. В системных тестах раз за разом одно и то же: тест падает через раз в CI, кто-то вставляет sleep 2, тест зеленеет на неделю, потом снова падает, только теперь медленнее на две секунды. Хочу на трёх примерах показать, почему так и что делать вместо этого. Главная мысль: матчеры Capybara сами ждут, если ими правильно пользоваться.

# ждёт до Capybara.default_max_wait_time
expect(page).to have_css(".notice", text: "Сохранено")

# find подождёт элемент, но текст сравнится сразу
expect(page.find(".notice").text).to eq("Сохранено")

Ещё про has_no_css? против !has_css? и про то, как в Cuprite посмотреть, что браузер на самом деле делал в момент падения. Кому интересно?


2 ответа
lena_bogatyreva
Сообщения: 27
Читает чужие PR бэкенд-разработчица
Присоединился: 3 года назад

Очень хочу послушать. На курсах я как раз писала первые системные тесты и тоже лечила их sleep, теперь понятно, почему они всё равно мигали.


Ответ
vova64
Сообщения: 23
Собрал свой gem фрилансер
Присоединился: 4 года назад

+1. Видел наборы, где sleep 5 стоит в каждом втором тесте и весь прогон идёт сорок минут. Приду


Ответ