Вышла Selenide 7.15.0

Вышла Selenide 7.15.0

Эпическая Ява / Java Roar
11.03.26

Привет!

У нас вышел релиз Selenide 7.15.0!

Буквально несколько минут назад мы начали Операцию “Эпическая Ява”.
Огромный новый релиз нашей Java-библиотеки.
Никто не делает Java-библиотеки так, как мы. Никто.
Мы исправили баги. Мы уничтожили медленный код. Полностью.
А производительность? Потрясающая производительность. Лучшая из всех, что вы когда-либо видели.


Скачивать файл без контента

В селениде есть метод $.download(), позволяющий из теста скачать файл. Обычно это стоит делать для того, чтобы проверить название и содержимое скачанного файла. Или хотя бы формат (pdf/xls/csv/…).

Но иногда эти файлы бывают огромные, а в тесте мы просто хотим проверить, что файл скачивается без ошибок - и не засорять диск. В таких случаях теперь можно будет скачивать файл без содержимого:

File distribution = $.download(file().withoutContent());
assertThat(distribution).hasExtensions("zip");

Особенно это актуально, когда браузер бежит не локально, на каком-нибудь гриде. Вспоминаем проблему со скачиванием больших файлов из грида.

P.S. Но вообще случай редкий. Так-то я скорее советую не качать слишком большие файлы в тестах. И настроить тестовую среду, чтобы в ней всё быстро скачивалось. И настроить CI так, чтобы артифакты предыдущих билдов вовремя подчищались и не засоряли диск.

См. PR 3264.


Chrome driver в режие “remote debugger”

Оказалось, что селенид неправильно запускал Хром, если вы добавляли ему ключик debuggerAddress:

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("debuggerAddress", "127.0.0.1:9222");

Теперь запускает без проблем.

Вообще это интересный ключик: он говорит вебдрайверу не запускать новый браузер, а подключиться к уже запущенному браузеру. Никогда этим не пользовался ¯¯\(ツ)/¯¯

См. issue 3265 и PR 3266.


Скриншоты в Хроме, когда CDP выклюен

Начиная с версии Chrome 144, CDP по умолчанию выключен. А Селенид пытался его использовать для видео и скриншотов - и падал. Теперь при выключенном CDP Селенид не падает, а переключается в старый добрый вебдрайверовский метод getScreenshotAs.

См. issue 3243 и PR 3245.


Ограничили время выполнения всех команд

При скачивании огромных файлов из Грида такая команда могла подвиснуть надолго:

File distribution = $.download(); // from Grid with some networking issues

Ну, если там какие-то непредвиденные проблемы с сеткой и т.п.

Вся проблема в том, что у Селенида есть таймаут на любую команду, но проверялся он только при ретрае. А вот если подвисло выполнение самой первой попытки, то таймаут не форсился.

Теперь Селенид насильно прерывает выполнение любой команды, если она длиться дольше, чем N+5 секунд (5 - чисто на всякий случай).

$.shouldBe(visible);  // Прервётся через 4+5 секунд
$.shouldBe(visible, Duration.ofSeconds(50));  // Прервётся через 50+5 секунд
$.download(file().withTimeout(ofMinutes(3)));  // Прервётся через 3 минуты и 5 секунд

См. issue 3251 и PR 3263.


Размер видео, когда окно браузера менялось в течение теста

Про наш видео рекордер вы уже наслышаны. Для простоты, мы с самого начала сделали допущение, что размер браузера в течение теста не меняется.

Теперь мы доработали алгоритм.

Если в течение теста размер браузера меняется (а значит, мы снимает пачку скриншотов разного размера), то теперь селенид смонтирует видео с размерами самого большого скриншота, так что все они поместятся на видео.

См. PR 3262.


Условие “OR” для исчезнувших элементов

Обычное я советую не использовать or в тестах. Тест ведь должен точно знать ожидаемое поведение приложения.

В селениде есть условие or, позволяющее проверить одно из условий. И там оказалась логическая ошибка в случае, когда искомые элемент был, да сплыл. :)

Обычная проверка для исчезнувшего элемента работает:

$("#missing").should(disappear);

А вот or проверка - нет:

$("#missing").should(disappear.or(text("I don't exist")));

Эта строчка кидала Element not found {#missing} (и это нелогично).
А теперь будет работать без ошибок.

См. issue 3255 и PR 3256.


Обновили Selenium с 4.40.0 на 4.41.0

И подняли версию CDP с v144 до v145.

Ченджлог

См. PR 3252




Андрей Солнцев

ru.selenide.org

11.03.26