Столкнулся с такой проблемой, что при фильтрации или сортировке таблиц(строки таблиц - представлены в виде объектов с String полями) - список не успевает изменится и, как правило, в список подгружаются старые значения (из списка до фильтрации или сортировки) - 2-3 значения в 1-ой строке, но из-за этого падают тесты, т.к. после сортировки или фильтрации сравниваю список с фронта и список в БД через Assertions.assertEquals, подскажите как быть? Selenide.sleep() - помогает, но если запускать параллельные тесты через JUNIT5 - бывает, что падают.
Может ждать выполнения каких-либо запросов (AJAX) или ждать изменения элементов в DOM - если так оно и есть, прошу помочь с написанием кода
В селениде ровно для этого есть методы проверки коллекций:
$$(). shouldHave(texts(“one”, “two”, “three”));
Эти проверки имеют встроенный механизм ожидания. Они дождутся, когда список обновится.
а как я узнаю какой текст ждать?
Ээээ… Странный вопрос.
Вы же пишите тест, так? Ваш тест должен знать, какой текст ждать. Ваш тест - это же спецификация.
А откуда вы сейчас узнаёте, какой текст ждать?
сталкивалась с такой ситуацией, когда ориентира в виде текста нет, так как содержимое таблицы периодически менялось. Тогда я сделала ожидание что в таблице загрузится определенное кол-во значений, и только после это findElements отрабатывал. Например ждете до тех пор пока таблица загрузит 10значений в своих ячейках, за это время отфильтрованные значения успеют корректно загрузиться
Это в селениде делается ещё проще:
$$(). shouldHave(sizeGreaterThan(10));
НО по-моему, эта проверка может быть ненадёжна: ведь в таблице и до этого было больше 10 строк.
Да, в моем случае при сортировке, фильтровании, при любой манипуляции таблица сначала загружала ячейки с пустыми значениями, а потом только заполняла их (хоть и визуально этого было не видно)