как такое может быть? условно даже твой кейс. ты подготовил данные для теста, ты 100% знаешь что вот сейчас оно в состоянии А. ну и мб даже отдельно это проверяешь. далее ты совершаешь какое то действие (не важно какое) и точно знаешь что должно настать состояние Б. есть ли разница всего что происходит между если изначальная цель проверка изменения состояний А->Б?
конечно, можно возразить что нам нужна обратная история, например когда мы что то делаем а состояние не меняется. но это даже спиннером на стороне UI не отловишь, больно хрупко. здесь только конфиг и понимание что вот если за условные 30 секунд оно не изменилось - значит все так как и должно быть
то же самое с негативными кейсами, когда что то не случилось (и не должно было). тоже только ждать столько сколько тестировщик посчитает нужным. на основании конфига окружения и знания проекта
а вдруг твой спиннер (который теоретически должен включаться пока идет запрос и рендеринг данных) не работает как надо. или спиннер появился/исчез, но запрос отработал с ошибкой, а интерфейс это никак не показал. и нафиг тогда спрашивается нужен этот спиннер. его отдельно проверить с кейсом понижения bandwidth и большом количестве данных, чтобы точно отобразился и все.
если спиннер знает, когда данные загрузились (мы верим ему), но не можем его поймать, нужно тот же самый обработчик события, который убирает спиннер, на него повесить персистентное состояние элемента на странице, чтобы тест его нашел. все =)
нет, я не пытаюсь тестить спиннер, если фронтенд имеет eventual consistency на каком-то событии, то вместо тестирования быстрой жизни элемента, колбек должен где-то сообщить о себе в виде лейбла / принта / етс
а вот это уже архитектурный вопрос, и зачастую он важнее тестов, спиннеров и вот этого вот всего. изолированность тестов/данных, а так же полное понимание что на входе а что на выходе - гарантия успеха