Организация набора тестов
По мере роста проектов неизбежно добавляется всё больше и больше интеграционных тестов. Это увеличивает время сборки и замедляет продуктивность.
Чтобы предотвратить это, следует запускать тесты параллельно. WebdriverIO уже тестирует каждую спецификацию (или feature file в Cucumber) параллельно в рамках одной сессии. В общем, стара йтесь тестировать только одну функцию на файл спецификации. Постарайтесь не иметь слишком много или слишком мало тестов в одном файле. (Однако, здесь нет золотого правила.)
После того, как у вас появится несколько файлов спецификаций, вы должны начать запускать тесты параллельно. Для этого настройте свойство maxInstances в конфигурационном файле. WebdriverIO позволяет запускать тесты с максимальной параллельностью — это означает, что независимо от того, сколько у вас файлов и тестов, они все могут выполняться параллельно. (Это по-прежнему подчиняется определенным ограничениям, таким как CPU вашего компьютера, ограничения параллельности и т.д.)
Допустим, у вас есть 3 разных возможности (Chrome, Firefox и Safari), и вы установили
maxInstancesв1. Тест-раннер WDIO создаст 3 процесса. Следовательно, если у вас 10 файлов спецификаций и вы установитеmaxInstancesв10, все файлы спецификаций будут тестироваться одновременно, и будет создано 30 процессов.
Вы можете определить свойство maxInstances глобально, чтобы установить атрибут для всех браузеров.
Если вы запускаете собственную сетку WebDriver, у вас может быть (например) больше мощности для одного браузера, чем для другого. В этом случае вы можете ограничить maxInstances в объекте capability:
// wdio.conf.js
export const config = {
// ...
// set maxInstance for all browser
maxInstances: 10,
// ...
capabilities: [{
browserName: 'firefox'
}, {
// maxInstances can get overwritten per capability. So if you have an in-house WebDriver
// grid with only 5 firefox instance available you can make sure that not more than
// 5 instance gets started at a time.
browserName: 'chrome'
}],
// ...
}
Наследование от основного конфигурационного файла
Если вы запускаете свой набор тестов в нескольких средах (например, dev и integration), может быть полезно использовать несколько конфигурационных файлов для удобства управления.
Аналогично концепции объекта страницы, первое, что вам нужно, — это основной файл конфигурации. Он содержит все конфигурации, которые вы используете во всех средах.
Затем создайте другой файл конфигурации для каждой среды и дополните основную конфигурацию специфичными для среды:
// wdio.dev.config.js
import { deepmerge } from 'deepmerge-ts'
import wdioConf from './wdio.conf.js'
// have main config file as default but overwrite environment specific information
export const config = deepmerge(wdioConf.config, {
capabilities: [
// more caps defined here
// ...
],
// run tests on sauce instead locally
user: process.env.SAUCE_USERNAME,
key: process.env.SAUCE_ACCESS_KEY,
services: ['sauce']
}, { clone: false })
// add an additional reporter
config.reporters.push('allure')
Группировка тестовых спецификаций в наборы
Вы можете группировать тестовые спецификации в наборы и запускать отдельные конкретные наборы вместо всех сразу.
Сначала определите свои наборы в конфигурации WDIO:
// wdio.conf.js
export const config = {
// define all tests
specs: ['./test/specs/**/*.spec.js'],
// ...
// define specific suites
suites: {
login: [
'./test/specs/login.success.spec.js',
'./test/specs/login.failure.spec.js'
],
otherFeature: [
// ...
]
},
// ...
}
Теперь, если вы хотите запустить только один набор, вы можете передать имя набора в качестве аргумента CLI:
wdio wdio.conf.js --suite login
Или запустите несколько наборов одновременно:
wdio wdio.conf.js --suite login --suite otherFeature