Вышла Selenide 7.13.0

Вышла Selenide 7.13.0

Качаем облака
14.12.25

Привет, мерзляки!

У нас вышел релиз Selenide 7.13.0, начинаем анбоксинг!



Смачно забафали скачивание файлов из Selenium Grid

В селениде есть метод $.download(), который скачивает в браузере и возвращает этот файл. Полезно для тестирования всяких там отчётов, экселек, пдфок и тому подобного.

Сама по себе это крайне нетривиальная операция. Под капотом у селенида реализовано несколько алгоритмов (HTTPGET, PROXY, FOLDER, CDP), у каждого свои плюсы и минусы. Не все, например, работают с удалённым браузером.

Так вот, метод FOLDER до сих пор плохо работал с Selenium Grid, особенно когда скачиваемый файл большой (допустим, больше 100 мб). А также не было надёжного способа дождаться полного окончания загрузки.

Теперь всё стало гораздо лучше:

  1. Мы можем отслеживать окончание загрузки по дате изменения файла (благодаря PR 16589), и
  2. Скачивание больших файлов кардинально ускорилось (благодаря PR 16627).

Пробовал скачивать из грида файлы аж до 4 гигабайт - летит с сервера, как из пушки. :)

См. PR 3207.


Ещё одно улучшение для скачивания больших файлов. Для таких файлов разумно задать большой таймаут, но небольшой “increment timeout”:

File pdf = $("#report").download(using(FOLDER)
  .withTimeout(ofMinutes(10))
  .withIncrementTimeout(ofSeconds(5))
  .withName("report.pdf"));

В этом случае общий таймаут на скачивание 10 минут, НО если в течение 5 секунд не было никаких изменений в папке для скачивания, то метод выкинет ошибку сразу.

Так вот, если ссылка #report вообще не найдена, то метод падал через 10 минут. Это всё-таки слишком долго, если тупо ошибся локатором. А теперь будет падать через 5 секунд.

См. issue 3175 и PR 3212.


Маскируем пароли в URL облака

Возвращаясь к облакам. Селенид позволяет легко запускать браузер не только локально, а “удалённо”, т.е. на другой машине. На всяких там Selenium Grid, BrowserStack, LambdaTest, Saucelabs, Selenoid, Moon и т.д. Для этого надо всего лишь задать настройку remote:

Configuration.remote = "https://your-cloud-provider.com/wd/hub";

Иногда эти облака требуют сисурити, и тогда юзернейм-пароль можно прописать прямо в URL:

Configuration.remote = "https://username:password@your-cloud-provider.com/wd/hub";

Проблема в том, что селенид писал этот урл в логи, выставляя сисурити напоказ. Теперь будет маскировать:

23:00:10:763 [main] DEBUG WebDriverFactory - Creating webdriver in thread 1: 
  browser=chrome, browser.version=null, browser.size=1200x960,
  remote=http://***:***@localhost:43008/wd/hub

См. issue 3210 и PR 3213.


Добавили метод proxy.cleanupFilters()

Удобно, чтобы удалить любые кастомные фильтры, добавленные вашими тестами. Для удаления фильтров и раньше были методы proxy.removeRequestFilter(name) и proxy.removeResponseFilter(name), но теперь их можно будет удалять проще, и не парясь с именами. Просто в конце каждого теста:

  @AfterEach final void done() {
    getSelenideProxy().cleanupFilters();
  } 

См. issue 3211 и PR 3215.


Удалили ворнинг о размере респонса

Когда вы включаете селенидовский прокси, он среди прочего начинал отслеживать размер запроса или ответа сервера, и писал ворнинги, если размер превышал 2 мб. Когда-то это казалось хорошей идеей, но теперь мы решили, что это не входит в зону ответственности селенида. У вас наверняка есть более подходящие средства мониторинга и оптимизации. А наш прокси без них будет эффективнее работать.

Но если вам прямо очень нравились эти предупреждалки, может сами добавить в прокси точно такие же фильтры, но в своих тестах.

См. PR 3215.


Добавили префикс селенидовским прокси фильтрам

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

Для этого в прокси можно добавлять свои фильтры, каждый под свои уникальным именем (чтобы можно было потом его удалить). У селенида есть несколько своих фильтров, которые удалять не рекомендуется.

Теперь у них всех будет одинаковый префикс “selenide.proxy.filter.”, чтобы вы их точно со своими не перепутали.

См. issue 3211 и PR 3215.


Пофиксили рассинхрон видео

В селениде уже год как есть видео рекордер, но недавно обнаружили одну проблему. Проявлялась она с высоким FPS, но медленным браузером.

Если вы запросили снимать видео с FPS=30, а браузер тормозил и смог делать только по 10 скриншотов в секунду, то итоговое видео получалось в 3 раза быстрее, чем в реальности. :)

Теперь видео должно быть нормальной скорости.

См. issue 3189 и PR 3197.


Обновили Selenium с 4.38.0 на 4.39.0

И подняли версию CDP с v142 до v143.

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

См. PR 3202



Ну что,
Праздник уже стучится к вам?


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

ru.selenide.org

14.12.25