Фреймворки
WebdriverIO Runner має вбудовану підтримку Mocha, Jasmine і Cucumber.js. Ви також можете інтегрувати його зі сторонніми фреймворками з відкритим кодом, такими як Serenity/JS.
Для інтеграції WebdriverIO з тестовим фреймворком вам потрібен пакет адаптера, доступний в NPM. Зауважте, що пакет адаптера повинен бути встановлений в тому ж місці, де встановлений WebdriverIO. Тому, якщо ви встановили WebdriverIO глобально, переконайтеся, що пакет адаптера також встановлено глобально.
Інтеграція WebdriverIO з тестовим фреймворком дозволяє вам отримати доступ до екземпляра WebDriver, використовуючи глобальну змінну browser
у ваших файлах специфікацій або визначеннях кроків.
Зверніть увагу, що WebdriverIO також потурбується про створення та завершення сеансу Selenium, тому вам не потрібно робити це
самостійно.
Використання Mocha
Спочатку встановіть пакет адаптера з NPM:
- npm
- Yarn
- pnpm
- Bun
npm install @wdio/mocha-framework --save-dev
yarn add @wdio/mocha-framework --dev
pnpm add @wdio/mocha-framework --save-dev
bun add @wdio/mocha-framework --dev
За замовчуванням WebdriverIO надає бібліотеку тверджень, яка вбудована і з якою ви можете почати працювати відразу:
describe('my awesome website', () => {
it('should do some assertions', async () => {
await browser.url('https://webdriver.io')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
})
})
WebdriverIO підтримує BDD
(за замовчуванням), TDD
та QUnit
інтерфейси Mocha.
Якщо ви хочете писати свої тести в стилі TDD, встановіть властивість ui
у вашій конфігурації mochaOpts
на tdd
. Тепер ваші тестові файли повинні бути написані та к:
suite('my awesome website', () => {
test('should do some assertions', async () => {
await browser.url('https://webdriver.io')
await expect(browser).toHaveTitle('WebdriverIO · Next-gen browser and mobile automation test framework for Node.js | WebdriverIO')
})
})
Якщо ви хочете визначити інші специфічні для Mocha налаштування, ви можете зробити це за допомогою ключа mochaOpts
у вашому конфігураційному файлі. Список усіх опцій можна знайти на веб-сайті проекту Mocha.
Примітка: WebdriverIO не підтримує застаріле використання зворотних викликів done
в Mocha:
it('should test something', (done) => {
done() // виникає помилка "done is not a function"
})
Опції Mocha
Наступні опції можна застосувати у вашому wdio.conf.js
для налаштування вашого середовища Mocha. Примітка: не всі опції підтримуються, наприклад, застосування опції parallel
призведе до помилки, оскільки WDIO тестовий запускач має власний спосіб запуску тестів паралельно. Ви можете передавати ці опції фреймворку як аргументи, наприклад:
wdio run wdio.conf.ts --mochaOpts.grep "my test" --mochaOpts.bail --no-mochaOpts.checkLeaks
Це передасть наступні опції Mocha:
{
grep: ['my-test'],
bail: true
checkLeacks: false
}
Підтримуються наступні опції Mocha:
require
Опція require
корисна, коли ви хочете додати або розширити деяку базову функціональність (опція фреймворку WebdriverIO).
Тип: string|string[]
За замовчува нням: []
compilers
Використовуйте дані модулі для компіляції файлів. Компілятори будуть включені перед вимогами (опція фреймворку WebdriverIO).
Тип: string[]
За замовчуванням: []
allowUncaught
Поширювати неперехоплені помилки.
Тип: boolean
За замовчуванням: false
bail
Припинити виконання після першого невдалого тесту.
Тип: boolean
За замовчуванням: false
checkLeaks
Перевіряти наявність витоків глобальних змінних.
Тип: boolean
За замовчуванням: false
delay
Затримка виконання кореневого набору.
Тип: boolean
За замовчуванням: false
fgrep
Фільтр тестів за заданим рядком.
Тип: string
За замовчуванням: null
forbidOnly
Тести з позначкою only
призводять до невдачі набору.
Тип: boolean
За замовчуванням: false
forbidPending
Відкладені тести призводять до невдачі набору.
Тип: boolean
За замовчуванням: false
fullTrace
Повний стек викликів при невдачі.
Тип: boolean
За замовчуванням: false
global
Змінні, які очікуються в глобальній області.
Тип: string[]
За замовчуванням: []
grep
Фільтр тестів за заданим регулярним виразом.
Тип: RegExp|string
За замовчуванням: null
invert
Інвертувати відповідності фільтра тестів.
Тип: boolean
За замовчуванням: false
retries
Кількість спроб повторного запуску невдалих тестів.
Тип: number
За замовчуванням: 0
timeout
Значення порогу таймауту (в мс).
Тип: number
За замовчуванням: 30000
Використання Jasmine
Спочатку встановіть пакет адаптера з NPM:
- npm
- Yarn
- pnpm
- Bun
npm install @wdio/jasmine-framework --save-dev
yarn add @wdio/jasmine-framework --dev
pnpm add @wdio/jasmine-framework --save-dev
bun add @wdio/jasmine-framework --dev
Потім ви можете налаштувати своє середовище Jasmine, встановивши властивість jasmineOpts
у вашій конфігурації. Список усіх опцій можна знайти на веб-сайті проекту Jasmine.
Опції Jasmine
Наступні опції можна застосувати у вашому wdio.conf.js
для налаштування вашого середовища Jasmine за допомогою властивості jasmineOpts
. Для отримання додаткової інформації про ці опції конфігурації, перегляньте документацію Jasmine. Ви мож ете передавати ці опції фреймворку як аргументи, наприклад:
wdio run wdio.conf.ts --jasmineOpts.grep "my test" --jasmineOpts.failSpecWithNoExpectations --no-jasmineOpts.random
Це передасть наступні опції Mocha:
{
grep: ['my-test'],
bail: true
checkLeacks: false
}
Підтримуються наступні опції Jasmine:
defaultTimeoutInterval
Інтервал таймауту за замовчуванням для операцій Jasmine.
Тип: number
За замовчуванням: 60000
helpers
Масив шляхів до файлів (і шаблонів glob) відносно spec_dir для включення перед специфікаціями Jasmine.
Тип: string[]
За замовчуванням: []
requires
Опція requires
корисна, коли ви хочете додати або розширити деяку базову функціональність.
Тип: string[]
За замовчуванням: []
random
Чи рандомізувати порядок виконання тестів.
Тип: boolean
За замовчуванням: true
seed
Початкове значення для рандомізації. Null призводить до того, що початкове значення визначається випадковим чином на початку виконання.
Тип: Function
За замовчуванням: null
failSpecWithNoExpectations
Чи позначати тест як невдалий, якщо в ньому не було очікувань. За замовчуванням тест, в якому не було очікувань, позначається як успішний. Встановлення цього значення в true призведе до того, що такий тест буде позначено як невдалий.
Тип: boolean
За замовчуванням: false
oneFailurePerSpec
Чи має тест лише одне очікування невдачі.
Тип: boolean
За замовчуванням: false
specFilter
Функція для фільтрації тестів.
Тип: Function
За замовчуванням: (spec) => true
grep
Запускати лише тести, що відповідають цьому рядку або регулярному виразу. (Застосовується лише якщо не встановлена користувацька функція specFilter
)
Тип: string|Regexp
За замовчуванням: null
invertGrep
Якщо true, інвертує відповідність тестів і запускає лише тести, які не відповідають виразу в grep
. (Застосовується лише якщо не встановлена користувацька функція specFilter
)
Тип: boolean
За замовчуванням: false
Використання Cucumber
Спочатку встановіть пакет адаптера з NPM:
- npm
- Yarn
- pnpm
- Bun
npm install @wdio/cucumber-framework --save-dev
yarn add @wdio/cucumber-framework --dev
pnpm add @wdio/cucumber-framework --save-dev
bun add @wdio/cucumber-framework --dev
Якщо ви хочете використовувати Cucumber, встановіть властивість framework
на cucumber
, додавши framework: 'cucumber'
до конфігураційного файлу.
Опції для Cucumber можна вказати в конфігураційному файлі за допомогою cucumberOpts
. Ознайомтеся з повним списком опцій тут.
Щоб швидко почати роботу з Cucumber, подивіться наш проект cucumber-boilerplate
, який містить усі визначення кроків, необхідні для початку, і ви зможете відразу писати файли features.
Опції Cucumber
Наступні опції можна застосувати у вашому wdio.conf.js
для налаштування вашого середовища Cucumber за допомогою властивості cucumberOpts
:
Опції cucumberOpts
, такі як користувацькі tags
для фільтрації тестів, можна вказати через командний рядок. Це здійснюється за допомогою формату cucumberOpts.{optionName}="value"
.
Наприклад, якщо ви хочете запустити лише тести, позначені тегом @smoke
, ви можете використати наступну команду:
# Якщо ви хочете запустити лише тести з тегом "@smoke"
npx wdio run ./wdio.conf.js --cucumberOpts.tags="@smoke"
npx wdio run ./wdio.conf.js --cucumberOpts.name="some scenario name" --cucumberOpts.failFast
Ця команда встановлює опцію tags
в cucumberOpts
на @smoke
, забезпечуючи виконання лише тестів з цим тегом.
backtrace
Показати повний трасування для помилок.
Тип: Boolean
За замовчуванням: true
requireModule
Вимагати модулі перед завантаженням будь-яких файлів підтримки.
Тип: string[]
За замовчуванням: []
Приклад:
cucumberOpts: {
requireModule: ['@babel/register']
// або
requireModule: [
[
'@babel/register',
{
rootMode: 'upward',
ignore: ['node_modules']
}
]
]
}