Фреймворки
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 поддерживает интерфейсы Mocha BDD
(по умолчанию), TDD
и QUnit
interfaces.
Если вы хотите писать спецификации в стиле 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
Массив путей к файлам (и шаблонов) относительно 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