Вышла Selenide 5.18.0

Вышла Selenide 5.18.0

Несанкционированный релиз
23.01.21

Ура, товарищи!

На дворе 23 января.

Несанкционированные релизы сейчас запрещены, поэтому сегодня у нас просто негативное падение номера версии. Обновляйтесь: Selenide 5.18.0.

Приглашаю вас на маленькую виртуальную экскурсию по изменениям в 5.18.0.
Устраивайтесь поудобнее.


Выключили логи вебдрайвера по умолчанию

Начиная с версии 5.13.0, Selenide писал логи вебдрайвера в файлы build/reports/tests/webdriver.uuid.log.
Тогда это казалось полезным, но оказалось, что логи эти занимают довольно много места и особо никого не интересуют. Поэтому мы всё-таки решили не включать их по умолчанию.

Логи вебдрайвера отправляются в комнату для мусора.

Если надо, вы всегда можете включить эти логи настройкой
Configuration.webdriverLogsEnabled = true.

См. issue 1365 и PR 1379.


Заменили тип параметра “timeout” с Long на Duration

… в методах коллекций. Теперь вместо

$$.shouldHave(texts(...), 5000);

модно будет писать

$$.shouldHave(texts(...), Duration.ofSeconds(5));

См. issue 1377.
Спасибо Ostap Oleksyn за PR 1377.


Ускорили поиск вложенных элементов в shadow dom

Одна из фич, которые есть Selenide, но нет в Selenium webdriver - это shadow dom:

$(shadowCss("p", "#shadow-host", "#inner-shadow-host"))
    .shouldHave(text("The Shadow-DOM inside another shadow tree"));

В дереве DOM может быть сколько угодно shadow root внутри других shadow root.

Чтобы найти все элементы внутри всех вложенных shadow root, метод $(shadowCss()) вызывал в цикле
хитрый JavaScript код для каждого shadow root по отдельности. И это может быть медленно, потому что каждый вызов webdriver занимает время.

Теперь $(shadowCss()) дёргает ещё более хитрый рекурсивный JavaScript, который находит все элементы во всех shadow dom за один вызов.

См. PR 1373.

Отдельное спасибо sakamoto66 за issue 1246 и PR 1233. К сожалению, он не был влит, но дал нам пищу для размышлений.


Исправили проверки $.shouldNot(and(...)) и $.shouldNot(or(...))

Пользователь pavelpp обнаружил в селениде багу, комбинируя not с условиями and и or:

$(".lolkek").shouldNotBe(visible, ofSeconds(5));   // работает
$(".lolkek").shouldNotBe(and("foo", visible));     // падает
$(".lolkek").shouldNotBe(or("foo", visible));      // падает

Не отвертишься. Пришлось чинить.

См. issue 1369 и PR 1370.

Кстати, мы запретили and и or только с одним условием. То есть теперь строка or("foo", visible) не скомпилируется. Придётся написать как минимум два условия: or("foo", visible, enabled).

Согласитесь, это логично. Зачем нам выбор из одного?


Обнаруживаем конфликт в настройке “browserName”

Так уж вышло, что для задания браузера есть две разных настройки:

  1. Главная - Configuration.browser
  2. Другая - Configuration.browserCapabilities["browserName"] (не знаю, зачем она вообще нужна)

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

IllegalArgumentException: Conflicting browser name: 'chrome' vs. 'firefox'

Подчёркиваю: настройки Configuration.browser должно хватать во всех случаях, поэтому вторую не надо никуда пихать.

См. issue 1366 и PR 1374.


Починили показ таймаута в отчёте

Недавно мы добавили в методы $.should* параметр timeout с типом Duration. А потом оказалось, что он непонятно отображался в отчётах.
Например, строка $("h1").shouldBe(visible, Duration.ofSeconds(1)) в отчёте выглядела так:

$("h1") should be([visible, PT1M])

И хотя эта “PT1M” на самом деле отвечает стандарту ISO и означает “time period 1 minute”, мы всё же заменили её на более понятные “300 ms”, “1s”, “1.500 s.” и т.п.

См. issue 1376 и PR 1378.


Обновились на WebDriverManager 4.3.1

Как обычно, изменения описаны здесь.


Вот и всё на сегодня. Обновляйтесь и делитесь впечатлениями. Заводите баги на гитхабе, жалуйтесь в чатиках, материтесь в твиттере.


Читальня

На хабре вышла расшифровка доклада “Как законтрибьютить в опенсорс, чтобы не сгореть со стыда” со смачной картинкой Мастера Йоды. Этот доклад мы с Артёмом Ерошенко делали на фестивале TechTrain осенью 2020.

По ссылке и текст, и видео: кому что больше нравится.

Буду счастлив, если пользователи Селенида его посмотрят. Вы же хотите приобщиться к таинству опен-сорса?


Всем щастья!

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

ru.selenide.org

23.01.21