Как обновить 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 — и мы обязательно вам поможем!