Раннер
Раннер в WebdriverIO организует то, как и где запускаются тесты при использовании testrunner. WebdriverIO в настоящее время поддерживает два различных типа раннеров: локальный и браузерный.
Локальный раннер
Локальный раннер инициирует ваш фреймворк (например, Mocha, Jasmine или Cucumber) в рабочем процессе и запускает все ваши тестовые файлы в среде Node.js. Каждый тестовый файл запускается в отдельном рабочем процессе для каждой capability, что обеспечивает максимальную параллельность. Каждый рабочий процесс использует один экземпляр браузера и, таким образом, запускает собственную сессию браузера, обеспечивая максимальную изоляцию.
Поскольку каждый тест запускается в собственном изолированном процессе, невозможно обмениваться данными между тестовыми файлами. Существует два способа обойти это:
- использовать
@wdio/shared-store-service
для обмена данными между всеми рабочими процессами - группировать spec-файлы (подробнее в Organizing Test Suite)
Если в wdio.conf.js
не определено иное, Локальный раннер является раннером по умолчанию в WebdriverIO.
Установка
Для использования Локального раннера вы можете установить его через:
npm install --save-dev @wdio/local-runner
Настройка
Локальный раннер является ра ннером по умолчанию в WebdriverIO, поэтому нет необходимости определять его в вашем wdio.conf.js
. Если вы хотите явно его указать, вы можете определить его следующим образом:
// wdio.conf.js
export const {
// ...
runner: 'local',
// ...
}
Браузерный раннер
В отличие от Локального раннера, Браузерный раннер инициирует и выполняет фреймворк внутри браузера. Это позволяет вам запускать модульные тесты или компонентные тесты в реальном браузере, а не в JSDOM, как во многих других тестовых фреймворках.
Хотя JSDOM широко используется для целей тестирования, в конечном и тоге это не настоящий браузер, и с его помощью невозможно эмулировать мобильные среды. С помощью этого раннера WebdriverIO позволяет легко запускать тесты в браузере и использовать команды WebDriver для взаимодействия с элементами, отображаемыми на странице.
Вот обзор запуска тестов в JSDOM по сравнению с браузерным раннером WebdriverIO:
JSDOM | WebdriverIO Browser Runner | |
---|---|---|
1. | Запускает ваши тесты в Node.js, используя повторную реализацию веб-стандартов, в частности, стандартов WHATWG DOM и HTML | Выполняет ваш тест в реальном браузере и запускает код в той среде, которую используют ваши пользователи |
2. | Взаимодействия с компонентами могут быть только имитированы через JavaScript | Вы можете использовать WebdriverIO API для взаимодействия с элементами через протокол WebDriver |
3. | Поддержка Canvas требует дополнительных зависимостей и имеет ограничения | У вас есть доступ к реальному Canvas API |
4. | JSDOM имеет некоторые оговорки и неподдерживаемые Web API | Все Web API поддерживаются, так как тест запускается в реальном браузере |
5. | Невозможно обнаружить ошибки в разных браузерах | Поддержка всех браузеров, включая мобильные |
6. | Не может тестировать псевдосостояния элементов | Поддержка псевдосостояний, таких как :hover или :active |
Этот раннер использует Vite для компиляции вашего тестового кода и загрузки его в браузер. Он поставляется с предустановками для следующих компонентных фреймворков:
- React
- Preact
- Vue.js
- Svelte
- SolidJS
- Stencil
Каждый тестовый файл/группа тестовых файлов запускается в рамках одной страницы, что означает, что между каждым тестом страница перезагружается для обеспечения изоляции между тестами.
Установка
Для использования Браузерного раннера вы можете установ ить его через:
npm install --save-dev @wdio/browser-runner
Настройка
Чтобы использовать браузерный раннер, необходимо определить свойство runner
в файле wdio.conf.js
, например:
// wdio.conf.js
export const {
// ...
runner: 'browser',
// ...
}
Опции раннера
Браузерный раннер допускает следующие конфигурации:
preset
Если вы тестируете компоненты с использованием одного из упомянутых выше фреймворков, вы можете определить предустановку, которая гарантирует, что все настроено "из коробки". Эту опцию нельзя использовать вместе с viteConfig
.
Тип: vue
| svelte
| solid
| react
| preact
| stencil
Пример:
export const {
// ...
runner: ['browser', {
preset: 'svelte'
}],
// ...
}