Добреньки, пановне да паночки!
Я с благими вестями: давеча нарелизили мы Selenide 7.11.1.
Вы уже пять с половиной недель пилите бессмысленный релиз, для которого настоящей мощной команде потребовалось бы менее недели. Это нисколько не украшает проект.
Знаете, вы выглядите неважно.
Вы бумажный тигр?
Да, изменения больше внутренние да технические. Но кое-что сломаться можно и у вас. ;)
- Выключаем плавную прокрутку
- Исправили использование
Augmenter
- Порефакторили
ScreenShotLaboratory
- Удалили хак для
HostIdentifier
- Публикуйте джарники без подписи
- Обновили Selenium с 4.35.0 на 4.36.0
- Обновили JUnit с 5.x до 6.0.0
Выключаем плавную прокрутку
Иногда тесты могут флакать из-за того, что пытаются кликнуть какой-то элемент - а он движется. Движется из-за того, что дизайном предусмотрена плавная прокрутка (“smooth scrolling”).
Теперь Селенид по умолчанию добавляет специальный ключик:
- Хрому -
--disable-smooth-scrolling
, - а Фаерфоксу -
general.smoothScroll=false
.
Они выключают плавную прокрутку, даже если она включена в CSS. Теперь клик должен работать стабильно.
Для остальных браузеров соответствующей настройки не нашли, но вы всегда можете дёрнуть селенидовский метод для прокрутки:
$.scrollIntoView(instant());
См. issue 2850 и PR 3119.
Исправили использование Augmenter
Иногда Селенид мог выплёвывать такую ошибку:
ConnectionFailedException: JdkWebSocket initial request execution error
Летела она из метода WebdriverUnwrapper.unwrap
и дальше по цепочку из селениумовского класса Augmenter
.
Случается это, если вы запускаете браузер в каком-нибудь Grid или другом облаке, и порт CDP недоступен с тестовой тачки.
Настоящий фикс будет в селениуме, если его когда-нибудь всё-таки смержат.
А пока что мы подправили код селенида, так что теперь мы дёргаем Augmenter
в более правильные моменты.
NB! Если вы в своём коде сами создаёте new RemoteWebDriver
, то лучше сразу же заверните его в Augmenter.augment
:
RemoteWebDriver webDriver = new RemoteWebDriver(gridUrl, options);
webDriver.setFileDetector(new LocalFileDetector());
return new Augmenter().augment(webDriver); // Вот это надо добавить, если ещё нет
Без этого ваш RemoteWebDriver
не реализует интерфейсы HasBiDi
, HasDevTools
, HasLogEvents
и т.д. - и соответствующие методы у вас перестанут работать.
См. issue 3107 и PR 3114.
UPD Вдогонку, мы выпустили фикс 7.11.1, в который сразу влили тот самый патч для селениума.
Порефакторили ScreenShotLaboratory
Мы тут чутка порефакторили класс ScreenShotLaboratory
- сделали так, чтобы его можно было легко переопределить. И подсунуть SelenideDriver
свой инстанс.
Спасибо Matthias Kurz за PR 3128, PR 3130, PR 3131, PR 3134 и PR 3135.
Удалили хак для HostIdentifier
В далёком 2021 году я добавил хак в селениде,
чтобы обойти проблему с HostIdentifier
, о которой я рассказывал в девклубе.
Но этот хак имеет сайд-эффекты. Иногда можно в логах можно было узреть вот такое:
WARNING: Failed to resolve host address
java.net.UnknownHostException: gitrun1: gitrun1: Name or service not known
at java.base/java.net.InetAddress.getLocalHost(InetAddress.java:1936)
at org.openqa.selenium.net.HostIdentifier.resolveHostAddress(HostIdentifier.java:107)
at org.openqa.selenium.net.HostIdentifier.getHostAddress(HostIdentifier.java:126)
at com.codeborne.selenide.drivercommands.CreateDriverCommand.lambda$createDriver$0(CreateDriverCommand.java:46)
...
at com.codeborne.selenide.Selenide.open(Selenide.java:50)
Позже проблему с HostIdentifier
в селениуме всё-таки исправили, так что хак больше не нужен. Вот мы его и удалили.
См. PR 3113.
Публикуйте джарники без подписи
Если вы хотите как-то менять Селенид и собирать локально, для этого достаточно просто запустить:
./gradlew
# ну или без тестов, чтобы побыстрее:
./gradlew publishToMavenLocal -x test
Эта команда собирает селенидовские бинарники и публикует в локальный мавеновский репозиторий. Но оказалось, что команда ломалась, если у вас не настроены ключи для подписи - а они вам нафиг не нужны, если вы не собираетесь публиковать в центральный мавеновский репозиторий.
В общем, теперь команда снова работает и без всяких ключей. Собирайте на здоровье. Не забудьте только засабмитить пулреквест, ведь ваше изменение будет полезно и остальным, правда? ;)
См. issue 3127 и PR 3132.
Обновили Selenium с 4.35.0 на 4.36.0
И подняли версию CDP с v139 до v140.
См. PR 3133
Обновили JUnit с 5.x до 6.0.0
Говорят, хороший релиз. Требует Java 17 и поддерживает аннотации JSpecify.
Да, теперь библиотека JUnit5 будет шестой версии. :)
См. PR 3125
По итогу релиз не привносит каких ярких фич, но зато под капотом - мощь же! Важные технические изменения, без которых никуда. Может, хоть тут всё-таки медведь? :)
ru.selenide.org
04.10.25