Проблема падающих автотестов, которая решилась одним методом

Привет, охотники! 🏹 После очередного релиза я заметила, что мои UI автотесты начали массово “падать” по таймауту, а иногда с click interception.

С функциональностью все хорошо, но автотесты упорно бежали вперед и пытались кликнуть на элемент, который был процессе прогрузки

На проекте мы практически не используем time sleep, так как они сильно увеличивают время прогона автотестов, поэтому я старалась всеми силами продлить поиск элемента для клика в автотестах неявными ожиданиями

В какой-то момент я поняла, что моему автотесту все равно на маску загрузки - элемент уже был в DOM и находился по методу find и wait_until_visible

Тогда ко мне пришло осознание, что все мои неявные ожидания с гигантскими таймаутами, заточенными под ожидание отображения элемента мгновенно проходили, и автотест перемещался на шаг click

Поняла я это не сразу (я пыталась фиксить ат два дня), но, когда поняла, решение оказалось очень простым - ставить ожидание не на отображение, а на скрытие! Более того завязываться надо было не на элемент, а на скрытие маски прогрузки (load mask)

Написав 1 метод, ожидающий, что load маска исчезла, и заменив все ретраи (retry_until_visible) на него - я решила проблему (и использовала при этом маленькие таймауты)

Поделитесь своими открытиями в автоматизации тестирования

Проблема падающих автотестов, которая решилась одним методом | Сетка — социальная сеть от hh.ru