С v5 на v6
Этот учебник предназначен для тех, кто все еще использует v5
WebdriverIO и хочет перейти на v6
или на последнюю версию WebdriverIO. Как упоминалось в нашем блоге о выпуске, изменения для этого обновления версии можно обобщить следующим образом:
-
мы объединили параметры для некоторых команд (например,
newWindow
,react$
,react$$
,waitUntil
,dragAndDrop
,moveTo
,waitForDisplayed
,waitForEnabled
,waitForExist
) и переместили все необязательные параметры в единый объект, например:// v5
browser.newWindow(
'https://webdriver.io',
'WebdriverIO window',
'width=420,height=230,resizable,scrollbars=yes,status=1'
)
// v6
browser.newWindow('https://webdriver.io', {
windowName: 'WebdriverIO window',
windowFeature: 'width=420,height=230,resizable,scrollbars=yes,status=1'
}) -
конфигурации для сервисов перемещены в список сервисов, например:
// v5
exports.config = {
services: ['sauce'],
sauceConnect: true,
sauceConnectOpts: { foo: 'bar' },
}
// v6
exports.config = {
services: [['sauce', {
sauceConnect: true,
sauceConnectOpts: { foo: 'bar' }
}]],
} -
некоторые параметры сервисов были переименованы для упрощения
-
мы переименовали команду
launchApp
вlaunchChromeApp
для сессий Chrome WebDriver
Если вы используете WebdriverIO v4
или ниже, сначала обновитесь до v5
.
Хотя мы хотели бы иметь полностью автоматизированный процесс для этого, реальность выглядит иначе. У каждого своя конфигурация. Каждый шаг следует рассматривать как руководство, а не как пошаговую инструкцию. Если у вас возникают проблемы с миграцией, не стесняйтесь связаться с нами.
Настройка
Подобно другим миграциям, мы можем использовать WebdriverIO codemod. Для установки codemod выполните:
npm install jscodeshift @wdio/codemod
Обновление зависимостей WebdriverIO
Учитывая, что все версии WebdriverIO связаны друг с другом, лучше всего всегда обновлять до определенного тега, например, 6.12.0
. Если вы решите обновиться с v5
прямо до v7
, вы можете опустить тег и установить последние версии всех паке тов. Для этого копируем все зависимости WebdriverIO из нашего package.json
и переустанавливаем их:
npm i --save-dev @wdio/allure-reporter@6 @wdio/cli@6 @wdio/cucumber-framework@6 @wdio/local-runner@6 @wdio/spec-reporter@6 @wdio/sync@6 wdio-chromedriver-service@6 webdriverio@6
Обычно зависимости WebdriverIO являются частью dev-зависимостей, хотя в зависимости от вашего проекта это может отличаться. После этого ваши package.json
и package-lock.json
должны быть обновлены. Примечание: это пример зависимостей, ваши могут отличаться. Убедитесь, что вы нашли последнюю версию v6, вызвав, например:
npm show webdriverio versions
Постарайтесь установить последнюю доступную версию 6 для всех основных пакетов WebdriverIO. Для сторонних пакетов это может отличаться от пакета к пакету. Здесь мы рекомендуем проверить список изменений для получения информации о том, какая версия все еще совместима с v6.
Преобразование файла конфигурации
Хорошим первым шагом является начало с файла конфигурации. Все критические изменения можно разрешить с помощью codemod полностью автоматически:
npx jscodeshift -t ./node_modules/@wdio/codemod/v6 ./wdio.conf.js
Codemod пока не поддерживает проекты TypeScript. См. @webdriverio/codemod#10
. Мы работаем над внедрением поддержки в ближайшее время. Если вы используете TypeScript, пожалуйста, примите участие!
Обновление файлов спецификаций и объектов страниц
Чтобы обновить все изменения команд, запустите codemod для всех ваших e2e-файлов, содержащих команды WebdriverIO, например:
npx jscodeshift -t ./node_modules/@wdio/codemod/v6 ./e2e/*
Вот и всё! Больше никаких изменений не требуется 🎉
Заключение
Мы надеемся, что этот учебник немного помогает вам в процессе миграции на WebdriverIO v6
. Мы настоятельно рекомендуем продолжить обновление до последней версии, учитывая, что обновление до v7
тривиально из-за почти отсутствующих критических изменений. Пожалуйста, ознакомьтесь с руководством по миграции для обновления до v7.
Сообщество продолжает улучшать codemod, тестируя его с различными командами в различных организациях. Не стесняйтесь создать issue, если у вас есть отзывы, или начать обсуждение, если у вас возникли проблемы в процессе миграции.