Перейти к основному содержимому

Как обновить hermione до версии 8.x

warning

Если в вашем проекте hermione младше 4-й версии, то прочтите сначала:

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