Здоровендос!
Шёл третий день карантина.
Чтобы вам не было одиноко, мы выпустили Selenide 5.10.0 с кучей улучшений, некоторые из которых даже окажутся капельку обратно несовместимыми. Ну, чтобы вы не скучали в своих берлогах.
Добавили поддержку Shadow DOM
См. примеры в тестах:
$(shadowCss("#anyButton", "#shadow-host")).click();
$(shadowCss("p", "#shadow-host")).shouldHave(text("Inside Shadow-DOM"));
$(shadowCss("p", "#shadow-host", "#inner-shadow-host")).shouldHave(text("The Shadow-DOM inside another shadow tree"));
Firefox: Вызов setValue("test")
/ val("text")
на input элементе выкидывает ошибку “not reachable by keyboard”.
Как временное решение, можно использовать fastSetValue=true
:
Configuration.fastSetValue = true;
$(shadowCss("input", "#shadow-host")).setValue("test");
См. issue 1014.
Спасибо Dmytro Stekanov за PR 1090.
Selenide больше не тянет BrowserUpProxy по умолчанию
Изначально это предложил Алексей Баранцев, так что бейте его, если что. :)
Мы сопоставили вместе два факта:
- Селенид по умолчанию тянет за собой BrowserUpProxy и его зависимости - всего ~17 мегабайт.
- Большинство пользователей (наверное) не использует селенидовский прокси.
и решили обрадовать Грету Тумберг и не качать эти 17 мегабайт по умолчанию.
Зависимость
Те из вас, кто использует прокси, просто должны добавить в свой проект ещё одну зависимость:
testRuntime 'com.browserup:browserup-proxy-core:2.0.1'
(у многих из вас она и так уже есть).
Если вы забудете добавить зависимость - не беспокойтесь, вы увидите понятное сообщение:
java.lang.IllegalStateException: Cannot initialize proxy. Probably you should add BrowserUpProxy dependency to your project.
at com.codeborne.selenide.drivercommands.CreateDriverCommand.createDriver(CreateDriverCommand.java:44)
...
at com.codeborne.selenide.Selenide.open(Selenide.java:41)
caused by: java.lang.NoClassDefFoundError: com/browserup/bup/BrowserUpProxy
См. issue 1021 и PR 1094.
UPD 12.03.2023
В наше время больше не нужно добавлять ту зависимость browserup-proxy-core
.
Просто используйте com.codeborne:selenide-proxy
вместо com.codeborne:selenide
, и все нужные зависимости подтянутся автоматически.
Просто из интереса
Кто же там сжирает эти 17 мегабайт, спросите вы? А вот кто.
Вот полный список файлов, которые должны у вас пропасть из проекта. Список впечатляет, правда?
- animal-sniffer-annotations-1.17.jar
- barchart-udt-bundle-2.3.0.jar
- bcpkix-jdk15on-1.62.jar
- bcprov-jdk15on-1.62.jar
- browserup-proxy-core-2.0.1.jar
- browserup-proxy-mitm-2.0.1.jar
- checker-qual-2.5.2.jar
- dec-0.1.2.jar
- dnsjava-2.1.9.jar
- error_prone_annotations-2.2.0.jar
- failureaccess-1.0.1.jar
- guava-27.1-jre.jar
- jackson-annotations-2.9.9.jar
- jackson-core-2.9.9.jar
- jackson-databind-2.9.9.1.jar
- javassist-3.25.0-GA.jar
- javax.activation-api-1.2.0.jar
- jaxb-api-2.3.1.jar
- jcl-over-slf4j-1.7.28.jar
- jsr305-3.0.2.jar
- jzlib-1.1.3.jar
- listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
- littleproxy-2.0.0-beta-5.jar
- netty-all-4.1.39.Final.jar
Кто придумал название “animal-sniffer”? Это что вообще такое - нюхальщик животных?
Поменяли Guava API на соответствующие Java API
Мы просто поменяли
com.google.common.base.Predicate
из Guava- на
java.util.function.Predicate
из Java 8
и выкинули Guava. Guava, ты была хороша и сделала много полезного (пока не вышла Java 8). Покойся с миром.
Если вы реализовали свои CollectionCondition
, вам придётся метод apply
переименовать в test
. Это должно быть легко.
См. issue 1091.
Спасибо Wladimir Schmidt за PR 1091.
Сделали селенидовский отчёт в Allure чуточку красивее
На самом деле просто добавили кавычки вокруг селекторов.
Не представляю, зачем это может понадобиться, но теперь можно копировать селекторы из аллюровского отчёта и вставлять в
developer console браузера, и они будут работать.
См. issue 1032.
Спасибо Dmytro Stekanov за PR 1092.
Добавили условие $("img").shouldBe(image)
Позволяет проверить, что картинка есть, она загрузилась и всё в порядке.
См. примеры в тестах:
$("#valid-image img").shouldBe(image);
$("#valid-image").shouldNotBe(image);
$("h1").shouldNotBe(image);
См. issue 1069.
Спасибо Dmytro Stekanov за PR 1086.
Исправили поиск элементов по атрибуту, который содержит кавычки
Я не знаю, каким надо быть извращенцем, чтобы в html атрибут запихать кавычки, но такие нашлись. А селенид оказался к этому не готов и генерировал невалидный CSS локатор. Теперь это в прошлом.
См. issue 1060.
Спасибо Denys Lystopadskyy за PR 1062.
Видосики
Немногие задумывались об этом, но возможно, SeleniumCamp 2020 - Последняя Конференция Человечества.
Но они ещё и последние альтруисты человечества, потому что из-за карантина они досрочно выложили
все видео с последней конференции в открытый доступ.
Лечитесь, айтишники, и просвещайтесь!
Там есть три моих доклада:
- Flaky tests: The method
- BOF: прошлое и будущее селенида
- Тройничок: Selenide для Web, Android и iOS – “Толерантные локаторы”!
И ещё из того, что я успел заметить:
- Aleksei Tiurin - Solving the problems of Espresso Android autotests
- Michael Bodnarchuk - Puppeteer is a new WebDriver? Secrets of flawless testing.
- Oleksandr Khotemskyi - WebdriverIO + Puppeteer. Double gun – double fun
- Sergey Pirogov - Test coverage myth busted
- Mikalai Alimenkou - Static analysis tools as the best friend of QA
ru.selenide.org
18.03.20