Автоматическое обнаружение отсутствующих импортов с помощью сервиса eslint
wdio-eslinter-service - это сторонний пакет, для получения дополнительной информации см. GitHub | npm
Случалось ли вам запускать тесты e2e, только чтобы узнать через 10, 15 или 30 минут, что был отсутствующий/неправильно написанный импорт, который не появился до середины тестового запуска? Когда это происходит, средство запуска тестов сообщает, что эти тесты повреждены.
eslint — отличный инструмент для обнаружения различных ошибок перед выполнением, и этот сервис запускает инструмент eslint до выполнения тестов WebdriverIO, как автоматический шаг вместо ручного.
Часто лучше потерпеть неудачу быстрее, чтобы мы могли решить проблемы раньше, а не позже.
Рекомендуемая конфигурация — использовать средство запуска unresolved для проверки отсутствующих импортов, но при желании вы также можете настроить сервис для запуска eslinter в вашем проекте с помощью npm или yarn, или передав флаг, который указывает системе также использовать вашу конфигурацию .eslintrc.
Установка
Установите wdio-eslinter-service:
$ npm i wdio-eslinter-service --save-dev
Быстрый старт - Проверка только на отсутствующие или неразрешенные импорты
По умолчанию, эта минимальная конфигурация, средство запуска "unresolved", проверяет неразрешенные импорты require и выдает ошибку, если обнаружены неразрешенные импорты. Затем сервис останавливает выполнение. Вы можете настроить .eslintrc.js для выполнения дополнительных проверок с помощью средств запуска "npm" или "yarn", если это необходимо. См. eslint для получения дополнительной информации.
Если у вас нет конфигурации .eslintrc.js
в вашем проекте, то wdio-eslinter-service можно настроить на использование конфигурации по умолчанию, которая просто проверяет отсутствующие импорты перед запуском тестов. Это удобно, чтобы вы узнали о неправильных импортах раньше, а не позже. Для настройки этого добавьте следующую конфигурацию eslinter в ваш массив services (предполагая, что вы уже использ уете сервис chromedriver; в противном случае, опустите эту часть):
wdio.conf.js:
services: ['chromedriver', [
'eslinter',
{
runnerType: 'unresolved'
}
]],
На этом этапе начните запускать тесты, и если есть отсутствующий или неправильный импорт, WebdriverIO зарегистрирует его и немедленно прервет запуск теста:
$ npx wdio
Опционально - если используется module-alias
Если вы используете модуль module-alias, который позволяет настраивать псевдонимы для замены относительных путей, вам нужно будет передать это в конфигурацию eslinter с пом ощью плагина eslint-import-resolver-custom-alias. Вот пример:
services: ['chromedriver', [
'eslinter',
{
runnerType: 'unresolved',
eslintOverride: {
"settings": {
"import/resolver": {
"eslint-import-resolver-custom-alias": {
"alias": {
"@utils": "./utils",
"@specs": "./test-sync/specs",
"@pageobjects": "./test-sync/pageobjects",
"@": "./"
}
}
}
}
}
}
]],
Установите плагин в свой проект:
$ npm i eslint-import-resolver-custom-alias
Запустите тесты и убедитесь, что система найдет неправильные импорты, использующие псевдонимы модулей:
$ npx wdio
Экспериментально - Использование вместе с существующей конфигурацией eslintrc в вашем проекте
Чтобы сервис eslinter также использовал существующую конфигурацию eslintrc в вашем проекте, установите includeProjectEslintrc
в true в массиве services конфигурации wdio.conf.js.
Я сталкивался с проблемами из-за конфликтующих плагинов. Если ваша настройка eslint в проекте также ищет неразрешенные импорты, то это может не сработать и может потребовать корректировки вашего .eslintrc.js. В настоящее время это не рекомендуется.