Привет, мерзляки!
У нас вышел релиз Selenide 7.13.0, начинаем анбоксинг!
proxy.cleanupFilters()В селениде есть метод $.download(), который скачивает в браузере и возвращает этот файл. Полезно для тестирования всяких там отчётов, экселек, пдфок и тому подобного.
Сама по себе это крайне нетривиальная операция. Под капотом у селенида реализовано несколько алгоритмов (HTTPGET, PROXY, FOLDER, CDP), у каждого свои плюсы и минусы. Не все, например, работают с удалённым браузером.
Так вот, метод FOLDER до сих пор плохо работал с Selenium Grid, особенно когда скачиваемый файл большой (допустим, больше 100 мб). А также не было надёжного способа дождаться полного окончания загрузки.
Теперь всё стало гораздо лучше:
Пробовал скачивать из грида файлы аж до 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.
Возвращаясь к облакам. Селенид позволяет легко запускать браузер не только локально, а “удалённо”, т.е. на другой машине. На всяких там Selenium Grid, BrowserStack, LambdaTest, Saucelabs, Selenoid, Moon и т.д. Для этого надо всего лишь задать настройку remote:
Configuration.remote = "https://your-cloud-provider.com/wd/hub";
Иногда эти облака требуют сисурити, и тогда юзернейм-пароль можно прописать прямо в URL:
Configuration.remote = "https://username:pass...@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.
И подняли версию CDP с v142 до v143.
Лично для меня это большое событие, т.к. в этот релиз попало сразу несколько моих изменений, и все они как раз пригодились в нашем сегодняшнем релизе:
См. PR 3202
Ну что,
Праздник уже стучится к вам?
14.12.25