Как обновить hermione до версии 8.x
Если в вашем проекте hermione младше 4-й версии, то прочтите сначала:
- «Как обновить hermione до версии 4.x»;
- «Как обновить hermione до версии 5.x»;
- «Как обновить hermione до версии 6.x»;
- «Как обновить hermione до версии 7.x».
Мы рекомендуем вам обновлять hermione поэтапно, убеждаясь на каждом этапе, что все тесты проекта корректно выполняются.
Что изменилось?
Мажорные изменения
Изменились экспорты пакета
Для использования hermione по API в javascript теперь необходимо подключать hermione
следующим образом:
const { default: hermione } = require("hermione");
Раньше можно было писать так:
const hermione = require("hermione");
Вариант для typescript:
import hermione from "hermione";
Изменена логика работы команды moveTo
Теперь команда moveTo
смещает курсор не относительно левого верхнего угла, а относительно центра элемента. Если элемент не виден, то к нему будет выполнен подскрол.
Раньше вызов команды без аргументов (await browser.$('body).moveTo()
) смещал курсор в левый верхний угол элемента - теперь смещение произойдет в центр элемента.
Если переходить на новую логику moveTo
нет времени, то можете использовать команду moveCursorTo
, которая работает как в hermione@7. Была добавлена в hermione@8.1.0.
Команда moveCursorTo
временная и будет удалена в следующем мажоре.
Отказ от поддержки Node.JS < 18.x
В этом мажоре hermione перестала поддерживать версии Node.JS < 18.x.
Минорные изменения
-
реализован REPL-режим для пошагового дебага тестов во всех браузерах (не только CDP) без перезапуска;
-
добавлена браузерная команда clearSession для очистки состояния сессии:
- удаляет файлы cookie;
- очищает local storage;
- очищает session storage.
-
добавлена браузерная команда
openAndWait
с настраиваемым ожиданием загрузки (по селектору, кастомному предикату, сетевому запросу и т.д); -
добавлена cli-опция
--devtools
для упрощения переключения между двумя протоколами (devtools
иwebdriver
); -
улучшен stack trace при ошибках
unhandled rejection
; -
теперь изоляция включена по умолчанию для chrome >= 94;
-
во время выполнения команды assertView CSS-анимации на странице будут отключены по умолчанию;
-
реализовали генерацию уникального заголовка
X-Request-ID
для каждого запроса в браузер. Заголовок состоит из${TEST_X_REQ_ID}${DELIMITER}$BROWSER_X_REQ_ID}
, где:TEST_X_REQ_ID
- уникальный uuid для каждого запуска теста (в том числе ретрая того же самого теста). Позволяет в логах найти все запросы, относящиеся к одному тестовому запуску;DELIMITER
-__
разделитель между uuid-ами теста и запроса;BROWSER_X_REQ_ID
- уникальный uuid для каждого браузерного запроса.
Реальный пример uuid-а -
2f31ffb7-369d-41f4-bbb8-77744615d2eb__e8d011d8-bb76-42b9-b80e-02f03b8d6fe1
.
Патчевые изменения
- исправили отключение анимаций в айфреймах для ios при использовании assertView;
- избавились от реинициализации браузерной сессии в воркерах;
- исправили баг с невозможностью отключить изоляцию.
Как переехать?
1. Обновить hermione до 8+ и плагины до последних версий
2. В случае использования hermione по API в javascript перейти на typescript или изменить require
3. В случае использования moveTo перейти на moveToCursor или указывать координаты от центра элемента
Поддержка
Если при переезде на новую версию вы столкнетесь с проблемами или у вас возникнут какие-либо вопросы, то приходите в github issues — и мы обязательно вам поможем!