Організація тестового набору
З ростом проектів неминуче додається все більше і більше інтеграційних тестів. Це збільшує час збірки та сповільнює продуктивність.
Щоб цьому запобігти, ви повинні запускати тести паралельно. WebdriverIO вже тестує кожну специфікацію (або feature файл у Cucumber) паралельно в межах однієї сесії. Зазвичай намагайтеся тестувати лише одну функцію на файл специфікації. Намагайтеся не мати занадто багато або занадто мало тестів в одному файлі. (Однак тут немає золотого правила.)
Коли ваші тести мають кілька файлів специфікацій, вам слід почати запускати тести одночасно. Для цього налаштуйте властивість maxInstances
у вашому конфігураційному файлі. WebdriverIO дозволяє запускати тести з максимальною паралельністю — це означає, що незалежно від того, скільки файлів і тестів у вас є, всі вони можуть виконуватися паралельно. (Це все ще підлягає певним обмеженням, як-от CPU вашого комп'ютера, обмеження паралельності тощо.)
Припустимо, у вас є 3 різні можливості (Chrome, Firefox і Safari), і ви встановили
maxInstances
на1
. Тестовий запускач WDIO створить 3 процеси. Тому, якщо у вас є 10 файлів специфікацій і ви встановилиmaxInstances
на10
, всі файли специфікацій будуть тестуватися одночасно, і буде запущено 30 процесів.
Ви можете визначити властивість maxInstances
глобально, щоб встановити атрибут для всіх браузерів.
Якщо ви запускаєте власну сітку WebDriver, у вас може бути (наприклад) більше можливостей для одного браузера, ніж для іншого. У такому випадку ви можете обмежити maxInstances
у вашому об'єкті можливостей:
// 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: [
// ...
]
},
// ...
}