Фреймворки
WebdriverIO Runner имеет встроенную поддержку Mocha, Jasmine и Cucumber.js. Вы также можете интегрировать его со сторонними фреймворками с открытым исходным кодом, такими как Serenity/JS.
Для интеграции WebdriverIO с тестовым фреймворком вам понадобится адаптер-пакет, доступный в NPM. Обратите внимание, что пакет адаптера должен быть установлен в том же месте, где установлен WebdriverIO. Поэтому, если вы установили WebdriverIO глобально, убедитесь, что также установили пакет адаптера глобально.
Интеграция WebdriverIO с тестовым фреймворком позволяет получить доступ к экземпляру WebDriver с помощью глобальной переменной browser
в ваших спецификациях или определениях шагов.
Обратите внимание, что WebdriverIO также позаботится о создании и завершении сессии Selenium, поэтому вам не нужно делать это
самостоятельно.
Использование 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
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
npm install @wdio/jasmine-framework --save-dev
yarn add @wdio/jasmine-framework --dev
pnpm add @wdio/jasmine-framework --save-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
Использование Cucumber
Сначала установите пакет адаптера из NPM:
- npm
- Yarn
- pnpm
npm install @wdio/cucumber-framework --save-dev
yarn add @wdio/cucumber-framework --dev
pnpm add @wdio/cucumber-framework --save-dev
Если вы хотите использовать Cucumber, установите свойство framework
в cucumber
, добавив framework: 'cucumber'
в файл конфигурации.
Опции для Cucumber можно указать в файле конфигурации с помощью cucumberOpts
. Ознакомьтесь с полным списком опций здесь.
Чтобы быстро начать работу с Cucumber, посмотрите наш проект cucumber-boilerplate
, который поставляется со всеми определениями шагов, необходимыми для начала работы, и вы сразу сможете писать feature-файлы.
Опции 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']
}
]
]
}
failFast
Прервать выполнение при первом сбое.
Тип: boolean
По умолчанию: false
name
Выполнять только сценарии с именем, соответствующим выражению (может повторяться).
Тип: RegExp[]
По умолчанию: []
require
Требовать файлы, содержащие ваши определения шагов, перед выполнением функций. Вы также можете указать шаблон для ваших определений шагов.
Тип: string[]
По умолчанию: []
Пример:
cucumberOpts: {
require: [path.join(__dirname, 'step-definitions', 'my-steps.js')]
}
import
Пути к вашему коду поддержки для ESM.
Тип: String[]
По умолчанию: []
Пример:
cucumberOpts: {
import: [path.join(__dirname, 'step-definitions', 'my-steps.js')]
}
strict
Завершать с ошибкой, если есть неопределенные или ожидающие шаги.
Тип: boolean
По умолчанию: false