Раннер
Раннер у WebdriverIO оркеструє як і де запускаються тести при використанні тестраннера. WebdriverIO наразі підтримує два різні типи раннерів: локальний та браузерний.
Local Runner
Local Runner ініціює ваш фреймворк (наприклад, Mocha, Jasmine або Cucumber) у процесі-воркері та запускає всі ваші тестові файли у вашому середовищі Node.js. Кожен тестовий файл запускається в окремому процесі-воркері для кожної можливості, що дозволяє максимальну паралельність. Кожен процес-воркер використовує один екземпляр браузера і тому запускає власну сесію браузера, що забезпечує максимальну ізоляцію.
Оскільки кожен тест запускається у своєму ізольованому процесі, неможливо обмінюватися даними між тестовими файлами. Є два способи обійти це:
- використовувати
@wdio/shared-store-service
для обміну даними між усіма воркерами - групувати файли специфікацій (детальніше в Організація тестового набору)
Якщо ніщо інше не визначено в wdio.conf.js
, Local Runner є раннером за замовчуванням у WebdriverIO.
Встановлення
Щоб використовувати Local Runner, ви можете встановити його через:
npm install --save-dev @wdio/local-runner
Налаштування
Local Runner є раннером за замовчуванням у WebdriverIO, тому немає потреби визначати його у вашому wdio.conf.js
. Якщо ви хочете явно його встановити, ви можете визначити його наступним чином:
// wdio.conf.js
export const {
// ...
runner: 'local',
// ...
}
Browser Runner
На відміну від Local Runner, Browser Runner ініціює та виконує фреймворк всередині браузера. Це дозволяє вам запускати модульні тести чи компонентні тести в реальному браузері, а не в JSDOM, як у багатьох інших тестових фреймворках.
Хоча JSDOM широко використовується для тестування, він у підсумку не є справжнім браузером, і ви не можете емулювати мобільні середовища з його допомогою. З цим раннером WebdriverIO дозволяє легко запускати ваші тести в браузері та використовувати команди WebDriver для взаємодії з елементами, відтвореними на сторінці.
Ось огляд запуску тестів у JSDOM у порівнянні з Browser Runner від 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
Кожен тестовий файл/група тестових файлів запускається в межах однієї сторінки, що означає, що між кожним тестом сторінка перезавантажується для гарантування ізоляції між тестами.
Встановлення
Щоб використовувати Browser Runner, ви можете встановити його через:
npm install --save-dev @wdio/browser-runner
Налаштування
Щоб використовувати Browser Runner, ви повинні визначити властивість runner
у вашому файлі wdio.conf.js
, наприклад:
// wdio.conf.js
export const {
// ...
runner: 'browser',
// ...
}