Тестові фреймворки
WebdriverIO Runner has built-in support for Mocha, Jasmine, and Cucumber.js. You can also integrate it with 3rd-party open-source frameworks, such as Serenity/JS.
To integrate WebdriverIO with a test framework, you need an adapter package available on NPM. Note that the adapter package must be installed in the same location where WebdriverIO is installed. Отже, якщо ви встановили WebdriverIO глобально, обов’язково встановіть глобально і пакунок-адаптер.
Integrating WebdriverIO with a test framework lets you access the WebDriver instance using the global browser
variable in your spec files or step definitions. Note that WebdriverIO will also take care of instantiating and ending the Selenium session, so you don't have to do it yourself.
Використання із Mocha
Спочатку встановіть пакунок-адаптер із NPM:
- npm
- Yarn
- pnpm
npm install @wdio/mocha-framework --save-dev
yarn add @wdio/mocha-framework --dev
pnpm add @wdio/mocha-framework --save-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 підтримує такі інтерфейси Mocha: BDD
(за замовчуванням), TDD
і QUnit
.
Якщо ви хочете описувати свої тести стилі TDD стилі, встановіть значення tdd
для властивості ui
, що в об'єкті mochaOpts
у вашому файлі конфігурацій. Тепер ваші файли із тестами можуть містити наступне:
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() // throws "done is not a function"
})
Параметри Mocha
Наступні параметри можна застосувати у вашому wdio.conf.js
для налаштування середовища Mocha. Примітка: не всі параметри підтримуються, наприклад, застосування параметра parallel
призведе до помилки, оскільки виконувач тестів WDIO має власний механізм паралельного запуску тестів. Підтримуються такі параметри:
require
Параметр require
корисний, коли ви хочете додати або розширити деякі вбудовані функції (WebdriverIO параметр).
Type: string|string[]
Default: []
compilers
Використовуйте вказаний(і) модуль(і) для компіляції файлів. Компілятори будуть підключені раніше, ніж require
(WebdriverIO параметр).
Type: string[]
Default: []
allowUncaught
Поширювати неперехоплені помилки.
Type: boolean
Default: false
bail
Зупинитися після першого невдалого тесту.
Type: boolean
Default: false
checkLeaks
Перевіряти на наявність витоку глобальних змінних.
Type: boolean
Default: false
delay
Відкласти виконання головного набору.
Type: boolean
Default: false
fgrep
Відфільтрувати тести на відповідність вказаному рядку.
Type: string
Default: null
forbidOnly
Використання only
у тестових файлах викличе визнання всього набору тестів невдалим.
Type: boolean
Default: false
forbidPending
Використання skip
у тестових файлах викличе визнання всього набору тестів невдалим.
Type: boolean
Default: false
fullTrace
Показати повний стек викликів у разі помилки.
Type: boolean
Default: false
global
Очікувані глобальні змінні.
Type: string[]
Default: []
grep
Відфільтрувати тести на відповідність вказаному регулярному виразу.
Type: RegExp|string
Default: null
invert
Інвертувати збіги фільтра тестів.
Type: boolean
Default: false
retries
Кількість повторень для невдалих тестів.
Type: number
Default: 0
timeout
Порогове значення тайм-ауту (у мс).
Type: number
Default: 30000
Використання із Jasmine
Спочатку встановіть пакунок-адаптер із NPM:
- npm
- Yarn
- pnpm
npm install @wdio/jasmine-framework --save-dev
yarn add @wdio/jasmine-framework --dev
pnpm add @wdio/jasmine-framework --save-dev
Потім ви можете налаштувати середовище Jasmine, додавши властивість jasmineOpts
до файлу конфігурації. Список усіх можливих параметрів можна знайти на вебсайті фреймворку Jasmine.
Перехоплення перевірок
Фреймворк Jasmine дозволяє перехоплювати кожну перевірку, щоб залогувати стан застосунку або вебсайту, залежно від результату перевірки.
Наприклад, дуже зручно робити скріншот кожного разу, коли перевірка закінчується невдало. В об'єкт jasmineOpts
ви можете додати властивість під назвою expectationResultHandler
, яка приймає функцію для виконання. Параметри цієї функції надають інформацію про результати перевірки.
У наступному прикладі показано, як зробити знімок екрана, якщо перевірка завершується невдало:
jasmineOpts: {
defaultTimeoutInterval: 10000,
expectationResultHandler: function(passed, assertion) {
/**
* only take screenshot if assertion failed
*/
if(passed) {
return
}
browser.saveScreenshot(`assertionError_${assertion.error.message}.png`)
}
},
Примітка: Ви не можете призупиняти виконання тестів, щоб зробити щось асинхронне. В такому разі, може статися так, що команда займатиме забагато часу, і стан застосунку зміниться. (Хоча зазвичай знімок екрана все одно зробиться трохи пізніше, що все ще таки надасть хоч якусь корисну інформацію про помилку.)